plugins/teamcraft-jcg/skills/plan-sprint/SKILL.md
Plan a sprint — organise a Jira backlog with issues the team commits to for the sprint period, then create the sprint, add the issues, and optionally start it. Works for first sprints on new projects and ongoing sprints. Use when doing sprint planning, asking "what should we build next", grooming the backlog, starting a new sprint, or deciding what goes into the next iteration. Also run when prioritizing issues for upcoming work or asking "what's in the backlog".
npx skillsauth add codingthefuturewithai/claude-code-primitives teamcraft-jcg:plan-sprintInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Organise a sprint: a named set of Jira issues the team is committing to for the sprint period. The primary job is selection and organisation. Issue creation is the exception, not the rule — it only happens when there is genuinely no backlog to plan from.
Sprint scope is what the team can actually deliver in the time box — not everything the PRD describes, not a comprehensive backlog. When in doubt, do less. A sprint the team can complete beats a sprint that looks thorough on paper.
Before loading anything, ask the user what they are planning today. Present the options clearly:
Then load exactly what is needed for that path and nothing more.
Load context: Ask what requirements input they have — a PRD in Confluence, notes, a description they want to give verbally, or nothing yet. Do not assume a PRD exists. If they can point at a Confluence page (by URL or page ID), use mcp__sooperset-mcp-atlassian__confluence_get_page directly. If they want you to search, use mcp__sooperset-mcp-atlassian__confluence_search and confirm the right document before loading anything. If the page ID is available from .teamcraft/project.md, use it directly. If they have tech decisions captured in Confluence, ask the same way. Work with whatever they have.
Define the sprint: Get the sprint goal, sprint name, start date, and end date from the user.
Propose issues: Based on the PRD, tech decisions, and sprint goal, propose a walking skeleton — the minimal end-to-end slice that proves the architecture works, not a feature-complete product. Each issue completable by one developer in 1-3 days with a clear, observable outcome. Don't overload the sprint.
Present all proposed issues for review. Get explicit confirmation and incorporate any changes before proceeding.
Identify the Jira project: Only after the sprint content is agreed, use mcp__sooperset-mcp-atlassian__jira_get_all_projects to surface what is visible and ask the user to confirm which project to use. Never assume. Record the Jira project key (e.g., PROJ) and numeric project ID from the result.
If a GitHub repo also needs to be created for this project, try in this order:
gh repo create via Bash with appropriate flags — confirm name, owner, and visibility first. Create with --clone=false so it is empty for the developer's scaffolding tool.Create issues: For each confirmed issue, use mcp__sooperset-mcp-atlassian__jira_search_fields to discover available fields, then draft and get explicit confirmation before creating with mcp__sooperset-mcp-atlassian__jira_create_issue. Standard Jira issue types are Story, Bug, Task, Epic, and Subtask — use the type appropriate to the work. Never create issues in bulk. Apply the right format by issue type.
Before drafting the first issue, read the reference file matching the issue type — references/example-feature-issue.md, references/example-bug-issue.md, or references/example-chore-issue.md. These define the required structure. Every issue must include all sections from the reference: Background & Goal, Acceptance Criteria, Technical Guidance, and Testing Requirements (for features and bugs) or Verification (for chores). An issue missing any of these sections is incomplete — a developer cannot pick it up cold without them.
As more issues are created, update cross-issue dependency references to use the real issue keys just assigned (e.g., PROJ-1, PROJ-2).
Identify the Jira project: Use mcp__sooperset-mcp-atlassian__jira_get_all_projects to see what is visible, surface the results, and ask the user which project they are planning for. Never assume. Confirm once identified and record the Jira project key.
Load sprint history: Use mcp__sooperset-mcp-atlassian__jira_get_agile_boards to find the project's board, then mcp__sooperset-mcp-atlassian__jira_get_sprints_from_board to see existing sprints. This gives context for naming the new sprint and understanding the project's cadence.
Load the backlog: Fetch open Jira issues not currently in a sprint using JQL:
project = [PROJ] AND sprint is EMPTY AND resolution = Unresolved ORDER BY priority DESC
Present these to the user — these are the candidates for this sprint.
If the backlog is thin or empty: tell the user to create backlog issues first and then come back to plan the sprint.
Define the sprint: Based on sprint history, propose a name that follows the existing pattern (e.g., "Sprint 3" following "Sprint 2"). Get the sprint goal, start date, and end date from the user.
Select issues: Help the user decide which backlog issues belong in this sprint based on the sprint goal, priority, and capacity. The user drives selection — Claude advises.
Ask the user what they have and whether a Jira project already exists. If not, offer to identify or create one. Work with whatever they provide.
If issues are created as part of this session, follow the same issue creation steps as Path 1 — whatever applies.
If after the conversation there is still nothing concrete to plan from, tell the user to create backlog issues first and then come back to plan the sprint.
After all issues are created or selected, and the sprint details are confirmed:
Find the board: Use mcp__sooperset-mcp-atlassian__jira_get_agile_boards to find the project's Scrum board. If multiple boards exist, ask the user which one to use.
Create the sprint: Use mcp__sooperset-mcp-atlassian__jira_create_sprint with the board ID, sprint name, goal, start date, and end date.
Add issues to the sprint: Use mcp__sooperset-mcp-atlassian__jira_add_issues_to_sprint to move all confirmed issues into the new sprint.
Start the sprint: Ask the user whether to start the sprint now. If yes, use mcp__sooperset-mcp-atlassian__jira_update_sprint to set the sprint state to active. If not, leave it as a future sprint ready to start when the team is ready.
Report all issues created or selected (issue key + title + one-line description). Confirm the sprint was created, name the issues added, and report whether it was started.
For your developer — values to record in .teamcraft/project.md:
GitHub repo: [owner/repo or "not yet created"]
Jira site URL: [https://yoursite.atlassian.net]
Jira project key: [PROJ]
Jira project ID: [numeric ID]
Confluence PRD page ID: [ID or "ask the PM"]
Confluence tech decisions page ID: [ID or "ask the tech lead"]
Confluence conventions page ID: [ID or "ask the PM"]
The developer creates and maintains .teamcraft/project.md. This summary gives them everything they need.
development
Launch (or re-launch) the user's live, multi-project work board. The dashboard is a single HTML file copied to a stable user-side location at ~/.claude/teamcraft-board.html and opened in the user's default browser. It has two views via a header toggle — a drag-and-drop Kanban Board and a live Status tab with analytics (work by status, throughput, cycle time, aging, blocked chains, recomputed on every poll). Each project is added via a header dropdown; the dashboard polls each project's .teamcraft/work directly from the browser and updates in real time. Use when the user says 'show me the kanban', 'work board', 'open the board', 'board view', 'kanban view', 'live dashboard', 'visual dashboard', 'live status dashboard', 'status dashboard', 'project metrics', 'throughput/cycle-time view', 'HTML view of work items', 'drag-and-drop board', or asks to see/move/track work visually.
development
Run a retrospective — AI compiles evidence from recent work, facilitates human reflection, and captures process decisions back into living docs. Use when the user says 'run a retro', 'let's do a retrospective', 'run a retrospective on the last 2 weeks', 'let's reflect on how that feature went', or 'time for a retro'.
development
Re-evaluate what Claude needs to be told about this project as the codebase evolves. Some gotchas become obvious from the code (remove them). New gotchas emerge. Decisions change. Use when the user says 'refresh the rules', 'update Claude's context', 'are the rules still accurate', 'clean up claude rules', or after significant codebase changes.
development
Report project status from work items and git history — either as a quick, interpreted read here in the session, or by pointing the developer to the live Status dashboard (the work board's Status tab). Covers work by status, what's in flight, cycle times, throughput, backlog priorities, aging alerts, blocked chains, and how commit activity lines up with the board. Use when the user says 'project status', 'show me the project status', 'what's the status of the work items', 'how are we doing', 'generate a status report', or asks for a status dashboard.