sprint-planning
Skill4 starsChanged 4 months agoMITView on GitHub
Use on /sprint-planning or when the user asks for planning poker or story-point estimation: the AI seeds Fibonacci story-point estimates with grounded rationale and the team votes in a Slack thread, with the AI only proposing and humans finalizing, scoped to this channel's project only.
- Reads credentials
23 other projects use a version of this.
Adopted by
Most recently taken up by
- nisarth/claude-skills-storetheir own version, first seen Nov 8, 2026
- J03Fr0st/skillstheir own version, first seen Nov 1, 2026
- fullstackinnoAI/skillstheir own version, first seen Nov 1, 2026
- dmzoneill/skillstheir own version, first seen Oct 24, 2026
- SkillMedev/product-manager-stacktheir own version, first seen Oct 20, 2026
- razbakov/skillstheir own version, first seen Oct 17, 2026
Used with
Projects with it also use sprint-review and retrospective.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
nobufumi-tegoSkillsprint-review
スプリント終了時に実行。DoD確認・デプロイ・CLAUDE.md更新・レトロ記録を行う。
Also in 4 projects that use this
MicrosoftSkillretrospective
Review how work went and improve the next round. USE WHEN asked for a retro, delays, or process lessons. DO NOT USE for code review or transcript replay.
Also in 3 projects that use this
Other versions23 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 23
- anthropics/knowledge-work-plugins★ 35ksame name
- cubetribe/ClaudeCode_GodMode-On★ 53same name
- sohei56/maul-team★ 17same name
- aws-solutions/konductor★ 11same name
- timwukp/agent-skills-best-practice★ 10same name
- razbakov/skills★ 4same name
- cyxar4uk/ya360-mcp★ 2same name
- dmzoneill/skills★ 2same name
- EndogenAI/dogma★ 2same name
- illodev/taiga-mcp★ 2same name
13 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository11 other files it gives its agents.
- backlog-proposalSkill
- backlog-updateSkill
- conflict-detectionSkill
- daily-scrumSkill
- impact-analysisSkill
- loremaster-setupSkill
- meeting-agendaSkill
- refine-wikiSkill
- resolve-conflictsSkill
- sprint-retroSkill
- wiki-qaSkill
The file
We split this skill into the rules it gives an agent
8 rules. 0 are common, 2 are distinctive, and 6 are very specific to this project.
0
Common
Most of the 17 edited versions we read keep these.
2
Distinctive
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 35
When the user asks for *sprint candidate selection, not planning poker* — e.g.
- Very specific: line 38
Collect grounds: use the PRD/wiki/graphify to see each issue's MVP importance, dependencies, impact radius, and unresolved status.
- Very specific: line 39
Recommend a 2-week scope: if there is no team velocity, state explicitly that this is a cold start and split conservatively into must / …
- Very specific: line 44
Collect targets: read this sprint's candidate issues from Jira (POST /rest/api/3/search/jql, project=${KEY}, items with no story points …
- Very specific: line 52
After posting, reply briefly only: e.g.
- Very specific: line 56
Finalize and apply: ask for consensus-point finalization via request_approval [Allow]/[Deny] buttons (title = item + final points.
- Very specific: line 68
All other replies: Slack mrkdwn only.
- Distinctive: line 79
Never invent estimation rationale without grounds in the wiki/Jira.
“Common” is measured: kept by at least 6 in 10 of the 17 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
AI-Seeded Planning Poker (PM)
The AI throws out a grounded seed estimate and the team finalizes it by vote. Unit = story points (Fibonacci 1·2·3·5·8·13). The AI only proposes estimates. Voting, consensus, and finalization are human.
Jira Project Key (multi-project — per-vault mapping)
jira.env provides only JIRA_BASE_URL, JIRA_EMAIL, JIRA_API_TOKEN (one shared token for all projects). The project key comes from a per-vault mapping file: ~/.hermes/keys/jira-projects.tsv (<vault-name><TAB><Jira-key>, e.g. example-project → PROJ). Adding a new project is one line in this file (no per-channel key changes). Templates for both files ship in this repo's examples/. All Jira commands below use ${KEY}:
set -a; . ~/.hermes/keys/jira.env; set +a # BASE, EMAIL, TOKEN (shared)
BASE="${JIRA_BASE_URL%/}"
VAULT="<absolute path to this channel's lore vault (see the channel prompt)>"
KEY=$(awk -v p="$(basename "$VAULT")" '$1==p{print $2}' ~/.hermes/keys/jira-projects.tsv)Flow
A. When asked only for a sprint-scope proposal
When the user asks for sprint candidate selection, not planning poker — e.g. "suggest what's worth doing this sprint", "recommend a 2-week sprint scope" — do not start by posting poker cards; propose a scope draft first.
- Query the full backlog: query all project issues from Jira (key, title, status, priority, type). Separate done / in progress / to do, and exclude completed items from this sprint's candidates.
- Collect grounds: use the PRD/wiki/graphify to see each issue's MVP importance, dependencies, impact radius, and unresolved status. Mark items with an open conflict or "to be decided later" as held or low-confidence.
- Recommend a 2-week scope: if there is no team velocity, state explicitly that this is a cold start and split conservatively into
must / recommended / stretch / hold. An MVP first sprint usually prioritizes items that later features build on — e.g. "platform / login / core CRUD". - Seed points are optional: you may attach Fibonacci seed points to aid the scope judgment, but never present them as finalized values. Label them explicitly as "seeds for planning poker".
- Next action: end by offering "if you want, I'll open planning poker cards for these candidates". Move to flow B below only after the user asks for poker/estimation/voting.
B. Planning poker (estimate, vote, finalize)
- Collect targets: read this sprint's candidate issues from Jira (
POST /rest/api/3/search/jql,project=${KEY}, items with no story points yet). Prepare Jira auth and the project key per "## Jira Project Key" above — loadjira.envand look upKEYfromjira-projects.tsv(never print the token). - Seed estimate + rationale (per item):
- One point estimate + the rationale for why that score.
- Cold start (no history) rationale material: (1) relative complexity (vs other items); (2) graphify impact radius (
graphify query "<item>"for the full dependency neighborhood,graphify explain/pathfor the key connections and paths — more connections and touching god-nodes = bigger impact); (3) dependencies, open conflicts, under-specification (uncertain = round up + mark low confidence). - Cite wiki sources (traceability).
- Card posting =
poker.py's job (Block Kit): once estimation is done, save the item data as JSON to/tmp/loremaster_poker.jsonand run the helper. The script posts the card and opens the thread — do not print the card content again as text yourself (duplication).- JSON schema:
{"items":[{"key":"PROJ-1","title":"...","seed":5,"confidence":"medium","rationale":"one line"}, ...], "hold":["Login: CONFLICT-001 open", ...]}(key = Jira issue key, seed = integer, rationale = one line, hold = topics held due to conflicts). - Run:
python3 ~/.hermes/scripts/loremaster-poker.py post --estimates /tmp/loremaster_poker.json - After posting, reply briefly only: e.g. "🃏 Planning poker cards posted. Vote once in the thread as
PROJ-…=N(add— rationaleif you differ from the seed)." - If the helper post fails on auth/channel configuration: do not hide the failure — post the same content yourself as a Slack mrkdwn text card and run the vote. Use no tables; list each item as
*PROJ-… · Title*,• Seed: *Npt*,• Rationale:, and include a thread-reply format example (PROJ-18=8 — rationale, ...). Then, as users vote, tally manually from the votes that arrive in the conversation only.
- JSON schema:
- Aggregation =
poker.py's job: on a "tally/close the vote" request, runpython3 ~/.hermes/scripts/loremaster-poker.py aggregate. The script collects everyone's thread votes viaconversations.repliesand posts an aggregate card with the distribution, median, outliers (🔥 re-discuss), and rationale (like real poker, contested items get their rationale surfaced). Do not duplicate the card as text.- (Alternative) if emoji voting is preferred: one message per item + number emoji (
reactionsscope). The default is the thread form above.
- (Alternative) if emoji voting is preferred: one message per item + number emoji (
- Finalize and apply: ask for consensus-point finalization via
request_approval[Allow]/[Deny] buttons (title= item + final points; no prose). Apply only APPROVED items to the Jira Story Points field (PUT /rest/api/3/issue/{key}). No automatic application without approval. Assignment is never automatic.- Find the Story Points field via the Jira field lookup (
/rest/api/3/field) — look forStory point estimate. It is oftencustomfield_10016on Jira Cloud, but look it up before hardcoding.
- Find the Story Points field via the Jira field lookup (
- When asked to create and start a sprint: first summarize the sprint name, period, included issues, and finalized points and get approval via
request_approval. Once approved, use the Agile API in order: find the board (/rest/agile/1.0/board?projectKeyOrId=${KEY}), create the sprint (POST /rest/agile/1.0/sprint), add issues (POST /rest/agile/1.0/sprint/{id}/issue), start it (POST /rest/agile/1.0/sprint/{id}withstate=active). After creation, re-query the issues' Sprint field, points, and the sprint state to verify, then report. If the user says "2 weeks", set start = now in the team's timezone (TZ="$TEAM_TZ"— always pass an explicit timezone so dates match the team's wall clock) and end = +14 days, and report the team-timezone and Jira UTC values separately.- If backlog creation and sprint start arrive in the same request: (a) backlogs not yet in Jira are created first with per-item approval per the
backlog-proposalrules, and (b) only the issues the user explicitly named for the sprint get a separaterequest_approvaland go into the sprint. Do not confuse "add the whole backlog" with "issues for this sprint", and never create duplicates of already-created issues. - The Agile start payload may need more than the creation response's fields depending on the Jira instance — send
id,name,state: active,startDate,endDate,originBoardId,goaltogether. Then confirmstate=activeand the dates viaGET /rest/agile/1.0/sprint/{id}, and re-query the included issues by JQL, verifying at least key, status, priority, type. - See
references/jira-sprint-create-start-tested.mdfor a verified run. In particular, issue addition may succeed with HTTP 204/empty body, and report "sprint started" only after the re-query confirmsstate=active.
- If backlog creation and sprint start arrive in the same request: (a) backlogs not yet in Jira are created first with per-item approval per the
Calibration (cumulative, follow-up)
- At sprint end (chained with sprint-retro), match actual time spent ↔ finalized points to learn velocity (points→time) and category/individual bias → refine the next seeds. The unit is points; the calibration fuel is time.
Slack output format (important — this is read in Slack)
- Seed/aggregate cards are posted by
poker.pyas Block Kit. Your direct replies are short guidance only (no card duplication). - All other replies: Slack mrkdwn only. Markdown tables (
| ... |),**bold**, and#headersbreak in Slack — forbidden. - Bold =
*text*, italic =_text_, code =`code`, lists =•or-. - Items as short sections instead of tables. Example:
Separate items with a blank line. If long, keep the essentials; rationale 1-2 lines.*PROJ-PP-1 · Real-time co-editing* — seed *8pt* (low confidence) • Rationale: co-editing approach and cursor UI unspecified; collaborator-count conflict open
Rules (invariant)
- The AI estimate is a starting point, not an anchor — the team vote wins. The AI never forces consensus.
- Never invent estimation rationale without grounds in the wiki/Jira. If uncertain, mark "low confidence" and round up.
- Items with an open conflict may be held as "estimate after conflict resolution".
- This channel = this project only. This project's Jira key (
${KEY}) only. Other projects forbidden.
Output
- Post per-item [seed points, rationale, voting instructions] to Slack. Finalization and Jira application only after human approval.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

