一键导入
dev
spec-driven developmentを開始・継続する。新しい開発タスク、specの作成、実装の開始・再開など、開発に関わるあらゆるフェーズで使用せよ。ユーザーが開発タスクについて言及したとき、feature branchでの作業を始めるとき、実装を進めたいときに必ずこのスキルを使うこと。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
spec-driven developmentを開始・継続する。新しい開発タスク、specの作成、実装の開始・再開など、開発に関わるあらゆるフェーズで使用せよ。ユーザーが開発タスクについて言及したとき、feature branchでの作業を始めるとき、実装を進めたいときに必ずこのスキルを使うこと。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
OpenAI Codex を MCP 経由(mcp__codex__codex)で呼び出し、セカンドオピニオンとしてコードレビュー・調査をさせるスキル。引数がなければ現在のリポジトリの変更(staged/unstaged含む)またはdefault branchとの差分をレビューさせ、引数(テーマ・ファイル・バグの症状など)があればそれについて調査・レビューさせる。観点は保守性・テスト十分性・spec適合・実装の筋の良さなど。ユーザーが「codexでレビューして」「codexに見てもらって」「codexで調べて」「別のモデルの意見も欲しい」「セカンドオピニオン」と言ったとき、あるいは自分のレビューを別視点で裏取りしたいときに使う。トリガー: codex-review, codexレビュー, codexで見て, /codex-review
Claudeセッションのログ(ディレクトリ指定があればそのリポジトリの過去全 worktree、指定がなければ現在実行中のセッション)を分析し、設計・実装中にユーザーから受けた指摘・軌道修正・ダメ出しや、Claude自身のつまずきを「教訓」として蒸留し、行き先を見極めてコーディングルールへ反映するスキル。一般化できる改善点・設計思想・実装技法はグローバルルール(~/.claude の CLAUDE.md / rules)へ、そのプロジェクト固有の事情で寄り道・難航した知見はそのリポジトリの .claude(CLAUDE.md / rules)へと、肥大させずに振り分ける。「この指摘を二度とさせたくない」「さっきの反省をルールに落としたい」「セッションを振り返ってルールにして」「最近の指摘から学習して」「同じミスを繰り返さないようにルール化して」「reflection」「振り返って」と言われたとき、また長いセッションでユーザーが何度も似た修正を入れていたと気づいたときにも積極的に使うこと。コードベースからルールを起こす refine-rules とは入力が違い、こちらは「人間がClaudeに与えたフィードバック」を入力にする。
現在のリポジトリの変更(staged/unstaged含む)またはdefault branch (main/master) との差分とその周辺コードを読み、実装の良し悪しを評価するコードレビュースキル。保守性・テスト十分性・spec適合・実装の筋の良さなどの観点から、プロの視点で良い点と問題点を指摘する。ユーザーが「レビューして」「コードレビューして」「この実装どう?」「変更を見て」「品質チェックして」「マージ前に確認して」と言ったとき、あるいは実装が一段落して評価が欲しそうなときに必ず使うこと。バグ修正だけが目的の場合は別だが、設計・実装の質を評価する文脈では積極的に発動する。
現在のブランチのPRのレビューコメントとCIステータスを確認し、問題があれば修正する
リポジトリのコードベースを分析してClaude Code用のコーディングルール(CLAUDE.md / .claude/rules/)を生成・更新し、併せてコードベース側の不足や問題点も指摘・修正する。「ルールを作りたい」「コーディング規約を整えたい」「CLAUDE.mdを作りたい・見直したい」「.claude/rulesを整備したい」「このリポジトリのルールを書いて」「プロジェクトのコーディングスタイルを整えて」といったリクエストで使うこと。新規リポジトリの初期設定にも、既存ルール・既存コードベースの継続的な見直し・改善にも対応する。
difitコマンドでGitのdiffをブラウザのGitHub風UIで表示する。コードレビューや差分確認時に使用。
| name | dev |
| description | spec-driven developmentを開始・継続する。新しい開発タスク、specの作成、実装の開始・再開など、開発に関わるあらゆるフェーズで使用せよ。ユーザーが開発タスクについて言及したとき、feature branchでの作業を始めるとき、実装を進めたいときに必ずこのスキルを使うこと。 |
| allowed-tools | Read, Write, Edit, Bash, Grep, Glob, Agent, WebFetch, WebSearch, Artifact, Skill |
現在の状況を自動判定し、適切なフェーズから開発を開始・継続する。
まず以下の情報を収集し、現在のフェーズを判定せよ:
git branch --show-current で現在のブランチ名を取得feat/create-article-component → create-article-component).spec/{slug}/spec.html および .spec/{slug}/spec.md の存在確認(どちらの形式で書かれているかも併せて把握する)spec.html): class="task done" / class="task todo"spec.md): - [x](完了) / - [ ](未完了)| 条件 | フェーズ |
|---|---|
| main/masterブランチにいる & specなし | Phase 1: 計画開始 |
| feature branchにいる & specなし | Phase 1: 計画開始(ブランチは既存を使う) |
| feature branchにいる & specあり & タスク未着手 | Phase 2: 実装開始 |
| feature branchにいる & specあり & タスク一部完了 | Phase 3: 実装再開 |
| feature branchにいる & specあり & タスク全完了 | Phase 4: 仕上げ |
判定結果をユーザーに伝えてから、該当フェーズの作業を開始せよ。
⚠️ 絶対ルール: specファイルが存在しない場合、Phase 1(計画開始)以外のフェーズに進んではならない。どんな場合でも、まず spec を作成し、ユーザーの承認を得ること。Auto modeであっても、spec承認前に実装を開始することは禁止。
ユーザーから実行したいタスクの概要を聞き、spec作成から始める。
create-article-component)git checkout -b {type}/{slug} でブランチ作成type は feat, fix, refactor, perf, style, docs, test, ci, build, chore, revert から選択specの記述形式は、artifact-design skill が利用可能かどうかで決める。
artifact-design skill が利用可能な場合 → HTML形式(mode A) で作成し、Artifact ツールでブラウザに公開するartifact-design skill が利用できない場合 → Markdown形式(mode B) で作成し、mo コマンドでブラウザに表示するskill が「利用可能」かどうかは、このセッションで提示されている利用可能skill一覧に
artifact-designが含まれているかで判断する。含まれていなければ mode B(Markdown +mo)を使うこと。
どちらの mode を選んだかをユーザーに伝えてから spec 作成に入ること。 既存の spec を継続する場合(Phase 3/4)は、既存ファイルの形式(
spec.htmlかspec.mdか)に合わせる。
この基準は mode A / mode B の両方に適用される。テンプレートはあくまで「枠」に過ぎない。埋め方の水準はこの節が規定し、この節を満たさない spec は承認に出すことを禁止する。
specの目的は「方針の共有」ではなく 「実装の再現」 である。合格基準はただ一つ:
このspecファイルだけを渡された別の人・別のエージェントが、設計上の重要判断を自分で下し直すことなく、元の意図と一貫した実装を再現できること。
次のような記述は すべて未完成 であり、承認に出してはならない。これは理念ではなく判定基準である:
これらは「一見詳しそうに見えて、読んだ人が結局すべての判断を自分でやり直す羽目になる」典型である。ファイル名や既存の識別子を正しく引用していても(=grounding できていても)、判断が確定していなければ浅い設計だ。 表・箇条書き・実在パスが並んでいることは、具体化の証拠には一切ならない。
以下の対比が、各項目で要求する粒度である。左(❌)で止まっている記述を見つけたら、右(✅)まで引き上げてから提出する:
agent/toolset.go の ToolSetResolver は現状 known ID = core_ro / slack_ro のみ(toolset.go:NN)。ここに ID case_writer を追加し、case__update_case_status(ctx context.Context, caseID string, status CaseStatus) error を含む gollem.ToolSet を返す。threadcase.buildToolResolver は OmitCore: true を保ったまま、返す集合に case_writer を足す」ReplanResult(plan.go:NN)に Action ReplanAction を追加。ReplanAction は string enum で "investigate" | "question" | "finalize" の3値。既存の『Tasks も Question も空なら終了』分岐(plan.go:70)を削除し、Action == "finalize" のときだけ run ループを break する。Validate() は3値以外・空を reject」Run[MaterializeResult](ctx, runner, req) が検証済み *MaterializeResult{Title string; Description string; Fields map[string]string} を返す → ② threadcase.handleMention がそれを受け caseRepo.UpdateCase(ctx, caseID, result.Title, result.Description, result.Fields) を呼ぶ。close は subagent の tool call 内で完結するため、この経路には現れない」executePhase で recover し (1) results[i] = TaskResult{State: Failed, Error: err} で planner の観測に載せ、(2) errutil.Handle(ctx, err) で Sentry に送る。budget 枯渇時は最後の失敗を FallbackReason に格納して return」(上の識別子・行番号は書き方の見本。実際にはあなたが読んだ実コードの実名に置き換えること。)
CLAUDE.md「Design Fidelity」対応)「あとで決める」「実装時に判断」「必要に応じて」で設計判断を残すことを禁止する。設計上の分岐(データの持ち方・同期/非同期・保存先・型の受け渡し方・命名・enum 値)は spec の中で決め切る。
情報が足りず本当に決められない場合、先送りしてはならない——spec 作成を止めてユーザーに問う(named な選択肢を提示して選ばせる。CLAUDE.md「設計上重要な選択は明示せよ」)。未決のまま承認に出すことは、たとえ「判断基準」を添えても認めない。
目的は「実装者が判断を迫られる箇所を、あらかじめ判断済みにしておくこと」。動くコードの丸写しや、getter・ボイラープレートの列挙は不要。省いてよいのは「設計が確定していれば機械的に書けるだけのコード本体」に限る。
⚠️ 「自明だから省く」の判断は厳格に行え。ある識別子の名前・型・シグネチャ・enum 値・呼び出し順が spec から一意に読み取れないなら、それは "自明" ではなく "未確定" である。「自明」を先送りの言い換えに使うな。
既存コードに触れる設計は、CLAUDE.md「Grounding」に従い 実際のコード・スキーマを読んでから 書く。既存の型・関数・パスに接続する箇所は、実在する名前で参照する。まだ読んでいない箇所を「たぶんこうなっている」で書くことは、Honesty Over Plausibility 違反である。
spec をユーザーに提示する 前に、「2. 設計」を対象に次を1項目ずつ点検し、1つでも「いいえ」があれば埋めてから出す。このゲートを通さずに提示することは禁止:
この節は
artifact-designskill が利用可能な場合のみ。利用できない場合は下の「mode B: Markdown + mo」へ進む。
specはMarkdownではなく HTML で作成し、Artifact ツールでブラウザに公開してレビューに供する。
.spec/{slug}/ ディレクトリを作成.spec/{slug}/spec.html に配置する。Artifact ツールにはこのファイルパスを渡すartifact-design skill を読み込む(Artifact ツールの前提)。デザイン投資の度合いはそのガイドに従うspec.html はページの中身(コンテンツ断片)だけを書く。 <!doctype> / <html> / <head> / <body> タグは書かない(Artifact公開時に自動でラップされ、最小限のCSSリセットも適用される)。<style> と本文要素を直書きする<li class="task todo"> / <li class="task done"> で表現する。 下記テンプレートの <style> が ☐ / ☑ を描画する。実装時はこの todo ↔ done のクラスを書き換えて進捗を管理する(grepしやすく編集も容易)以下のテンプレートを .spec/{slug}/spec.html の出発点とする({タスク名} 等のプレースホルダは埋める):
<style>
.spec { max-width: 56rem; margin: 0 auto; padding: 1rem; line-height: 1.7; }
.spec h1 { border-bottom: 2px solid currentColor; padding-bottom: .3rem; }
.spec h2 { margin-top: 2.2rem; border-bottom: 1px solid #8884; padding-bottom: .2rem; }
.spec .note { border-left: 4px solid #8888; padding: .4rem .9rem; background: #8881; border-radius: 4px; }
.spec ul.tasks { list-style: none; padding-left: 1.2rem; }
.spec li.task { position: relative; }
.spec li.task::before { position: absolute; left: -1.2rem; }
.spec li.task.todo::before { content: "☐"; }
.spec li.task.done::before { content: "☑"; }
.spec li.task.done { opacity: .65; }
.spec figure { margin: 1rem 0; text-align: center; }
.spec code { background: #8882; padding: .1rem .3rem; border-radius: 3px; }
</style>
<article class="spec">
<h1>{タスク名} Specification</h1>
<h2>1. 要件定義 (Requirements)</h2>
<h3>概要</h3>
<p>[タスクの概要と目的]</p>
<h3>機能要件</h3>
<ul><li>[要件1]</li><li>[要件2]</li></ul>
<h3>非機能要件</h3>
<ul><li>[パフォーマンス要件]</li><li>[セキュリティ要件]</li></ul>
<h3>制約事項</h3>
<ul><li>[技術的制約]</li><li>[ビジネス制約]</li></ul>
<h2>2. 設計 (Design)</h2>
<p class="note">この節は「設計の記述水準(再現性の基準)」を満たすこと。方針の羅列ではなく、別の実装者が判断を下し直さずに再現できる具体度で書く。</p>
<h3>アーキテクチャ概要</h3>
<p>[全体の設計方針。主要コンポーネントの一覧と、それぞれが属するレイヤー/責務境界]</p>
<figure>
<!-- 図は inline SVG または HTML+CSS で描く(mermaid/ASCII Art禁止) -->
<svg viewBox="0 0 100 30" role="img" aria-label="[図の説明]"><!-- ... --></svg>
<figcaption>[図の説明]</figcaption>
</figure>
<h3>コンポーネント設計</h3>
<p>[コンポーネントごとに以下を書く。1つで済むなら1つ、複数あれば各々について]</p>
<ul>
<li><strong>責務</strong>: [このコンポーネントが担う単一の責務]</li>
<li><strong>保持する状態</strong>: [フィールド名 : 型 — 意味。状態を持たないなら「なし(stateless)」]</li>
<li><strong>公開シグネチャ</strong>: [新規/変更する関数・メソッド・型の実際のシグネチャ。引数名・型・戻り値・エラー型まで。既存を変更するなら <em>現状のシグネチャ → 変更後のシグネチャ</em> を併記。例: <code>func (s *Service) Foo(ctx context.Context, id ID) (*Result, error)</code>]</li>
<li><strong>主要ロジック</strong>: [処理手順・分岐条件・アルゴリズムを、呼ぶ順序と各分岐の条件が分かる粒度で。"適切に処理する" は禁止]</li>
<li><strong>依存</strong>: [呼び出す他コンポーネント/外部サービス。誰が・どの関数を・どんな引数で呼ぶか]</li>
</ul>
<h3>データモデル / 型定義</h3>
<p>[主要なデータ構造を、フィールド名・型・意味・制約(必須/任意・値域)まで具体的に。該当なしなら「なし」と明示]</p>
<h3>データフロー / 処理シーケンス</h3>
<p>[主要ユースケースごとに、関数/メソッドの呼び出し順序と各ステップの入出力が追える形で。必要なら sequence 図(inline SVG)]</p>
<h3>設計判断の記録 (Design Decisions)</h3>
<p>[選択肢が複数あった箇所の 採用案 / 却下案 / 採用理由。実装者が蒸し返さないための記録。なければ「特筆すべき分岐なし」と明示]</p>
<h3>外的インターフェース (External Interfaces)</h3>
<p class="note">このセクションは特に詳細に記述すること。外部から観測・利用される境界は、後から変更すると影響範囲が大きいため、設計段階で具体的に確定させる。以下のうち該当するものはすべて、名前・型・デフォルト値・必須/任意・後方互換性への影響まで明記する。該当がない項目は「なし」と明示する。</p>
<ul>
<li><strong>API / エンドポイント</strong>: 追加・変更するエンドポイント、リクエスト/レスポンスのスキーマ、ステータスコード、認証方式</li>
<li><strong>関数・メソッド・型シグネチャ</strong>: 公開(exported)される関数・メソッド・構造体・インターフェースのシグネチャと責務</li>
<li><strong>設定 (Configuration)</strong>: 追加・変更する設定項目、設定ファイルのキー、デフォルト値、許容値の範囲</li>
<li><strong>環境変数 (Environment Variables)</strong>: 追加・変更・削除する環境変数名、用途、デフォルト値、必須かどうか</li>
<li><strong>CLIフラグ・引数</strong>: 追加・変更するコマンドラインフラグ、引数、サブコマンド</li>
<li><strong>データスキーマ / マイグレーション</strong>: DBスキーマ、メッセージフォーマット、永続化フォーマットの変更</li>
<li><strong>外部連携 / 権限</strong>: 外部サービス連携、必要なOAuthスコープ・IAM権限、Webhook など</li>
</ul>
<h3>UI / その他のインターフェース</h3>
<p>[UIの画面・操作、上記に当てはまらないインターフェース仕様]</p>
<h3>エラーハンドリング / 境界条件</h3>
<p>[「どういう入力/状態のときに何が起きるか」を具体的に列挙。異常系・境界値・並行時の振る舞い、返すエラー型/コードまで書く]</p>
<h2>3. 実装計画 (Implementation Plan)</h2>
<h3>影響を受けるファイル</h3>
<p>新規作成:</p>
<ul class="tasks">
<li class="task todo"><code>path/to/new-file1.ext</code></li>
<li class="task todo"><code>path/to/new-file2.ext</code></li>
</ul>
<p>修正:</p>
<ul class="tasks">
<li class="task todo"><code>path/to/existing-file1.ext</code></li>
</ul>
<p>削除:</p>
<ul class="tasks">
<li class="task todo"><code>path/to/delete-file.ext</code></li>
</ul>
<h3>実装ステップ</h3>
<ul class="tasks">
<li class="task todo"><strong>Step 1</strong>: [ステップの説明](詳細な作業内容 / 影響するファイル)</li>
<li class="task todo"><strong>Step 2</strong>: [ステップの説明](詳細な作業内容 / 影響するファイル)</li>
<li class="task todo"><strong>Step 3</strong>: [ステップの説明](詳細な作業内容 / 影響するファイル)</li>
</ul>
<h3>テスト計画</h3>
<p class="note">「エラーハンドリング / 境界条件」節で列挙した異常系・境界値・並行時の振る舞いには、原則すべて対応する検証テストを1つ以上用意する。下のリストには「どの境界条件/エラーケースを、どのテストで、どう検証するか(期待するエラー型/コード・戻り値まで)」を具体的に書く。正常系だけのテスト計画は不可。</p>
<ul class="tasks">
<li class="task todo">正常系ユニットテストの作成/更新(テスト内容1 / テスト内容2)</li>
<li class="task todo">境界値・異常系ユニットテストの作成/更新(設計で列挙した各境界条件・エラーケースに対応。ケース → 入力/状態 → 期待するエラー型/コード・戻り値)</li>
<li class="task todo">統合テストの作成/更新(テスト内容1 / テスト内容2)</li>
</ul>
<h3>リリース準備</h3>
<ul class="tasks">
<li class="task todo">ドキュメントの更新(特に「外的インターフェース」の変更点 — API・設定・環境変数など — を反映する)</li>
<li class="task todo">マイグレーション(必要な場合)</li>
</ul>
</article>
この節は
artifact-designskill が利用できない場合に使う。利用可能な場合は上の「mode A: HTML + Artifact」を使うこと。
specは Markdown で作成し、mo コマンドでブラウザに表示してレビューに供する。
.spec/{slug}/ ディレクトリを作成.spec/{slug}/spec.md に配置するmo は mermaid を描画できる)。ASCII Art は使わない- [ ](未完了) / - [x](完了)で表現する。 実装時はこの [ ] ↔ [x] を書き換えて進捗を管理する(grepしやすく編集も容易)以下のテンプレートを .spec/{slug}/spec.md の出発点とする({タスク名} 等のプレースホルダは埋める):
# {タスク名} Specification
## 1. 要件定義 (Requirements)
### 概要
[タスクの概要と目的]
### 機能要件
- [要件1]
- [要件2]
### 非機能要件
- [パフォーマンス要件]
- [セキュリティ要件]
### 制約事項
- [技術的制約]
- [ビジネス制約]
## 2. 設計 (Design)
> この節は「設計の記述水準(再現性の基準)」を満たすこと。方針の羅列ではなく、別の実装者が判断を下し直さずに再現できる具体度で書く。
### アーキテクチャ概要
[全体の設計方針。主要コンポーネントの一覧と、それぞれが属するレイヤー/責務境界]
```mermaid
graph LR
A[Component A] --> B[Component B]
[コンポーネントごとに以下を書く。1つで済むなら1つ、複数あれば各々について]
func (s *Service) Foo(ctx context.Context, id ID) (*Result, error)][主要なデータ構造を、フィールド名・型・意味・制約(必須/任意・値域)まで具体的に。該当なしなら「なし」と明示]
[主要ユースケースごとに、関数/メソッドの呼び出し順序と各ステップの入出力が追える形で。必要なら sequence 図(mermaid)]
[選択肢が複数あった箇所の 採用案 / 却下案 / 採用理由。実装者が蒸し返さないための記録。なければ「特筆すべき分岐なし」と明示]
このセクションは特に詳細に記述すること。外部から観測・利用される境界は、後から変更すると影響範囲が大きいため、設計段階で具体的に確定させる。以下のうち該当するものはすべて、名前・型・デフォルト値・必須/任意・後方互換性への影響まで明記する。該当がない項目は「なし」と明示する。
[UIの画面・操作、上記に当てはまらないインターフェース仕様]
[「どういう入力/状態のときに何が起きるか」を具体的に列挙。異常系・境界値・並行時の振る舞い、返すエラー型/コードまで書く]
新規作成:
path/to/new-file1.extpath/to/new-file2.ext修正:
path/to/existing-file1.ext削除:
path/to/delete-file.ext「エラーハンドリング / 境界条件」節で列挙した異常系・境界値・並行時の振る舞いには、原則すべて対応する検証テストを1つ以上用意する。下のリストには「どの境界条件/エラーケースを、どのテストで、どう検証するか(期待するエラー型/コード・戻り値まで)」を具体的に書く。正常系だけのテスト計画は不可。
---
## spec作成後の必須手順
> **⚠️ 重要: 以下の手順を必ず順に実行せよ。省略は禁止。**
0. **自己監査(必須ゲート)**: ブラウザに表示する前に、上の「設計の記述水準 → 承認前の自己監査(必須ゲート)」チェックリストを「2. 設計」に対して1項目ずつ通す。1つでも未達があれば **表示・レビュー依頼に進まず、spec を直してから** 次へ進む。特に「浅い設計」の禁止項目("等"での濁し・先送り表現・変更前後の対比欠落・シグネチャ欠落)が残っていないかを最後に見る。
1. **ブラウザに表示する(必須)**: spec作成(specファイルの書き込み)が完了したら、選んだ mode に応じてブラウザに表示する。
- **mode A(HTML + Artifact)**: `Artifact` ツールに `file_path` として `.spec/{slug}/spec.html` を渡して公開する。`title` はタスク名のspec、`favicon` は `📋` 等を指定する。返ってきたArtifactのURLをユーザーに提示せよ。specを修正したら **同じ `file_path` で再度 `Artifact` を呼び**、同一URLへ再デプロイする(URLを変えない)。
- **mode B(Markdown + mo)**: `mo .spec/{slug}/spec.md` を `run_in_background` で実行してブラウザに表示する。specを修正した場合、`mo` は同じファイルを監視・再表示するため再実行は不要(必要に応じてユーザーに再読み込みを促す)。
2. **ユーザーにレビューを依頼し、ここで必ず停止する(必須)**: specを提示した状態でレビューを依頼し、**ユーザーから明示的な承認を得るまで Phase 2 に進んではならない。** Auto modeであっても、承認なしに実装を開始することは絶対に禁止。ユーザーが「OK」「進めて」「LGTM」等の承認を返すまで待つこと。
---
# Phase 2: 実装開始
specファイルに基づいて実装を開始する。
## コンテキストの整理
- 実装開始前に `/compact` を実行してコンテキストを圧縮せよ。Phase 1での議論やspec作成過程の詳細はspecファイルに集約されているため、コンテキストウィンドウを実装作業のために確保する
## specの読み込み
- ファイルパスが引数で与えられた場合はそのパス、なければブランチ名のslugから `.spec/{slug}/spec.html`(mode A)または `.spec/{slug}/spec.md`(mode B)をspecとして読み込む
- specの内容(要件・設計・実装計画)を把握してから実装に着手する
## 調査・リサーチ
- 実装中にライブラリのAPIやフレームワークの仕様を確認する必要がある場合、WebFetchやWebSearchを使って公式ドキュメントなどを参照せよ
- 不明な仕様や使い方があれば、推測で実装せず調べてから進める
## 実装の進め方
- 実装計画のステップに沿って順に進める
- 完了した作業や編集が終わったファイルは、対応するチェックボックスを書き換えて進捗を記録しながら進める(最後にまとめてではなく、都度実施)
- mode A(HTML): `<li class="task todo">` → `<li class="task done">`
- mode B(Markdown): `- [ ]` → `- [x]`
- 進捗を更新すると同時にspecの内容を見直し、実装すべき内容や方向性を確認する
- specを書き換えたら表示を最新化する
- mode A: **同じ `file_path` で `Artifact` ツールを呼び直し**、公開中のArtifactを最新状態に再デプロイする(URLは変わらない)
- mode B: `mo` がファイルを監視・自動更新するため再実行は不要
- 実装中に追加の指示があった場合は specファイル(`spec.html` / `spec.md`)も更新する
- 実装に支障をきたす問題が発生しない限り、最後まで完了させよ。途中で止まるな
- `// TODO` や `// FIXME`、仮実装、スタブなどを残すな。すべての機能を完全に実装し切ること
## git add
- ファイルを変更・作成したら都度 `git add` せよ。実装完了時にまとめてではなく、変更のたびに実施する
- **`git add .` や `git add -A` のような一括追加は禁止。** 必ず `git add <ファイルパス>` で対象ファイルを明示的に指定すること
- **specファイル(`.spec/` 以下)は `git add` するな。** specはあくまで作業用ドキュメントであり、コミット対象に含めない
---
# Phase 3: 実装再開
途中まで進んでいる実装を継続する。
- specファイル(`spec.html` / `spec.md`)を読み込み、チェックボックスの状態(mode A: `task todo` / `task done`、mode B: `- [ ]` / `- [x]`)から進捗を把握する
- 未完了のステップの最初から実装を再開する
- Phase 2と同じルールに従って進める(進捗更新のたびに表示を最新化する — mode A は同一 `file_path` での `Artifact` 再デプロイ、mode B は `mo` の自動更新に任せる)
---
# Phase 4: 仕上げ
実装計画のタスク(mode A: `<li class="task ...">`、mode B: `- [ ]` / `- [x]`)がすべて完了になっている状態。
- specを最終確認し、漏れがないか点検する(必要なら表示を最新化する — mode A は `Artifact` 再デプロイ、mode B は `mo` の自動更新)
- テスト計画に基づいてテストが通ることを確認する
- ユーザーに完了報告する