create-ai-project 1.23.5 → 1.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents-en/acceptance-test-generator.md +2 -2
- package/.claude/agents-en/code-reviewer.md +9 -1
- package/.claude/agents-en/codebase-analyzer.md +1 -1
- package/.claude/agents-en/document-reviewer.md +2 -1
- package/.claude/agents-en/task-decomposer.md +22 -8
- package/.claude/agents-en/task-executor-frontend.md +16 -2
- package/.claude/agents-en/task-executor.md +16 -2
- package/.claude/agents-en/technical-designer-frontend.md +7 -12
- package/.claude/agents-en/technical-designer.md +4 -11
- package/.claude/agents-en/ui-spec-designer.md +3 -3
- package/.claude/agents-en/work-planner.md +27 -22
- package/.claude/agents-ja/acceptance-test-generator.md +4 -4
- package/.claude/agents-ja/code-reviewer.md +9 -1
- package/.claude/agents-ja/code-verifier.md +2 -2
- package/.claude/agents-ja/codebase-analyzer.md +1 -1
- package/.claude/agents-ja/document-reviewer.md +6 -5
- package/.claude/agents-ja/prd-creator.md +3 -3
- package/.claude/agents-ja/quality-fixer-frontend.md +1 -1
- package/.claude/agents-ja/quality-fixer.md +1 -1
- package/.claude/agents-ja/rule-advisor.md +1 -1
- package/.claude/agents-ja/security-reviewer.md +1 -1
- package/.claude/agents-ja/solver.md +2 -2
- package/.claude/agents-ja/task-decomposer.md +23 -9
- package/.claude/agents-ja/task-executor-frontend.md +16 -2
- package/.claude/agents-ja/task-executor.md +16 -2
- package/.claude/agents-ja/technical-designer-frontend.md +8 -13
- package/.claude/agents-ja/technical-designer.md +5 -12
- package/.claude/agents-ja/ui-analyzer.md +1 -1
- package/.claude/agents-ja/ui-spec-designer.md +7 -7
- package/.claude/agents-ja/work-planner.md +51 -51
- package/.claude/commands-ja/build.md +1 -1
- package/.claude/commands-ja/design.md +1 -1
- package/.claude/commands-ja/diagnose.md +1 -1
- package/.claude/commands-ja/front-build.md +1 -1
- package/.claude/commands-ja/front-design.md +3 -3
- package/.claude/commands-ja/front-plan.md +2 -2
- package/.claude/commands-ja/implement.md +1 -1
- package/.claude/commands-ja/plan.md +2 -2
- package/.claude/commands-ja/prepare-implementation.md +4 -4
- package/.claude/commands-ja/reverse-engineer.md +1 -1
- package/.claude/commands-ja/review.md +1 -1
- package/.claude/commands-ja/task.md +2 -2
- package/.claude/commands-ja/update-doc.md +1 -1
- package/.claude/skills-en/documentation-criteria/references/design-template.md +5 -1
- package/.claude/skills-en/documentation-criteria/references/plan-template.md +16 -6
- package/.claude/skills-en/documentation-criteria/references/task-template.md +10 -0
- package/.claude/skills-en/documentation-criteria/references/ui-spec-template.md +1 -1
- package/.claude/skills-en/frontend-typescript-testing/references/e2e.md +1 -1
- package/.claude/skills-ja/coding-standards/SKILL.md +4 -4
- package/.claude/skills-ja/coding-standards/references/security-checks.md +1 -1
- package/.claude/skills-ja/documentation-criteria/SKILL.md +1 -1
- package/.claude/skills-ja/documentation-criteria/references/design-template.md +10 -6
- package/.claude/skills-ja/documentation-criteria/references/plan-template.md +17 -7
- package/.claude/skills-ja/documentation-criteria/references/task-template.md +11 -1
- package/.claude/skills-ja/documentation-criteria/references/ui-spec-template.md +3 -3
- package/.claude/skills-ja/frontend-technical-spec/SKILL.md +1 -1
- package/.claude/skills-ja/frontend-typescript-rules/SKILL.md +4 -4
- package/.claude/skills-ja/frontend-typescript-testing/SKILL.md +1 -1
- package/.claude/skills-ja/frontend-typescript-testing/references/e2e.md +2 -2
- package/.claude/skills-ja/implementation-approach/SKILL.md +1 -1
- package/.claude/skills-ja/integration-e2e-testing/SKILL.md +1 -1
- package/.claude/skills-ja/integration-e2e-testing/references/e2e-environment-prerequisites.md +1 -1
- package/.claude/skills-ja/project-context/references/template.md +2 -2
- package/CHANGELOG.md +11 -0
- package/package.json +1 -1
|
@@ -89,7 +89,7 @@ skills: coding-standards, project-context, technical-spec
|
|
|
89
89
|
|
|
90
90
|
**目安カーディナリティ**: 典型的な変更で5-15件。候補が15件を超える場合、カテゴリ1と2のエントリは全て保持し、カテゴリ3は関連するカテゴリ1/2エントリの`factsToAddress`テキストにマージする。
|
|
91
91
|
|
|
92
|
-
**`fact_id`の生成**: `<repo相対の主ファイルパス>:<主シンボル名またはfocus areaラベル>` 形式で、事実集合を代表するファイルと、存在する場合は正確なシンボル名を用いる。シンボル名がないときは短く正規化したfocus areaラベルを使う。**レイヤー横断機能の場合**: 共有される型・スキーマ・API契約が複数レイヤーから参照されるとき、`fact_id`は**canonical source file**(定義箇所に最も近い共有モジュール、例: `packages/shared/schemas/user.ts:User
|
|
92
|
+
**`fact_id`の生成**: `<repo相対の主ファイルパス>:<主シンボル名またはfocus areaラベル>` 形式で、事実集合を代表するファイルと、存在する場合は正確なシンボル名を用いる。シンボル名がないときは短く正規化したfocus areaラベルを使う。**レイヤー横断機能の場合**: 共有される型・スキーマ・API契約が複数レイヤーから参照されるとき、`fact_id`は**canonical source file**(定義箇所に最も近い共有モジュール、例: `packages/shared/schemas/user.ts:User`)をアンカーとする。これによりレイヤー別の解析が同一概念に対して同じ`fact_id`を生成し、レイヤー横断のdisposition矛盾検出が成立する。
|
|
93
93
|
|
|
94
94
|
**`evidence`の記録**: 次のいずれかの形式で単一の参照文字列を記録する(該当する中で最も具体的なものを選ぶ): `existingElements[name='<名前>']` / `constraints[location='<file>:<line>']` / `<file>:<line>`。1つのfocus areaにつき1形式のみを記録する。
|
|
95
95
|
|
|
@@ -54,7 +54,7 @@ skills: documentation-criteria, technical-spec, project-context, typescript-rule
|
|
|
54
54
|
- doc_typeに基づく特化した検証
|
|
55
55
|
- DesignDocの場合:「適用基準」セクションの存在をexplicit/implicit分類付きで確認
|
|
56
56
|
- 欠落・不完全 → `critical`、implicit基準の未確認 → `important`
|
|
57
|
-
- WorkPlanの場合: セマンティックゲートの判定対象となる成果物が計画に含まれることを確認 —
|
|
57
|
+
- WorkPlanの場合: セマンティックゲートの判定対象となる成果物が計画に含まれることを確認 — 設計-計画トレーサビリティ、Reference Contract Values(Design Docが拘束的観測値を指定する場合)、故障モードチェックリスト、レビュースコープ、検証戦略の要約、証明戦略。参照されているDesign Docを読み込み、AC / コントラクト / 状態遷移のカバレッジと拘束的観測値の内容忠実性を計画に対して確認できるようにする
|
|
58
58
|
- `code_verification`が提供された場合: 不整合リストと逆方向カバレッジのギャップを抽出し、Gate 1の事前検証エビデンスとして組み込む
|
|
59
59
|
- `codebase_analysis`が提供された場合: `focusAreas`とその`evidence`値を抽出し、Gate 0 / Gate 1のFact Dispositionチェックに使用
|
|
60
60
|
|
|
@@ -81,7 +81,7 @@ WorkPlanの場合、追加で以下を確認:
|
|
|
81
81
|
- [ ] 設計-計画トレーサビリティ表が存在し、各行がタスクにマッピングされているか正当化されたギャップを持つ
|
|
82
82
|
- [ ] 検証戦略の要約と証明戦略が存在する
|
|
83
83
|
- [ ] 故障モードチェックリストが存在する
|
|
84
|
-
- [ ]
|
|
84
|
+
- [ ] 最終フェーズに品質保証が含まれる(ACの達成、全テストのパス)
|
|
85
85
|
|
|
86
86
|
#### Gate 1: 品質評価(Gate 0通過後のみ実施)
|
|
87
87
|
|
|
@@ -122,15 +122,16 @@ WorkPlanの場合、追加で以下を確認:
|
|
|
122
122
|
- *要素ごとのエントリ*:
|
|
123
123
|
- (1) ステップ1 が Design Doc または参照 PRD/UI Spec から少なくとも1つの AC 参照(AC ID、AC見出し、EARS節、または制約ID)を挙げている — リンクの欠落、または投機的要件(「将来」「欲しがるかも」)のみで構成 → `critical`(カテゴリ: `compliance`)。
|
|
124
124
|
- (2) ステップ2〜3 に少なくとも1つの削減的代替案(既存から導出 / オンデマンド計算 / 呼び出し側に留める / 既存を再利用 / 新規状態を導入しない)が含まれる — 削減的代替案の欠落 → `critical`(カテゴリ: `compliance`)。
|
|
125
|
-
- (3) ステップ4
|
|
125
|
+
- (3) ステップ4 の根拠が、最小の代替案を選定するか、より小さい代替案では満たせない現要件を特定している — 「便利」「将来対応」「実装が楽」「ユーザーが欲しがるかも」が主たる根拠として使われている → `critical`(カテゴリ: `compliance`)。
|
|
126
126
|
- (4) ステップ5 で不採用案が簡潔な根拠とともに記録されている — 不採用案ログの欠落 → `important`(カテゴリ: `completeness`)。注: 代替案ゼロのケースはサブチェック(2)で先に `critical` として検出される。サブチェック(4)は代替案は生成されたが記録が抜けているケースを検出する。
|
|
127
127
|
|
|
128
128
|
- **作業計画書セマンティックゲート**(doc_type WorkPlan):
|
|
129
|
-
- (1) カバレッジは各項目が計画内で存在する場所で確認する:
|
|
129
|
+
- (1) カバレッジは各項目が計画内で存在する場所で確認する: 各ACがタスクでカバーされている — 設計-計画トレーサビリティの行がそのACをタスクにマッピングしているか、タスクの完了基準または Proof Obligations がそのACを参照していることで示される。各データコントラクトと状態遷移は、設計-計画トレーサビリティの行でタスクにマッピングされるか、明示的なスコープ外エントリを持つ。各品質保証メカニズムは、カバー対象ファイルとともに品質保証メカニズム表に現れる。いずれのカバレッジもない項目 → `critical`(カテゴリ: `completeness`)。カバーされないACは原因を区別する: Design Docが裏付けるのにタスクがマッピングされていない(計画の漏れ、再計画で修正可能)→ `critical`、Design Docや入力に裏付けがない(再計画でも修正不能なギャップ)→ 下記Verdictマッピングの`rejected`トリガー
|
|
130
130
|
- (2) 早期検証ポイントが最終フェーズではなく早期フェーズに置かれている — 最終フェーズへの後回し → `important`(カテゴリ: `consistency`)
|
|
131
|
-
- (3)
|
|
131
|
+
- (3) 境界横断・公開境界・永続状態の各変更が、それを実境界経由で検証するタスクを特定している — 欠落 → `important`(カテゴリ: `completeness`)
|
|
132
132
|
- (4) 存在する各トレーサビリティ表(設計-計画、UI Specコンポーネント、Connection Map、ADR Bindings)が対象タスクを解決できる粒度で埋められている — 粒度不足の行 → `important`(カテゴリ: `completeness`)
|
|
133
133
|
- (5) 故障モードチェックリストが計画の該当するドメイン非依存カテゴリ(same-value, no-op, empty input, invalid option, missing config, unavailable boundary, shared-state dependency, rollback-only visibility)をカバーしている — 該当カテゴリの欠落 → `recommended`(カテゴリ: `completeness`)
|
|
134
|
+
- (6) 拘束的観測値がカバレッジだけでなく内容忠実性をもって保持されている: 拘束的値をエンコードする各Design Doc観測可能契約(列/ラベルの集合と順序、派生表示ルール、状態ライフサイクルの否定条件)について、計画のReference Contract Values表がその値をDesign Docから逐語で転記し、カバーするタスクにマッピングしている。各値をDesign Docから再導出して計画と比較する; Design Docが指定しているのに値がラベルに縮約・要約・欠落している場合は内容忠実性のギャップ → `critical`(カテゴリ: `completeness`)
|
|
134
135
|
- Verdictマッピング(WorkPlan): セマンティックゲートの`critical`はいずれもverdictを最低でも`needs_revision`にする — ただしDesign Doc/入力要素の欠落や矛盾に起因するカバレッジギャップ(再計画で修正不能)→ `rejected`、`important`のみの場合はverdictを`approved_with_conditions`までに制限する
|
|
135
136
|
|
|
136
137
|
**観点特化モード**:
|
|
@@ -63,7 +63,7 @@ skills: documentation-criteria, project-context, technical-spec
|
|
|
63
63
|
## PRD出力形式
|
|
64
64
|
|
|
65
65
|
### 対話モードの場合
|
|
66
|
-
|
|
66
|
+
以下の構造化された形式で出力する。
|
|
67
67
|
|
|
68
68
|
1. **現在の理解**
|
|
69
69
|
- 要件の本質的な目的を1-2文で要約
|
|
@@ -175,7 +175,7 @@ PRD作成時は**ユーザージャーニー図**と**スコープ境界図**を
|
|
|
175
175
|
|
|
176
176
|
### リバースPRD実行方針
|
|
177
177
|
|
|
178
|
-
**記述基準**: コードがsingle source of truth(SSoT)
|
|
178
|
+
**記述基準**: コードがsingle source of truth(SSoT)である。観察可能な振る舞いを断定形で記述する。振る舞いが不明な場合はコードをさらに調査して確認する。コードだけでは判断できない場合(例: 設計選択の背後にあるビジネス意図)にのみ「未確定事項」に分類する。
|
|
179
179
|
|
|
180
180
|
**コード原文の正確な転記**: 識別子、URL、パラメータ名、フィールド名、コンポーネント名、文字列リテラルは、コードに記載されている通りに正確にコピーすること。コードにタイポがある場合は、仕様書には実際の識別子をそのまま記載し、タイポはKnown Issuesに別途記録する。
|
|
181
181
|
|
|
@@ -193,7 +193,7 @@ PRD作成時は**ユーザージャーニー図**と**スコープ境界図**を
|
|
|
193
193
|
- Unverifiedな主張は「未確定事項」にのみ記載
|
|
194
194
|
- Inferredな主張には明示的な根拠を記載
|
|
195
195
|
- コア要件ではVerifiedな主張を優先
|
|
196
|
-
- Inferred
|
|
196
|
+
- Inferredに分類する前に、関連コードを読んで検証を試みる。コードがアクセス不能または曖昧であることを確認した場合にのみInferredに分類する
|
|
197
197
|
|
|
198
198
|
### リバースPRD調査プロトコル
|
|
199
199
|
|
|
@@ -123,7 +123,7 @@ coding-standardsのSecurity Principlesの各原則に対して実装を検証:
|
|
|
123
123
|
- 1つ以上の confirmed_risk の検出結果(`blocked` にルーティングされたものを除く)
|
|
124
124
|
- 主要な入力境界に影響する複数の defense_gap
|
|
125
125
|
- `requiredFixes` は `needs_revision` 返却時には非空でなければならない。内容:
|
|
126
|
-
- すべての `confirmed_risk` 項目(`blocked`
|
|
126
|
+
- すべての `confirmed_risk` 項目(`blocked` にエスカレーションされていないもの。各項目の `fix` はコードレベルの修正策を記述)
|
|
127
127
|
- 主要な入力境界に該当する `defense_gap` 項目(`fix` は追加すべき防御層を記述)
|
|
128
128
|
- 各項目の `fix` は下流の実装ステップが直接適用可能なコードレベルの修正策とする。
|
|
129
129
|
|
|
@@ -159,6 +159,6 @@ skills: project-context, technical-spec, coding-standards, implementation-approa
|
|
|
159
159
|
|
|
160
160
|
最終 JSON 出力前に下記の各項目を実行する。未充足の項目があれば、該当 Step に戻り完了させてから JSON を出力すること。
|
|
161
161
|
|
|
162
|
-
- [ ]
|
|
163
|
-
- [ ]
|
|
162
|
+
- [ ] 技術的結論だけでなくユーザー報告の症状に解決策が対応している
|
|
163
|
+
- [ ] 解決策導出前に入力の障害点とユーザー報告の整合性を確認した
|
|
164
164
|
- [ ] 確認された各障害点に対応する修正が実装計画に含まれている
|
|
@@ -79,13 +79,13 @@ implementation-approachスキルで決定された実装戦略パターンに基
|
|
|
79
79
|
|
|
80
80
|
4. **タスクファイルの生成**
|
|
81
81
|
|
|
82
|
-
命名は subagents-orchestration-guide「Layer-Aware Agent Routing」のレイヤールーティング規約に従う。素の `{plan-name}-task-*.md` 形式は
|
|
82
|
+
命名は subagents-orchestration-guide「Layer-Aware Agent Routing」のレイヤールーティング規約に従う。素の `{plan-name}-task-*.md` 形式はbackend予約であり、frontendタスクには使用してはならない。
|
|
83
83
|
|
|
84
|
-
| 計画分類 | タスクファイル名 |
|
|
85
|
-
|
|
86
|
-
| 単層 **backend** | `{plan-name}-task-{number}.md`(推奨)または `{plan-name}-backend-task-{number}.md` |
|
|
87
|
-
| 単層 **frontend** | `{plan-name}-frontend-task-{number}.md`(必須 — 素の `*-task-*` 形式はbackend予約) |
|
|
88
|
-
| 複層(backend + frontendをまたぐ) | `{plan-name}-backend-task-{number}.md` と `{plan-name}-frontend-task-{number}.md`(タスクスライスごとにレイヤー別に1ファイルずつ) |
|
|
84
|
+
| 計画分類 | タスクファイル名 |
|
|
85
|
+
|---------|---------------|
|
|
86
|
+
| 単層 **backend** | `{plan-name}-task-{number}.md`(推奨)または `{plan-name}-backend-task-{number}.md` |
|
|
87
|
+
| 単層 **frontend** | `{plan-name}-frontend-task-{number}.md`(必須 — 素の `*-task-*` 形式はbackend予約) |
|
|
88
|
+
| 複層(backend + frontendをまたぐ) | `{plan-name}-backend-task-{number}.md` と `{plan-name}-frontend-task-{number}.md`(タスクスライスごとにレイヤー別に1ファイルずつ) |
|
|
89
89
|
|
|
90
90
|
レイヤーはタスクの対象ファイルパスから判定する(technical-specスキルのプロジェクト構造定義を参照)。
|
|
91
91
|
|
|
@@ -120,7 +120,7 @@ implementation-approachスキルで決定された実装戦略パターンに基
|
|
|
120
120
|
| フロントエンド統合 / fixture-e2eテスト | UI Specのコンポーネントセクション(状態×表示マトリクスとインタラクション定義の表を含む)、実装済みのコンポーネントコード、フィクスチャデータファイル |
|
|
121
121
|
| テスト実装 | テストスケルトンのコメント/アノテーション、テスト対象コード、実際のAPI/認証フロー |
|
|
122
122
|
| E2E環境セットアップ | 現在の環境設定(起動スクリプト、docker-compose等)、seed scripts、既存のfixtureパターン、アプリケーション認証フロー |
|
|
123
|
-
| パッケージ間境界の実装 |
|
|
123
|
+
| パッケージ間境界の実装 | 境界の両側のConnection Mapオーナーのファイルパス、および両者間のコントラクト定義ファイル(期待されるシグナルおよびSerialized Format/Consumer Parse Ruleはタスクの「Boundary Context」ノートに記録し、Investigation Targetsには含めない) |
|
|
124
124
|
| バグ修正 / リファクタリング | 影響を受けるコードパス、関連テストカバレッジ、エラー再現コンテキスト |
|
|
125
125
|
| 振る舞いの置換・リライト | 置換対象の既存実装、その観察可能な出力、Design Docの検証戦略セクション |
|
|
126
126
|
| ADRに拘束されるタスク(作業計画書のADR Bindings表がこのタスクをカバーする) | このタスクをカバーする各バインディング行について、行の `Source Section` 値に対応するセクションヒント(例: `(§ Decision)` または `(§ Implementation Guidance)`)を付したADRファイル |
|
|
@@ -183,7 +183,7 @@ implementation-approachスキルで決定された実装戦略パターンに基
|
|
|
183
183
|
|
|
184
184
|
1. **タスクIDで照合**: Connection Mapの各行について、「カバーするタスク」列に記載されたタスクを特定する
|
|
185
185
|
2. **Investigation Targetsに追加**: 境界の両側のオーナーモジュールのファイルパスを、マッチした各タスクの Investigation Targets に追加する
|
|
186
|
-
3. **タスク本文に「Boundary Context」ノートを追加**: Connection Mapの行から境界識別子と期待されるシグナルをそのまま記録する。executor
|
|
186
|
+
3. **タスク本文に「Boundary Context」ノートを追加**: Connection Mapの行から境界識別子と期待されるシグナルをそのまま記録する。executorは、実装が生み出すべき観測可能な証拠を把握できる。行が**Serialized Format**と**Consumer Parse Rule**(シリアライズ境界)を持つ場合、両方を逐語でノートにコピーし、タスクが満たすべきroundtripチェックを記述する: producerが出力する値を、consumerが期待どおりの値へパースできること。
|
|
187
187
|
4. **未提供の場合はスキップ**: 作業計画書にConnection Mapがない場合は、本伝播ステップをスキップする
|
|
188
188
|
|
|
189
189
|
## ADR Binding伝播
|
|
@@ -206,6 +206,19 @@ implementation-approachスキルで決定された実装戦略パターンに基
|
|
|
206
206
|
決定がfile:lineやコマンドだけでは検証できない場合、述語は論理的判断に依拠してよいが、Y/Nで回答可能でなければならない
|
|
207
207
|
4. **提供時のみ適用**: この伝播は作業計画書にADR Bindings表が含まれる場合のみ実行する
|
|
208
208
|
|
|
209
|
+
## Reference Contract Propagation
|
|
210
|
+
|
|
211
|
+
作業計画書に**Reference Contract Values**表が含まれる場合、各拘束的観測値を、それがカバーするタスクに伝播する。executorが再導出すべき後方参照ではなく正確な値に対して検証されるようにするため:
|
|
212
|
+
|
|
213
|
+
1. **タスクIDで照合**: 各行について、「Covered By Task(s)」に記載されたタスクを特定する
|
|
214
|
+
2. **Investigation Targetsに追加**: 行の `Design Doc (§ セクション)` を、マッチした各タスクに追加する(設計トレーサビリティ伝播のエントリと重複排除する)
|
|
215
|
+
3. **タスクにReference Contracts表の行を追加**: マッチした各行について、タスクのReference Contracts表に1行追加する:
|
|
216
|
+
- **Source**: `Design Doc (§ セクション)` の値
|
|
217
|
+
- **Contract Type**: `Contract Type` 値を逐語コピーする(structure-order / derived-display / state-lifecycle-negative)
|
|
218
|
+
- **Required Observable Value**: 作業計画書の行から値を**逐語**コピーし、正確な文言と詳細を保持する
|
|
219
|
+
- **Compliance Check**: 最終実装が値を再現することを述べる、Y/Nで回答可能な肯定述語を書く(例: 「列挙フィールドが指定順序でレンダリングされる」「ラベルが生コードの代わりに参照名を表示する」「永続状態は復元シグナルがある場合のみ適用される」)
|
|
220
|
+
4. **提供時のみ適用**: この伝播は作業計画書にReference Contract Values表が含まれる場合のみ実行する。シリアライズ境界は上記のConnection Map伝播が扱い、ここでは扱わない。
|
|
221
|
+
|
|
209
222
|
## 設計トレーサビリティ伝播
|
|
210
223
|
|
|
211
224
|
作業計画書に設計-計画トレーサビリティ表が含まれる場合、該当するDDセクションを各タスクに伝播する:
|
|
@@ -324,7 +337,7 @@ implementation-approachスキルで決定された実装戦略パターンに基
|
|
|
324
337
|
[依存関係を考慮した推奨実行順序]
|
|
325
338
|
|
|
326
339
|
次のステップ:
|
|
327
|
-
|
|
340
|
+
分解されたタスクを順序に従って実行する。
|
|
328
341
|
```
|
|
329
342
|
|
|
330
343
|
## 重要な考慮事項
|
|
@@ -376,6 +389,7 @@ implementation-approachスキルで決定された実装戦略パターンに基
|
|
|
376
389
|
- [ ] 全タスクに調査対象が指定されている(具体的なファイルパス、曖昧なカテゴリではない)
|
|
377
390
|
- [ ] 主張を実装する各タスクに Proof Obligations を記録(主要な故障モード + 検証する境界)
|
|
378
391
|
- [ ] bug-fix / regression / state-change / boundary-change のタスクに Change Category を設定し、隣接する経路/境界のオーナーを Investigation Targets に追加済み
|
|
392
|
+
- [ ] Reference Contract Values行を該当タスクにReference Contractsとして伝播し、値を逐語コピー済み(作業計画書に表がある場合)
|
|
379
393
|
- [ ] 作業計画書ヘッダーの品質保証メカニズムを該当タスクに伝播済み
|
|
380
394
|
|
|
381
395
|
## タスク設計の原則
|
|
@@ -192,7 +192,7 @@ task_file パスはオーケストレータが渡す入力。プロンプトで
|
|
|
192
192
|
3. 各残余をスコープに応じて処理する:
|
|
193
193
|
- **Target Files スコープ内** → 残余をこのタスクの失敗するテストと実装に取り込む。
|
|
194
194
|
- **修正を要すると確認できたスコープ外の兄弟ケース** → `out_of_scope_file` エスカレーション(Target Files 外のファイルに触れる際の標準経路)を発行し、ユーザーが Target Files を拡張するか follow-up タスクに切り出すかを判断できるようにする。これにより、確認済みの隣接欠陥は明示的な判断に回される。
|
|
195
|
-
- **修正を要するか確認できない関連残余** → タスクファイルの Investigation Notes
|
|
195
|
+
- **修正を要するか確認できない関連残余** → タスクファイルの Investigation Notes に記録し、下流のレビューの隣接ケースチェックが実装に対して検証できるようにする。
|
|
196
196
|
|
|
197
197
|
#### Binding Decision チェック(タスクファイルに Binding Decisions セクションがある場合は必須)
|
|
198
198
|
|
|
@@ -206,6 +206,18 @@ task_file パスはオーケストレータが渡す入力。プロンプトで
|
|
|
206
206
|
- `N`: 実装を中止し、`status: "escalation_needed"` と `escalation_type: "binding_decision_violation"`(`phase: "pre_implementation"`)で最終レスポンスを生成する(エスカレーションレスポンス表を参照)。`N` は計画段階での違反を表す
|
|
207
207
|
- `Unknown`: その行を Investigation Notes に保留として記録し、TDDサイクルに進む。終了ゲートが(このステップで保留された Unknown 行を含む)全行を最終実装に対して再評価し、その時点で `N` または `Unknown` が残る場合はエスカレーションする
|
|
208
208
|
|
|
209
|
+
#### Reference Contract チェック(タスクファイルに Reference Contracts セクションがある場合は必須)
|
|
210
|
+
|
|
211
|
+
実装前確認の後、Binding Decision チェックと並行して実行する。
|
|
212
|
+
|
|
213
|
+
1. Reference Contracts 表の各 Source が読み込み済みであることを確認する(Source は Investigation Targets に記載され、Step 2 で読み込まれている)
|
|
214
|
+
2. 計画したアプローチを Investigation Notes に記録する — 各行について、実装が Required Observable Value をどう再現するかを1文で述べる
|
|
215
|
+
3. 各行の Compliance Check を、計画したアプローチに対して評価する。各行の結果を `Y`、`N`、`Unknown` のいずれかとして、一行の根拠とともに Investigation Notes に記録する。`Unknown` は、計画したアプローチが述語の対象についてまだ判断を持たない場合のみ使う
|
|
216
|
+
4. 行ごとに、評価に応じて分岐する:
|
|
217
|
+
- `Y`: 続行する
|
|
218
|
+
- `N`: 実装を中止し、`status: "escalation_needed"` と `escalation_type: "design_compliance_violation"` で最終レスポンスを生成する。エスカレーションレスポンス表に従って埋める — `details.design_doc_expectation` = Reference Contract 行の Required Observable Value、`details.actual_situation` = 計画したアプローチ、`details.why_cannot_implement` / `details.attempted_approaches[]` / `claude_recommendation` は表に従う。`N` は計画段階での違反を表す
|
|
219
|
+
- `Unknown`: その行を Investigation Notes に保留として記録し、TDDサイクルに進む。終了ゲートが全保留行を最終実装に対して再評価する
|
|
220
|
+
|
|
209
221
|
#### 参照の代表性チェック(実装中に随時適用)
|
|
210
222
|
|
|
211
223
|
パターン・hook・ライブラリをコードから採用する際、coding-standards の「参照の代表性」を採用時点で適用する:
|
|
@@ -347,7 +359,9 @@ task_file パスはオーケストレータが渡す入力。プロンプトで
|
|
|
347
359
|
☐ Fix Mode: `requiredFixes` / `incompleteImplementations` の全項目が `changeSummary` に対応または個別エスカレーション済み
|
|
348
360
|
☐ 実装が Step 2 で記録した調査メモと整合している(調査対象が存在した場合)
|
|
349
361
|
☐ Binding Decisions の全 Compliance Check が最終実装に対して `Y` と評価され、その根拠が Investigation Notes に記録されている(タスクファイルに Binding Decisions セクションがある場合)。実装前チェックが通過していても、実装が計画したアプローチから逸脱している可能性があるため、ここで再評価する
|
|
362
|
+
☐ Reference Contracts の全 Compliance Check が最終実装に対して `Y` と評価され、その根拠が Investigation Notes に記録されている(タスクファイルに Reference Contracts セクションがある場合)。実装前チェックが通過していても、ここで再評価する
|
|
363
|
+
☐ テストが roundtrip を検証している — producer が出力する値を consumer が期待どおりの値へパースできる(タスクが作業計画書の Connection Map 由来の roundtrip チェックを伴う Boundary Context を持つ場合)
|
|
350
364
|
☐ テストエビデンスを引用している場合(タスクがテストを実行した場合)、`runnableCheck.substance` と `runnableCheck.substanceIssue` がフィールド仕様に従って設定されている
|
|
351
365
|
☐ 最終レスポンスが `status: "completed"` または `status: "escalation_needed"` の単一 JSON で、構造化レスポンス仕様のスキーマに一致する
|
|
352
366
|
|
|
353
|
-
**強制**: いずれかが未チェックの場合、構造化レスポンス仕様で定義される JSON 形式で `status: "escalation_needed"` を返却。未チェック項目が Binding Decisions の Compliance Check の場合は、`escalation_type: "binding_decision_violation"`(`phase: "exit_gate"
|
|
367
|
+
**強制**: いずれかが未チェックの場合、構造化レスポンス仕様で定義される JSON 形式で `status: "escalation_needed"` を返却。未チェック項目が Binding Decisions の Compliance Check の場合は、`escalation_type: "binding_decision_violation"`(`phase: "exit_gate"`)を使う。その他の未チェックのゲート項目には `escalation_type: "design_compliance_violation"` を使い、実装前マッピングと同じ粒度でエスカレーションレスポンス表に従って埋める: Reference Contracts の失敗では `details.design_doc_expectation` = Required Observable Value、`details.actual_situation` = 最終実装の振る舞い; roundtrip テストの欠落では `details.design_doc_expectation` = 要求される roundtrip(producer が出力する値を consumer が期待どおりの値へパースできること)、`details.actual_situation` = 欠落または失敗している roundtrip カバレッジ; いずれの場合も `details.why_cannot_implement` / `details.attempted_approaches[]` / `claude_recommendation` は表に従う。
|
|
@@ -192,7 +192,7 @@ task_file パスはオーケストレータが渡す入力。プロンプトで
|
|
|
192
192
|
3. 各残余をスコープに応じて処理する:
|
|
193
193
|
- **Target Files スコープ内** → 残余をこのタスクの失敗するテストと実装に取り込む。
|
|
194
194
|
- **修正を要すると確認できたスコープ外の兄弟ケース** → `out_of_scope_file` エスカレーション(Target Files 外のファイルに触れる際の標準経路)を発行し、ユーザーが Target Files を拡張するか follow-up タスクに切り出すかを判断できるようにする。これにより、確認済みの隣接欠陥は明示的な判断に回される。
|
|
195
|
-
- **修正を要するか確認できない関連残余** → タスクファイルの Investigation Notes
|
|
195
|
+
- **修正を要するか確認できない関連残余** → タスクファイルの Investigation Notes に記録し、下流のレビューの隣接ケースチェックが実装に対して検証できるようにする。
|
|
196
196
|
|
|
197
197
|
#### Binding Decision チェック(タスクファイルに Binding Decisions セクションがある場合は必須)
|
|
198
198
|
|
|
@@ -206,6 +206,18 @@ task_file パスはオーケストレータが渡す入力。プロンプトで
|
|
|
206
206
|
- `N`: 実装を中止し、`status: "escalation_needed"` と `escalation_type: "binding_decision_violation"`(`phase: "pre_implementation"`)で最終レスポンスを生成する(エスカレーションレスポンス表を参照)。`N` は計画段階での違反を表す
|
|
207
207
|
- `Unknown`: その行を Investigation Notes に保留として記録し、TDDサイクルに進む。終了ゲートが(このステップで保留された Unknown 行を含む)全行を最終実装に対して再評価し、その時点で `N` または `Unknown` が残る場合はエスカレーションする
|
|
208
208
|
|
|
209
|
+
#### Reference Contract チェック(タスクファイルに Reference Contracts セクションがある場合は必須)
|
|
210
|
+
|
|
211
|
+
実装前確認の後、Binding Decision チェックと並行して実行する。
|
|
212
|
+
|
|
213
|
+
1. Reference Contracts 表の各 Source が読み込み済みであることを確認する(Source は Investigation Targets に記載され、Step 2 で読み込まれている)
|
|
214
|
+
2. 計画したアプローチを Investigation Notes に記録する — 各行について、実装が Required Observable Value をどう再現するかを1文で述べる
|
|
215
|
+
3. 各行の Compliance Check を、計画したアプローチに対して評価する。各行の結果を `Y`、`N`、`Unknown` のいずれかとして、一行の根拠とともに Investigation Notes に記録する。`Unknown` は、計画したアプローチが述語の対象についてまだ判断を持たない場合のみ使う
|
|
216
|
+
4. 行ごとに、評価に応じて分岐する:
|
|
217
|
+
- `Y`: 続行する
|
|
218
|
+
- `N`: 実装を中止し、`status: "escalation_needed"` と `escalation_type: "design_compliance_violation"` で最終レスポンスを生成する。エスカレーションレスポンス表に従って埋める — `details.design_doc_expectation` = Reference Contract 行の Required Observable Value、`details.actual_situation` = 計画したアプローチ、`details.why_cannot_implement` / `details.attempted_approaches[]` / `claude_recommendation` は表に従う。`N` は計画段階での違反を表す
|
|
219
|
+
- `Unknown`: その行を Investigation Notes に保留として記録し、TDDサイクルに進む。終了ゲートが全保留行を最終実装に対して再評価する
|
|
220
|
+
|
|
209
221
|
#### 参照の代表性チェック(実装中に随時適用)
|
|
210
222
|
|
|
211
223
|
パターンや依存をコードから採用する際、coding-standardsの「参照の代表性」を採用時点で適用する:
|
|
@@ -350,7 +362,9 @@ task_file パスはオーケストレータが渡す入力。プロンプトで
|
|
|
350
362
|
☐ Fix Mode: `requiredFixes` / `incompleteImplementations` の全項目が `changeSummary` に対応または個別エスカレーション済み
|
|
351
363
|
☐ 実装が Step 2 で記録した調査メモと整合している(調査対象が存在した場合)
|
|
352
364
|
☐ Binding Decisions の全 Compliance Check が最終実装に対して `Y` と評価され、その根拠が Investigation Notes に記録されている(タスクファイルに Binding Decisions セクションがある場合)。実装前チェックが通過していても、実装が計画したアプローチから逸脱している可能性があるため、ここで再評価する
|
|
365
|
+
☐ Reference Contracts の全 Compliance Check が最終実装に対して `Y` と評価され、その根拠が Investigation Notes に記録されている(タスクファイルに Reference Contracts セクションがある場合)。実装前チェックが通過していても、ここで再評価する
|
|
366
|
+
☐ テストが roundtrip を検証している — producer が出力する値を consumer が期待どおりの値へパースできる(タスクが作業計画書の Connection Map 由来の roundtrip チェックを伴う Boundary Context を持つ場合)
|
|
353
367
|
☐ テストエビデンスを引用している場合(タスクがテストを実行した場合)、`runnableCheck.substance` と `runnableCheck.substanceIssue` がフィールド仕様に従って設定されている
|
|
354
368
|
☐ 最終レスポンスが `status: "completed"` または `status: "escalation_needed"` の単一 JSON で、構造化レスポンス仕様のスキーマに一致する
|
|
355
369
|
|
|
356
|
-
**強制**: いずれかが未チェックの場合、構造化レスポンス仕様で定義される JSON 形式で `status: "escalation_needed"` を返却。未チェック項目が Binding Decisions の Compliance Check の場合は、`escalation_type: "binding_decision_violation"`(`phase: "exit_gate"
|
|
370
|
+
**強制**: いずれかが未チェックの場合、構造化レスポンス仕様で定義される JSON 形式で `status: "escalation_needed"` を返却。未チェック項目が Binding Decisions の Compliance Check の場合は、`escalation_type: "binding_decision_violation"`(`phase: "exit_gate"`)を使う。その他の未チェックのゲート項目には `escalation_type: "design_compliance_violation"` を使い、実装前マッピングと同じ粒度でエスカレーションレスポンス表に従って埋める: Reference Contracts の失敗では `details.design_doc_expectation` = Required Observable Value、`details.actual_situation` = 最終実装の振る舞い; roundtrip テストの欠落では `details.design_doc_expectation` = 要求される roundtrip(producer が出力する値を consumer が期待どおりの値へパースできること)、`details.actual_situation` = 欠落または失敗している roundtrip カバレッジ; いずれの場合も `details.why_cannot_implement` / `details.attempted_approaches[]` / `claude_recommendation` は表に従う。
|
|
@@ -33,7 +33,6 @@ ADR/Design Docの作成閾値はdocumentation-criteriaスキルに準拠。判
|
|
|
33
33
|
以下のサブセクションは並列の必須事項ではなく、4段階の直列ゲートを構成する: **Gate 0** Inputs & Standards → **Gate 1** Existing-State Analysis → **Gate 2** Design Decisions → **Gate 3** Impact Documentation。各ゲートを完了してから次のゲートに進むこと。各サブセクションには見出しに `[Gate N — ...]` の注記(適用条件を含む)が付き、ゲート順に記載されている。文書順に実行すること。
|
|
34
34
|
|
|
35
35
|
### 合意事項チェックリスト [Gate 0 — Required]
|
|
36
|
-
Design Doc作成の最初に必ず実施:
|
|
37
36
|
|
|
38
37
|
1. **ユーザーとの合意事項を箇条書きで列挙**
|
|
39
38
|
- スコープ(どのコンポーネント・機能を変更するか)
|
|
@@ -47,7 +46,6 @@ Design Doc作成の最初に必ず実施:
|
|
|
47
46
|
- [ ] 未反映の合意事項がある場合は理由を記載
|
|
48
47
|
|
|
49
48
|
### 標準の特定 [Gate 0 — Required]
|
|
50
|
-
既存状態の調査前に必ず実施:
|
|
51
49
|
|
|
52
50
|
1. **プロジェクト標準の特定**
|
|
53
51
|
- プロジェクト設定、ルールファイル、UI Spec / UI分析入力、既存のフロントエンドコードパターンをスキャンする
|
|
@@ -69,7 +67,6 @@ Design Doc作成の最初に必ず実施:
|
|
|
69
67
|
- 逸脱には文書化された根拠が必要
|
|
70
68
|
|
|
71
69
|
### 既存コード調査 [Gate 1 — Required]
|
|
72
|
-
Design Doc作成前に必ず実施:
|
|
73
70
|
|
|
74
71
|
1. **実装ファイルパスの確認**
|
|
75
72
|
- まず `Glob: src/**/*.tsx` で全体構造を把握
|
|
@@ -156,14 +153,13 @@ Fact Disposition Table は **構造的な既存事実** を設計に結び付け
|
|
|
156
153
|
|
|
157
154
|
4. **収束**(選定)
|
|
158
155
|
- 上記の解決優先順位を適用し、すべての確定要件をカバーする中で最小の面を持つ代替案を選ぶ。
|
|
159
|
-
- 選定が最小でない場合、ステップ1
|
|
156
|
+
- 選定が最小でない場合、ステップ1から、より小さい代替案では満たせない現要件を明記する。
|
|
160
157
|
- 「再利用可能」「将来対応」「実装が楽」「ユーザーが欲しがるかも」は主観的コストノート列のみに記載する(タイブレーカー扱い)。
|
|
161
158
|
|
|
162
159
|
5. **不採用案の記録**
|
|
163
160
|
- 不採用となった各代替案について、何だったか・なぜ不採用かを1〜2行で記録する。将来の反復や別エージェントによる再提案を避けるため、Design Doc に残す。
|
|
164
161
|
|
|
165
162
|
### 実装アプローチ決定 [Gate 2 — Required]
|
|
166
|
-
Design Doc作成時に必ず実施。
|
|
167
163
|
|
|
168
164
|
1. **アプローチ選択**(implementation-approach スキルの Phase 1-4 を実行し、選択理由を記録):
|
|
169
165
|
|
|
@@ -186,7 +182,6 @@ Design Doc作成時に必ず実施。
|
|
|
186
182
|
**早期検証ポイント** を定義する: 本格展開前に最初に何を、どうやって検証するか。
|
|
187
183
|
|
|
188
184
|
### 共通ADRプロセス [Gate 2 — Required]
|
|
189
|
-
Design Doc作成前に実施:
|
|
190
185
|
1. 共通技術領域(コンポーネントパターン、状態管理、エラーハンドリング、アクセシビリティ等)を特定
|
|
191
186
|
2. `docs/ADR/ADR-COMMON-*` を検索、なければ作成
|
|
192
187
|
3. Design Docの「前提となるADR」に記載
|
|
@@ -199,6 +194,9 @@ Design Doc作成前に実施:
|
|
|
199
194
|
### 状態遷移 [Gate 2 — Required when applicable]
|
|
200
195
|
ステートフルコンポーネントの状態定義と遷移を記載(loading、error、success states)。
|
|
201
196
|
|
|
197
|
+
### Serialized Boundary Contract [Gate 2 — Required when a value crosses a serialized boundary]
|
|
198
|
+
コンポーネントが**URLクエリ、ルートパラメータ、フォームポスト、ブラウザ/セッション/ローカルストレージ、生成された設定/成果物の値、または他のコンポーネント・ツール・バックエンドがパースする任意のエンコードされた値**を通じて値を出力または消費する場合、Design Docの**Field Propagation Map**に記録する: producerが出力する正確な**Serialized Format**と、**Consumer Parse Rule**(相手側がどうデコード/検証するか)。producerとconsumerは表現を取り決める必要がある。シリアライズ境界を値が越えない場合はスキップ。
|
|
199
|
+
|
|
202
200
|
### 統合ポイント分析 [Gate 3 — Required]
|
|
203
201
|
既存コンポーネントとのすべての統合ポイントを「## 統合ポイントマップ」セクションに記載する:
|
|
204
202
|
|
|
@@ -272,7 +270,7 @@ UI Specが存在する場合(`docs/ui-spec/{feature-name}-ui-spec.md`):
|
|
|
272
270
|
|
|
273
271
|
分析でカバーされていない領域、または `limitations` でフラグされた領域についてのみ追加調査を実施。
|
|
274
272
|
|
|
275
|
-
- **UI Analysis**(任意、フロントエンドレシピ)。
|
|
273
|
+
- **UI Analysis**(任意、フロントエンドレシピ)。UI解析工程によるUI事実収集JSON:
|
|
276
274
|
|
|
277
275
|
| 入力フィールド | 反映先 |
|
|
278
276
|
|---|---|
|
|
@@ -293,13 +291,10 @@ UI Specが存在する場合(`docs/ui-spec/{feature-name}-ui-spec.md`):
|
|
|
293
291
|
- 各々のテンプレート(`template-en.md`)に従って作成
|
|
294
292
|
- ADRは既存番号を確認して max+1、初期ステータスは「Proposed」
|
|
295
293
|
|
|
296
|
-
##
|
|
297
|
-
|
|
298
|
-
含む: 決定事項、根拠、原則的な指針(例: 「ロジック再利用にカスタムフックを使用」 ✓、「Phase 1で実装」 ✗)
|
|
299
|
-
含まない: スケジュール、実装手順、具体的コード
|
|
294
|
+
## 出力ルール
|
|
300
295
|
|
|
301
|
-
|
|
302
|
-
|
|
296
|
+
- ファイル出力は即座に実行(実行時点で承認済み)。
|
|
297
|
+
- ADRは決定事項、根拠、原則的な指針を含む(例: 「ロジック再利用にカスタムフックを使用」 ✓、「Phase 1で実装」 ✗)。スケジュール、実装手順、具体的コードは含まない。
|
|
303
298
|
|
|
304
299
|
## 重要設計原則
|
|
305
300
|
|
|
@@ -32,7 +32,6 @@ ADR/Design Docの作成閾値はdocumentation-criteriaスキルに準拠。判
|
|
|
32
32
|
以下のサブセクションは並列の必須事項ではなく、4段階の直列ゲートを構成する: **Gate 0** Inputs & Standards → **Gate 1** Existing-State Analysis → **Gate 2** Design Decisions → **Gate 3** Impact Documentation。各ゲートを完了してから次のゲートに進むこと。各サブセクションには見出しに `[Gate N — ...]` の注記(適用条件を含む)が付き、ゲート順に記載されている。文書順に実行すること。
|
|
33
33
|
|
|
34
34
|
### 合意事項チェックリスト [Gate 0 — Required]
|
|
35
|
-
Design Doc作成の最初に必ず実施:
|
|
36
35
|
|
|
37
36
|
1. **ユーザーとの合意事項を箇条書きで列挙**
|
|
38
37
|
- スコープ(何を変更するか)
|
|
@@ -46,7 +45,6 @@ Design Doc作成の最初に必ず実施:
|
|
|
46
45
|
- [ ] 未反映の合意事項がある場合は理由を記載
|
|
47
46
|
|
|
48
47
|
### 標準の特定 [Gate 0 — Required]
|
|
49
|
-
調査開始前に必ず実施:
|
|
50
48
|
|
|
51
49
|
1. **プロジェクト基準の特定**
|
|
52
50
|
- プロジェクト設定、ルールファイル、既存コードパターンをスキャン
|
|
@@ -69,7 +67,6 @@ Design Doc作成の最初に必ず実施:
|
|
|
69
67
|
- 逸脱する場合は根拠を明記
|
|
70
68
|
|
|
71
69
|
### 既存コード調査 [Gate 1 — Required]
|
|
72
|
-
Design Doc作成前に必ず実施:
|
|
73
70
|
|
|
74
71
|
1. **実装ファイルパスの確認**
|
|
75
72
|
- まず `Glob: src/**/*.ts` で全体構造を把握
|
|
@@ -167,14 +164,13 @@ Fact Disposition Table は **構造的な既存事実** を設計に結び付け
|
|
|
167
164
|
|
|
168
165
|
4. **収束**(選定)
|
|
169
166
|
- 上記の解決優先順位を適用し、すべての確定要件をカバーする中で最小の面を持つ代替案を選ぶ。
|
|
170
|
-
- 選定が最小でない場合、ステップ1
|
|
167
|
+
- 選定が最小でない場合、ステップ1から、より小さい代替案では満たせない現要件を明記する。
|
|
171
168
|
- 「便利」「将来対応」「実装が楽」「ユーザーが欲しがるかも」は主観的コストノート列のみに記載する(タイブレーカー扱い)。
|
|
172
169
|
|
|
173
170
|
5. **不採用案の記録**
|
|
174
171
|
- 不採用となった各代替案について、何だったか・なぜ不採用かを1〜2行で記録する。将来の反復や別エージェントによる再提案を避けるため、Design Doc に残す。
|
|
175
172
|
|
|
176
173
|
### 実装アプローチ決定 [Gate 2 — Required]
|
|
177
|
-
Design Doc作成時に必ず実施。
|
|
178
174
|
|
|
179
175
|
1. **アプローチ選択**(implementation-approach スキルの Phase 1-4 を実行し、選択理由を記録):
|
|
180
176
|
|
|
@@ -198,7 +194,6 @@ Design Doc作成時に必ず実施。
|
|
|
198
194
|
**早期検証ポイント** を定義する: 本格展開前に最初に何を、どうやって検証するか。置換/変更の場合、デフォルトは少なくとも1つの代表的なケースでの出力比較。例外: 主要リスクが振る舞いの同等性以外にある場合(例: スキーマ互換性、統合コントラクト)は代替の検証対象を明記し、出力比較を後段に回す理由を記録する。
|
|
199
195
|
|
|
200
196
|
### 共通ADRプロセス [Gate 2 — Required]
|
|
201
|
-
Design Doc作成前に実施:
|
|
202
197
|
1. 共通技術領域(ログ、エラー処理、型定義、API設計等)を特定
|
|
203
198
|
2. `docs/ADR/ADR-COMMON-*` を検索、なければ作成
|
|
204
199
|
3. Design Doc の「前提となるADR」に記載
|
|
@@ -246,6 +241,7 @@ Design Doc作成時に必ず含める:
|
|
|
246
241
|
新規または変更されたフィールドがコンポーネント境界を越える場合:
|
|
247
242
|
|
|
248
243
|
各境界でのフィールドのステータス(preserved / transformed / dropped)を根拠付きで記録。
|
|
244
|
+
境界が**シリアライズ**されている場合 — 値がエンコードされ、クエリ文字列、CLI引数、環境変数、設定エントリ、メッセージ/キューのペイロード、ストレージキー、ファイルなどの媒体を介して再パースされる — さらに**Serialized Format**(producerが出力する正確な表現)と**Consumer Parse Rule**(consumerがどうデコード/検証するか)を記録し、producerとconsumerで表現を取り決める。インメモリのフィールド受け渡しでは両方を省略する。
|
|
249
245
|
フィールドが境界を越えない場合はスキップ。
|
|
250
246
|
|
|
251
247
|
### インターフェース変更影響分析 [Gate 3 — Required]
|
|
@@ -290,13 +286,10 @@ Design Doc作成時に必ず含める:
|
|
|
290
286
|
- 各々のテンプレート(`template-en.md`)に従って作成
|
|
291
287
|
- ADRは既存番号を確認して max+1、初期ステータスは「Proposed」
|
|
292
288
|
|
|
293
|
-
##
|
|
289
|
+
## 出力ルール
|
|
294
290
|
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
## 出力ポリシー
|
|
299
|
-
ファイル出力は即座に実行(実行時点で承認済み)。
|
|
291
|
+
- ファイル出力は即座に実行(実行時点で承認済み)。
|
|
292
|
+
- ADRは決定事項、根拠、原則的な指針を含む(例: 「依存性注入を使用」)。スケジュール、実装手順、具体的コードは含まない。
|
|
300
293
|
|
|
301
294
|
## 重要設計原則
|
|
302
295
|
|
|
@@ -154,7 +154,7 @@ skills: frontend-typescript-rules, frontend-technical-spec, project-context
|
|
|
154
154
|
入力要件を踏まえ、修正が必要になる可能性が最も高いファイルを列挙した`candidateWriteSet[]`を生成する。各ファイルについて:
|
|
155
155
|
- パス
|
|
156
156
|
- 修正される可能性が高い理由(`focusAreas[]`エントリ、または`componentStructure` / `cssLayout` / `i18n`内の具体的な事実へのリンク)
|
|
157
|
-
- 信頼度: `high
|
|
157
|
+
- 信頼度: `high`(要件で直接指定されている、または変更箇所が明確に唯一)/ `medium`(少数の候補の1つ)/ `low`(投機的、変更不要の可能性あり)
|
|
158
158
|
|
|
159
159
|
## 出力フォーマット
|
|
160
160
|
|
|
@@ -15,7 +15,7 @@ skills: documentation-criteria, frontend-typescript-rules, project-context
|
|
|
15
15
|
|
|
16
16
|
## 主な責務
|
|
17
17
|
|
|
18
|
-
1. PRD
|
|
18
|
+
1. PRDの受入条件(AC)を分析し、画面・状態・コンポーネントにマッピング
|
|
19
19
|
2. プロトタイプコードから画面構造・遷移・インタラクションパターンを抽出(提供時)
|
|
20
20
|
3. ui-spec-templateに従って包括的なUI Specを作成
|
|
21
21
|
4. 状態×表示マトリクスを含むコンポーネント分解を定義
|
|
@@ -25,17 +25,17 @@ skills: documentation-criteria, frontend-typescript-rules, project-context
|
|
|
25
25
|
## 必要情報
|
|
26
26
|
|
|
27
27
|
- **PRD**: PRDドキュメントパス。この機能のPRDが存在する場合に使用する。PRDが存在しない場合、呼び出し側はPRDの代わりに、ユーザー要件と確認済みの設計スコープをUI Specの土台として渡す。
|
|
28
|
-
- **codebase_analysis**:
|
|
28
|
+
- **codebase_analysis**: コードベース分析JSON(呼び出し側が渡す。特にPRDがない場合)。UI Specが尊重すべき既存コンポーネント・データ・制約を特定する。
|
|
29
29
|
- **プロトタイプコードパス**: プロトタイプコードへのパス(任意、`docs/ui-spec/assets/{feature-name}/`に配置)
|
|
30
30
|
- **既存フロントエンドコードベース**: 自動的に調査
|
|
31
|
-
- **ui_analysis**:
|
|
31
|
+
- **ui_analysis**: UI事実収集JSON(任意)。提供された場合、`componentStructure`・`propsPatterns`・`cssLayout`・`stateDisplay`・`externalResources`を、コンポーネント分解・状態×表示マトリクス・再利用可能コンポーネントの特定の主要な根拠として使う — エージェントが本来自前で行うコードベース調査を軽減する。
|
|
32
32
|
|
|
33
33
|
## UI Spec作成前の必須プロセス
|
|
34
34
|
|
|
35
35
|
### Step 1: PRD分析
|
|
36
36
|
|
|
37
37
|
1. **PRDの読み込みと理解**
|
|
38
|
-
- AC ID
|
|
38
|
+
- AC IDを含む全ACを抽出
|
|
39
39
|
- ユーザーストーリーと要件から暗示される画面/ビューを特定
|
|
40
40
|
- PRDのアクセシビリティ要件とUI品質指標を記録
|
|
41
41
|
|
|
@@ -85,7 +85,7 @@ skills: documentation-criteria, frontend-typescript-rules, project-context
|
|
|
85
85
|
- AC IDにリンクしたインタラクション定義(EARS形式)
|
|
86
86
|
- 既存コンポーネント再利用マップ
|
|
87
87
|
- デザイントークン(既存コードベースから)
|
|
88
|
-
-
|
|
88
|
+
- ビジュアルAC
|
|
89
89
|
- アクセシビリティ要件(キーボード、スクリーンリーダー、コントラスト)
|
|
90
90
|
3. **出力先**: `docs/ui-spec/{feature-name}-ui-spec.md`
|
|
91
91
|
|
|
@@ -105,13 +105,13 @@ skills: documentation-criteria, frontend-typescript-rules, project-context
|
|
|
105
105
|
- [ ] プロトタイプ提供時: プロトタイプが`docs/ui-spec/assets/`に配置されている
|
|
106
106
|
- [ ] 未確定事項の全TBDに担当者と期限がある
|
|
107
107
|
- [ ] UI Specの全要件がPRD要件と整合している
|
|
108
|
-
- [ ] **コンポーネント見出しの一意性**: 全コンポーネントが、UI Spec内でテキストとして一意なセクション見出しの下に記述されている。形式は`## Component: [ComponentName]`(画面の下にネストする場合は`### Component: [ComponentName]
|
|
108
|
+
- [ ] **コンポーネント見出しの一意性**: 全コンポーネントが、UI Spec内でテキストとして一意なセクション見出しの下に記述されている。形式は`## Component: [ComponentName]`(画面の下にネストする場合は`### Component: [ComponentName]`)。下流の工程はコンポーネントを見出しテキストの完全一致で参照するため、重複や言い換えがあると伝播チェーンが破綻する。
|
|
109
109
|
- **曖昧性回避ルール**: 2つのコンポーネントが同じベース名を持つ場合(例: 同じ`AlertCard`をバナーバリアントとインラインバリアントとして描画する)、各見出しを一意にするために括弧付きの修飾子を付加する: `Component: AlertCard (Banner variant)` と `Component: AlertCard (Inline variant)`。最終チェックで一意性を検証する: すべての`Component: `見出しを抽出し、重複がゼロであることを確認する
|
|
110
110
|
|
|
111
111
|
## 重要な設計原則
|
|
112
112
|
|
|
113
113
|
1. **プロトタイプは参考であり正式な仕様ではない**: UI Specが正式な仕様。プロトタイプコードは視覚的・動作的な参考資料としての添付。
|
|
114
|
-
2. **AC駆動設計**: すべてのインタラクションと状態はPRD
|
|
114
|
+
2. **AC駆動設計**: すべてのインタラクションと状態はPRDのACに遡れること。
|
|
115
115
|
3. **状態の網羅性**: すべてのコンポーネントはloading、empty、error状態の動作を定義すること(正常系だけでなく)。
|
|
116
116
|
4. **再利用優先**: 新規コンポーネントを提案する前に既存を確認。判定を記録する。
|
|
117
117
|
5. **テスト可能なインタラクション**: インタラクション定義はテストケースを導出できる具体性を持つこと(ただしテスト実装はUI Specのスコープ外)。
|