create-ai-project 1.21.0 → 1.22.1
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/code-reviewer.md +1 -0
- package/.claude/agents-en/document-reviewer.md +13 -0
- package/.claude/agents-en/technical-designer-frontend.md +36 -2
- package/.claude/agents-en/technical-designer.md +37 -2
- package/.claude/agents-ja/code-reviewer.md +1 -0
- package/.claude/agents-ja/document-reviewer.md +13 -0
- package/.claude/agents-ja/technical-designer-frontend.md +36 -2
- package/.claude/agents-ja/technical-designer.md +37 -2
- package/.claude/commands-en/project-inject.md +84 -56
- package/.claude/commands-ja/project-inject.md +84 -56
- package/.claude/skills-en/coding-standards/SKILL.md +1 -0
- package/.claude/skills-en/documentation-criteria/SKILL.md +1 -0
- package/.claude/skills-en/documentation-criteria/references/design-template.md +53 -0
- package/.claude/skills-en/project-context/SKILL.md +2 -15
- package/.claude/skills-en/project-context/references/external-resources-api.md +76 -0
- package/.claude/skills-en/project-context/references/external-resources-backend.md +76 -0
- package/.claude/skills-en/project-context/references/external-resources-frontend.md +74 -0
- package/.claude/skills-en/project-context/references/external-resources-infra.md +76 -0
- package/.claude/skills-en/project-context/references/template.md +154 -0
- package/.claude/skills-en/task-analyzer/references/skills-index.yaml +0 -5
- package/.claude/skills-ja/coding-standards/SKILL.md +1 -0
- package/.claude/skills-ja/documentation-criteria/SKILL.md +1 -0
- package/.claude/skills-ja/documentation-criteria/references/design-template.md +53 -0
- package/.claude/skills-ja/project-context/SKILL.md +2 -15
- package/.claude/skills-ja/project-context/references/external-resources-api.md +76 -0
- package/.claude/skills-ja/project-context/references/external-resources-backend.md +76 -0
- package/.claude/skills-ja/project-context/references/external-resources-frontend.md +74 -0
- package/.claude/skills-ja/project-context/references/external-resources-infra.md +76 -0
- package/.claude/skills-ja/project-context/references/template.md +154 -0
- package/.claude/skills-ja/task-analyzer/references/skills-index.yaml +0 -5
- package/CHANGELOG.md +25 -0
- package/CLAUDE.en.md +10 -1
- package/CLAUDE.ja.md +12 -3
- package/CLAUDE.md +12 -3
- package/package.json +1 -1
- package/scripts/check-skills-index.mjs +1 -2
|
@@ -1,86 +1,114 @@
|
|
|
1
1
|
---
|
|
2
|
-
description:
|
|
2
|
+
description: テンプレート駆動ヒアリングで project-context スキルを設定
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
**コマンドコンテキスト**: AI
|
|
5
|
+
**コマンドコンテキスト**: `/project-inject` は AI の実行精度を高めるプロジェクト固有の前提情報を収集し、`project-context` スキルに書き込む。ヒアリングはテンプレート駆動で、セクションカタログは `references/template.md` に格納されており、新しい次元を追加する場合はこのテンプレートを編集する。
|
|
6
6
|
|
|
7
7
|
## なぜ必要か
|
|
8
8
|
|
|
9
|
-
CLAUDE.md
|
|
9
|
+
CLAUDE.md のセッション初期化で `project-context/SKILL.md` が毎セッション読み込まれる。ここで収集した情報は全タスクにおける AI の判断精度に直接影響する。設定済み SKILL.md は最小限に保つ — 1 行ごとに毎セッションのコンテキスト予算を消費する。
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
## 実行フロー
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Step 1 を開始する前に以下のステップを TaskCreate で登録し、進捗に応じて各タスクのステータスを更新する。
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
### Step 1: 入力読み込み
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
1. `.claude/skills/project-context/SKILL.md` を読み、現在の状態を把握する。本文に含まれるカタログセクション見出し(`## プロジェクト概要`、`## ドメイン制約`、`## 開発フェーズ`、`## ディレクトリ規約`、`## 外部リソース`)の数で 2 つのケースを区別する:
|
|
18
|
+
- **未設定** — 本文中のカタログセクション見出しが 0 個。
|
|
19
|
+
- **設定済み** — 本文中のカタログセクション見出しが 1 個以上。
|
|
20
|
+
2. `.claude/skills/project-context/references/template.md` を読み、セクションカタログを取得する。
|
|
18
21
|
|
|
19
|
-
|
|
20
|
-
- `.claude/skills/project-context/SKILL.md`
|
|
21
|
-
- `package.json`(name、description)
|
|
22
|
+
**チェックポイント**: `template.md` のセクションカタログと、`SKILL.md` の設定済み / 未設定の状態を保持している。
|
|
22
23
|
|
|
23
|
-
|
|
24
|
+
### Step 2: セクション計画の作成
|
|
24
25
|
|
|
25
|
-
|
|
26
|
+
カタログの全セクションを対象に、セクションごとの計画(`add` / `keep` / `update` / `remove` / `skip`)を作成する。
|
|
26
27
|
|
|
27
|
-
|
|
28
|
+
**未設定の場合**:
|
|
29
|
+
- プロジェクト概要: `add`(必須。このセクションの採用ルールは「常に」)。
|
|
30
|
+
- 残りのカタログセクションそれぞれについて、AskUserQuestion: 「`<セクション名>` セクションを追加するか?」 選択肢: 「はい、追加する」 / 「いいえ、スキップ」。回答に応じて `add` または `skip` を割り当てる。
|
|
28
31
|
|
|
29
|
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
+
**設定済みの場合**:
|
|
33
|
+
- 内容が記入されているセクションそれぞれについて、AskUserQuestion: 「既存の `<セクション名>` セクションへのアクションは?」 選択肢: 「現状維持」(`keep` を割り当て) / 「更新 — 既存内容を置き換え」(`update` を割り当て) / 「削除 — 再構築する SKILL.md から除外」(`remove` を割り当て)。
|
|
34
|
+
- 既存 SKILL.md でまだ空のままのカタログセクションそれぞれについて、AskUserQuestion: 「`<セクション名>` セクションを追加するか?」 選択肢: 「はい、追加する」(`add` を割り当て) / 「いいえ、スキップ」(`skip` を割り当て)。
|
|
32
35
|
|
|
33
|
-
|
|
34
|
-
- AIが必ず守るべきドメイン固有のルールはあるか?ラウンド1のドメインに応じた例を提示する(例:金融なら「全ての変更操作に監査ログ必須」、ヘルスケアなら「ログ出力は匿名化された患者IDを使用」)。
|
|
35
|
-
- 最大3つ。AIが無視するとバグやコンプライアンス違反になるもののみ。
|
|
36
|
+
**チェックポイント**: 全カタログセクションが `add`、`keep`、`update`、`remove`、`skip` のいずれか 1 つの区分を持つ。
|
|
36
37
|
|
|
37
|
-
|
|
38
|
-
- 開発フェーズ:プロトタイプ / 本番開発 / 運用中
|
|
39
|
-
- AIが従うべきディレクトリ規約やファイル配置ルールはあるか?(なければスキップ)
|
|
38
|
+
### Step 3: セクションごとのヒアリング実行
|
|
40
39
|
|
|
41
|
-
|
|
40
|
+
`add` または `update` 区分のセクションそれぞれについて、`template.md` がそのセクション向けに定義するヒアリングプロトコルを実行する。カタログには各軸の AskUserQuestion 文と選択肢、採用ルール、セクションごとの出力構造が記述されている。
|
|
42
41
|
|
|
43
|
-
|
|
42
|
+
**外部リソースセクション**: `template.md` § 外部リソース のルーティングプロトコルに従う。当該セクションがドメインのマルチセレクト、ドメインとファイルの対応、軸ごとの出力スキーマを所有しており、このコマンドはそれに委譲する。
|
|
44
43
|
|
|
45
|
-
|
|
46
|
-
1. AI判断可能:測定・検証可能な基準のみ(「迅速に」→「5秒以内」)
|
|
47
|
-
2. 曖昧さの排除:具体的な数値・条件・例示を含める
|
|
48
|
-
3. 肯定形:「〜しない」より「〜する」の形で記述
|
|
49
|
-
4. 最小限:AIの実行精度に影響するもののみ
|
|
44
|
+
**曖昧ルールの差し戻し**(`add` および `update` 区分の全セクションに適用): ユーザー提供のルールが主観的な表現の場合(例: 「パフォーマンスに気をつける」)、フォローアップで尋ねる: 「AI はこのルールが pass か fail かをどのように検証できるか? 測定可能なチェックに書き換える、または 'drop' と返答すれば省略する。」 測定可能な形で届いたルールはそのまま採用し、主観的なものはユーザーが書き換えた版で置き換え、'drop' の場合はそのルールを省略する。
|
|
50
45
|
|
|
51
|
-
|
|
52
|
-
1. `.claude/skills/project-context/SKILL.md`(アクティブ、Claudeが読む方)
|
|
53
|
-
2. 対応する`skills-{lang}/project-context/SKILL.md`(`.claudelang`で現在の言語を確認)
|
|
46
|
+
**チェックポイント**: `add` および `update` 区分の各セクションで収集した内容と、`keep` 区分のセクションの原文をそのまま保持している。
|
|
54
47
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
48
|
+
### Step 4: SKILL.md の組み立てと書き込み
|
|
49
|
+
|
|
50
|
+
再構築する SKILL.md を以下の順序で連結して構築する:
|
|
51
|
+
|
|
52
|
+
1. フロントマター — 以下の正本ブロックをそのまま書き込む:
|
|
53
|
+
```
|
|
54
|
+
---
|
|
55
|
+
name: project-context
|
|
56
|
+
description: AIの実行精度に必要なプロジェクト固有の前提情報を提供 — ドメイン制約、開発フェーズ、ディレクトリ規約、外部リソースのアクセス方法。セッション開始時、プロジェクト構成確認時、またはタスクがドメインルールやリポジトリ外の外部リソースを参照する時に使用。
|
|
57
|
+
---
|
|
58
|
+
```
|
|
59
|
+
2. `# プロジェクトコンテキスト` 見出し。
|
|
60
|
+
3. 各セクションをカタログ順(プロジェクト概要 → ドメイン制約 → 開発フェーズ → ディレクトリ規約 → 外部リソース)で配置する。出力に含まれるのは区分が `add`、`keep`、`update` のいずれかであり、かつ採用ルールを満たすセクションのみ。本文は採用された次のセクションへ直接進む。
|
|
61
|
+
|
|
62
|
+
組み立てた内容を `.claude/skills/project-context/SKILL.md` に書き込む。このパスが Claude が毎セッション読み込むランタイムの正本となる。
|
|
63
|
+
|
|
64
|
+
### Step 5: 検証
|
|
65
|
+
|
|
66
|
+
再構築した `.claude/skills/project-context/SKILL.md` に対して以下のチェックを順に適用する:
|
|
67
|
+
|
|
68
|
+
- [ ] フロントマターが Step 4 の正本ブロックと逐語一致する。
|
|
69
|
+
- [ ] 本文の全セクション見出しの直後に、ヒアリングで収集した具体内容(具体値、リスト、サブブロック)が続く。
|
|
70
|
+
- [ ] 内容が記入されている各セクションが、`template.md` で定義された出力構造に一致する。
|
|
71
|
+
- [ ] 本文に含まれる各セクションは区分が `add`、`keep`、`update` のいずれかであり、かつ採用ルールを満たす。
|
|
72
|
+
- [ ] ドメイン制約の文が pass / fail で評価可能である(例: 「ログ出力は匿名化された ID を使用」は pass、「ログをきれいに保つ」はこのチェックに失敗する)。
|
|
73
|
+
- [ ] プロジェクトコンテキストの内容は制約・フェーズ・規約・外部リソースに限られる。技術スタックの詳細は `technical-spec` スキルの責務、実装原則は `coding-standards` スキルの責務である。
|
|
61
74
|
|
|
62
|
-
|
|
75
|
+
いずれかのチェックで失敗した場合、該当行を特定してユーザーに報告し、対象セクションの再ヒアリングまたは手動編集を提案する。修正後に Step 5 を再実行する。
|
|
63
76
|
|
|
64
|
-
|
|
65
|
-
- **このプロジェクトが何をするか**: [簡潔な説明]
|
|
66
|
-
- **ドメイン**: [ドメイン]
|
|
77
|
+
### Step 6: 結果の提示
|
|
67
78
|
|
|
68
|
-
|
|
69
|
-
1. [AIの判断に影響する測定可能な制約]
|
|
70
|
-
2. [検証可能な要件]
|
|
79
|
+
再構築した SKILL.md をユーザーに提示し、変更内容(追加 / 更新 / 削除 / 維持されたセクション)を列挙し、完了を確認する。
|
|
71
80
|
|
|
72
|
-
##
|
|
73
|
-
- **フェーズ**: [現在のフェーズ]
|
|
81
|
+
## 出力例
|
|
74
82
|
|
|
75
|
-
|
|
76
|
-
|
|
83
|
+
**未設定スキルへの初回実行**(全セクションを新規収集):
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
project-context 設定完了:
|
|
87
|
+
- 維持されたセクション: (なし — 初回実行のため)
|
|
88
|
+
- 更新されたセクション: (なし — 初回実行のため)
|
|
89
|
+
- 追加されたセクション: プロジェクト概要、ドメイン制約(2 ルール収集)、開発フェーズ、ディレクトリ規約(1 ルール)、外部リソース(バックエンドドメイン — データベーススキーマソース、シークレットストア)
|
|
90
|
+
- 削除されたセクション: (なし)
|
|
91
|
+
- 書き込み先ファイル: .claude/skills/project-context/SKILL.md
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
**設定済みスキルへの軽微な更新**(1 セクションを編集、他は保持):
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
project-context 更新完了:
|
|
98
|
+
- 維持されたセクション: プロジェクト概要、開発フェーズ、ディレクトリ規約
|
|
99
|
+
- 更新されたセクション: ドメイン制約(3 ルール収集)
|
|
100
|
+
- 追加されたセクション: (なし)
|
|
101
|
+
- 削除されたセクション: (なし)
|
|
102
|
+
- 書き込み先ファイル: .claude/skills/project-context/SKILL.md
|
|
77
103
|
```
|
|
78
104
|
|
|
79
|
-
|
|
105
|
+
**セクション削除のみの実行**(既存セクションを削除、新規追加なし):
|
|
80
106
|
|
|
81
|
-
|
|
82
|
-
-
|
|
83
|
-
-
|
|
84
|
-
-
|
|
85
|
-
-
|
|
86
|
-
-
|
|
107
|
+
```
|
|
108
|
+
project-context 更新完了:
|
|
109
|
+
- 維持されたセクション: プロジェクト概要、ドメイン制約、開発フェーズ
|
|
110
|
+
- 更新されたセクション: (なし)
|
|
111
|
+
- 追加されたセクション: (なし)
|
|
112
|
+
- 削除されたセクション: ディレクトリ規約
|
|
113
|
+
- 書き込み先ファイル: .claude/skills/project-context/SKILL.md
|
|
114
|
+
```
|
|
@@ -29,6 +29,7 @@ Immediately stop and reconsider design when detecting the following patterns:
|
|
|
29
29
|
|
|
30
30
|
- **Aggressive Refactoring** - Prevent technical debt and maintain health
|
|
31
31
|
- **No Unused "Just in Case" Code** - Violates YAGNI principle (Kent Beck)
|
|
32
|
+
- **Minimum Surface for Required Coverage** - When introducing maintenance-surface-bearing elements (persistent state, public-contract elements or cross-boundary fields/props, behavioral modes/flags/variants, reusable abstractions, or component splits), select the smallest design surface that covers current user-visible requirements and accepted technical constraints (audit, data integrity, compatibility, security, performance, accessibility). Adoption is justified by naming a current requirement or constraint that smaller alternatives fail to cover; value-based arguments (reusable, future-ready, convenient for implementation) serve as tiebreakers only. Distinct from YAGNI: YAGNI is a time-axis check (refuse work for future-only needs); this principle constrains surface area at a fixed coverage point.
|
|
32
33
|
|
|
33
34
|
## Comment Writing Rules
|
|
34
35
|
|
|
@@ -120,6 +120,7 @@ description: Guides PRD, ADR, Design Doc, UI Spec, and Work Plan creation. Use w
|
|
|
120
120
|
- **Code inspection evidence** (inspected files/functions during investigation)
|
|
121
121
|
- **Field propagation map** (when fields cross component boundaries)
|
|
122
122
|
- **Data representation decision** (when introducing new structures)
|
|
123
|
+
- **Minimal Surface Alternatives** (when introducing persistent state, public-contract elements or cross-boundary fields, behavioral modes/flags, or reusable abstractions/component splits — see design-template.md for the 5-step output format)
|
|
123
124
|
- **Applicable standards** (explicit/implicit classification)
|
|
124
125
|
- **Prerequisite ADRs** (including common ADRs)
|
|
125
126
|
- **Verification Strategy** (required)
|
|
@@ -185,6 +185,49 @@ Evaluate existing structures: semantic fit, responsibility fit, lifecycle fit, b
|
|
|
185
185
|
|
|
186
186
|
**Decision**: [reuse / extend / new] — [rationale]
|
|
187
187
|
|
|
188
|
+
### Minimal Surface Alternatives (When Introducing Maintenance-Surface Elements)
|
|
189
|
+
|
|
190
|
+
One entry per new in-scope element (persistent state / public-contract element or cross-boundary field or prop / behavioral mode/flag/variant / reusable abstraction or component split). Records the 5-step output produced by the invoking designer agent. Reference: `coding-standards` skill, "Minimum Surface for Required Coverage".
|
|
191
|
+
|
|
192
|
+
#### Element 1: [name of the new element]
|
|
193
|
+
|
|
194
|
+
**Step 1 — Fixed Requirements**
|
|
195
|
+
- [AC reference — AC ID, AC heading, EARS clause, or constraint ID]: [requirement / constraint text]
|
|
196
|
+
- [AC reference]: [requirement / constraint text]
|
|
197
|
+
|
|
198
|
+
References may point to the Design Doc, referenced PRD, or referenced UI Spec.
|
|
199
|
+
|
|
200
|
+
**Steps 2–3 — Alternatives Compared**
|
|
201
|
+
|
|
202
|
+
Adapt the column names below to the design context: backend Design Docs use "Crosses module/service boundary" and "New concept / mode / flag"; frontend Design Docs use "Crosses component boundary" and "New props / modes / variants" (and add the "client or server" qualifier to the persistent-state column).
|
|
203
|
+
|
|
204
|
+
| Alternative | Current requirements covered (AC reference) | New persistent state introduced (count) | New concept / mode / flag / prop / variant (count) | Crosses module/service or component boundary (yes/no) | Breaking change or migration required (yes/no) | Subjective cost notes |
|
|
205
|
+
|---|---|---|---|---|---|---|
|
|
206
|
+
| [The added element as proposed] | | | | | | |
|
|
207
|
+
| [Subtractive alternative — derive / compute on demand / keep at caller / reuse existing / introduce no new state] | | | | | | |
|
|
208
|
+
| [Optional third alternative] | | | | | | |
|
|
209
|
+
|
|
210
|
+
Subjective cost notes accepts: maintainability concerns, naming clarity, perceived implementation effort, future-readiness sentiment, and similar judgment-level remarks.
|
|
211
|
+
|
|
212
|
+
**Resolution priority for selecting "smallest"** (later columns are tiebreakers when earlier are equal):
|
|
213
|
+
1. New persistent state introduced (lower = smaller)
|
|
214
|
+
2. Crosses module/service or component boundary (no = smaller)
|
|
215
|
+
3. New concept / mode / flag / prop / variant (lower = smaller)
|
|
216
|
+
4. Breaking change or migration required (no = smaller)
|
|
217
|
+
5. Subjective cost notes
|
|
218
|
+
|
|
219
|
+
**Step 4 — Selected Alternative and Rationale**
|
|
220
|
+
- **Selected**: [alternative name]
|
|
221
|
+
- **Rationale**:
|
|
222
|
+
- When selected = smallest alternative considered: state "smallest alternative considered; no further reduction available"
|
|
223
|
+
- When selected > smallest: name the current requirement(s) from Step 1 that smaller alternatives fail to satisfy
|
|
224
|
+
|
|
225
|
+
**Step 5 — Rejected Alternatives Log**
|
|
226
|
+
- [Alternative name]: [1-2 lines on what it was and why rejected]
|
|
227
|
+
- [Alternative name]: [1-2 lines on what it was and why rejected]
|
|
228
|
+
|
|
229
|
+
Repeat the Element block above for each additional in-scope element. Mark the whole section N/A with brief rationale when the design introduces no in-scope elements.
|
|
230
|
+
|
|
188
231
|
### Type Definitions
|
|
189
232
|
|
|
190
233
|
```typescript
|
|
@@ -351,6 +394,16 @@ Mark as N/A with brief rationale when the design introduces entirely new behavio
|
|
|
351
394
|
- **Disadvantages**: [Disadvantages]
|
|
352
395
|
- **Reason for Rejection**: [Why it wasn't adopted]
|
|
353
396
|
|
|
397
|
+
## Future Extensibility
|
|
398
|
+
|
|
399
|
+
This section records capabilities **excluded** from the current design surface. Limit entries to capabilities tied to a current requirement, a current consumer, or a documented constraint; route purely speculative future plans into a separate proposal document.
|
|
400
|
+
|
|
401
|
+
Distinguish from "Minimal Surface Alternatives → Step 5 (Rejected Alternatives)": Step 5 records element-level alternatives that were compared and rejected within a single in-scope element; this section records capability-level items not bound to a single element (broader scope considered but excluded).
|
|
402
|
+
|
|
403
|
+
- **Deferred possibilities**: [Capabilities considered during design and explicitly excluded from the current design surface. Each entry names the current requirement it would have served]
|
|
404
|
+
- **Intentional limitations**: [What was deliberately kept small and why]
|
|
405
|
+
- **Extension points (existing, with current consumers)**: [Interfaces or hooks already in use by named current consumers. Each entry names a current consumer]
|
|
406
|
+
|
|
354
407
|
## Risks and Mitigation
|
|
355
408
|
|
|
356
409
|
| Risk | Impact | Probability | Mitigation |
|
|
@@ -1,21 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: project-context
|
|
3
|
-
description: Provides project-specific prerequisites for AI execution accuracy. Use when checking project structure.
|
|
3
|
+
description: Provides project-specific prerequisites for AI execution accuracy — domain constraints, development phase, directory conventions, external resource access methods. Use when the session starts, when checking project structure, or when a task references domain rules or external resources outside the repository.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Project Context
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
## Project Overview
|
|
11
|
-
- **What this project does**: (to be configured)
|
|
12
|
-
- **Domain**: (to be configured)
|
|
13
|
-
|
|
14
|
-
## Domain Constraints
|
|
15
|
-
(Domain-specific rules that affect AI decision-making)
|
|
16
|
-
|
|
17
|
-
## Development Phase
|
|
18
|
-
- **Phase**: (Prototype / Production / In operation)
|
|
19
|
-
|
|
20
|
-
## Directory Conventions
|
|
21
|
-
(File placement rules, if any)
|
|
8
|
+
Run `/project-inject` to populate this skill.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# API Contract External Resource Axes
|
|
2
|
+
|
|
3
|
+
Hearing axes for API contract design, client integration, or server endpoint implementation. `/project-inject` loads this file when the user selects the API domain.
|
|
4
|
+
|
|
5
|
+
## Axis 1: API Schema Source
|
|
6
|
+
|
|
7
|
+
The canonical source of API contracts (request/response shapes, endpoints, RPC methods).
|
|
8
|
+
|
|
9
|
+
**AskUserQuestion choices**:
|
|
10
|
+
- OpenAPI / Swagger specification (file in repository or hosted URL)
|
|
11
|
+
- Protobuf definitions (file in repository)
|
|
12
|
+
- GraphQL schema (SDL file or introspection endpoint)
|
|
13
|
+
- Code-first contract definitions in the repository (e.g., TypeScript types shared between client and server)
|
|
14
|
+
- Ad-hoc JSON (no formal contract)
|
|
15
|
+
- Not applicable
|
|
16
|
+
|
|
17
|
+
**Follow-up (when the axis is present)**: Capture two fields:
|
|
18
|
+
- **Location**: file path or URL.
|
|
19
|
+
- **Access method**: file read or WebFetch.
|
|
20
|
+
|
|
21
|
+
When multiple contracts exist (public API, internal services), capture each as a separate entry per the multiple-instance rule in `template.md`, using the contract purpose as the disambiguating suffix.
|
|
22
|
+
|
|
23
|
+
## Axis 2: Mock Environment
|
|
24
|
+
|
|
25
|
+
How clients exercise the API in isolation from the live server.
|
|
26
|
+
|
|
27
|
+
**AskUserQuestion choices**:
|
|
28
|
+
- Generated mocks from the schema (e.g., from OpenAPI / Protobuf tooling)
|
|
29
|
+
- Hand-written mock server in the repository
|
|
30
|
+
- Hosted mock service (URL)
|
|
31
|
+
- Live development server (no separate mock)
|
|
32
|
+
- Not applicable
|
|
33
|
+
|
|
34
|
+
**Follow-up (when the axis is present)**: Capture two fields:
|
|
35
|
+
- **Location**: mock URL or repository path.
|
|
36
|
+
- **Access method**: CLI command, WebFetch, or generation step name. State whether the mock auto-updates when the schema changes (e.g., `regenerate from openapi.yaml on commit`).
|
|
37
|
+
|
|
38
|
+
## Axis 3: Authentication Method
|
|
39
|
+
|
|
40
|
+
How the API authenticates and authorizes requests.
|
|
41
|
+
|
|
42
|
+
**AskUserQuestion choices**:
|
|
43
|
+
- Bearer token (e.g., JWT) issued by an auth service
|
|
44
|
+
- API key in a header or query parameter
|
|
45
|
+
- Session cookie set by a separate login flow
|
|
46
|
+
- Mutual TLS
|
|
47
|
+
- No authentication
|
|
48
|
+
- Not applicable
|
|
49
|
+
|
|
50
|
+
**Follow-up (when the axis is present)**: Capture two fields:
|
|
51
|
+
- **Location**: auth service URL, environment variable name, or fixture file path used in development and testing.
|
|
52
|
+
- **Access method**: SDK call, CLI command, or file read.
|
|
53
|
+
|
|
54
|
+
When the same secrets live in the backend secret store, render this axis as a cross-axis reference back to that location (notation defined in `template.md`).
|
|
55
|
+
|
|
56
|
+
## Axis 4: Schema Change Process
|
|
57
|
+
|
|
58
|
+
How breaking and non-breaking schema changes are reviewed and rolled out.
|
|
59
|
+
|
|
60
|
+
**AskUserQuestion choices**:
|
|
61
|
+
- Documented contract review process (link to the document)
|
|
62
|
+
- Versioned endpoints (e.g., `/v1/`, `/v2/`)
|
|
63
|
+
- Backward-compatible changes only, no formal versioning
|
|
64
|
+
- Not applicable
|
|
65
|
+
|
|
66
|
+
**Follow-up (when the axis is present)**: Capture two fields:
|
|
67
|
+
- **Location**: document path or URL.
|
|
68
|
+
- **Access method**: file read, WebFetch, or version negotiation rule statement (e.g., `breaking changes require a new /vN/ path`).
|
|
69
|
+
|
|
70
|
+
## Self-Declaration Phase
|
|
71
|
+
|
|
72
|
+
After the four structured axes, ask once: "Are there any other API external resources this project depends on beyond what the structured questions covered? List each in your next message, or reply 'none'."
|
|
73
|
+
|
|
74
|
+
Capture free-form answers under the "Additional Resources" subsection of the API block. Run this phase even when every structured axis returned "Not applicable".
|
|
75
|
+
|
|
76
|
+
Examples of resources that surface only via self-declaration: rate-limit configuration, gateway or proxy in front of the API, contract test suite (e.g., Pact broker URL), API gateway management consoles, third-party API documentation consulted during design.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Backend External Resource Axes
|
|
2
|
+
|
|
3
|
+
Hearing axes for server-side, data, or storage work. `/project-inject` loads this file when the user selects the Backend domain.
|
|
4
|
+
|
|
5
|
+
## Axis 1: Database Schema Source
|
|
6
|
+
|
|
7
|
+
The canonical source of the database schema (tables, columns, indexes, constraints).
|
|
8
|
+
|
|
9
|
+
**AskUserQuestion choices**:
|
|
10
|
+
- Migration files in the repository (e.g., a `migrations/` directory)
|
|
11
|
+
- Schema file in the repository (e.g., `schema.sql`, `prisma/schema.prisma`)
|
|
12
|
+
- Database MCP server that introspects a live database
|
|
13
|
+
- External schema registry (URL or hosted catalog)
|
|
14
|
+
- No persistent database
|
|
15
|
+
- Not applicable
|
|
16
|
+
|
|
17
|
+
**Follow-up (when the axis is present)**: Capture two fields:
|
|
18
|
+
- **Location**: file path, URL, or MCP target identifier.
|
|
19
|
+
- **Access method**: file read, WebFetch, or MCP server name.
|
|
20
|
+
|
|
21
|
+
When multiple databases exist (primary, analytics, cache), capture each as a separate entry per the multiple-instance rule in `template.md`, using the database purpose as the disambiguating suffix.
|
|
22
|
+
|
|
23
|
+
## Axis 2: Migration History
|
|
24
|
+
|
|
25
|
+
How schema changes are tracked over time.
|
|
26
|
+
|
|
27
|
+
**AskUserQuestion choices**:
|
|
28
|
+
- Versioned migration files in the repository
|
|
29
|
+
- ORM-managed migration tool (e.g., Alembic, Flyway, Prisma Migrate)
|
|
30
|
+
- Manual change log document
|
|
31
|
+
- No migration tracking
|
|
32
|
+
- Not applicable
|
|
33
|
+
|
|
34
|
+
**Follow-up (when the axis is present)**: Capture two fields:
|
|
35
|
+
- **Location**: directory path or migration tool name.
|
|
36
|
+
- **Access method**: CLI command for manual runs, or CI step / deployment hook name when migrations apply automatically.
|
|
37
|
+
|
|
38
|
+
## Axis 3: Secret Store
|
|
39
|
+
|
|
40
|
+
Where credentials, API keys, and other secrets are stored and accessed.
|
|
41
|
+
|
|
42
|
+
**AskUserQuestion choices**:
|
|
43
|
+
- Secret manager service (e.g., AWS Secrets Manager, Vault, GCP Secret Manager)
|
|
44
|
+
- Environment variables loaded from a `.env` file (development only)
|
|
45
|
+
- Encrypted file in the repository
|
|
46
|
+
- No secrets required
|
|
47
|
+
- Not applicable
|
|
48
|
+
|
|
49
|
+
**Follow-up (when the axis is present)**: Capture two fields:
|
|
50
|
+
- **Location**: secret manager service name or MCP target.
|
|
51
|
+
- **Access method**: MCP server name, CLI command, or SDK call used to read secrets.
|
|
52
|
+
|
|
53
|
+
The actual secret values live in the store and are read from there at runtime — capture only how to reach them.
|
|
54
|
+
|
|
55
|
+
## Axis 4: Background Job Infrastructure
|
|
56
|
+
|
|
57
|
+
How asynchronous work is dispatched and observed.
|
|
58
|
+
|
|
59
|
+
**AskUserQuestion choices**:
|
|
60
|
+
- Queue service (e.g., SQS, Pub/Sub, RabbitMQ)
|
|
61
|
+
- Cron / scheduled tasks managed by the deployment platform
|
|
62
|
+
- In-process worker thread
|
|
63
|
+
- No background work
|
|
64
|
+
- Not applicable
|
|
65
|
+
|
|
66
|
+
**Follow-up (when the axis is present)**: Capture two fields:
|
|
67
|
+
- **Location**: queue name or scheduler identifier.
|
|
68
|
+
- **Access method**: enqueue command, inspect command, or platform console URL.
|
|
69
|
+
|
|
70
|
+
## Self-Declaration Phase
|
|
71
|
+
|
|
72
|
+
After the four structured axes, ask once: "Are there any other backend external resources this project depends on beyond what the structured questions covered? List each in your next message, or reply 'none'."
|
|
73
|
+
|
|
74
|
+
Capture free-form answers under the "Additional Resources" subsection of the Backend block. Run this phase even when every structured axis returned "Not applicable".
|
|
75
|
+
|
|
76
|
+
Examples of resources that surface only via self-declaration: third-party SaaS APIs (payment, email, search index), distributed cache services (Redis, Memcached), object storage (S3, GCS), feature flag services consumed server-side, observability platforms (logs, traces, metrics).
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Frontend External Resource Axes
|
|
2
|
+
|
|
3
|
+
Hearing axes for frontend work — component implementation, screen design, visual adjustment, design system migration. `/project-inject` loads this file when the user selects the Frontend domain.
|
|
4
|
+
|
|
5
|
+
## Axis 1: Design Origin
|
|
6
|
+
|
|
7
|
+
The canonical source of the visual specification.
|
|
8
|
+
|
|
9
|
+
**AskUserQuestion choices**:
|
|
10
|
+
- Design tool (a hosted design platform)
|
|
11
|
+
- Specification file in the repository (e.g., `DESIGN.md`, `docs/design/...`)
|
|
12
|
+
- Public documentation URL
|
|
13
|
+
- Existing implementation only (no separate design source)
|
|
14
|
+
- Not applicable
|
|
15
|
+
|
|
16
|
+
**Follow-up (when the axis is present)**: Capture two fields (Source type is set by the choice above):
|
|
17
|
+
- **Location**: public URL, repository file path, or MCP target identifier.
|
|
18
|
+
- **Access method**: WebFetch, file read, MCP server name, or manual screenshot procedure.
|
|
19
|
+
|
|
20
|
+
## Axis 2: Design System
|
|
21
|
+
|
|
22
|
+
Reusable component library and design tokens.
|
|
23
|
+
|
|
24
|
+
**AskUserQuestion choices**:
|
|
25
|
+
- Component library with MCP server access
|
|
26
|
+
- Component library with documentation URL
|
|
27
|
+
- Storybook or equivalent component catalog
|
|
28
|
+
- Internal package with team-internal documentation only
|
|
29
|
+
- No design system (ad-hoc components)
|
|
30
|
+
- Not applicable
|
|
31
|
+
|
|
32
|
+
**Follow-up (when the axis is present)**: Capture two fields:
|
|
33
|
+
- **Location**: Storybook URL, package name, or internal documentation path.
|
|
34
|
+
- **Access method**: WebFetch, file read, or MCP server name.
|
|
35
|
+
|
|
36
|
+
## Axis 3: Guidelines
|
|
37
|
+
|
|
38
|
+
Usage guidance, accessibility rules, anti-patterns, naming conventions for UI work.
|
|
39
|
+
|
|
40
|
+
**AskUserQuestion choices**:
|
|
41
|
+
- Project-level guideline file (e.g., `DESIGN.md`, `docs/guidelines/...`)
|
|
42
|
+
- External documentation site
|
|
43
|
+
- Inline guidance inside the design system catalog
|
|
44
|
+
- No documented guidelines
|
|
45
|
+
- Not applicable
|
|
46
|
+
|
|
47
|
+
**Follow-up (when the axis is present)**: Capture two fields:
|
|
48
|
+
- **Location**: file path or URL.
|
|
49
|
+
- **Access method**: file read or WebFetch.
|
|
50
|
+
|
|
51
|
+
When multiple files address different concerns (CSS, accessibility, i18n), capture each as a separate entry per the multiple-instance rule in `template.md`.
|
|
52
|
+
|
|
53
|
+
## Axis 4: Visual Verification Environment
|
|
54
|
+
|
|
55
|
+
How rendered output is confirmed during implementation.
|
|
56
|
+
|
|
57
|
+
**AskUserQuestion choices**:
|
|
58
|
+
- End-to-end test runner with screenshot capability
|
|
59
|
+
- Storybook or equivalent isolated component preview
|
|
60
|
+
- Browser automation tool (dedicated CLI or MCP server)
|
|
61
|
+
- Manual browser inspection only
|
|
62
|
+
- Not applicable
|
|
63
|
+
|
|
64
|
+
**Follow-up (when the axis is present)**: Capture two fields:
|
|
65
|
+
- **Location**: preview URL, MCP target, or test runner identifier.
|
|
66
|
+
- **Access method**: entry command, MCP server name, or browser automation tool name.
|
|
67
|
+
|
|
68
|
+
## Self-Declaration Phase
|
|
69
|
+
|
|
70
|
+
After the four structured axes, ask once: "Are there any other frontend external resources this project depends on beyond what the structured questions covered? List each in your next message, or reply 'none'."
|
|
71
|
+
|
|
72
|
+
Capture free-form answers under the "Additional Resources" subsection of the Frontend block. Run this phase even when every structured axis returned "Not applicable".
|
|
73
|
+
|
|
74
|
+
Examples of resources that surface only via self-declaration: brand asset CDNs, font hosting services, icon library subscriptions, A/B testing dashboards that gate visual variants, analytics dashboards consulted for visual KPIs.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Infrastructure External Resource Axes
|
|
2
|
+
|
|
3
|
+
Hearing axes for deployment, environment configuration, or infrastructure-as-code work. `/project-inject` loads this file when the user selects the Infrastructure domain.
|
|
4
|
+
|
|
5
|
+
## Axis 1: IaC Source
|
|
6
|
+
|
|
7
|
+
The canonical source of infrastructure definitions.
|
|
8
|
+
|
|
9
|
+
**AskUserQuestion choices**:
|
|
10
|
+
- Terraform configuration in the repository
|
|
11
|
+
- Pulumi or CDK code in the repository
|
|
12
|
+
- Kubernetes manifests / Helm charts in the repository
|
|
13
|
+
- Cloud-provider-native templates (e.g., CloudFormation, Bicep, Deployment Manager)
|
|
14
|
+
- Manual console configuration (no IaC)
|
|
15
|
+
- Not applicable
|
|
16
|
+
|
|
17
|
+
**Follow-up (when the axis is present)**: Capture two fields:
|
|
18
|
+
- **Location**: directory path.
|
|
19
|
+
- **Access method**: CI pipeline name when plan/apply runs automatically, or CLI command when an operator runs it manually.
|
|
20
|
+
|
|
21
|
+
## Axis 2: Environment Configuration
|
|
22
|
+
|
|
23
|
+
How per-environment settings (development, staging, production) differ.
|
|
24
|
+
|
|
25
|
+
**AskUserQuestion choices**:
|
|
26
|
+
- Per-environment configuration files in the repository (e.g., `terraform/envs/`, `config/staging.yaml`)
|
|
27
|
+
- Environment variables managed by the deployment platform
|
|
28
|
+
- Workspace or stack abstraction in the IaC tool itself
|
|
29
|
+
- Single shared configuration (no per-environment differences)
|
|
30
|
+
- Not applicable
|
|
31
|
+
|
|
32
|
+
**Follow-up (when the axis is present)**: Capture two fields:
|
|
33
|
+
- **Location**: configuration file paths, platform setting names, or workspace identifiers where environment-specific values are stored.
|
|
34
|
+
- **Access method**: file read, platform console URL, or CLI command.
|
|
35
|
+
|
|
36
|
+
When multiple environments are tracked separately (development, staging, production), capture each as a separate entry per the multiple-instance rule in `template.md`, using the environment name as the disambiguating suffix.
|
|
37
|
+
|
|
38
|
+
## Axis 3: Secrets in Infrastructure
|
|
39
|
+
|
|
40
|
+
How infrastructure code references secrets while keeping their values out of source control.
|
|
41
|
+
|
|
42
|
+
**AskUserQuestion choices**:
|
|
43
|
+
- Secrets sourced from a secret manager via IaC data lookup
|
|
44
|
+
- Secrets injected at apply time via environment variables
|
|
45
|
+
- Encrypted secret files committed alongside IaC
|
|
46
|
+
- No secrets in infrastructure
|
|
47
|
+
- Not applicable
|
|
48
|
+
|
|
49
|
+
**Follow-up (when the axis is present)**: Capture two fields:
|
|
50
|
+
- **Location**: secret manager service name or IaC data source identifier.
|
|
51
|
+
- **Access method**: data lookup syntax, environment variable name, or apply-time injection mechanism.
|
|
52
|
+
|
|
53
|
+
When the same secret store appears in the Backend domain, render this axis as a cross-axis reference back to that location (notation defined in `template.md`).
|
|
54
|
+
|
|
55
|
+
## Axis 4: Deployment Trigger
|
|
56
|
+
|
|
57
|
+
How infrastructure and application changes reach environments.
|
|
58
|
+
|
|
59
|
+
**AskUserQuestion choices**:
|
|
60
|
+
- CI pipeline triggered on merge to a specific branch
|
|
61
|
+
- Manual approval step in CI
|
|
62
|
+
- Local apply by an operator
|
|
63
|
+
- Deployment platform's auto-deploy on push
|
|
64
|
+
- Not applicable
|
|
65
|
+
|
|
66
|
+
**Follow-up (when the axis is present)**: Capture two fields:
|
|
67
|
+
- **Location**: CI pipeline name or deployment platform identifier.
|
|
68
|
+
- **Access method**: branch / tag convention that triggers each environment, plus any required manual approval step.
|
|
69
|
+
|
|
70
|
+
## Self-Declaration Phase
|
|
71
|
+
|
|
72
|
+
After the four structured axes, ask once: "Are there any other infrastructure external resources this project depends on beyond what the structured questions covered? List each in your next message, or reply 'none'."
|
|
73
|
+
|
|
74
|
+
Capture free-form answers under the "Additional Resources" subsection of the Infrastructure block. Run this phase even when every structured axis returned "Not applicable".
|
|
75
|
+
|
|
76
|
+
Examples of resources that surface only via self-declaration: state-storage backend for IaC tools, runbook documents for incident response, on-call rotation, observability dashboards, cost monitoring tools, compliance / audit logging targets.
|