sprint-prep
Prepare for the next sprint. Reviews your board and drafts your sprint plan message.
What this skill does
# Sprint Prep Review the engineer's current and next sprint boards, flag anything that needs attention, and draft a sprint plan message for the Slack channel defined in Constants. ## Input `$ARGUMENTS` — The engineer's name (for Jira lookup) or just run with no arguments to self-assign. Examples: - `/sprint-prep` (uses current authenticated user) - `/sprint-prep Graham` - `/sprint-prep help` (shows what this command does) ## Constants - **Project:** `SAAS` - **Cloud ID:** `dbff467f-3c3f-4ced-a2ba-a29e1941edd6` - **Sprint field:** `customfield_10010` - **Board ID:** `97` - **Jira base URL:** `https://dimagi.atlassian.net/browse/` - **Slack channel:** `#commcare-tech-sprint-grooming-and-planning` - **Slack channel ID:** `C08FEMC126L` ## Team Context The CommCare Tech team runs two-week sprints named with sequential letters (e.g., Sprint U, Sprint V, Sprint W). Each sprint cycle has two parallel sprints in the SAAS project: - A **Platform** sprint (infrastructure, devops, migrations, Celery, Kafka, ES, CouchDB, Postgres, AWS, Ansible, Docker, Redis, monitoring, CI/CD, dependencies, security patching) - A **Product** sprint (features, UI/UX, bug fixes, app builder, reports, exports, case management, forms, mobile, web apps, formplayer, formbuilder, messaging, feature flags, data exports) Sprint names follow the pattern: `CommCare [Product|Platform] [Letter] [(dates)]` ## Jira Status Definitions | Status | Category | Meaning | |---|---|---| | Prioritized | To Do | Ready to be worked on but not started | | In Progress | In Progress | Actively being worked on | | In Review | In Progress | PR is up, awaiting review or QA | | Accepted | Done | Work is complete and merged | | Deployed | Done | Live in production | | Won't Do | Done | Intentionally not doing | ## Steps ### 1. Identify the engineer - If `$ARGUMENTS` is empty or not provided, use `atlassianUserInfo` to get the current authenticated user's account ID and display name. - If `$ARGUMENTS` is a name, use `lookupJiraAccountId` with the cloud ID to resolve their account ID. - If `$ARGUMENTS` is "help", explain what this command does and exit. Store the resolved `accountId` and `displayName` for use in all subsequent queries. ### 2. Discover active sprints Search for active sprints using JQL: ``` project = SAAS AND sprint in openSprints() ORDER BY created DESC ``` Fetch at least 5 results. Extract sprint data from `customfield_10010` on each issue. Identify: - The **current Platform sprint** (name contains "Platform") - The **current Product sprint** (name contains "Product") Also search for future sprints by looking for sprints in the next letter. Use JQL: ``` project = SAAS AND sprint in futureSprints() ORDER BY created DESC ``` Fetch at least 5 results. Identify: - The **next Platform sprint** - The **next Product sprint** If future sprints aren't created yet, note this and skip next-sprint analysis. ### 3. Audit current sprint tickets For each active sprint the engineer has tickets in, query: ``` project = SAAS AND assignee = "<accountId>" AND sprint = <sprint_id> ORDER BY status ASC ``` Run separately for Platform and Product sprints. For each ticket, capture the ticket key, summary, and current status. Do not display the raw ticket list to the engineer — use this data internally to prepare for steps 4 and 7. ### 4. Review next sprint tickets For each next sprint (Platform and Product), query: ``` project = SAAS AND assignee = "<accountId>" AND sprint = <next_sprint_id> ORDER BY status ASC ``` Summarize what's already lined up. If the next sprint is empty for this engineer, flag it: > ⚠️ No tickets in the next [Platform|Product] sprint. You may need to pull from the backlog or create tickets for planned work. ### 7. Ask for highlights, carryovers, and upcoming plans Ask the following four questions one at a time, waiting for the engineer's response after each before proceeding to the next. **Question 1 — Highlights:** Group the completed and in-review tickets into thematic categories (up to 5, but could be just 1 if the work was focused). Include tickets with status Accepted, Deployed, or In Review — if a PR is up, the engineering work is done and it counts as a highlight. Present those categories — not individual tickets — and ask: > **Here's what you completed this sprint. Which of these do you want to highlight?** > > • Category A — brief description > • Category B — brief description Wait for response. When the engineer selects a category, note the individual tickets in that category for use in the draft. **Question 2 — Carryovers and why:** Show the tickets still in progress (In Progress or Prioritized/not started) and ask. In Review tickets are already covered as highlights above — only include them here if they've been in review for an unusually long time and might genuinely be stuck: > **Are any of these tickets at risk of rolling over? If so, what's blocking them or slowing them down?** > > • SAAS-AAAAA (In Progress): summary > • SAAS-BBBBB (Prioritized): summary Wait for response. **Follow-up if the answer is thin:** If the engineer identifies tickets at risk but doesn't explain why (e.g., they just say "yes, SAAS-12345" or "that one might roll"), follow up and ask what's making it hard to finish — is it waiting on review, blocked by another team, more complex than expected, etc. The "why" is the most important part of the sprint update because it's what helps others reading the message understand where they can jump in. Don't be pushy, but do ask once. Wait for response. **Question 3 — Next sprint highlights:** If the engineer has no tickets in the next sprint, warn them but continue: > ⚠️ No tickets assigned in the next sprint yet. This might be intentional, but wanted to flag it. If there are tickets, group them into thematic categories (up to 5, could be just 1) and ask: > **Here's what's lined up for next sprint. Anything you want to call out?** > > • Category A — brief description > • Category B — brief description Wait for response. When the engineer selects a category, note it for use in the draft summary sentence. **Question 4 — Upcoming challenges:** Ask: > **Anything coming up that could impact next sprint? PTO, team members offline, dependencies on other teams, etc.?** Wait for response. This is about forward-looking risks — things that haven't blocked work yet but might. If they mention something, weave it into the draft message. After all four responses are collected, proceed to draft the message. ### 8. Draft the sprint plan message Using the engineer's selected highlights and the data collected, draft a four-section message. **Format:** ``` **Highlights from the last sprint** Summary sentence here. • [SAAS-XXXXX](https://dimagi.atlassian.net/browse/SAAS-XXXXX): One-line description of what was accomplished • [SAAS-YYYYY](https://dimagi.atlassian.net/browse/SAAS-YYYYY): One-line description **What might carry over** Summary sentence here — this should clearly state WHY these are at risk. • [SAAS-ZZZZZ](https://dimagi.atlassian.net/browse/SAAS-ZZZZZ): Brief note on status / why it's carrying over **What I plan to work on in the next sprint** Summary sentence here. • [SAAS-AAAAA](https://dimagi.atlassian.net/browse/SAAS-AAAAA): Short description • [SAAS-BBBBB](https://dimagi.atlassian.net/browse/SAAS-BBBBB): Short description **Upcoming challenges** Forward-looking risks — PTO, dependencies, team availability, etc. If the engineer said nothing, write "None". ``` **Important:** When sending to Slack via the API, use `\n\n` (double newline) between each section. Slack collapses single newlines, so you need two to get visible spacing between sections. **Rules for the draft:** - **Highlights:** Use only what the engineer selected — do not decide on their behalf. Write a 1-sentence summary of the highlighted work based on the ticket content and what the engineer said when selecting the category. Place this before the ti
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.