This skill should be used when the user asks to "dev-context", "プロジェクトコンテキストを生成", "プロジェクトを分析", "generate project context", "analyze project", "コンテキストを更新". プロジェクトの技術スタック・テストフレームワーク・コーディング規約・アーキテクチャを自動分析し、コンパクトなコンテキストファイルを生成する。
dev-run
This skill should be used when the user asks to "dev-run", "自動実装", "タスクを一括実装", "auto implement", "run all tasks", "タスクを自動実行", "バッチ実装", "dev-run auth 001 005". Plan内の指定範囲のタスクをdev-impl/dev-verify/dev-debugのワークフローで自動実行するオーケストレーションスキル。
インストール方法を見る含まれるファイル(4)
- SKILL.md11.8 KB
- references/debug-prompt-template.md5.2 KB
- references/impl-prompt-template.md6.5 KB
- references/verify-prompt-template.md4.5 KB
SKILL.md(原文)
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Dev Run
Plan 内の指定範囲タスクに対し、impl → verify → debug のループを自動実行するオーケストレーションスキル。各タスクを Task サブエージェントに委託し、TaskCreate/TaskUpdate で依存関係付きの進捗管理を行う。
前提知識
dev-* スキルフロー内の位置
dev-context → dev-plan → [dev-run] → (完了)
├─ impl サブエージェント (×タスク数)
├─ debug サブエージェント (エラー時)
└─ verify サブエージェント (全タスク完了後)
引数フォーマット
/dev-run <plan-name> <from-task-id> <to-task-id>
plan-name: 既存の Plan 名(docs/dev/plans/<plan-name>/が存在すること)from-task-id: 開始タスク ID(例: "001")to-task-id: 終了タスク ID(例: "005")
サブエージェント制約(重要)
サブエージェントは Task ツールを使用できない(ネスト不可のアーキテクチャ制約)。そのため:
- コード探索は Glob/Grep/Read を直接使用する
- TodoWrite は使用しない(TaskCreate/TaskUpdate で進捗管理する)
- プロンプトに context.md を埋め込み、サブエージェントのファイル読み込みを最小化する
ワークフロー
Step 1: 事前検証とコンテキスト読み込み
docs/dev/context.mdの存在を確認する。存在しない場合は/dev-contextの実行を案内して終了するdocs/dev/plans/<plan-name>/の存在を確認する。存在しない場合は/dev-planの実行を案内して終了するdocs/dev/context.mdを Read で読み込み、以下を抽出する:- テスト実行コマンド(Test Framework セクション)
- ビルドコマンド(Build & Run セクション、あれば)
- Lint コマンド(Build & Run セクション、あれば)
- カバレッジ閾値(Test Framework セクションの Coverage Threshold)
docs/dev/plans/<plan-name>/plan.mdを Read で読み込む- 指定範囲(from-task-id 〜 to-task-id)の全タスクファイルを Glob + Read で読み込む
- 各タスクの
status,dependencies,estimated_complexityを確認する
範囲外依存チェック
タスクファイルの dependencies に、指定範囲外のタスク ID が含まれる場合:
- そのタスクファイルを Read し、
statusを確認する status: done→ 問題なし- それ以外 → AskUserQuestion でユーザーに警告し、続行/中断を確認する
Step 2: TaskCreate で依存関係グラフ構築
2a. タスクの登録
指定範囲内で status が done でないタスクごとに TaskCreate を実行する:
TaskCreate:
subject: "impl-NNN: <タスクタイトル>"
description: "Plan <plan-name> のタスク NNN を TDD 実装する"
activeForm: "Implementing task NNN: <タスクタイトル>"
2b. 依存関係の設定
タスクファイルの dependencies を TaskUpdate の addBlockedBy にマッピングする。
ID マッピングテーブルを構築: {"001": "<TaskCreate_ID>", "002": "<TaskCreate_ID>", ...}
- 範囲内の依存: 対応する TaskCreate ID を blockedBy に設定
- 範囲外の依存(done 済み): blockedBy から除外
status: doneのタスク: TaskCreate しない、依存元からも除外
2c. verify タスクの登録
TaskCreate:
subject: "verify: <plan-name>"
description: "Plan <plan-name> の全体検証を実行する"
activeForm: "Verifying plan <plan-name>"
addBlockedBy: [全 impl タスクの ID]
Step 3: 実装ループ
TaskList で status: pending かつ blockedBy が空のタスクを取得し、順に実行する。
3a. impl タスクの実行
- TaskUpdate で
in_progressにする references/impl-prompt-template.mdを Read で読み込む- テンプレートのプレースホルダーを置換する:
{{CONTEXT_MD_CONTENT}}← context.md の全文{{TASK_FILE_CONTENT}}← タスクファイルの全文{{PLAN_MD_EXCERPT}}← plan.md の設計概要{{TEST_COMMAND}}← テスト実行コマンド{{TASK_FILE_PATH}}← タスクファイルのパス{{ESTIMATED_COMPLEXITY}}← タスクの複雑度{{COVERAGE_THRESHOLD}}← カバレッジ閾値
- Task サブエージェント(general-purpose)を起動する
- サブエージェントの出力を確認する:
IMPL_SUCCESSを含む → 成功処理(3c へ)IMPL_FAILEDを含む → debug 処理(3b へ)
3b. debug 処理(impl 失敗時)
- impl サブエージェントの出力からエラー情報を抽出する
references/debug-prompt-template.mdを Read で読み込む- テンプレートのプレースホルダーを置換する:
{{CONTEXT_MD_CONTENT}}← context.md の全文{{ERROR_DETAILS}}← エラー情報(impl の出力から抽出){{TASK_FILE_CONTENT}}← タスクファイルの全文{{TEST_COMMAND}}← テスト実行コマンド
- Task サブエージェント(general-purpose)を起動する
- サブエージェントの出力を確認する:
DEBUG_SUCCESS→ 成功処理(3c へ)DEBUG_FAILED→ エスカレーション: AskUserQuestion で以下を提示:- このタスクをスキップして次へ進む
- 自動実行を中断する
- 手動修正後に再開する
3c. 成功処理
- タスクファイルの frontmatter
statusをdoneに更新する(Edit ツール使用)- 注意: dev-run の allowed-tools に Edit は含まれないため、ここはサブエージェント内で実施済みのはず。サブエージェントが更新していない場合は Read で確認する
- TaskUpdate で
completedにする - TaskList で次のブロック解除タスクを確認する
- 次のタスクがあれば 3a に戻る
Step 4: 全体検証(verify タスク実行)
全 impl タスクが completed になると verify タスクのブロックが解除される。
- TaskUpdate で verify を
in_progressにする references/verify-prompt-template.mdを Read で読み込む- テンプレートのプレースホルダーを置換する:
{{CONTEXT_MD_CONTENT}}← context.md の全文{{PLAN_NAME}}← Plan 名{{TEST_COMMAND}},{{BUILD_COMMAND}},{{LINT_COMMAND}}{{COVERAGE_THRESHOLD}}← カバレッジ閾値{{TODAY_DATE}}← 実行日(YYYY-MM-DD)
- Task サブエージェント(general-purpose)を起動する
- サブエージェントが検証レポートを
docs/dev/plans/<plan-name>/reports/verify-<日付>.mdに出力する
Step 5: 検証結果パースと修正ループ
verify サブエージェント完了後:
- 出力マーカーを確認する:
VERIFY_ALL_PASSED→ 全パス、Step 6 へVERIFY_ISSUES_FOUND→ 修正ループへ
修正ループ(最大2サイクル)
サイクルごとに:
- レポートファイルを Read で読み込む
- Issues Found セクションから問題を抽出する
- 問題ごとに fix タスクを TaskCreate する:
subject: "fix-NNN: <問題概要>" activeForm: "Fixing: <問題概要>" addBlockedBy: [verify タスクの ID] - re-verify タスクを TaskCreate する:
subject: "re-verify-N: <plan-name>" activeForm: "Re-verifying plan <plan-name>" addBlockedBy: [全 fix タスクの ID] - fix タスクを実行する(debug サブエージェント使用、3b と同じフロー)
- re-verify タスクを実行する(verify サブエージェント使用、Step 4 と同じフロー)
- 結果を確認:
- 全パス → Step 6 へ
- まだ問題あり:
- サイクル 1 → サイクル 2 へ
- サイクル 2 → 残存問題を報告して Step 6 へ
Step 6: 最終レポート
ユーザーに以下を出力する:
## dev-run 完了レポート
### 実行概要
- Plan: <plan-name>
- 範囲: <from-task-id> 〜 <to-task-id>
- 実行タスク数: X / スキップ: Y (done 済み)
### 結果サマリー
| タスク | 結果 | 信号機 |
|-------|------|--------|
| NNN | 成功 / debug後成功 / スキップ | 🔵/🟡/🔴 |
### 検証結果
- テスト: X passed, Y failed
- カバレッジ: X/Y packages above threshold
- ビルド: OK / NG / N/A
- Lint: OK / NG / N/A
- 500行ルール: OK / X files over
### verify → fix サイクル
- サイクル N: [修正内容の概要]
### 残存問題(ある場合)
- [問題の詳細と推奨アクション]
### 🟡 要確認ファイル
- [ファイル一覧と確認ポイント]
### 🔴 要判断ファイル
- [ファイル一覧と判断が必要な理由]
Step 7: Docker クリーンアップ
プロジェクトルートに docker-compose.yml または docker-compose.yaml が存在するか確認する。存在する場合:
docker compose downを実行してコンテナを停止する- 停止に失敗した場合はユーザーに報告する(ブロッキングにしない)
エスカレーション条件
以下の場合は自動実行を停止し、AskUserQuestion でユーザーに確認する:
- 範囲外依存が未完了: 依存先タスクが done でない
- impl + debug 両方失敗: サブエージェントが修正できなかった
- verify 2サイクル後も問題残存: 残存問題をレポートして終了
- 🔴 セキュリティ/パフォーマンス問題: レポートに明記、人間レビュー推奨
- context.md / plan が存在しない: 前提スキルの実行を案内して終了
マーカー文字列
| マーカー | 意味 |
|---|---|
IMPL_SUCCESS | 実装成功(テスト全通過) |
IMPL_FAILED | 実装失敗(3サイクル超え) |
DEBUG_SUCCESS | デバッグ成功(エラー解消) |
DEBUG_FAILED | デバッグ失敗(3サイクル超え) |
VERIFY_ALL_PASSED | 検証全項目 OK |
VERIFY_ISSUES_FOUND | 検証で問題あり |
ルール・制約
- context.md が存在しない場合は
/dev-contextを案内して終了する - plan が存在しない場合は
/dev-planを案内して終了する status: doneのタスクはスキップする(再開対応)- verify → fix → re-verify のサイクルは最大2回
- サブエージェントには Task ツールを使用させない(プロンプトで明示)
- 各プロンプトに context.md を埋め込みサブエージェントの Read 回数を最小化する
- テスト/ビルド/Lint コマンドは context.md から取得する(ハードコードしない)
- すべてのファイルは 500 行以内
- Bash コマンドはプロジェクトルートの 絶対パス を使用する(
$(git rev-parse --show-toplevel)でルートを取得)
追加リソース
リファレンスファイル
references/impl-prompt-template.md— impl サブエージェントに渡すプロンプトテンプレートreferences/debug-prompt-template.md— debug サブエージェントに渡すプロンプトテンプレートreferences/verify-prompt-template.md— verify サブエージェントに渡すプロンプトテンプレート
レビュー
まだレビューはありません。使ってみた感想をお寄せください。
同じリポジトリのスキル
概要と使いどころ
This skill should be used when the user asks to "dev-debug", "テストが失敗する", "ビルドエラーを直して", "デバッグ", "debug failing tests", "fix build error", "エラーを修正", "コンパイルエラー", "環境の問題を解決". テスト失敗、ビルドエラー、環境問題など様々なエラーパターンをカテゴリ別に診断し、最小コンテキストで修正する。
This skill should be used when the user asks to "dev-impl", "タスクを実装", "テストファースト実装", "implement task", "実装を開始", "クイック修正", "quick fix", "dev-impl auth 001". TDDをガードレールとしたテストファースト実装を行う。通常モード(Plan+タスク指定)とクイックモード(直接指示)に対応。
This skill should be used when the user asks to "dev-init", "技術スタックを選定", "新規プロジェクト初期化", "initialize tech stack", "プロジェクトをセットアップ", "setup project", "scaffold project", "プロジェクト作成", "tech stackを決める". インタラクティブなヒアリングでプロジェクトの技術スタックを決定し、dev-context互換のコンテキストファイルを生成する。承認制でプロジェクトスキャフォールディングも実行可能。
This skill should be used when the user asks to "dev-navigate", "どこから始めれば", "何を使えばいい", "スキルを選んで", "ナビ", "navigate", "which skill", "how to start", "開発の進め方", "何から始める". 開発者がやりたいことをヒアリングし、最適なtsumikiスキルとその実行順序をナビゲーションする。
This skill should be used when the user asks to "dev-plan", "実装計画を作成", "要件からタスク分解", "create implementation plan", "plan tasks", "タスクを分割", "設計してタスクにする", "詳細要件定義", "full-spec plan", "EARS要件". ユーザーの要件をインターフェースファースト設計とテスト可能なタスクに分解し、Plan単位でdocs/dev/plans/に保存する。Lightweight(素早い計画)とFull-spec(EARS要件定義付き)の2モードに対応。