一键导入
groom-sprint-tickets
Slash command: /groom-sprint-tickets <sprint name>. Do NOT auto-invoke. Only runs when explicitly called via slash command.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Slash command: /groom-sprint-tickets <sprint name>. Do NOT auto-invoke. Only runs when explicitly called via slash command.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Use when creating, opening, or submitting a pull request in a Dimagi mobile/CommCare repo — identified by JIRA-prefixed branches (e.g. CCCT-1929-...), a `RELEASES.md` with `### Release Notes` and `### QA Notes` sections, and the dimagi PR template (Safety story / Product Description / Technical Summary / QA Plan). Also triggers on "ship this" or when implementation is complete and ready to push. For repos without these conventions, use the generic `create-pr` skill instead.
Fix CI failures and address review feedback on the current branch's PR. Use when CI is failing, review comments need addressing, or you need to push fixes for an open PR. Supports --dry-run to preview without changes.
Run a full dependency audit for a project — covers Python (pip-tools) and front-end (npm/yarn) if present. Produces report, applies safe bumps, emits Jira-ready ticket list for risky/EoL items. Use when running quarterly maintenance or on demand.
End of day wrap-up — captures what got done, what didn't, and plans for tomorrow. Weekly close-out on configurable review day (default Friday).
Conversational skill for reviewing, updating, and refining your professional goals.
Morning check-in — surfaces goals, summarizes where you left off, captures today's plan, and gives goal-alignment feedback. Weekly review mode on configurable review day (default Friday).
| name | groom-sprint-tickets |
| description | Slash command: /groom-sprint-tickets <sprint name>. Do NOT auto-invoke. Only runs when explicitly called via slash command. |
| user_invocable | true |
Identifies tickets in a Jira sprint that are missing story points, assesses whether their requirements are clear enough for estimation by examining the ticket details and the codebase, then either posts clarifying questions as a comment or suggests an updated ticket description.
/groom-sprint-tickets Web Team - Sprint 89
The sprint name is passed as the argument. If no argument is provided, ask the user for the sprint name before proceeding.
digraph groom {
rankdir=TB;
node [shape=box];
input [label="/groom-sprint-tickets <sprint name>" shape=doublecircle];
fetch [label="Fetch sprint tickets with\ncustomfield_10017 (story points)"];
filter [label="Identify tickets where\nstory points = null"];
none [label="Report: all tickets have\nstory points" shape=doublecircle];
pick [label="For each unpointed ticket"];
details [label="Fetch full ticket details\n+ comments"];
has_response [label="Has unanswered\nclarifying questions?" shape=diamond];
skip [label="Skip - awaiting response"];
explore [label="Explore codebase for\nrelated code"];
assess [label="Requirements clear\nenough to estimate?" shape=diamond];
questions [label="Post clarifying questions\nas Jira comment"];
update [label="Suggest updated description\nto user for approval"];
test_docs [label="Identify testing &\ndocumentation needs"];
links [label="Add issue links\n(blocked by, relates to)"];
next [label="Next ticket" shape=doublecircle];
input -> fetch;
fetch -> filter;
filter -> none [label="none found"];
filter -> pick [label="found"];
pick -> details;
details -> has_response;
has_response -> skip [label="yes, still waiting"];
has_response -> explore [label="no"];
explore -> assess;
assess -> questions [label="no - unclear"];
assess -> update [label="yes - clear"];
update -> test_docs;
test_docs -> links [label="if dependencies found"];
questions -> next;
links -> next;
skip -> next;
}
Query Jira for all tickets in the sprint, including story points:
JQL: sprint = "<sprint name>"
Fields: summary, status, issuetype, assignee, customfield_10017
Important: Story points are stored in customfield_10017 in the Dimagi Jira instance. This field is NOT listed in field metadata — it only appears when requesting *all fields or by explicit name.
Present a summary table of all tickets showing which have/lack story points.
Fetch the full ticket including comments:
Fields: summary, description, parent, issuelinks, comment, components, customfield_10008 (epic link)
Check comments first. If you previously posted clarifying questions and there is no response yet, skip the ticket and note it as "awaiting response."
If there IS a response to prior questions, proceed to assessment incorporating the answers.
Use the codebase to understand the scope of work described in the ticket:
This context is critical for assessing whether requirements are specific enough and for identifying testing and documentation needs in Step 5.
Requirements are clear enough if:
Requirements need clarification if:
Regardless of clarity, also evaluate testing and documentation needs (used in Step 5):
If requirements are unclear → Post clarifying questions:
If requirements are clear → Suggest updated description:
When suggesting an updated description (requirements are clear), assess and include the following based on what you found in Step 3 and Step 4:
Unit Testing:
<test file> to cover the changed behavior"<specific component/function>"Documentation:
<doc location> to reflect the new behavior"<feature/endpoint> in <appropriate location>"Format in the acceptance criteria:
## Acceptance Criteria
- [ ] <functional criterion 1>
- [ ] <functional criterion 2>
- [ ] Update unit tests in `tests/test_payments.py` to cover new validation rules
- [ ] Update API documentation to reflect the new `status` field on the response
Testing and documentation criteria go at the end of the acceptance criteria list, after the functional requirements.
After processing all unpointed tickets, summarize:
| Field | Key | Notes |
|---|---|---|
| Story Points | customfield_10017 | Not in metadata; must request explicitly |
| Sprint | customfield_10010 | Array of sprint objects |
| Epic Link | customfield_10008 | Parent epic key |
| All fields | ["*all"] | Use when discovering custom fields |
customfield_10016 for story points — Wrong field. Use customfield_10017.