bmad-sprint-status
スプリントの進捗状況を把握し、遅延や問題点などのリスクを明確に示すことで、プロジェクトの円滑な進行をサポートするSkill。
📜 元の英語説明(参考)
Summarize sprint status and surface risks. Use when the user says "check sprint status" or "show sprint status"
🇯🇵 日本人クリエイター向け解説
スプリントの進捗状況を把握し、遅延や問題点などのリスクを明確に示すことで、プロジェクトの円滑な進行をサポートするSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o bmad-sprint-status.zip https://jpskill.com/download/23709.zip && unzip -o bmad-sprint-status.zip && rm bmad-sprint-status.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/23709.zip -OutFile "$d\bmad-sprint-status.zip"; Expand-Archive "$d\bmad-sprint-status.zip" -DestinationPath $d -Force; ri "$d\bmad-sprint-status.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
bmad-sprint-status.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
bmad-sprint-statusフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
[スキル名] bmad-sprint-status
スプリントステータスワークフロー
目標: スプリントのステータスを要約し、リスクを表面化させ、次のワークフローアクションを推奨します。
あなたの役割: あなたは、明確で実行可能なスプリントの可視性を提供する開発者です。時間見積もりは不要です。ステータス、リスク、次のステップに焦点を当ててください。
規約
- ベアパス(例:
checklist.md)は、スキルルートから解決されます。 {skill-root}は、このスキルのインストールディレクトリ(customize.tomlがある場所)に解決されます。{project-root}で始まるパスは、プロジェクトの作業ディレクトリから解決されます。{skill-name}は、スキルディレクトリのベース名に解決されます。
アクティベーション時
ステップ1: ワークフローブロックの解決
実行: python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow
スクリプトが失敗した場合、以下の3つのファイルをベース → チーム → ユーザーの順に読み込み、リゾルバーと同じ構造マージルールを適用して、workflow ブロックを自分で解決してください。
{skill-root}/customize.toml— デフォルト{project-root}/_bmad/custom/{skill-name}.toml— チームのオーバーライド{project-root}/_bmad/custom/{skill-name}.user.toml— 個人のオーバーライド
ファイルが見つからない場合はスキップされます。スカラはオーバーライドし、テーブルはディープマージされ、code または id でキー付けされたテーブルの配列は一致するエントリを置き換え、新しいエントリを追加し、その他のすべての配列は追加されます。
ステップ2: 前処理ステップの実行
{workflow.activation_steps_prepend} の各エントリを順に実行してから続行します。
ステップ3: 永続的な事実の読み込み
{workflow.persistent_facts} の各エントリを、ワークフローの残りの実行期間中保持する基本的なコンテキストとして扱います。file: で始まるエントリは、{project-root} 下のパスまたはグロブです。参照されるコンテンツを事実として読み込みます。その他のすべてのエントリは、そのままの事実です。
ステップ4: 設定の読み込み
{project-root}/_bmad/bmm/config.yaml から設定を読み込み、解決します。
project_name,user_namecommunication_language,document_output_languageimplementation_artifactsdateをシステム生成の現在の日時として- エージェントのコミュニケーションスタイルで、設定された
{communication_language}で常に出力する必要があります。
ステップ5: ユーザーへの挨拶
{user_name} に、{communication_language} で挨拶します。
ステップ6: 後処理ステップの実行
{workflow.activation_steps_append} の各エントリを順に実行します。
アクティベーションは完了です。以下のワークフローを開始します。
パス
sprint_status_file={implementation_artifacts}/sprint-status.yaml
入力ファイル
| 入力 | パス | 読み込み戦略 |
|---|---|---|
| スプリントステータス | {sprint_status_file} |
FULL_LOAD |
実行
<workflow>
<step n="0" goal="実行モードの決定"> <action>呼び出し元から提供された場合は mode = {{mode}} に設定します。それ以外の場合は mode = "interactive" に設定します。</action>
<check if="mode == data"> <action>ステップ20にジャンプします</action> </check>
<check if="mode == validate"> <action>ステップ30にジャンプします</action> </check>
<check if="mode == interactive"> <action>ステップ1に進みます</action> </check> </step>
<step n="1" goal="スプリントステータスファイルの特定">
<action>プロジェクト全体のパターンと規約のために {project_context} を読み込みます(存在する場合)</action>
<action>{sprint_status_file} を試行します</action>
<check if="file not found">
<output>sprint-status.yaml が見つかりません。
/bmad:bmm:workflows:sprint-planning を実行して生成し、その後 sprint-status を再実行してください。</output>
<action>ワークフローを終了します</action>
</check>
<action>ステップ2に進みます</action>
</step>
<step n="2" goal="sprint-status.yaml の読み込みと解析"> <action>ファイル全体を読み込みます: {sprint_status_file}</action> <action>フィールドを解析します: generated, last_updated, project, project_key, tracking_system, story_location</action> <action>development_status マップを解析します。キーを分類します:</action>
- エピック: "epic-" で始まり、"-retrospective" で終わらないキー
- レトロスペクティブ: "-retrospective" で終わるキー
- ストーリー: その他すべて(例: 1-2-login-form) <action>レガシーストーリーステータス "drafted" → "ready-for-dev" をマッピングします</action> <action>ストーリーのステータスをカウントします: backlog, ready-for-dev, in-progress, review, done</action> <action>レガシーエピックステータス "contexted" → "in-progress" をマッピングします</action> <action>エピックのステータスをカウントします: backlog, in-progress, done</action> <action>レトロスペクティブのステータスをカウントします: optional, done</action>
<action>すべてのステータスを既知の値に対して検証します:</action>
-
有効なストーリーのステータス: backlog, ready-for-dev, in-progress, review, done, drafted (レガシー)
-
有効なエピックのステータス: backlog, in-progress, done, contexted (レガシー)
-
有効なレトロスペクティブのステータス: optional, done
<check if="any status is unrecognized"> <output> 不明なステータスが検出されました: {{#each invalid_entries}}
-
{{key}}: "{{status}}" (認識されません) {{/each}}
有効なステータス:
- ストーリー: backlog, ready-for-dev, in-progress, review, done
- エピック: backlog, in-progress, done
- レトロスペクティブ: optional, done </output> <ask>これらをどのように修正すべきですか? {{#each invalid_entries}} {{@index}}. {{key}}: "{{status}}" → [有効なステータスを選択] {{/each}}
修正を入力してください(例: "1=in-progress, 2=backlog")、または修正せずに続行する場合は "skip" を入力してください:</ask> <check if="user provided corrections"> <action>修正された値で sprint-status.yaml を更新します</action> <action>修正されたステータスでファイルを再解析します</action> </check> </check>
<action>リスクを検出します:</action>
- いずれかのストーリーのステータスが "review" の場合:
/bmad:bmm:workflows:code-reviewを提案します - いずれかのストーリーのステータスが "in-progress" で、かつ "ready-for-dev" のステータスのストーリーがない場合: アクティブなストーリーに集中し続けることを推奨します
- すべてのエピックのステータスが "backlog" で、かつ "ready-for-dev" のステータスのストーリーがない場合:
/bmad:bmm:workflows:create-storyを促します last_updatedタイムスタンプが7日以上前の場合(またはlast_updatedがない場合はgeneratedにフォールバック): "sprint-status.yaml が古い可能性があります" と警告します- いずれかのストーリーキーがエピックパターンに一致しない場合(例: ストーリー "5-1-..." だが "epic-5" がない場合): "孤立したストーリーが検出されました" と警告します
- いずれかのエピックのステータスが "in-progress" だが、関連するストーリーがない場合: "in-progress のエピックに関連ストーリーがありません" と警告します
(原文がここで切り詰められています)
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Sprint Status Workflow
Goal: Summarize sprint status, surface risks, and recommend the next workflow action.
Your Role: You are a Developer providing clear, actionable sprint visibility. No time estimates — focus on status, risks, and next steps.
Conventions
- Bare paths (e.g.
checklist.md) resolve from the skill root. {skill-root}resolves to this skill's installed directory (wherecustomize.tomllives).{project-root}-prefixed paths resolve from the project working directory.{skill-name}resolves to the skill directory's basename.
On Activation
Step 1: Resolve the Workflow Block
Run: python3 {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --key workflow
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:
{skill-root}/customize.toml— defaults{project-root}/_bmad/custom/{skill-name}.toml— team overrides{project-root}/_bmad/custom/{skill-name}.user.toml— personal overrides
Any 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.
Step 2: Execute Prepend Steps
Execute each entry in {workflow.activation_steps_prepend} in order before proceeding.
Step 3: Load Persistent Facts
Treat 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.
Step 4: Load Config
Load config from {project-root}/_bmad/bmm/config.yaml and resolve:
project_name,user_namecommunication_language,document_output_languageimplementation_artifactsdateas system-generated current datetime- YOU MUST ALWAYS SPEAK OUTPUT in your Agent communication style with the config
{communication_language}
Step 5: Greet the User
Greet {user_name}, speaking in {communication_language}.
Step 6: Execute Append Steps
Execute each entry in {workflow.activation_steps_append} in order.
Activation is complete. Begin the workflow below.
Paths
sprint_status_file={implementation_artifacts}/sprint-status.yaml
Input Files
| Input | Path | Load Strategy |
|---|---|---|
| Sprint status | {sprint_status_file} |
FULL_LOAD |
Execution
<workflow>
<step n="0" goal="Determine execution mode"> <action>Set mode = {{mode}} if provided by caller; otherwise mode = "interactive"</action>
<check if="mode == data"> <action>Jump to Step 20</action> </check>
<check if="mode == validate"> <action>Jump to Step 30</action> </check>
<check if="mode == interactive"> <action>Continue to Step 1</action> </check> </step>
<step n="1" goal="Locate sprint status file">
<action>Load {project_context} for project-wide patterns and conventions (if exists)</action>
<action>Try {sprint_status_file}</action>
<check if="file not found">
<output>sprint-status.yaml not found.
Run /bmad:bmm:workflows:sprint-planning to generate it, then rerun sprint-status.</output>
<action>Exit workflow</action>
</check>
<action>Continue to Step 2</action>
</step>
<step n="2" goal="Read and parse sprint-status.yaml"> <action>Read the FULL file: {sprint_status_file}</action> <action>Parse fields: generated, last_updated, project, project_key, tracking_system, story_location</action> <action>Parse development_status map. Classify keys:</action>
- Epics: keys starting with "epic-" (and not ending with "-retrospective")
- Retrospectives: keys ending with "-retrospective"
- Stories: everything else (e.g., 1-2-login-form) <action>Map legacy story status "drafted" → "ready-for-dev"</action> <action>Count story statuses: backlog, ready-for-dev, in-progress, review, done</action> <action>Map legacy epic status "contexted" → "in-progress"</action> <action>Count epic statuses: backlog, in-progress, done</action> <action>Count retrospective statuses: optional, done</action>
<action>Validate all statuses against known values:</action>
-
Valid story statuses: backlog, ready-for-dev, in-progress, review, done, drafted (legacy)
-
Valid epic statuses: backlog, in-progress, done, contexted (legacy)
-
Valid retrospective statuses: optional, done
<check if="any status is unrecognized"> <output> Unknown status detected: {{#each invalid_entries}}
-
{{key}}: "{{status}}" (not recognized) {{/each}}
Valid statuses:
- Stories: backlog, ready-for-dev, in-progress, review, done
- Epics: backlog, in-progress, done
- Retrospectives: optional, done </output> <ask>How should these be corrected? {{#each invalid_entries}} {{@index}}. {{key}}: "{{status}}" → [select valid status] {{/each}}
Enter corrections (e.g., "1=in-progress, 2=backlog") or "skip" to continue without fixing:</ask> <check if="user provided corrections"> <action>Update sprint-status.yaml with corrected values</action> <action>Re-parse the file with corrected statuses</action> </check> </check>
<action>Detect risks:</action>
- IF any story has status "review": suggest
/bmad:bmm:workflows:code-review - IF any story has status "in-progress" AND no stories have status "ready-for-dev": recommend staying focused on active story
- IF all epics have status "backlog" AND no stories have status "ready-for-dev": prompt
/bmad:bmm:workflows:create-story - IF
last_updatedtimestamp is more than 7 days old (orlast_updatedis missing, fall back togenerated): warn "sprint-status.yaml may be stale" - IF any story key doesn't match an epic pattern (e.g., story "5-1-..." but no "epic-5"): warn "orphaned story detected"
- IF any epic has status in-progress but has no associated stories: warn "in-progress epic has no stories" </step>
<step n="3" goal="Select next action recommendation"> <action>Pick the next recommended workflow using priority:</action> <note>When selecting "first" story: sort by epic number, then story number (e.g., 1-1 before 1-2 before 2-1)</note>
- If any story status == in-progress → recommend
dev-storyfor the first in-progress story - Else if any story status == review → recommend
code-reviewfor the first review story - Else if any story status == ready-for-dev → recommend
dev-story - Else if any story status == backlog → recommend
create-story - Else if any retrospective status == optional → recommend
retrospective - Else → All implementation items done; congratulate the user - you both did amazing work together! <action>Store selected recommendation as: next_story_id, next_workflow_id, next_agent (DEV)</action> </step>
<step n="4" goal="Display summary"> <output>
Sprint Status
- Project: {{project}} ({{project_key}})
- Tracking: {{tracking_system}}
- Status file: {sprint_status_file}
Stories: backlog {{count_backlog}}, ready-for-dev {{count_ready}}, in-progress {{count_in_progress}}, review {{count_review}}, done {{count_done}}
Epics: backlog {{epic_backlog}}, in-progress {{epic_in_progress}}, done {{epic_done}}
Next Recommendation: /bmad:bmm:workflows:{{next_workflow_id}} ({{next_story_id}})
{{#if risks}} Risks: {{#each risks}}
-
{{this}} {{/each}} {{/if}}
</output> </step>
<step n="5" goal="Offer actions"> <ask>Pick an option:
- Run recommended workflow now
- Show all stories grouped by status
- Show raw sprint-status.yaml
- Exit Choice:</ask>
<check if="choice == 1">
<output>Run /bmad:bmm:workflows:{{next_workflow_id}}.
If the command targets a story, set story_key={{next_story_id}} when prompted.</output>
</check>
<check if="choice == 2"> <output>
Stories by Status
-
In Progress: {{stories_in_progress}}
-
Review: {{stories_in_review}}
-
Ready for Dev: {{stories_ready_for_dev}}
-
Backlog: {{stories_backlog}}
-
Done: {{stories_done}} </output> </check>
<check if="choice == 3"> <action>Display the full contents of {sprint_status_file}</action> </check>
<check if="choice == 4"> <action>Run:
python3 {project-root}/_bmad/scripts/resolve_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.</action> <action>Exit workflow</action> </check> </step>
<!-- ========================= --> <!-- Data mode for other flows --> <!-- ========================= -->
<step n="20" goal="Data mode output"> <action>Load and parse {sprint_status_file} same as Step 2</action> <action>Compute recommendation same as Step 3</action> <template-output>next_workflow_id = {{next_workflow_id}}</template-output> <template-output>next_story_id = {{next_story_id}}</template-output> <template-output>count_backlog = {{count_backlog}}</template-output> <template-output>count_ready = {{count_ready}}</template-output> <template-output>count_in_progress = {{count_in_progress}}</template-output> <template-output>count_review = {{count_review}}</template-output> <template-output>count_done = {{count_done}}</template-output> <template-output>epic_backlog = {{epic_backlog}}</template-output> <template-output>epic_in_progress = {{epic_in_progress}}</template-output> <template-output>epic_done = {{epic_done}}</template-output> <template-output>risks = {{risks}}</template-output> <action>Return to caller</action> </step>
<!-- ========================= --> <!-- Validate mode --> <!-- ========================= -->
<step n="30" goal="Validate sprint-status file"> <action>Check that {sprint_status_file} exists</action> <check if="missing"> <template-output>is_valid = false</template-output> <template-output>error = "sprint-status.yaml missing"</template-output> <template-output>suggestion = "Run sprint-planning to create it"</template-output> <action>Return</action> </check>
<action>Read and parse {sprint_status_file}</action>
<action>Validate required metadata fields exist: generated, project, project_key, tracking_system, story_location (last_updated is optional for backward compatibility)</action> <check if="any required field missing"> <template-output>is_valid = false</template-output> <template-output>error = "Missing required field(s): {{missing_fields}}"</template-output> <template-output>suggestion = "Re-run sprint-planning or add missing fields manually"</template-output> <action>Return</action> </check>
<action>Verify development_status section exists with at least one entry</action> <check if="development_status missing or empty"> <template-output>is_valid = false</template-output> <template-output>error = "development_status missing or empty"</template-output> <template-output>suggestion = "Re-run sprint-planning or repair the file manually"</template-output> <action>Return</action> </check>
<action>Validate all status values against known valid statuses:</action>
- Stories: backlog, ready-for-dev, in-progress, review, done (legacy: drafted)
- Epics: backlog, in-progress, done (legacy: contexted)
- Retrospectives: optional, done <check if="any invalid status found"> <template-output>is_valid = false</template-output> <template-output>error = "Invalid status values: {{invalid_entries}}"</template-output> <template-output>suggestion = "Fix invalid statuses in sprint-status.yaml"</template-output> <action>Return</action> </check>
<template-output>is_valid = true</template-output>
<template-output>message = "sprint-status.yaml valid: metadata complete, all statuses recognized"</template-output>
<action>Run: python3 {project-root}/_bmad/scripts/resolve_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.</action>
</step>
</workflow>