| name | mspec-implement |
| description | implement step of mspec workflow — write code/tests with TDD red→green and anchors |
| when_to_use | User runs /mspec:implement, or workflow auto-continues to implement |
Procedure
- Run
mspec status --change <change-dir> --json first.
- Read
tasks.md.
- For each task in dependency order:
- Copy its 3-line
anchor: block to the head of the target file (within the first 10 lines, language-appropriate comment).
- If it is an E2E test task: write the failing test, then run
mspec test --expect-red <task-id> --change <change-dir> to record red evidence.
- If it is an implementation task: implement the code, then run
mspec test --expect-green <task-id> --change <change-dir> to record green evidence.
- After
--expect-green is recorded, read the task's anchor Requirements implemented: FR-NNN list. For each FR-NNN, scan checklist.md and update any - [ ] ... <!-- verify: fr-NNN --> lines to - [x] ... <!-- verify: fr-NNN --> (idempotent: skip lines already - [x]; skip if no matching annotation found — checklist.md remains unchanged).
- After
--expect-green is recorded (全テスト GREEN の場合のみ)、tasks.md の当該タスク行 - [ ] TNNN: … を - [x] TNNN: … に更新する(冪等: すでに - [x] の行は変更しない)。
3a. max_iterations エスカレーション(FR-025): 各タスクで TDD red→green サイクルを試みる際、mspec schema show で max_iterations を読み込む。同一タスクで green が max_iterations 回連続して失敗した場合は以下を実行する:
design.md 末尾に以下のセクションを追記する(既存セクションには触れない):
## Escalation Summary
- Task: <task-id>
- Iterations: <n> / <max_iterations>
- Reason: <失敗理由の要約(テストエラー・設計上の矛盾点)>
- Recommendation: 設計変更 | 仕様見直し | 環境確認
- AskUserQuestion でユーザーに判断を委ねる(「設計を変更しますか?仕様を見直しますか?」)。ユーザーの回答に従い継続または中断する。
- Use AskUserQuestion if any decision deviates from
design.md.
4a. critical FR の verify: human 未達警告(verify-routing FR-004): --expect-green 記録後、checklist.md に risk_tier: critical の FR に対応する <!-- verify: human --> 未チェック項目が残っている場合、以下の警告を出力して処理を継続する(エラー停止はしない):
Warning: FR-NNN (critical) requires human review. Mark as verify: human before archive.
- After all tasks complete, scan
checklist.md for remaining unchecked items and report:
verify: human 未チェック項目あり → 一覧をユーザーに提示し、人間レビューを要求してブロックする(block)
verify: fr-NNN 未チェック項目あり(gap)→ 対象 FR 番号とギャップ(tasks.md の Requirements implemented アンカーに対応 FR が存在しない)を警告し、ユーザーの確認を待つ(警告 + block)
- 未チェック項目ゼロ → 実装完了を宣言(block なし)
- After all tasks:
- Run
mspec anchor check --change <change-dir> (must pass; enforce_anchor: true).
- Run
mspec validate --change <change-dir> (checks enforce_e2e and enforce_tdd).
block: true — stop and ask the user to run /mspec:continue.
Verification (C2)
mspec test expect-green <task-id> --change <change> — TDD green確認
mspec validate --change <change> — アーティファクト整合性チェック
mspec anchor check --change <change> — アンカー解決確認
mspec validate --change <change> --strict — enforce_anchor / enforce_tdd 確認
Learning (C3)
このスキルの実行で発生した学習候補を記録する:
<!-- LEARNING: <パターン説明> | source: <FR-ID> | confidence: low|medium|high -->
mspec learn コマンドが archive 済み changes からこれらを収集してpost-condition候補をproposeする。