spec-runner 1.4.0 → 1.5.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/package.json +1 -1
- package/spec-runner/templates/{.github/agents/impact-analyzer.agent.md → .claude/agents/analyze-impact.md} +5 -7
- package/spec-runner/templates/.claude/agents/{code-reviewer.md → review-code.md} +3 -5
- package/spec-runner/templates/{.github/agents/design-reviewer.agent.md → .claude/agents/review-design.md} +11 -11
- package/spec-runner/templates/.claude/agents/{test-runner.md → run-tests.md} +4 -8
- package/spec-runner/templates/.claude/rules/agent-delegation.md +31 -0
- package/spec-runner/templates/.claude/rules/{coding.md → code-style.md} +15 -4
- package/spec-runner/templates/.claude/rules/design-docs.md +5 -5
- package/spec-runner/templates/.claude/rules/{testing.md → test-config.md} +1 -1
- package/spec-runner/templates/.claude/skills/architecture-definition/SKILL.md +10 -19
- package/spec-runner/templates/.claude/skills/architecture-skill-development/SKILL.md +14 -51
- package/spec-runner/templates/.claude/skills/{docs-driven-seed → ddd-seed}/SKILL.md +4 -17
- package/spec-runner/templates/.claude/skills/design-change/SKILL.md +12 -25
- package/spec-runner/templates/.claude/skills/design-change/references//345/275/261/351/237/277/347/257/204/345/233/262/343/203/201/343/202/247/343/203/203/343/202/257/343/203/252/343/202/271/343/203/210.md +1 -1
- package/spec-runner/templates/.claude/skills/existing-project-to-docs/SKILL.md +10 -18
- package/spec-runner/templates/.claude/skills/harness-engineering/SKILL.md +6 -45
- package/spec-runner/templates/.claude/{rules/harness-formats.md → skills/harness-engineering/references/harness-format.md} +10 -4
- package/spec-runner/templates/.claude/skills/simple-seed/SKILL.md +1 -10
- package/spec-runner/templates/.claude/skills/spec-probe/SKILL.md +12 -0
- package/spec-runner/templates/.claude/skills/test-driven-development/SKILL.md +34 -172
- package/spec-runner/templates/{.claude/agents/impact-analyzer.md → .github/agents/analyze-impact.agent.md} +5 -7
- package/spec-runner/templates/.github/agents/{code-reviewer.agent.md → review-code.agent.md} +3 -5
- package/spec-runner/templates/{.claude/agents/design-reviewer.md → .github/agents/review-design.agent.md} +11 -11
- package/spec-runner/templates/.github/agents/{test-runner.agent.md → run-tests.agent.md} +4 -8
- package/spec-runner/templates/.github/instructions/agent-delegation.instructions.md +31 -0
- package/spec-runner/templates/.github/instructions/{coding.instructions.md → code-style.instructions.md} +17 -5
- package/spec-runner/templates/.github/instructions/design-docs.instructions.md +4 -4
- package/spec-runner/templates/.github/skills/architecture-definition/SKILL.md +10 -19
- package/spec-runner/templates/.github/skills/architecture-skill-development/SKILL.md +14 -51
- package/spec-runner/templates/.github/skills/{docs-driven-seed → ddd-seed}/SKILL.md +4 -17
- package/spec-runner/templates/.github/skills/design-change/SKILL.md +12 -25
- package/spec-runner/templates/.github/skills/design-change/references//345/275/261/351/237/277/347/257/204/345/233/262/343/203/201/343/202/247/343/203/203/343/202/257/343/203/252/343/202/271/343/203/210.md +1 -1
- package/spec-runner/templates/.github/skills/existing-project-to-docs/SKILL.md +12 -20
- package/spec-runner/templates/.github/skills/harness-engineering/SKILL.md +8 -47
- package/spec-runner/templates/.github/{instructions/harness-formats.instructions.md → skills/harness-engineering/references/harness-format.md} +9 -3
- package/spec-runner/templates/.github/skills/simple-seed/SKILL.md +1 -10
- package/spec-runner/templates/.github/skills/spec-probe/SKILL.md +12 -0
- package/spec-runner/templates/.github/skills/test-driven-development/SKILL.md +34 -172
- package/spec-runner/templates/.claude/rules/sub-agent-delegation.md +0 -37
- package/spec-runner/templates/.github/instructions/sub-agent-delegation.instructions.md +0 -37
- /package/spec-runner/templates/.claude/skills/{docs-driven-seed → ddd-seed}/templates/01_/350/246/201/344/273/266/345/256/232/347/276/251//343/203/246/343/203/223/343/202/255/343/202/277/343/202/271/350/250/200/350/252/236/350/276/236/346/233/270.md" +0 -0
- /package/spec-runner/templates/.claude/skills/{docs-driven-seed → ddd-seed}/templates/01_/350/246/201/344/273/266/345/256/232/347/276/251//350/246/201/344/273/266/345/256/232/347/276/251.md" +0 -0
- /package/spec-runner/templates/.claude/skills/{docs-driven-seed → ddd-seed}/templates/02_/346/246/202/350/246/201/350/250/255/350/250/210//343/202/267/343/202/271/343/203/206/343/203/240/345/205/250/344/275/223/344/277/257/347/236/260.md" +0 -0
- /package/spec-runner/templates/.claude/skills/{docs-driven-seed → ddd-seed}/templates/02_/346/246/202/350/246/201/350/250/255/350/250/210//343/203/211/343/203/241/343/202/244/343/203/263/343/203/242/343/203/207/343/203/253.md" +0 -0
- /package/spec-runner/templates/.claude/skills/{docs-driven-seed → ddd-seed}/templates/02_/346/246/202/350/246/201/350/250/255/350/250/210//343/203/246/343/203/274/343/202/271/343/202/261/343/203/274/343/202/271/344/270/200/350/246/247.md" +0 -0
- /package/spec-runner/templates/.claude/skills/{docs-driven-seed → ddd-seed}/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/01_/343/203/211/343/203/241/343/202/244/343/203/263/{/343/203/211/343/203/241/343/202/244/343/203/263/345/220/215}.md" +0 -0
- /package/spec-runner/templates/.claude/skills/{docs-driven-seed → ddd-seed}/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/02_/343/203/246/343/203/274/343/202/271/343/202/261/343/203/274/343/202/271/UC-{/346/227/245/346/234/254/350/252/236/345/220/215}.md" +0 -0
- /package/spec-runner/templates/.github/instructions/{testing.instructions.md → test-config.instructions.md} +0 -0
- /package/spec-runner/templates/.github/skills/{docs-driven-seed → ddd-seed}/templates/01_/350/246/201/344/273/266/345/256/232/347/276/251//343/203/246/343/203/223/343/202/255/343/202/277/343/202/271/350/250/200/350/252/236/350/276/236/346/233/270.md" +0 -0
- /package/spec-runner/templates/.github/skills/{docs-driven-seed → ddd-seed}/templates/01_/350/246/201/344/273/266/345/256/232/347/276/251//350/246/201/344/273/266/345/256/232/347/276/251.md" +0 -0
- /package/spec-runner/templates/.github/skills/{docs-driven-seed → ddd-seed}/templates/02_/346/246/202/350/246/201/350/250/255/350/250/210//343/202/267/343/202/271/343/203/206/343/203/240/345/205/250/344/275/223/344/277/257/347/236/260.md" +0 -0
- /package/spec-runner/templates/.github/skills/{docs-driven-seed → ddd-seed}/templates/02_/346/246/202/350/246/201/350/250/255/350/250/210//343/203/211/343/203/241/343/202/244/343/203/263/343/203/242/343/203/207/343/203/253.md" +0 -0
- /package/spec-runner/templates/.github/skills/{docs-driven-seed → ddd-seed}/templates/02_/346/246/202/350/246/201/350/250/255/350/250/210//343/203/246/343/203/274/343/202/271/343/202/261/343/203/274/343/202/271/344/270/200/350/246/247.md" +0 -0
- /package/spec-runner/templates/.github/skills/{docs-driven-seed → ddd-seed}/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/01_/343/203/211/343/203/241/343/202/244/343/203/263/{/343/203/211/343/203/241/343/202/244/343/203/263/345/220/215}.md" +0 -0
- /package/spec-runner/templates/.github/skills/{docs-driven-seed → ddd-seed}/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/02_/343/203/246/343/203/274/343/202/271/343/202/261/343/203/274/343/202/271/UC-{/346/227/245/346/234/254/350/252/236/345/220/215}.md" +0 -0
package/package.json
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: impact
|
|
2
|
+
name: analyze-impact
|
|
3
3
|
description: design-change で影響範囲を調査するときに呼ぶ。node_id から連鎖する影響ファイルを一覧化し、maps_to の整合性を報告する。
|
|
4
4
|
tools: Bash
|
|
5
5
|
model: sonnet
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
#
|
|
9
|
-
|
|
10
|
-
`graph.json`(`scan.js` が生成するキャッシュ)を読み、変更対象の node_id から連鎖する影響ファイルを一覧化する。
|
|
8
|
+
# 影響範囲分析
|
|
11
9
|
|
|
12
10
|
## 入力
|
|
13
11
|
|
|
@@ -15,14 +13,14 @@ model: sonnet
|
|
|
15
13
|
|
|
16
14
|
## 手順
|
|
17
15
|
|
|
18
|
-
### 1.
|
|
16
|
+
### 1. graph.json の確認
|
|
17
|
+
|
|
18
|
+
`graph.json` は Edit / Write のたびに hooks で自動更新される。`.spec-runner/scan/graph.json` が存在しない場合のみ以下を実行する。
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
21
|
node .spec-runner/scripts/scan.js
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
-
キャッシュが古い場合や存在しない場合は再生成する。
|
|
25
|
-
|
|
26
24
|
### 2. 影響範囲をグラフから取得
|
|
27
25
|
|
|
28
26
|
```bash
|
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: code
|
|
2
|
+
name: review-code
|
|
3
3
|
description: 実装・修正が完了したときに自動で呼ぶ。変更ファイルをコーディング規約と照合し違反を報告する。修正はしない。
|
|
4
4
|
tools: Read, Grep, Glob, Bash
|
|
5
5
|
model: sonnet
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
#
|
|
9
|
-
|
|
10
|
-
変更されたコードをコーディング規約と照合し、違反を報告する。変更ファイルのみが対象。
|
|
8
|
+
# コーディング規約チェック
|
|
11
9
|
|
|
12
10
|
## 手順
|
|
13
11
|
|
|
14
12
|
1. `git diff --name-only` で変更ファイルを確認する(引数でファイルが指定された場合はそちらを使用)
|
|
15
|
-
2. `.claude/rules/
|
|
13
|
+
2. `.claude/rules/code-style.md` を読み、チェック項目を把握する
|
|
16
14
|
3. 変更されたソースファイルを読み込む
|
|
17
15
|
4. チェック項目に照らして違反を検出する
|
|
18
16
|
5. 違反を報告する
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: design
|
|
2
|
+
name: review-design
|
|
3
3
|
description: 設計書を変更したとき、またはフェーズレビュー時に自動で呼ぶ。docs⇔src の乖離を報告する。修正はしない。
|
|
4
4
|
tools: Read, Grep, Glob
|
|
5
5
|
model: sonnet
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
# 設計書⇔実装
|
|
9
|
-
|
|
10
|
-
`docs/` の設計書と `src/` の実装コードを突合し、乖離を報告する。`maps_to` を唯一の参照先とする(パス推定は行わない)。
|
|
8
|
+
# 設計書⇔実装 整合性チェック
|
|
11
9
|
|
|
12
10
|
## 手順
|
|
13
11
|
|
|
14
|
-
1. `
|
|
15
|
-
2.
|
|
16
|
-
3. `
|
|
17
|
-
4. `docs/
|
|
18
|
-
5.
|
|
12
|
+
1. `.spec-runner/scan/graph.json` を読み、`missing_maps_to` を取得する。以降のヘッダーチェックではこの結果を使う(`graph.json` は Edit / Write のたびに hooks で自動更新済み)
|
|
13
|
+
2. `docs/` 配下の設計書ファイルを一覧取得する
|
|
14
|
+
3. 各設計書のヘッダーを読み、`spec_runner.node_id` / `kind` / `depends_on` / `maps_to` を確認する
|
|
15
|
+
4. `docs/02_概要設計/**` の各ファイルを読む。`maps_to` から対応する `src/` ファイルを特定して読み、ユースケース・責務・外部 IF が実装に反映されているか比較する
|
|
16
|
+
5. `docs/03_詳細設計/**` の各ファイルを読む。`maps_to` に列挙された `src/` / `tests/` ファイルを実際に読み、責務・入出力・判断条件・テスト観点を設計書と行レベルで比較する(`maps_to` が空または未設定の場合はヘッダーの問題として報告する)
|
|
17
|
+
6. 乖離を報告する
|
|
19
18
|
|
|
20
19
|
## チェック項目
|
|
21
20
|
|
|
22
|
-
###
|
|
21
|
+
### ヘッダー
|
|
23
22
|
|
|
23
|
+
- **参照原則**: `maps_to` を唯一の src 対応とする。パス推定は行わない
|
|
24
24
|
- **必須項目**: `node_id` / `kind` / `depends_on` / `maps_to` が存在するか
|
|
25
25
|
- **依存整合**: `depends_on` の参照先が実在するか。依存の向きが明らかに逆転していないか
|
|
26
26
|
- **対応整合**: `maps_to` の実ファイルが存在するか。変更対象が漏れていないか
|
|
@@ -43,7 +43,7 @@ model: sonnet
|
|
|
43
43
|
```
|
|
44
44
|
## 整合性チェック結果
|
|
45
45
|
|
|
46
|
-
###
|
|
46
|
+
### ヘッダーの問題
|
|
47
47
|
- [ファイル]: [問題内容]
|
|
48
48
|
|
|
49
49
|
### 一致(問題なし)
|
|
@@ -1,25 +1,21 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: run-tests
|
|
3
3
|
description: 実装・修正が完了したときに自動で呼ぶ。テストを実行し、失敗時は原因と修正案を報告する。コードは修正しない。
|
|
4
4
|
tools: Read, Grep, Glob, Bash
|
|
5
5
|
model: sonnet
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
#
|
|
9
|
-
|
|
10
|
-
> このファイルはテンプレートです。`architecture-skill-development` でプロジェクトのテスト実行コマンドに書き換えてください。
|
|
11
|
-
|
|
12
|
-
テストを実行し、結果を分析する。コードは修正しない。
|
|
8
|
+
# テスト実行
|
|
13
9
|
|
|
14
10
|
## 手順
|
|
15
11
|
|
|
16
12
|
1. `git diff --name-only` で変更ファイルを確認する
|
|
17
13
|
2. 変更ファイルに対応するテストファイルを特定する(`tests/` 配下の同構造)
|
|
18
|
-
3. `.claude/rules/
|
|
14
|
+
3. `.claude/rules/test-config.md` を読んでテスト実行コマンドを確認する
|
|
19
15
|
4. テストを実行する:
|
|
20
16
|
- 対象テストが明確な場合: テストコマンド + `<test-file> -v`
|
|
21
17
|
- 全体実行が必要な場合: 全テストコマンド + `-v`
|
|
22
|
-
|
|
18
|
+
5. 結果を分析する
|
|
23
19
|
|
|
24
20
|
## 失敗時の分析
|
|
25
21
|
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: メインエージェントがサブエージェントへ委任すべきタスクの指針
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# サブエージェント委任ルール
|
|
6
|
+
|
|
7
|
+
メインエージェントは判断・対話・ファイル編集に集中する。検証・調査・実行・ファイル検索はすべてサブエージェントへ委任する(メインのコンテキスト節約)。
|
|
8
|
+
|
|
9
|
+
## 委任する場面と委任先
|
|
10
|
+
|
|
11
|
+
| 場面 | 委任先 | タイミング |
|
|
12
|
+
|------|--------|-----------|
|
|
13
|
+
| 設計書⇔実装の整合性確認 | `@review-design` | 設計書を変更したとき、フェーズレビュー時 |
|
|
14
|
+
| コーディング規約チェック | `@review-code` | 実装・修正が完了したとき |
|
|
15
|
+
| テスト実行+失敗分析 | `@run-tests` | 実装・修正が完了したとき |
|
|
16
|
+
| 変更の影響範囲調査 | `@analyze-impact` | design-change で影響範囲を洗うとき |
|
|
17
|
+
|
|
18
|
+
## 並行起動
|
|
19
|
+
|
|
20
|
+
独立して動けるエージェントは同時に起動する。
|
|
21
|
+
|
|
22
|
+
例: 実装完了後 → `@run-tests` と `@review-code` を**同時に**起動し、両方の結果を待ってからユーザーへ報告する。
|
|
23
|
+
|
|
24
|
+
## メインエージェントが自分でやること
|
|
25
|
+
|
|
26
|
+
サブエージェントは会話の文脈を持たない。以下はメインエージェントが担う:
|
|
27
|
+
|
|
28
|
+
- ユーザーとの対話・意思決定・承認の受け取り
|
|
29
|
+
- フェーズの進行管理・次のアクションの判断
|
|
30
|
+
- ファイルの作成・編集
|
|
31
|
+
- サブエージェントの結果をポイントを絞ってユーザーへ伝える(生の出力をそのまま貼らない)
|
|
@@ -48,15 +48,26 @@ paths: ["src/**", "tests/**"]
|
|
|
48
48
|
|
|
49
49
|
## テスト
|
|
50
50
|
|
|
51
|
-
- テストファイルは実装と同じディレクトリ構造を維持する(`tests/` 配下に `src/` と同じ構造)
|
|
52
|
-
- TDD サイクル: RED → GREEN → REFACTOR
|
|
53
|
-
|
|
54
51
|
### テストコメント規約
|
|
55
52
|
|
|
56
53
|
- **意図の記述**: 全テストにテスト意図を日本語 1 行で書く(メソッド名の言い換えではなく「なぜそのテストが必要か」を書く)
|
|
57
|
-
- **準備・実行・検証**: セットアップが 5 行以上のテストでは `#
|
|
54
|
+
- **準備・実行・検証**: セットアップが 5 行以上のテストでは `# 準備 - ...` / `# 実行 - ...` / `# 検証 - ...` で構造を明示する。サフィックスには具体的に何をしているかを書く
|
|
58
55
|
- **英語コメント禁止**: `Arrange` / `Act` / `Assert` 等の英語は使わない
|
|
59
56
|
|
|
57
|
+
```
|
|
58
|
+
# なぜそのテストが必要かを1行で書く
|
|
59
|
+
test("ある入力に対して期待する出力を返す", () => {
|
|
60
|
+
# 準備 - テスト対象の入力データを用意する
|
|
61
|
+
const input = ...
|
|
62
|
+
|
|
63
|
+
# 実行 - テスト対象の関数を呼び出す
|
|
64
|
+
const result = targetFunction(input)
|
|
65
|
+
|
|
66
|
+
# 検証 - 期待する出力と一致するか確認する
|
|
67
|
+
expect(result).toBe(expectedOutput)
|
|
68
|
+
})
|
|
69
|
+
```
|
|
70
|
+
|
|
60
71
|
## 後方互換ハックの禁止
|
|
61
72
|
|
|
62
73
|
使われなくなったコードは完全に削除する。互換性維持のための温存は行わない。
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description:
|
|
2
|
+
description: 設計書共通ルール(ヘッダー・命名規則・ADR・文書品質)
|
|
3
3
|
paths: ["docs/**"]
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -15,9 +15,9 @@ paths: ["docs/**"]
|
|
|
15
15
|
- 設計書は必ずテンプレートをコピーして生成する。独自にゼロから作成しない
|
|
16
16
|
- 手順: テンプレートを読む → 出力先へコピーする → プレースホルダーを埋める
|
|
17
17
|
|
|
18
|
-
##
|
|
18
|
+
## ヘッダー
|
|
19
19
|
|
|
20
|
-
- `docs/**`
|
|
20
|
+
- `docs/**` の全設計書にヘッダーを付ける
|
|
21
21
|
- 正本の必須項目は `spec_runner.node_id` / `spec_runner.kind` / `spec_runner.depends_on` / `spec_runner.maps_to`
|
|
22
22
|
- `depends_on` はまず文字列配列でよい。依存理由が必要な場合のみオブジェクト形式を使う
|
|
23
23
|
- `maps_to` には `src/` / `tests/` / IaC / 設定ファイルを列挙する。必ず設定する(空にしない)
|
|
@@ -80,9 +80,9 @@ spec_runner:
|
|
|
80
80
|
- 詳細設計ではドメインルール・UC の責務・入出力・判断条件・テスト観点を書く
|
|
81
81
|
- `maps_to` を唯一の src 対応として使う。パス推定に頼らない
|
|
82
82
|
- Markdown に HTML タグ(details, summary, br など)を使わない
|
|
83
|
-
-
|
|
83
|
+
- 設計書に絵文字・記号(✓ ✅ ☑ ◯ × △ など)を使わない。状態・判定は文字で表現する
|
|
84
84
|
- `概要.md` のような汎用的な名前は使わない(`要件定義.md`、`ユースケース一覧.md` のように内容を示す名前にする)
|
|
85
|
-
-
|
|
85
|
+
- 「関連ドキュメント」セクションを設計書に作らない。依存関係はヘッダーの `depends_on` で管理する
|
|
86
86
|
- 「スケジュール」セクションを設計書に作らない。進捗管理は設計書の責務ではない
|
|
87
87
|
|
|
88
88
|
## ドメインモデルとデータモデルの分離(style: ddd のみ)
|
|
@@ -5,9 +5,6 @@ description: 新規プロジェクトで docs と `.spec-runner/architecture/arc
|
|
|
5
5
|
|
|
6
6
|
# architecture-definition
|
|
7
7
|
|
|
8
|
-
新規プロジェクト向けの初期化フロー。
|
|
9
|
-
要件定義・フォルダ構造の決定・architecture contract の作成までを先に固め、スキル整備を経てから概要設計へ進む。
|
|
10
|
-
|
|
11
8
|
## 全体フロー
|
|
12
9
|
|
|
13
10
|
```
|
|
@@ -21,19 +18,20 @@ Phase 5: architecture-skill-development へ自動移行
|
|
|
21
18
|
|
|
22
19
|
## Phase 1: 要件整理
|
|
23
20
|
|
|
24
|
-
テンプレート: `.claude/skills/
|
|
21
|
+
テンプレート: `.claude/skills/ddd-seed/templates/01_要件定義/`
|
|
25
22
|
|
|
26
|
-
1.
|
|
27
|
-
2.
|
|
28
|
-
3.
|
|
29
|
-
4.
|
|
23
|
+
1. 曖昧な前提があれば `spec-probe` スキルで先に整理する
|
|
24
|
+
2. ユーザーから背景、提供価値、制約、スコープ外を確認する
|
|
25
|
+
3. テンプレートをコピーして `docs/01_要件定義/要件定義.md` を作る
|
|
26
|
+
4. ドメイン用語が出てきたら `docs/01_要件定義/ユビキタス言語辞書.md` に随時追記する
|
|
27
|
+
5. アーキテクチャスタイルを選択する
|
|
30
28
|
|
|
31
29
|
| スタイル | 選ぶ基準 |
|
|
32
30
|
|---------|---------|
|
|
33
31
|
| `ddd` | 複雑なビジネスドメインがある。集約・境界コンテキストで設計する必要がある |
|
|
34
32
|
| `layered` | CRUD 中心またはビジネスロジックがシンプル。UC・サービス層で設計すれば十分 |
|
|
35
33
|
|
|
36
|
-
|
|
34
|
+
6. 使用する AI 連携を確認する
|
|
37
35
|
|
|
38
36
|
| 連携 | フォルダ |
|
|
39
37
|
|------|---------|
|
|
@@ -41,11 +39,11 @@ Phase 5: architecture-skill-development へ自動移行
|
|
|
41
39
|
| `github` | `.github/`(GitHub Copilot) |
|
|
42
40
|
| 両方 | `.claude/` と `.github/` |
|
|
43
41
|
|
|
44
|
-
|
|
42
|
+
7. ユーザーに確認・承認を得る
|
|
45
43
|
|
|
46
44
|
## Phase 2: フォルダ構造の決定
|
|
47
45
|
|
|
48
|
-
|
|
46
|
+
この段階で決めた構造がテンプレートの `maps_to` パスに焼き込まれるため、概要設計より前に確定させる。
|
|
49
47
|
|
|
50
48
|
1. 以下をユーザーと対話しながら決める
|
|
51
49
|
- `src/` 配下のパッケージ・モジュール構成
|
|
@@ -63,7 +61,7 @@ Phase 5: architecture-skill-development へ自動移行
|
|
|
63
61
|
|
|
64
62
|
## Phase 4: architecture contract 作成
|
|
65
63
|
|
|
66
|
-
1. `.spec-runner/architecture/architecture.yaml`
|
|
64
|
+
1. `.spec-runner/architecture/architecture.yaml` を作る(`.spec-runner/` は補助情報として扱う)
|
|
67
65
|
2. 最低限、以下を構造化する
|
|
68
66
|
- **integrations**: Phase 1 で確認した連携(`[claude]` / `[github]` / `[claude, github]`)
|
|
69
67
|
- **style**: Phase 1 で選択したスタイル(`ddd` / `layered`)
|
|
@@ -82,10 +80,3 @@ Phase 4 が承認されたら、ユーザーにコマンドを打たせずに `a
|
|
|
82
80
|
2. project 専用 skill に切り出すべき反復フローを列挙する
|
|
83
81
|
3. 確認なしに `architecture-skill-development` Phase 1 へ進む
|
|
84
82
|
4. スキル整備完了後、プロジェクト専用スキルを使って概要設計へ進む
|
|
85
|
-
|
|
86
|
-
## 原則
|
|
87
|
-
|
|
88
|
-
- フォルダ構造を概要設計より前に確定する
|
|
89
|
-
- スキル整備が完了してから概要設計へ進む(テンプレートの `maps_to` を確定済み構造で焼き込むため)
|
|
90
|
-
- `.spec-runner/` は補助情報として扱う
|
|
91
|
-
- project 専用 skill を作る前にアーキテクチャを固める
|
|
@@ -5,9 +5,6 @@ description: architecture contract と docs を読み、プロジェクト専用
|
|
|
5
5
|
|
|
6
6
|
# architecture-skill-development
|
|
7
7
|
|
|
8
|
-
`architecture-definition` または `existing-project-to-docs` の後に使う。
|
|
9
|
-
決まったアーキテクチャから、そのプロジェクト専用の skill / rule / template を作る。
|
|
10
|
-
|
|
11
8
|
## 全体フロー
|
|
12
9
|
|
|
13
10
|
```
|
|
@@ -34,7 +31,7 @@ Phase 6: セットアップ専用 skill のアーカイブ提案
|
|
|
34
31
|
|
|
35
32
|
## Phase 3: skill / rule / template へ分解
|
|
36
33
|
|
|
37
|
-
ファイルを作成する前に `.claude/
|
|
34
|
+
ファイルを作成する前に `.claude/skills/harness-engineering/references/harness-format.md` を読み、フォーマットを確認する。
|
|
38
35
|
|
|
39
36
|
1. 会話フローは skill にする
|
|
40
37
|
2. 常時守る約束は rule にする
|
|
@@ -46,56 +43,31 @@ Phase 6: セットアップ専用 skill のアーカイブ提案
|
|
|
46
43
|
|
|
47
44
|
| style | 使う seed | 説明 |
|
|
48
45
|
|-------|----------|------|
|
|
49
|
-
| `ddd` | `
|
|
46
|
+
| `ddd` | `ddd-seed` | ドメイン層(集約・値オブジェクト)を持つ DDD 向けフロー |
|
|
50
47
|
| `layered` | `simple-seed` | ドメイン層を持たない UC・サービス層中心のフロー |
|
|
51
48
|
|
|
52
|
-
選んだ seed の SKILL.md
|
|
53
|
-
|
|
54
|
-
具体的には:
|
|
55
|
-
- 選んだ seed の SKILL.md をコピーして、project 専用の開発 skill の土台にする
|
|
56
|
-
- フェーズ構成・テンプレートパス・用語をこのプロジェクトの実態に合わせて書き換える
|
|
57
|
-
- Phase 1(要件定義)は architecture-definition で完了済みのため削除する
|
|
58
|
-
- 元の seed は書き換え完了後にアーカイブ候補とする(Phase 6 で提案する)
|
|
49
|
+
選んだ seed の SKILL.md をコピーし、フェーズ構成・テンプレートパス・用語をこのプロジェクトの実態に合わせて書き換えたプロジェクト専用 skill を作る(Phase 1 は完了済みのため削除する。元の seed はアーカイブ候補とする)。
|
|
59
50
|
|
|
60
51
|
4. ユーザーに確認・承認を得る
|
|
61
52
|
|
|
62
53
|
## Phase 4: 基盤 skill のプロジェクト固有化
|
|
63
54
|
|
|
64
55
|
インストール時に配布された基盤 skill のプレースホルダーを、このプロジェクトの実態に書き換える。
|
|
56
|
+
以降の書き換えはすべて `architecture.yaml` の `integrations` に従う(`claude` のみなら `.claude/` だけ、`github` のみなら `.github/` だけ、両方なら対で更新する)。
|
|
65
57
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
### testing.md の書き換え
|
|
58
|
+
### test-config.md の書き換え
|
|
69
59
|
|
|
70
|
-
`rules/
|
|
60
|
+
`rules/test-config.md`(GitHub Copilot は `instructions/test-config.instructions.md`)はテスト実行コマンドの単一ソースとして `test-driven-development` スキルと `run-tests` エージェントの両方から参照される。`architecture.yaml` の `testing_policy` を参照して書き換える。
|
|
71
61
|
|
|
72
62
|
1. **テスト実行コマンド**: `<your-unit-test-command>` / `<your-integration-test-command>` 等を実際のコマンドに書き換える
|
|
73
|
-
|
|
74
|
-
例:
|
|
75
|
-
```bash
|
|
76
|
-
# 全テスト
|
|
77
|
-
docker compose run --rm test pytest
|
|
78
|
-
|
|
79
|
-
# 特定ファイル
|
|
80
|
-
docker compose run --rm test pytest tests/path/to/test_file.py
|
|
81
|
-
|
|
82
|
-
# カバレッジ計測
|
|
83
|
-
docker compose run --rm test pytest --cov=. --cov-report=term-missing
|
|
84
|
-
```
|
|
85
|
-
|
|
86
63
|
2. **テスト構成**: `tests/` のディレクトリ構成が実態と異なる場合は書き換える
|
|
87
64
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
### test-driven-development の書き換え(テストコマンド以外)
|
|
65
|
+
### test-driven-development の書き換え
|
|
91
66
|
|
|
92
67
|
`architecture.yaml` の `language` を参照して、以下を実際の値に置き換える。
|
|
93
68
|
|
|
94
|
-
1.
|
|
95
|
-
2.
|
|
96
|
-
3. **モックのルール**: 使用する外部サービスとモック手段(ライブラリ名など)を具体化する
|
|
97
|
-
|
|
98
|
-
上記の `integrations` ルールに従って反映する。
|
|
69
|
+
1. **fixture / テストデータ**: このプロジェクトの実際のクラス名・DB 接続方法・ヘルパ関数パターンを記述する
|
|
70
|
+
2. **モックのルール**: 使用する外部サービスとモック手段(ライブラリ名など)を具体化する
|
|
99
71
|
|
|
100
72
|
### 影響範囲チェックリストの書き換え
|
|
101
73
|
|
|
@@ -104,7 +76,7 @@ Phase 6: セットアップ専用 skill のアーカイブ提案
|
|
|
104
76
|
1. 変更カテゴリをプロジェクトの構成要素(モジュール・サービス・ドメインなど)に合わせて追加・削除する
|
|
105
77
|
2. 詳細設計のパスを `architecture.yaml` の `folder_structure` に合わせて書き換える
|
|
106
78
|
|
|
107
|
-
###
|
|
79
|
+
### code-style.md の書き換え
|
|
108
80
|
|
|
109
81
|
`architecture.yaml` の `language` と `folder_structure` を参照して、以下を実際の値に置き換える。
|
|
110
82
|
|
|
@@ -114,8 +86,6 @@ Phase 6: セットアップ専用 skill のアーカイブ提案
|
|
|
114
86
|
3. **言語・型固有ルール**: `<your-language-and-type-rules>` を言語・フレームワークに合わせた具体的なルールに書き換える
|
|
115
87
|
4. **プロジェクト構造**: `<your-project-structure>` を `folder_structure` の実際のディレクトリ構成に書き換える
|
|
116
88
|
|
|
117
|
-
上記の `integrations` ルールに従って反映する。
|
|
118
|
-
|
|
119
89
|
### その他の基盤 skill
|
|
120
90
|
|
|
121
91
|
同様のプレースホルダーや汎用記述が他の skill にあれば、同じ要領で書き換える。
|
|
@@ -137,9 +107,9 @@ Phase 6: セットアップ専用 skill のアーカイブ提案
|
|
|
137
107
|
|---|---|
|
|
138
108
|
| `architecture-definition` | 新規プロジェクト初期化専用。アーキテクチャ確定後は不要 |
|
|
139
109
|
| `existing-project-to-docs` | 既存プロジェクト取り込み専用。docs 生成後は不要 |
|
|
140
|
-
| `
|
|
141
|
-
| `simple-seed` |
|
|
142
|
-
| `architecture-skill-development`(このファイル自身) | project 専用 skill
|
|
110
|
+
| `ddd-seed` | style: ddd で seed 使用後は不要。ただし `architecture-definition` も同時アーカイブする場合のみ `templates/01_要件定義/` を削除可 |
|
|
111
|
+
| `simple-seed` | style: layered で seed 使用後は不要 |
|
|
112
|
+
| `architecture-skill-development`(このファイル自身) | project 専用 skill が安定したら不要。アーキテクチャ大変更時は再利用可 |
|
|
143
113
|
|
|
144
114
|
### 手順
|
|
145
115
|
|
|
@@ -149,7 +119,7 @@ Phase 6: セットアップ専用 skill のアーカイブ提案
|
|
|
149
119
|
4. `.spec-runner/` の不要ファイルも整理する
|
|
150
120
|
- `intake/current-system-inventory.md` — docs に昇格済みなら削除してよい
|
|
151
121
|
- `architecture/architecture.yaml` — project 専用 skill が完成し、参照不要になったら削除してよい
|
|
152
|
-
- `scripts/scan.js` — **削除しない**。`@impact
|
|
122
|
+
- `scripts/scan.js` — **削除しない**。`@analyze-impact` が常時依存しているため
|
|
153
123
|
5. `CLAUDE.md` を更新する
|
|
154
124
|
- 「初回自動起動」セクション(spec-runner インストール時に生成されたもの)を削除する
|
|
155
125
|
- 作成した project 専用 skill の名前と使いどころを記載する
|
|
@@ -161,10 +131,3 @@ Phase 6: セットアップ専用 skill のアーカイブ提案
|
|
|
161
131
|
テストを書くときは `/test-driven-development` を使う。
|
|
162
132
|
```
|
|
163
133
|
- `.claude/` と `.github/` 両系で内容が変わる場合は、それぞれに反映する
|
|
164
|
-
|
|
165
|
-
## 原則
|
|
166
|
-
|
|
167
|
-
- 固定の architecture pack を増やしすぎない
|
|
168
|
-
- project 専用 skill を先に考える
|
|
169
|
-
- docs と architecture contract の両方を入力にする
|
|
170
|
-
- skill の削除・移動はユーザー承認なしに行わない
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: ddd-seed
|
|
3
3
|
description: UC/DDD 駆動の docs 正本開発フローの種。新規プロジェクトの初期テンプレートとして使い、architecture-skill-development でプロジェクト専用スキルに育てる。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
7
|
-
|
|
8
|
-
> DDD を採用するプロジェクト向けの docs 正本開発フロー(種)。`architecture.yaml` の `style: ddd` で使う。レイヤード / CRUD 中心は `simple-seed` を使う。
|
|
9
|
-
> このスキルは種。`architecture-skill-development` でプロジェクト専用スキルに育てる。
|
|
6
|
+
# ddd-seed
|
|
10
7
|
|
|
11
8
|
## 全体フロー
|
|
12
9
|
|
|
@@ -20,9 +17,9 @@ Phase 5: TDD → 実装
|
|
|
20
17
|
|
|
21
18
|
## 前提ルール
|
|
22
19
|
|
|
23
|
-
- docs は正本とし、各ドキュメントに `spec_runner
|
|
20
|
+
- docs は正本とし、各ドキュメントに `spec_runner`ヘッダーを付ける
|
|
24
21
|
- 詳細設計は `01_ドメイン/` `02_ユースケース/` `03_DB・外部サービス/` の 3 層で構成する
|
|
25
|
-
- UC
|
|
22
|
+
- ドメインを先に設計し、UC はドメインを参照する形で書く。ドメインの中に UC は入れない
|
|
26
23
|
- `maps_to` は必ず設定する。パス推定に頼らない
|
|
27
24
|
- ユーザー承認なしに次フェーズへ進めない
|
|
28
25
|
|
|
@@ -112,13 +109,3 @@ docs/03_詳細設計/03_DB・外部サービス/
|
|
|
112
109
|
## Phase 5: TDD → 実装
|
|
113
110
|
|
|
114
111
|
`test-driven-development` スキルへ移行する。
|
|
115
|
-
|
|
116
|
-
### 実装完了後
|
|
117
|
-
|
|
118
|
-
- `@design-reviewer` — 設計書⇔実装の整合性チェック
|
|
119
|
-
- `@code-reviewer` — コーディング規約への適合チェック
|
|
120
|
-
|
|
121
|
-
## 原則
|
|
122
|
-
|
|
123
|
-
- ドメインを先に設計し、UC はドメインを参照する形で書く
|
|
124
|
-
- `maps_to` は必ず設定する。パス推定に頼らない
|
|
@@ -5,7 +5,7 @@ description: 既存機能の変更を docs 正本で進めるフローガイド
|
|
|
5
5
|
|
|
6
6
|
# design-change
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
フェーズは順番通りに進める。ユーザーの承認なしに先へ進めない。
|
|
9
9
|
|
|
10
10
|
影響範囲のチェックリストは `references/影響範囲チェックリスト.md` を参照する。
|
|
11
11
|
ADR テンプレートは `templates/90_ADR/ADRテンプレート.md` を使用する。
|
|
@@ -23,15 +23,16 @@ Phase 6: TDD → 実装 → 検証
|
|
|
23
23
|
|
|
24
24
|
## Phase 1: 変更要求の整理と軽い影響調査
|
|
25
25
|
|
|
26
|
-
1.
|
|
26
|
+
1. 曖昧な前提があれば `spec-probe` スキルで先に整理する
|
|
27
|
+
2. 以下をユーザーにヒアリングする
|
|
27
28
|
- 変更の背景・課題
|
|
28
29
|
- 変更の目的・期待する結果
|
|
29
30
|
- 影響を受ける機能カテゴリ
|
|
30
31
|
- 技術的・ビジネス的制約
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
3. 変更起点となる docs を特定する
|
|
33
|
+
4. `@analyze-impact` に委任して `depends_on` / `maps_to` を辿る影響ファイルを洗い出す
|
|
34
|
+
5. 変更が影響するドメインと成果物を一覧化する
|
|
35
|
+
6. ユーザーに確認・承認を得る
|
|
35
36
|
|
|
36
37
|
## Phase 2: ADR 作成(必要時)
|
|
37
38
|
|
|
@@ -55,23 +56,20 @@ Phase 6: TDD → 実装 → 検証
|
|
|
55
56
|
## Phase 3: 影響ドキュメントの確定
|
|
56
57
|
|
|
57
58
|
1. `references/影響範囲チェックリスト.md` を読み、変更に応じた影響ドキュメントを網羅的に洗い出す
|
|
58
|
-
2
|
|
59
|
+
2.ヘッダーの `depends_on` / `maps_to` を使って候補を絞る
|
|
59
60
|
3. 修正が必要なファイルをチェックリスト形式で提示する
|
|
60
|
-
4. `@design
|
|
61
|
+
4. `@review-design` エージェントに委任して、現時点の設計書⇔実装の乖離も合わせて確認する
|
|
61
62
|
5. ユーザーに確認・承認を得る
|
|
62
63
|
|
|
63
64
|
## Phase 4: 概要設計の修正
|
|
64
65
|
|
|
66
|
+
概要設計では「何をするか」に留める。変更理由は ADR または本文で追えるようにする。
|
|
67
|
+
|
|
65
68
|
1. `ユースケース一覧.md` / `システム全体俯瞰.md` / ADR を必要順に修正する
|
|
66
69
|
2. `style: ddd` の場合: `ドメインモデル.md` も必要に応じて修正する
|
|
67
70
|
3. 修正完了ごとにチェックリストを更新する
|
|
68
71
|
4. 全概要設計の修正完了後、ユーザーに確認・承認を得る
|
|
69
72
|
|
|
70
|
-
### 修正時の注意
|
|
71
|
-
|
|
72
|
-
- 変更理由は ADR または本文で追えるようにする
|
|
73
|
-
- 概要設計では「何をするか」に留める
|
|
74
|
-
|
|
75
73
|
## Phase 5: 詳細設計の修正
|
|
76
74
|
|
|
77
75
|
`style: ddd` の場合:
|
|
@@ -85,19 +83,8 @@ Phase 6: TDD → 実装 → 検証
|
|
|
85
83
|
1. `docs/03_詳細設計/01_ユースケース/**` の UC 設計を修正する
|
|
86
84
|
2. DB・外部サービスの変更がある場合は `docs/03_詳細設計/02_DB・外部サービス/**` を修正する
|
|
87
85
|
|
|
88
|
-
|
|
86
|
+
ヘッダー の `depends_on` / `maps_to` を更新する。ユーザーに最終確認を得る。
|
|
89
87
|
|
|
90
88
|
## Phase 6: TDD → 実装 → 検証
|
|
91
89
|
|
|
92
90
|
設計書修正が承認されたら `test-driven-development` スキルへ移行する。
|
|
93
|
-
|
|
94
|
-
### 実装完了後のレビュー
|
|
95
|
-
|
|
96
|
-
- `@design-reviewer` — frontmatter と `maps_to` を起点に設計書⇔実装の整合性チェック
|
|
97
|
-
- `@code-reviewer` — コーディング規約への適合チェック
|
|
98
|
-
|
|
99
|
-
## 原則
|
|
100
|
-
|
|
101
|
-
- 影響候補の洗い出しを ADR より先に行う
|
|
102
|
-
- 概要設計を先に直し、そのあと詳細設計を直す
|
|
103
|
-
- frontmatter の更新を後回しにしない
|
|
@@ -56,4 +56,4 @@ design-change の Phase 3(影響ドキュメントの確定)で参照する
|
|
|
56
56
|
- **ユースケース一覧 ↔ 詳細設計**: 一覧に記載の UC が詳細設計でカバーされているか
|
|
57
57
|
- **システム全体俯瞰 ↔ 詳細設計**: 責務分割が詳細設計に落ちているか
|
|
58
58
|
- **ドメイン設計 ↔ DB スキーマ**: ドメインのフィールドが DB カラムと対応しているか(style: ddd のみ)
|
|
59
|
-
-
|
|
59
|
+
- **ヘッダー ↔ 実ファイル**: `depends_on` と `maps_to` が現状に追随しているか
|