[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6P9B22SYGN31107EFX78SVC":3,"skill-same:01M6P9B22SYGN31107EFX78SVC":76},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":32,"linkOnly":33,"markdownContent":34,"markdownBody":35,"frontMatter":36,"refName":37,"commitSha":38,"skillDirectory":39,"forksCount":40,"repositoryHtmlUrl":41,"repositoryHomepageUrl":6,"ownerHtmlUrl":42,"ownerBlogUrl":43,"ownerDescription":44,"updatedAt":45,"install":46,"resources":59},"01M6P9B22SYGN31107EFX78SVC","bmad-sprint-planning",null,"Generate sprint status tracking from epics. Use when the user says \"run sprint planning\" or \"generate sprint plan\"","combsmith\u002F.github-private","combsmith","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F258516906?v=4","01M6H305A64BBE95VKYNNXDV4Y","CombSmith","01M6P8XQJHQ22WV72XSHE3NSKS",4,"MIT","https:\u002F\u002Fgithub.com\u002Fcombsmith\u002F.github-private\u002Fblob\u002Fmain\u002Fframeworks\u002Fbmad-method\u002Fsrc\u002Fbmm-skills\u002F4-implementation\u002Fbmad-sprint-planning\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31],"planning","bmad sprint planning","bmad","sprint planning","sprint","status","generate","run","plan","tracking","user","sprint plan","use","2026-11-10 10:12:30",false,"---\nname: bmad-sprint-planning\ndescription: 'Generate sprint status tracking from epics. Use when the user says \"run sprint planning\" or \"generate sprint plan\"'\n---\n\n# Sprint Planning Workflow\n\n**Goal:** Generate sprint status tracking from epics, detecting current story statuses and building a complete sprint-status.yaml file.\n\n**Your Role:** You are a Developer generating and maintaining sprint tracking. Parse epic files, detect story statuses, and produce a structured sprint-status.yaml.\n\n## Conventions\n\n- Bare paths (e.g. `checklist.md`) resolve from the skill root.\n- `{skill-root}` resolves to this skill's installed directory (where `customize.toml` lives).\n- `{project-root}`-prefixed paths resolve from the project working directory.\n- `{skill-name}` resolves to the skill directory's basename.\n\n## On Activation\n\n### Step 1: Resolve the Workflow Block\n\nRun: `python3 {project-root}\u002F_bmad\u002Fscripts\u002Fresolve_customization.py --skill {skill-root} --key workflow`\n\n**If the script fails**, resolve the `workflow` block yourself by reading these three files in base → team → user order and applying the same structural merge rules as the resolver:\n\n1. `{skill-root}\u002Fcustomize.toml` — defaults\n2. `{project-root}\u002F_bmad\u002Fcustom\u002F{skill-name}.toml` — team overrides\n3. `{project-root}\u002F_bmad\u002Fcustom\u002F{skill-name}.user.toml` — personal overrides\n\nAny missing file is skipped. Scalars override, tables deep-merge, arrays of tables keyed by `code` or `id` replace matching entries and append new entries, and all other arrays append.\n\n### Step 2: Execute Prepend Steps\n\nExecute each entry in `{workflow.activation_steps_prepend}` in order before proceeding.\n\n### Step 3: Load Persistent Facts\n\nTreat every entry in `{workflow.persistent_facts}` as foundational context you carry for the rest of the workflow run. Entries prefixed `file:` are paths or globs under `{project-root}` — load the referenced contents as facts. All other entries are facts verbatim.\n\n### Step 4: Load Config\n\nLoad config from `{project-root}\u002F_bmad\u002Fbmm\u002Fconfig.yaml` and resolve:\n\n- `project_name`, `user_name`\n- `communication_language`, `document_output_language`\n- `implementation_artifacts`\n- `planning_artifacts`\n- `date` as system-generated current datetime\n- `project_context` = `**\u002Fproject-context.md` (load if exists)\n- YOU MUST ALWAYS SPEAK OUTPUT in your Agent communication style with the config `{communication_language}`\n- Generate all documents in `{document_output_language}`\n\n### Step 5: Greet the User\n\nGreet `{user_name}`, speaking in `{communication_language}`.\n\n### Step 6: Execute Append Steps\n\nExecute each entry in `{workflow.activation_steps_append}` in order.\n\nActivation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed.\n\n## Paths\n\n- `tracking_system` = `file-system`\n- `project_key` = `NOKEY`\n- `story_location` = `{implementation_artifacts}`\n- `story_location_absolute` = `{implementation_artifacts}`\n- `epics_location` = `{planning_artifacts}`\n- `epics_pattern` = `*epic*.md`\n- `status_file` = `{implementation_artifacts}\u002Fsprint-status.yaml`\n\n## Input Files\n\n| Input | Path | Load Strategy |\n|-------|------|---------------|\n| Epics | `{planning_artifacts}\u002F*epic*.md` (whole) or `{planning_artifacts}\u002F*epic*\u002F*.md` (sharded) | FULL_LOAD |\n\n## Execution\n\n### Document Discovery - Full Epic Loading\n\n**Strategy**: Sprint planning needs ALL epics and stories to build complete status tracking.\n\n**Epic Discovery Process:**\n\n1. **Search for whole document first** - Look for `epics.md`, `bmm-epics.md`, or any `*epic*.md` file\n2. **Check for sharded version** - If whole document not found, look for `epics\u002Findex.md`\n3. **If sharded version found**:\n   - Read `index.md` to understand the document structure\n   - Read ALL epic section files listed in the index (e.g., `epic-1.md`, `epic-2.md`, etc.)\n   - Process all epics and their stories from the combined content\n   - This ensures complete sprint status coverage\n4. **Priority**: If both whole and sharded versions exist, use the whole document\n\n**Fuzzy matching**: Be flexible with document names - users may use variations like `epics.md`, `bmm-epics.md`, `user-stories.md`, etc.\n\n\u003Cworkflow>\n\n\u003Cstep n=\"1\" goal=\"Parse epic files and extract all work items\">\n\u003Caction>Load {project_context} for project-wide patterns and conventions (if exists)\u003C\u002Faction>\n\u003Caction>Communicate in {communication_language} with {user_name}\u003C\u002Faction>\n\u003Caction>Look for all files matching `{epics_pattern}` in {epics_location}\u003C\u002Faction>\n\u003Caction>Could be a single `epics.md` file or multiple `epic-1.md`, `epic-2.md` files\u003C\u002Faction>\n\n\u003Caction>For each epic file found, extract:\u003C\u002Faction>\n\n- Epic numbers from headers like `## Epic 1:` or `## Epic 2:`\n- Story IDs and titles from patterns like `### Story 1.1: User Authentication`\n- Convert story format from `Epic.Story: Title` to kebab-case key: `epic-story-title`\n\n**Story ID Conversion Rules:**\n\n- Original: `### Story 1.1: User Authentication`\n- Replace period with dash: `1-1`\n- Convert title to kebab-case: `user-authentication`\n- Final key: `1-1-user-authentication`\n\n\u003Caction>Build complete inventory of all epics and stories from all epic files\u003C\u002Faction>\n\u003C\u002Fstep>\n\n\u003Cstep n=\"2\" goal=\"Build sprint status structure\">\n\u003Caction>For each epic found, create entries in this order:\u003C\u002Faction>\n\n1. **Epic entry** - Key: `epic-{num}`, Default status: `backlog`\n2. **Story entries** - Key: `{epic}-{story}-{title}`, Default status: `backlog`\n3. **Retrospective entry** - Key: `epic-{num}-retrospective`, Default status: `optional`\n\n**Example structure:**\n\n```yaml\ndevelopment_status:\n  epic-1: backlog\n  1-1-user-authentication: backlog\n  1-2-account-management: backlog\n  epic-1-retrospective: optional\n```\n\n\u003C\u002Fstep>\n\n\u003Cstep n=\"3\" goal=\"Apply intelligent status detection\">\n\u003Caction>For each story, detect current status by checking files:\u003C\u002Faction>\n\n**Story file detection:**\n\n- Check: `{story_location_absolute}\u002F{story-key}.md` (e.g., `stories\u002F1-1-user-authentication.md`)\n- If exists → upgrade status to at least `ready-for-dev`\n\n**Preservation rule:**\n\n- If existing `{status_file}` exists and has more advanced status, preserve it\n- Never downgrade status (e.g., don't change `done` to `ready-for-dev`)\n\n**Status Flow Reference:**\n\n- Epic: `backlog` → `in-progress` → `done`\n- Story: `backlog` → `ready-for-dev` → `in-progress` → `review` → `done`\n- Retrospective: `optional` ↔ `done`\n  \u003C\u002Fstep>\n\n\u003Cstep n=\"4\" goal=\"Generate sprint status file\">\n\u003Caction>Create or update {status_file} with:\u003C\u002Faction>\n\n**File Structure:**\n\n```yaml\n# generated: {date}\n# last_updated: {date}\n# project: {project_name}\n# project_key: {project_key}\n# tracking_system: {tracking_system}\n# story_location: {story_location}\n\n# STATUS DEFINITIONS:\n# ==================\n# Epic Status:\n#   - backlog: Epic not yet started\n#   - in-progress: Epic actively being worked on\n#   - done: All stories in epic completed\n#\n# Epic Status Transitions:\n#   - backlog → in-progress: Automatically when first story is created (via create-story)\n#   - in-progress → done: Manually when all stories reach 'done' status\n#\n# Story Status:\n#   - backlog: Story only exists in epic file\n#   - ready-for-dev: Story file created in stories folder\n#   - in-progress: Developer actively working on implementation\n#   - review: Ready for code review (via Dev's code-review workflow)\n#   - done: Story completed\n#\n# Retrospective Status:\n#   - optional: Can be completed but not required\n#   - done: Retrospective has been completed\n#\n# WORKFLOW NOTES:\n# ===============\n# - Epic transitions to 'in-progress' automatically when first story is created\n# - Stories can be worked in parallel if team capacity allows\n# - Developer typically creates next story after previous one is 'done' to incorporate learnings\n# - Dev moves story to 'review', then runs code-review (fresh context, different LLM recommended)\n\ngenerated: { date }\nlast_updated: { date }\nproject: { project_name }\nproject_key: { project_key }\ntracking_system: { tracking_system }\nstory_location: { story_location }\n\ndevelopment_status:\n  # All epics, stories, and retrospectives in order\n```\n\n\u003Caction>Write the complete sprint status YAML to {status_file}\u003C\u002Faction>\n\u003Caction>CRITICAL: Metadata appears TWICE - once as comments (#) for documentation, once as YAML key:value fields for parsing\u003C\u002Faction>\n\u003Caction>Ensure all items are ordered: epic, its stories, its retrospective, next epic...\u003C\u002Faction>\n\u003C\u002Fstep>\n\n\u003Cstep n=\"5\" goal=\"Validate and report\">\n\u003Caction>Perform validation checks:\u003C\u002Faction>\n\n- [ ] Every epic in epic files appears in {status_file}\n- [ ] Every story in epic files appears in {status_file}\n- [ ] Every epic has a corresponding retrospective entry\n- [ ] No items in {status_file} that don't exist in epic files\n- [ ] All status values are legal (match state machine definitions)\n- [ ] File is valid YAML syntax\n\n\u003Caction>Count totals:\u003C\u002Faction>\n\n- Total epics: {{epic_count}}\n- Total stories: {{story_count}}\n- Epics in-progress: {{in_progress_count}}\n- Stories done: {{done_count}}\n\n\u003Caction>Display completion summary to {user_name} in {communication_language}:\u003C\u002Faction>\n\n**Sprint Status Generated Successfully**\n\n- **File Location:** {status_file}\n- **Total Epics:** {{epic_count}}\n- **Total Stories:** {{story_count}}\n- **Epics In Progress:** {{in_progress_count}}\n- **Stories Completed:** {{done_count}}\n\n**Next Steps:**\n\n1. Review the generated {status_file}\n2. Use this file to track development progress\n3. Agents will update statuses as they work\n4. Re-run this workflow to refresh auto-detected statuses\n\n\u003Caction>Run: `python3 {project-root}\u002F_bmad\u002Fscripts\u002Fresolve_customization.py --skill {skill-root} --key workflow.on_complete` — if the resolved value is non-empty, follow it as the final terminal instruction before exiting.\u003C\u002Faction>\n\u003C\u002Fstep>\n\n\u003C\u002Fworkflow>\n\n## Additional Documentation\n\n### Status State Machine\n\n**Epic Status Flow:**\n\n```\nbacklog → in-progress → done\n```\n\n- **backlog**: Epic not yet started\n- **in-progress**: Epic actively being worked on (stories being created\u002Fimplemented)\n- **done**: All stories in epic completed\n\n**Story Status Flow:**\n\n```\nbacklog → ready-for-dev → in-progress → review → done\n```\n\n- **backlog**: Story only exists in epic file\n- **ready-for-dev**: Story file created (e.g., `stories\u002F1-3-plant-naming.md`)\n- **in-progress**: Developer actively working\n- **review**: Ready for code review (via Dev's code-review workflow)\n- **done**: Completed\n\n**Retrospective Status:**\n\n```\noptional ↔ done\n```\n\n- **optional**: Ready to be conducted but not required\n- **done**: Finished\n\n### Guidelines\n\n1. **Epic Activation**: Mark epic as `in-progress` when starting work on its first story\n2. **Sequential Default**: Stories are typically worked in order, but parallel work is supported\n3. **Parallel Work Supported**: Multiple stories can be `in-progress` if team capacity allows\n4. **Review Before Done**: Stories should pass through `review` before `done`\n5. **Learning Transfer**: Developer typically creates next story after previous one is `done` to incorporate learnings\n","# Sprint Planning Workflow\n\n**Goal:** Generate sprint status tracking from epics, detecting current story statuses and building a complete sprint-status.yaml file.\n\n**Your Role:** You are a Developer generating and maintaining sprint tracking. Parse epic files, detect story statuses, and produce a structured sprint-status.yaml.\n\n## Conventions\n\n- Bare paths (e.g. `checklist.md`) resolve from the skill root.\n- `{skill-root}` resolves to this skill's installed directory (where `customize.toml` lives).\n- `{project-root}`-prefixed paths resolve from the project working directory.\n- `{skill-name}` resolves to the skill directory's basename.\n\n## On Activation\n\n### Step 1: Resolve the Workflow Block\n\nRun: `python3 {project-root}\u002F_bmad\u002Fscripts\u002Fresolve_customization.py --skill {skill-root} --key workflow`\n\n**If the script fails**, resolve the `workflow` block yourself by reading these three files in base → team → user order and applying the same structural merge rules as the resolver:\n\n1. `{skill-root}\u002Fcustomize.toml` — defaults\n2. `{project-root}\u002F_bmad\u002Fcustom\u002F{skill-name}.toml` — team overrides\n3. `{project-root}\u002F_bmad\u002Fcustom\u002F{skill-name}.user.toml` — personal overrides\n\nAny missing file is skipped. Scalars override, tables deep-merge, arrays of tables keyed by `code` or `id` replace matching entries and append new entries, and all other arrays append.\n\n### Step 2: Execute Prepend Steps\n\nExecute each entry in `{workflow.activation_steps_prepend}` in order before proceeding.\n\n### Step 3: Load Persistent Facts\n\nTreat every entry in `{workflow.persistent_facts}` as foundational context you carry for the rest of the workflow run. Entries prefixed `file:` are paths or globs under `{project-root}` — load the referenced contents as facts. All other entries are facts verbatim.\n\n### Step 4: Load Config\n\nLoad config from `{project-root}\u002F_bmad\u002Fbmm\u002Fconfig.yaml` and resolve:\n\n- `project_name`, `user_name`\n- `communication_language`, `document_output_language`\n- `implementation_artifacts`\n- `planning_artifacts`\n- `date` as system-generated current datetime\n- `project_context` = `**\u002Fproject-context.md` (load if exists)\n- YOU MUST ALWAYS SPEAK OUTPUT in your Agent communication style with the config `{communication_language}`\n- Generate all documents in `{document_output_language}`\n\n### Step 5: Greet the User\n\nGreet `{user_name}`, speaking in `{communication_language}`.\n\n### Step 6: Execute Append Steps\n\nExecute each entry in `{workflow.activation_steps_append}` in order.\n\nActivation is complete. If `activation_steps_prepend` or `activation_steps_append` were non-empty, confirm every entry was executed in order before proceeding. Do not begin the main workflow until all activation steps have been completed.\n\n## Paths\n\n- `tracking_system` = `file-system`\n- `project_key` = `NOKEY`\n- `story_location` = `{implementation_artifacts}`\n- `story_location_absolute` = `{implementation_artifacts}`\n- `epics_location` = `{planning_artifacts}`\n- `epics_pattern` = `*epic*.md`\n- `status_file` = `{implementation_artifacts}\u002Fsprint-status.yaml`\n\n## Input Files\n\n| Input | Path | Load Strategy |\n|-------|------|---------------|\n| Epics | `{planning_artifacts}\u002F*epic*.md` (whole) or `{planning_artifacts}\u002F*epic*\u002F*.md` (sharded) | FULL_LOAD |\n\n## Execution\n\n### Document Discovery - Full Epic Loading\n\n**Strategy**: Sprint planning needs ALL epics and stories to build complete status tracking.\n\n**Epic Discovery Process:**\n\n1. **Search for whole document first** - Look for `epics.md`, `bmm-epics.md`, or any `*epic*.md` file\n2. **Check for sharded version** - If whole document not found, look for `epics\u002Findex.md`\n3. **If sharded version found**:\n   - Read `index.md` to understand the document structure\n   - Read ALL epic section files listed in the index (e.g., `epic-1.md`, `epic-2.md`, etc.)\n   - Process all epics and their stories from the combined content\n   - This ensures complete sprint status coverage\n4. **Priority**: If both whole and sharded versions exist, use the whole document\n\n**Fuzzy matching**: Be flexible with document names - users may use variations like `epics.md`, `bmm-epics.md`, `user-stories.md`, etc.\n\n\u003Cworkflow>\n\n\u003Cstep n=\"1\" goal=\"Parse epic files and extract all work items\">\n\u003Caction>Load {project_context} for project-wide patterns and conventions (if exists)\u003C\u002Faction>\n\u003Caction>Communicate in {communication_language} with {user_name}\u003C\u002Faction>\n\u003Caction>Look for all files matching `{epics_pattern}` in {epics_location}\u003C\u002Faction>\n\u003Caction>Could be a single `epics.md` file or multiple `epic-1.md`, `epic-2.md` files\u003C\u002Faction>\n\n\u003Caction>For each epic file found, extract:\u003C\u002Faction>\n\n- Epic numbers from headers like `## Epic 1:` or `## Epic 2:`\n- Story IDs and titles from patterns like `### Story 1.1: User Authentication`\n- Convert story format from `Epic.Story: Title` to kebab-case key: `epic-story-title`\n\n**Story ID Conversion Rules:**\n\n- Original: `### Story 1.1: User Authentication`\n- Replace period with dash: `1-1`\n- Convert title to kebab-case: `user-authentication`\n- Final key: `1-1-user-authentication`\n\n\u003Caction>Build complete inventory of all epics and stories from all epic files\u003C\u002Faction>\n\u003C\u002Fstep>\n\n\u003Cstep n=\"2\" goal=\"Build sprint status structure\">\n\u003Caction>For each epic found, create entries in this order:\u003C\u002Faction>\n\n1. **Epic entry** - Key: `epic-{num}`, Default status: `backlog`\n2. **Story entries** - Key: `{epic}-{story}-{title}`, Default status: `backlog`\n3. **Retrospective entry** - Key: `epic-{num}-retrospective`, Default status: `optional`\n\n**Example structure:**\n\n```yaml\ndevelopment_status:\n  epic-1: backlog\n  1-1-user-authentication: backlog\n  1-2-account-management: backlog\n  epic-1-retrospective: optional\n```\n\n\u003C\u002Fstep>\n\n\u003Cstep n=\"3\" goal=\"Apply intelligent status detection\">\n\u003Caction>For each story, detect current status by checking files:\u003C\u002Faction>\n\n**Story file detection:**\n\n- Check: `{story_location_absolute}\u002F{story-key}.md` (e.g., `stories\u002F1-1-user-authentication.md`)\n- If exists → upgrade status to at least `ready-for-dev`\n\n**Preservation rule:**\n\n- If existing `{status_file}` exists and has more advanced status, preserve it\n- Never downgrade status (e.g., don't change `done` to `ready-for-dev`)\n\n**Status Flow Reference:**\n\n- Epic: `backlog` → `in-progress` → `done`\n- Story: `backlog` → `ready-for-dev` → `in-progress` → `review` → `done`\n- Retrospective: `optional` ↔ `done`\n  \u003C\u002Fstep>\n\n\u003Cstep n=\"4\" goal=\"Generate sprint status file\">\n\u003Caction>Create or update {status_file} with:\u003C\u002Faction>\n\n**File Structure:**\n\n```yaml\n# generated: {date}\n# last_updated: {date}\n# project: {project_name}\n# project_key: {project_key}\n# tracking_system: {tracking_system}\n# story_location: {story_location}\n\n# STATUS DEFINITIONS:\n# ==================\n# Epic Status:\n#   - backlog: Epic not yet started\n#   - in-progress: Epic actively being worked on\n#   - done: All stories in epic completed\n#\n# Epic Status Transitions:\n#   - backlog → in-progress: Automatically when first story is created (via create-story)\n#   - in-progress → done: Manually when all stories reach 'done' status\n#\n# Story Status:\n#   - backlog: Story only exists in epic file\n#   - ready-for-dev: Story file created in stories folder\n#   - in-progress: Developer actively working on implementation\n#   - review: Ready for code review (via Dev's code-review workflow)\n#   - done: Story completed\n#\n# Retrospective Status:\n#   - optional: Can be completed but not required\n#   - done: Retrospective has been completed\n#\n# WORKFLOW NOTES:\n# ===============\n# - Epic transitions to 'in-progress' automatically when first story is created\n# - Stories can be worked in parallel if team capacity allows\n# - Developer typically creates next story after previous one is 'done' to incorporate learnings\n# - Dev moves story to 'review', then runs code-review (fresh context, different LLM recommended)\n\ngenerated: { date }\nlast_updated: { date }\nproject: { project_name }\nproject_key: { project_key }\ntracking_system: { tracking_system }\nstory_location: { story_location }\n\ndevelopment_status:\n  # All epics, stories, and retrospectives in order\n```\n\n\u003Caction>Write the complete sprint status YAML to {status_file}\u003C\u002Faction>\n\u003Caction>CRITICAL: Metadata appears TWICE - once as comments (#) for documentation, once as YAML key:value fields for parsing\u003C\u002Faction>\n\u003Caction>Ensure all items are ordered: epic, its stories, its retrospective, next epic...\u003C\u002Faction>\n\u003C\u002Fstep>\n\n\u003Cstep n=\"5\" goal=\"Validate and report\">\n\u003Caction>Perform validation checks:\u003C\u002Faction>\n\n- [ ] Every epic in epic files appears in {status_file}\n- [ ] Every story in epic files appears in {status_file}\n- [ ] Every epic has a corresponding retrospective entry\n- [ ] No items in {status_file} that don't exist in epic files\n- [ ] All status values are legal (match state machine definitions)\n- [ ] File is valid YAML syntax\n\n\u003Caction>Count totals:\u003C\u002Faction>\n\n- Total epics: {{epic_count}}\n- Total stories: {{story_count}}\n- Epics in-progress: {{in_progress_count}}\n- Stories done: {{done_count}}\n\n\u003Caction>Display completion summary to {user_name} in {communication_language}:\u003C\u002Faction>\n\n**Sprint Status Generated Successfully**\n\n- **File Location:** {status_file}\n- **Total Epics:** {{epic_count}}\n- **Total Stories:** {{story_count}}\n- **Epics In Progress:** {{in_progress_count}}\n- **Stories Completed:** {{done_count}}\n\n**Next Steps:**\n\n1. Review the generated {status_file}\n2. Use this file to track development progress\n3. Agents will update statuses as they work\n4. Re-run this workflow to refresh auto-detected statuses\n\n\u003Caction>Run: `python3 {project-root}\u002F_bmad\u002Fscripts\u002Fresolve_customization.py --skill {skill-root} --key workflow.on_complete` — if the resolved value is non-empty, follow it as the final terminal instruction before exiting.\u003C\u002Faction>\n\u003C\u002Fstep>\n\n\u003C\u002Fworkflow>\n\n## Additional Documentation\n\n### Status State Machine\n\n**Epic Status Flow:**\n\n```\nbacklog → in-progress → done\n```\n\n- **backlog**: Epic not yet started\n- **in-progress**: Epic actively being worked on (stories being created\u002Fimplemented)\n- **done**: All stories in epic completed\n\n**Story Status Flow:**\n\n```\nbacklog → ready-for-dev → in-progress → review → done\n```\n\n- **backlog**: Story only exists in epic file\n- **ready-for-dev**: Story file created (e.g., `stories\u002F1-3-plant-naming.md`)\n- **in-progress**: Developer actively working\n- **review**: Ready for code review (via Dev's code-review workflow)\n- **done**: Completed\n\n**Retrospective Status:**\n\n```\noptional ↔ done\n```\n\n- **optional**: Ready to be conducted but not required\n- **done**: Finished\n\n### Guidelines\n\n1. **Epic Activation**: Mark epic as `in-progress` when starting work on its first story\n2. **Sequential Default**: Stories are typically worked in order, but parallel work is supported\n3. **Parallel Work Supported**: Multiple stories can be `in-progress` if team capacity allows\n4. **Review Before Done**: Stories should pass through `review` before `done`\n5. **Learning Transfer**: Developer typically creates next story after previous one is `done` to incorporate learnings\n",{"name":5,"description":7},"main","46520352938752d2973ade5f7a84b01205f7aac6","frameworks\u002Fbmad-method\u002Fsrc\u002Fbmm-skills\u002F4-implementation\u002Fbmad-sprint-planning",1,"https:\u002F\u002Fgithub.com\u002Fcombsmith\u002F.github-private","https:\u002F\u002Fgithub.com\u002Fcombsmith","https:\u002F\u002Fcombsmith.com","Open-source tools and experiments spanning agent orchestration, AI agent interfaces, AI content tooling, beekeeping tech, personal finance, and consumer apps.","2026-11-12 03:31:47",{"source":8,"skillName":5,"commands":47,"prompt":57,"zipAvailable":58},[48,51,54],{"tool":49,"command":50},"npx","npx skills add combsmith\u002F.github-private --skill bmad-sprint-planning",{"tool":52,"command":53},"bunx","bunx skills add combsmith\u002F.github-private --skill bmad-sprint-planning",{"tool":55,"command":56},"pnpm","pnpm dlx skills add combsmith\u002F.github-private --skill bmad-sprint-planning","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fcombsmith\u002F.github-private\u002Fblob\u002Fmain\u002Fframeworks\u002Fbmad-method\u002Fsrc\u002Fbmm-skills\u002F4-implementation\u002Fbmad-sprint-planning\u002FSKILL.md",true,[60,66,72],{"path":61,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":64,"sourceHtmlUrl":65},"checklist.md","REFERENCE","参考文档",1298,"https:\u002F\u002Fgithub.com\u002Fcombsmith\u002F.github-private\u002Fblob\u002Fmain\u002Fframeworks\u002Fbmad-method\u002Fsrc\u002Fbmm-skills\u002F4-implementation\u002Fbmad-sprint-planning\u002Fchecklist.md",{"path":67,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":70,"sourceHtmlUrl":71},"customize.toml","OTHER","其他",1606,"https:\u002F\u002Fgithub.com\u002Fcombsmith\u002F.github-private\u002Fblob\u002Fmain\u002Fframeworks\u002Fbmad-method\u002Fsrc\u002Fbmm-skills\u002F4-implementation\u002Fbmad-sprint-planning\u002Fcustomize.toml",{"path":73,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":74,"sourceHtmlUrl":75},"sprint-status-template.yaml",1790,"https:\u002F\u002Fgithub.com\u002Fcombsmith\u002F.github-private\u002Fblob\u002Fmain\u002Fframeworks\u002Fbmad-method\u002Fsrc\u002Fbmm-skills\u002F4-implementation\u002Fbmad-sprint-planning\u002Fsprint-status-template.yaml",[77,103,118,144,162,180],{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":88,"publishedAt":32},"01M6P9K2GYFR9RBTH96ADYZXEW","bmad-testarch-trace","Generate traceability matrix and quality gate decision. Use when the user says \"lets create traceability matrix\" or \"I want to analyze test coverage\"","https:\u002F\u002Fgithub.com\u002Fcombsmith\u002F.github-private\u002Fblob\u002Fmain\u002Fframeworks\u002Fbmad-test-architecture\u002Fsrc\u002Fworkflows\u002Ftestarch\u002Fbmad-testarch-trace\u002FSKILL.md",[83],{"categoryNo":84,"categoryName":85,"taxonomyType":86,"taxonomyTypeDesc":87},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[89,90,21,91,92,93,94,95,96,31,97,29,98,99,25,100,101,102],"trace","bmad testarch trace","bmad testarch","analyze","matrix","traceability","gate","test coverage","coverage","decision","quality","create","quality gate","test",{"skillNo":104,"name":105,"nameZh":6,"description":106,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":110,"publishedAt":32},"01M6P9JB7TD978DGCMEWWJ88GR","bmad-testarch-test-review","Review test quality using best practices validation. Use when user says \"lets review tests\" or \"I want to evaluate test quality\"","https:\u002F\u002Fgithub.com\u002Fcombsmith\u002F.github-private\u002Fblob\u002Fmain\u002Fframeworks\u002Fbmad-test-architecture\u002Fsrc\u002Fworkflows\u002Ftestarch\u002Fbmad-testarch-test-review\u002FSKILL.md",[109],{"categoryNo":84,"categoryName":85,"taxonomyType":86,"taxonomyTypeDesc":87},[21,91,111,112,113,102,114,115,116,117,31,29,99],"test review","bmad testarch test review","review","best practices","tests","validation","evaluate",{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":133,"publishedAt":32},"01M6P9J2FJH9X93F027N9XKP8G","bmad-testarch-test-design","Create system-level or epic-level test plans. Use when the user says \"lets design test plan\" or \"I want to create test strategy\"","https:\u002F\u002Fgithub.com\u002Fcombsmith\u002F.github-private\u002Fblob\u002Fmain\u002Fframeworks\u002Fbmad-test-architecture\u002Fsrc\u002Fworkflows\u002Ftestarch\u002Fbmad-testarch-test-design\u002FSKILL.md",[124,125,128],{"categoryNo":84,"categoryName":85,"taxonomyType":86,"taxonomyTypeDesc":87},{"categoryNo":126,"categoryName":127,"taxonomyType":86,"taxonomyTypeDesc":87},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":129,"categoryName":130,"taxonomyType":131,"taxonomyTypeDesc":132},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[91,21,134,135,102,136,137,138,139,140,31,29,141,27,142,100,143],"bmad testarch test design","design","test design","create test","EPIC","plans","test strategy","strategy","test plan","system",{"skillNo":145,"name":146,"nameZh":6,"description":147,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":148,"categories":149,"keywords":150,"publishedAt":32},"01M6P9HNE1J104G3EYV50FET7Q","bmad-testarch-nfr","Audit NFR evidence for performance, security, reliability, and scalability. Use when implementation evidence exists and the user says \"audit NFR evidence\", \"audit NFRs\", or \"evaluate non-functional requirements\"","https:\u002F\u002Fgithub.com\u002Fcombsmith\u002F.github-private\u002Fblob\u002Fmain\u002Fframeworks\u002Fbmad-test-architecture\u002Fsrc\u002Fworkflows\u002Ftestarch\u002Fbmad-testarch-nfr\u002FSKILL.md",[],[151,21,91,117,152,153,154,155,156,157,158,31,29,159,160,161],"bmad testarch nfr","reliability","for","functional","requirements","scalability","implementation","evidence","audit","performance","security",{"skillNo":163,"name":164,"nameZh":6,"description":165,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":166,"categories":167,"keywords":169,"publishedAt":32},"01M6P9HD6HCAFVSRQWT2Z62NEM","bmad-testarch-framework","Initialize test framework with Playwright or Cypress. Use when the user says \"lets setup test framework\" or \"I want to initialize testing framework\"","https:\u002F\u002Fgithub.com\u002Fcombsmith\u002F.github-private\u002Fblob\u002Fmain\u002Fframeworks\u002Fbmad-test-architecture\u002Fsrc\u002Fworkflows\u002Ftestarch\u002Fbmad-testarch-framework\u002FSKILL.md",[168],{"categoryNo":84,"categoryName":85,"taxonomyType":86,"taxonomyTypeDesc":87},[170,171,21,91,172,173,174,102,175,176,177,178,179,31,29],"bmad testarch framework","framework","testing framework","setup","test framework","playwright","testing","initialize","with","cypress",{"skillNo":181,"name":182,"nameZh":6,"description":183,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":184,"categories":185,"keywords":190,"publishedAt":32},"01M6P9GVNB0SW4HPA4VR9VNN2V","bmad-testarch-ci","Scaffold CI\u002FCD quality pipeline with test execution. Use when the user says \"lets setup CI pipeline\" or \"I want to create quality gates\"","https:\u002F\u002Fgithub.com\u002Fcombsmith\u002F.github-private\u002Fblob\u002Fmain\u002Fframeworks\u002Fbmad-test-architecture\u002Fsrc\u002Fworkflows\u002Ftestarch\u002Fbmad-testarch-ci\u002FSKILL.md",[186,187],{"categoryNo":84,"categoryName":85,"taxonomyType":86,"taxonomyTypeDesc":87},{"categoryNo":188,"categoryName":189,"taxonomyType":86,"taxonomyTypeDesc":87},"01JBSEEDCAT000000000000011","运维与部署",[21,91,191,192,193,178,194,195,196,31,29,99,197,198,100,199,173,200,102],"bmad testarch ci","ci","gates","CI\u002FCD","test execution","cd","execution","pipeline","quality gates","scaffold"]