iterate-with-prototypeslisted
Install: claude install-skill YasuakiOmokawa/skills
# Iterate With Prototypes
## Overview
不確実な機能で危ないのは、**机上の設計から始める**こと。AI は紙の上で自信満々に間違った骨格を作り、設計書はやがて実コードから乖離する。このスキルは順序を反転する: **動くコードで設計を発見し、設計書はコードから最後に起こす**。設計書を working code から導出するので、**机上設計とコードの初期ギャップを構造的に消す**(導出時点で一致)。継続的な drift には doc の再導出 or code-as-SSOT 運用が要る。
有能なエージェントは spike や throwaway、独立 QA は放っておいてもやる。このスキルが効かせるのは「**コードを先に 100% 動かし、設計は後でリファクタ、設計書は最後にコードから**」という反転と、その規律。
## When to use
- PRD/仕様はあるが、実現可能性 / UX効果 /「既存API・データ構造を流用できる」が未検証
- 機能が複数のプラン文書 + PR チェーンに跨る規模
- 実装の大半を AI エージェントに任せる
使わない場合: 未検証の仮定が無い既知機能(`/define-acceptance-criteria` → 実装に直行) / 1 つの問いに答える単発 throwaway(`/prototype` を直接)。
**ガードレール(最重要・誤適用防止)**: code-first が正しいのは、危険な未知が **feasibility / UX / 流用可否** で、**かつ blast radius が小さく Code-A を捨てやすい**とき(例: view 層・BE 凍結)。危険な未知が**戻しにくい決定**(DB スキーマ / migration / 公開 API 契約 / チーム間境界)なら code-first は**不可** — 「まず 100% 動かす」と間違った土台を Code-A に焼き込み、リファクタで剥がせない。その場合は **design-first か「狭い spike + ADR を先に固める」**に切り替える。ここでの spike は **本番非接触の throwaway**(本番リソース/migration/データ・公開エンドポイントを作らない)に限り、結論は ADR に固める(Code-A にしない)。reversible な部分(UI 等)を code-first で切り出すのは、それが依存する irreversible 決定の ADR が固まった後。
## Start here
起動直後の第一手(`The loop` step 1 は「最も危険な仮定」を知っている前提なので、その前に必ず):
1. **対象を特定** — PRD/仕様/プランを探す。取れなければ 1 度だけ聞く(**branch 名から決めつけない**)。`When to use` で使用可否を判定し、不適なら `/prototype` か `/define-acceptance-criteria` へ誘導して抜ける。
2. **仮定を自分で抽出してランク** — load-bearing な未検証仮定を**自分で**列挙し、**不確実性 × 外れた時の手戻り**で順位付け(ユーザーに丸投げせず、順位案を出して訂正してもらう)。
3. **単一正本(ledger)を作る = 最初の成果物** — `主張 / 検証方法 / kill 条件 / s