spec-runner 1.1.18 → 1.2.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/.claude/agents/test-runner.md +4 -3
- package/spec-runner/templates/.claude/rules/design-docs.md +8 -7
- package/spec-runner/templates/.claude/rules/testing.md +39 -0
- package/spec-runner/templates/.claude/skills/architecture-skill-development/SKILL.md +12 -12
- package/spec-runner/templates/.claude/skills/test-driven-development/SKILL.md +1 -22
- package/spec-runner/templates/.github/agents/test-runner.agent.md +4 -3
- package/spec-runner/templates/.github/instructions/design-docs.instructions.md +8 -7
- package/spec-runner/templates/.github/instructions/testing.instructions.md +38 -0
- package/spec-runner/templates/.github/skills/architecture-skill-development/SKILL.md +14 -14
- package/spec-runner/templates/.github/skills/test-driven-development/SKILL.md +1 -22
package/package.json
CHANGED
|
@@ -15,9 +15,10 @@ model: sonnet
|
|
|
15
15
|
|
|
16
16
|
1. `git diff --name-only` で変更ファイルを確認する
|
|
17
17
|
2. 変更ファイルに対応するテストファイルを特定する(`tests/` 配下の同構造)
|
|
18
|
-
3.
|
|
19
|
-
|
|
20
|
-
-
|
|
18
|
+
3. `.claude/rules/testing.md` を読んでテスト実行コマンドを確認する
|
|
19
|
+
4. テストを実行する:
|
|
20
|
+
- 対象テストが明確な場合: テストコマンド + `<test-file> -v`
|
|
21
|
+
- 全体実行が必要な場合: 全テストコマンド + `-v`
|
|
21
22
|
4. 結果を分析する
|
|
22
23
|
|
|
23
24
|
## 失敗時の分析
|
|
@@ -45,10 +45,10 @@ spec_runner:
|
|
|
45
45
|
|------|-------------|-----|
|
|
46
46
|
| 要件定義 | `requirement.{名前}` | `requirement.要件定義` |
|
|
47
47
|
| システム全体俯瞰 | `overview.system_context` | — |
|
|
48
|
-
|
|
|
48
|
+
| ドメインモデル(style: ddd のみ) | `overview.domain_model` | — |
|
|
49
49
|
| ユースケース一覧 | `overview.use_case_list` | — |
|
|
50
50
|
| ADR | `overview.adr.{slug}` | `overview.adr.0404-ドメイン-注文集約` |
|
|
51
|
-
|
|
|
51
|
+
| ドメイン詳細設計(style: ddd のみ) | `detail.domain.{ドメイン名}` | `detail.domain.注文` |
|
|
52
52
|
| UC 詳細設計 | `detail.usecase.{UC名}` | `detail.usecase.注文確定` |
|
|
53
53
|
| DB・外部サービス | `detail.db.{名前}` | `detail.db.スキーマ定義` |
|
|
54
54
|
|
|
@@ -57,12 +57,13 @@ spec_runner:
|
|
|
57
57
|
| 対象 | 規則 | 例 |
|
|
58
58
|
|------|------|-----|
|
|
59
59
|
| `docs/01_要件定義` | 日本語 | `要件定義.md`, `ユビキタス言語辞書.md` |
|
|
60
|
-
| `docs/02_概要設計` | 日本語 | `ユースケース一覧.md`, `システム全体俯瞰.md
|
|
60
|
+
| `docs/02_概要設計` | 日本語 | `ユースケース一覧.md`, `システム全体俯瞰.md` |
|
|
61
|
+
| `docs/02_概要設計`(style: ddd のみ) | 日本語 | `ドメインモデル.md` |
|
|
61
62
|
| `docs/02_概要設計/90_ADR/{対象}/` | `mmdd-{日本語タイトル}.md` | `0404-注文集約の設計.md` |
|
|
62
63
|
| `{対象}` の選択肢 | `全体` / `ドメイン` / `UC` / `DB` | — |
|
|
63
|
-
| `docs/03_詳細設計/01_
|
|
64
|
-
| `docs/03_詳細設計/02_
|
|
65
|
-
| `docs/03_詳細設計/03_DB
|
|
64
|
+
| `docs/03_詳細設計/01_ドメイン`(style: ddd のみ) | 日本語 | `注文.md`, `在庫.md` |
|
|
65
|
+
| `docs/03_詳細設計/02_ユースケース`(style: ddd) / `01_ユースケース`(style: layered) | `UC-{日本語名}.md` | `UC-注文確定.md` |
|
|
66
|
+
| `docs/03_詳細設計/03_DB・外部サービス`(style: ddd) / `02_DB・外部サービス`(style: layered) | 日本語 | `スキーマ定義.dbml`, `外部サービス.md` |
|
|
66
67
|
|
|
67
68
|
## ADR
|
|
68
69
|
|
|
@@ -84,7 +85,7 @@ spec_runner:
|
|
|
84
85
|
- 「関連ドキュメント」セクションを設計書に作らない。依存関係は frontmatter の `depends_on` で管理する
|
|
85
86
|
- 「スケジュール」セクションを設計書に作らない。進捗管理は設計書の責務ではない
|
|
86
87
|
|
|
87
|
-
##
|
|
88
|
+
## ドメインモデルとデータモデルの分離(style: ddd のみ)
|
|
88
89
|
|
|
89
90
|
ドメインモデルとデータモデルは別物であり、置き場所も内容も分ける。
|
|
90
91
|
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: テスト実行コマンドと種別構成。test-driven-development スキルと test-runner エージェントの両方がここを参照する。
|
|
3
|
+
paths: ["src/**", "tests/**"]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# テスト実行コマンド
|
|
7
|
+
|
|
8
|
+
> このファイルは `architecture-skill-development` でプロジェクト固有のコマンドに書き換えてください。
|
|
9
|
+
|
|
10
|
+
## 実行コマンド
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
# 単体テスト(高速・毎回実行)
|
|
14
|
+
<your-unit-test-command>
|
|
15
|
+
|
|
16
|
+
# 結合テスト
|
|
17
|
+
<your-integration-test-command>
|
|
18
|
+
|
|
19
|
+
# E2E テスト
|
|
20
|
+
<your-e2e-test-command>
|
|
21
|
+
|
|
22
|
+
# 全テスト
|
|
23
|
+
<your-all-test-command>
|
|
24
|
+
|
|
25
|
+
# 特定ファイル
|
|
26
|
+
<your-test-command> <test-file>
|
|
27
|
+
|
|
28
|
+
# カバレッジ計測
|
|
29
|
+
<your-test-command> --coverage
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## テスト構成
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
tests/
|
|
36
|
+
unit/ # 単体テスト(src/ と同じ構造を鏡写し)
|
|
37
|
+
integration/ # 結合テスト
|
|
38
|
+
e2e/ # E2E テスト
|
|
39
|
+
```
|
|
@@ -65,11 +65,11 @@ Phase 6: セットアップ専用 skill のアーカイブ提案
|
|
|
65
65
|
|
|
66
66
|
> 以降の書き換えはすべて `architecture.yaml` の `integrations` に従う。`claude` のみなら `.claude/` だけ、`github` のみなら `.github/` だけ、両方なら対で更新する。
|
|
67
67
|
|
|
68
|
-
###
|
|
68
|
+
### testing.md の書き換え
|
|
69
69
|
|
|
70
|
-
`architecture.yaml` の `testing_policy`
|
|
70
|
+
`rules/testing.md`(GitHub Copilot は `instructions/testing.instructions.md`)はテスト実行コマンドの単一ソースとして `test-driven-development` スキルと `test-runner` エージェントの両方から参照される。`architecture.yaml` の `testing_policy` を参照して書き換える。
|
|
71
71
|
|
|
72
|
-
1. **テスト実行コマンド**: `<your-test-command>`
|
|
72
|
+
1. **テスト実行コマンド**: `<your-unit-test-command>` / `<your-integration-test-command>` 等を実際のコマンドに書き換える
|
|
73
73
|
|
|
74
74
|
例:
|
|
75
75
|
```bash
|
|
@@ -83,20 +83,19 @@ Phase 6: セットアップ専用 skill のアーカイブ提案
|
|
|
83
83
|
docker compose run --rm test pytest --cov=. --cov-report=term-missing
|
|
84
84
|
```
|
|
85
85
|
|
|
86
|
-
2.
|
|
87
|
-
|
|
88
|
-
3. **fixture / テストデータ**: このプロジェクトの実際のクラス名・DB 接続方法・ヘルパ関数パターンを記述する
|
|
89
|
-
|
|
90
|
-
4. **モックのルール**: 使用する外部サービスとモック手段(ライブラリ名など)を具体化する
|
|
86
|
+
2. **テスト構成**: `tests/` のディレクトリ構成が実態と異なる場合は書き換える
|
|
91
87
|
|
|
92
88
|
上記の `integrations` ルールに従って反映する。
|
|
93
89
|
|
|
94
|
-
### test-
|
|
90
|
+
### test-driven-development の書き換え(テストコマンド以外)
|
|
95
91
|
|
|
96
|
-
`architecture.yaml` の `
|
|
92
|
+
`architecture.yaml` の `language` を参照して、以下を実際の値に置き換える。
|
|
97
93
|
|
|
98
|
-
1.
|
|
99
|
-
2.
|
|
94
|
+
1. **コード例**: 言語・フレームワークに合わせて RED / GREEN の例を書き直す
|
|
95
|
+
2. **fixture / テストデータ**: このプロジェクトの実際のクラス名・DB 接続方法・ヘルパ関数パターンを記述する
|
|
96
|
+
3. **モックのルール**: 使用する外部サービスとモック手段(ライブラリ名など)を具体化する
|
|
97
|
+
|
|
98
|
+
上記の `integrations` ルールに従って反映する。
|
|
100
99
|
|
|
101
100
|
### 影響範囲チェックリストの書き換え
|
|
102
101
|
|
|
@@ -148,6 +147,7 @@ Phase 6: セットアップ専用 skill のアーカイブ提案
|
|
|
148
147
|
4. `.spec-runner/` の不要ファイルも整理する
|
|
149
148
|
- `intake/current-system-inventory.md` — docs に昇格済みなら削除してよい
|
|
150
149
|
- `architecture/architecture.yaml` — project 専用 skill が完成し、参照不要になったら削除してよい
|
|
150
|
+
- `scripts/scan.js` — **削除しない**。`@impact-analyzer` が常時依存しているため
|
|
151
151
|
5. `CLAUDE.md` を更新する
|
|
152
152
|
- 「初回自動起動」セクション(spec-runner インストール時に生成されたもの)を削除する
|
|
153
153
|
- 作成した project 専用 skill の名前と使いどころを記載する
|
|
@@ -95,28 +95,7 @@ description: 新機能実装やバグ修正を行う際、実装コードを書
|
|
|
95
95
|
|
|
96
96
|
## テスト実行コマンド
|
|
97
97
|
|
|
98
|
-
|
|
99
|
-
> `architecture-skill-development` を使ってプロジェクト固有のコマンドに書き換えてください。
|
|
100
|
-
|
|
101
|
-
```bash
|
|
102
|
-
# 単体テスト(高速・毎回実行)
|
|
103
|
-
<your-unit-test-command>
|
|
104
|
-
|
|
105
|
-
# 結合テスト
|
|
106
|
-
<your-integration-test-command>
|
|
107
|
-
|
|
108
|
-
# E2E テスト
|
|
109
|
-
<your-e2e-test-command>
|
|
110
|
-
|
|
111
|
-
# 全テスト
|
|
112
|
-
<your-test-command>
|
|
113
|
-
|
|
114
|
-
# 特定ファイル
|
|
115
|
-
<your-test-command> <test-file>
|
|
116
|
-
|
|
117
|
-
# カバレッジ計測
|
|
118
|
-
<your-test-command> --coverage
|
|
119
|
-
```
|
|
98
|
+
`.claude/rules/testing.md` に記載されたコマンドを使う。
|
|
120
99
|
|
|
121
100
|
## Red-Green-Refactor
|
|
122
101
|
|
|
@@ -15,9 +15,10 @@ model: sonnet
|
|
|
15
15
|
|
|
16
16
|
1. `git diff --name-only` で変更ファイルを確認する
|
|
17
17
|
2. 変更ファイルに対応するテストファイルを特定する(`tests/` 配下の同構造)
|
|
18
|
-
3.
|
|
19
|
-
|
|
20
|
-
-
|
|
18
|
+
3. `.github/instructions/testing.instructions.md` を読んでテスト実行コマンドを確認する
|
|
19
|
+
4. テストを実行する:
|
|
20
|
+
- 対象テストが明確な場合: テストコマンド + `<test-file> -v`
|
|
21
|
+
- 全体実行が必要な場合: 全テストコマンド + `-v`
|
|
21
22
|
4. 結果を分析する
|
|
22
23
|
|
|
23
24
|
## 失敗時の分析
|
|
@@ -44,10 +44,10 @@ spec_runner:
|
|
|
44
44
|
|------|-------------|-----|
|
|
45
45
|
| 要件定義 | `requirement.{名前}` | `requirement.要件定義` |
|
|
46
46
|
| システム全体俯瞰 | `overview.system_context` | — |
|
|
47
|
-
|
|
|
47
|
+
| ドメインモデル(style: ddd のみ) | `overview.domain_model` | — |
|
|
48
48
|
| ユースケース一覧 | `overview.use_case_list` | — |
|
|
49
49
|
| ADR | `overview.adr.{slug}` | `overview.adr.0404-ドメイン-注文集約` |
|
|
50
|
-
|
|
|
50
|
+
| ドメイン詳細設計(style: ddd のみ) | `detail.domain.{ドメイン名}` | `detail.domain.注文` |
|
|
51
51
|
| UC 詳細設計 | `detail.usecase.{UC名}` | `detail.usecase.注文確定` |
|
|
52
52
|
| DB・外部サービス | `detail.db.{名前}` | `detail.db.スキーマ定義` |
|
|
53
53
|
|
|
@@ -56,12 +56,13 @@ spec_runner:
|
|
|
56
56
|
| 対象 | 規則 | 例 |
|
|
57
57
|
|------|------|-----|
|
|
58
58
|
| `docs/01_要件定義` | 日本語 | `要件定義.md`, `ユビキタス言語辞書.md` |
|
|
59
|
-
| `docs/02_概要設計` | 日本語 | `ユースケース一覧.md`, `システム全体俯瞰.md
|
|
59
|
+
| `docs/02_概要設計` | 日本語 | `ユースケース一覧.md`, `システム全体俯瞰.md` |
|
|
60
|
+
| `docs/02_概要設計`(style: ddd のみ) | 日本語 | `ドメインモデル.md` |
|
|
60
61
|
| `docs/02_概要設計/90_ADR/{対象}/` | `mmdd-{日本語タイトル}.md` | `0404-注文集約の設計.md` |
|
|
61
62
|
| `{対象}` の選択肢 | `全体` / `ドメイン` / `UC` / `DB` | — |
|
|
62
|
-
| `docs/03_詳細設計/01_
|
|
63
|
-
| `docs/03_詳細設計/02_
|
|
64
|
-
| `docs/03_詳細設計/03_DB
|
|
63
|
+
| `docs/03_詳細設計/01_ドメイン`(style: ddd のみ) | 日本語 | `注文.md`, `在庫.md` |
|
|
64
|
+
| `docs/03_詳細設計/02_ユースケース`(style: ddd) / `01_ユースケース`(style: layered) | `UC-{日本語名}.md` | `UC-注文確定.md` |
|
|
65
|
+
| `docs/03_詳細設計/03_DB・外部サービス`(style: ddd) / `02_DB・外部サービス`(style: layered) | 日本語 | `スキーマ定義.dbml`, `外部サービス.md` |
|
|
65
66
|
|
|
66
67
|
## ADR
|
|
67
68
|
|
|
@@ -83,7 +84,7 @@ spec_runner:
|
|
|
83
84
|
- 「関連ドキュメント」セクションを設計書に作らない。依存関係は frontmatter の `depends_on` で管理する
|
|
84
85
|
- 「スケジュール」セクションを設計書に作らない。進捗管理は設計書の責務ではない
|
|
85
86
|
|
|
86
|
-
##
|
|
87
|
+
## ドメインモデルとデータモデルの分離(style: ddd のみ)
|
|
87
88
|
|
|
88
89
|
ドメインモデルとデータモデルは別物であり、置き場所も内容も分ける。
|
|
89
90
|
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
applyTo: "src/**,tests/**"
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# テスト実行コマンド
|
|
6
|
+
|
|
7
|
+
> このファイルは `architecture-skill-development` でプロジェクト固有のコマンドに書き換えてください。
|
|
8
|
+
|
|
9
|
+
## 実行コマンド
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# 単体テスト(高速・毎回実行)
|
|
13
|
+
<your-unit-test-command>
|
|
14
|
+
|
|
15
|
+
# 結合テスト
|
|
16
|
+
<your-integration-test-command>
|
|
17
|
+
|
|
18
|
+
# E2E テスト
|
|
19
|
+
<your-e2e-test-command>
|
|
20
|
+
|
|
21
|
+
# 全テスト
|
|
22
|
+
<your-all-test-command>
|
|
23
|
+
|
|
24
|
+
# 特定ファイル
|
|
25
|
+
<your-test-command> <test-file>
|
|
26
|
+
|
|
27
|
+
# カバレッジ計測
|
|
28
|
+
<your-test-command> --coverage
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## テスト構成
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
tests/
|
|
35
|
+
unit/ # 単体テスト(src/ と同じ構造を鏡写し)
|
|
36
|
+
integration/ # 結合テスト
|
|
37
|
+
e2e/ # E2E テスト
|
|
38
|
+
```
|
|
@@ -65,11 +65,11 @@ Phase 6: セットアップ専用 skill のアーカイブ提案
|
|
|
65
65
|
|
|
66
66
|
> 以降の書き換えはすべて `architecture.yaml` の `integrations` に従う。`claude` のみなら `.claude/` だけ、`github` のみなら `.github/` だけ、両方なら対で更新する。
|
|
67
67
|
|
|
68
|
-
###
|
|
68
|
+
### testing.md の書き換え
|
|
69
69
|
|
|
70
|
-
`architecture.yaml` の `testing_policy`
|
|
70
|
+
`instructions/testing.instructions.md` はテスト実行コマンドの単一ソースとして `test-driven-development` スキルと `test-runner` エージェントの両方から参照される。`architecture.yaml` の `testing_policy` を参照して書き換える。
|
|
71
71
|
|
|
72
|
-
1. **テスト実行コマンド**: `<your-test-command>`
|
|
72
|
+
1. **テスト実行コマンド**: `<your-unit-test-command>` / `<your-integration-test-command>` 等を実際のコマンドに書き換える
|
|
73
73
|
|
|
74
74
|
例:
|
|
75
75
|
```bash
|
|
@@ -83,20 +83,19 @@ Phase 6: セットアップ専用 skill のアーカイブ提案
|
|
|
83
83
|
docker compose run --rm test pytest --cov=. --cov-report=term-missing
|
|
84
84
|
```
|
|
85
85
|
|
|
86
|
-
2.
|
|
86
|
+
2. **テスト構成**: `tests/` のディレクトリ構成が実態と異なる場合は書き換える
|
|
87
87
|
|
|
88
|
-
|
|
88
|
+
上記の `integrations` ルールに従って反映する。
|
|
89
89
|
|
|
90
|
-
|
|
90
|
+
### test-driven-development の書き換え(テストコマンド以外)
|
|
91
91
|
|
|
92
|
-
|
|
92
|
+
`architecture.yaml` の `language` を参照して、以下を実際の値に置き換える。
|
|
93
93
|
|
|
94
|
-
|
|
94
|
+
1. **コード例**: 言語・フレームワークに合わせて RED / GREEN の例を書き直す
|
|
95
|
+
2. **fixture / テストデータ**: このプロジェクトの実際のクラス名・DB 接続方法・ヘルパ関数パターンを記述する
|
|
96
|
+
3. **モックのルール**: 使用する外部サービスとモック手段(ライブラリ名など)を具体化する
|
|
95
97
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
1. **テスト実行コマンド**: `<your-test-command>` を実際のコマンドに書き換える
|
|
99
|
-
2. **説明文**: 実行環境(Docker / ローカル など)が分かるよう補足する
|
|
98
|
+
上記の `integrations` ルールに従って反映する。
|
|
100
99
|
|
|
101
100
|
### 影響範囲チェックリストの書き換え
|
|
102
101
|
|
|
@@ -113,7 +112,7 @@ Phase 6: セットアップ専用 skill のアーカイブ提案
|
|
|
113
112
|
2. **言語・型固有ルール**: `<your-language-and-type-rules>` を言語・フレームワークに合わせた具体的なルールに書き換える
|
|
114
113
|
3. **プロジェクト構造**: `<your-project-structure>` を `folder_structure` の実際のディレクトリ構成に書き換える
|
|
115
114
|
|
|
116
|
-
|
|
115
|
+
上記の `integrations` ルールに従って反映する。
|
|
117
116
|
|
|
118
117
|
### その他の基盤 skill
|
|
119
118
|
|
|
@@ -143,11 +142,12 @@ Phase 6: セットアップ専用 skill のアーカイブ提案
|
|
|
143
142
|
### 手順
|
|
144
143
|
|
|
145
144
|
1. 上記の候補をユーザーに提示し、整理してよいか確認する
|
|
146
|
-
2. 承認を得た skill
|
|
145
|
+
2. 承認を得た skill を削除する(`integrations` に従い `.claude/skills/` / `.github/skills/` の該当するほうを削除する)
|
|
147
146
|
3. 必要であれば削除前にバックアップ先をユーザーに伝える
|
|
148
147
|
4. `.spec-runner/` の不要ファイルも整理する
|
|
149
148
|
- `intake/current-system-inventory.md` — docs に昇格済みなら削除してよい
|
|
150
149
|
- `architecture/architecture.yaml` — project 専用 skill が完成し、参照不要になったら削除してよい
|
|
150
|
+
- `scripts/scan.js` — **削除しない**。`@impact-analyzer` が常時依存しているため
|
|
151
151
|
5. `CLAUDE.md` を更新する
|
|
152
152
|
- 「初回自動起動」セクション(spec-runner インストール時に生成されたもの)を削除する
|
|
153
153
|
- 作成した project 専用 skill の名前と使いどころを記載する
|
|
@@ -95,28 +95,7 @@ description: 新機能実装やバグ修正を行う際、実装コードを書
|
|
|
95
95
|
|
|
96
96
|
## テスト実行コマンド
|
|
97
97
|
|
|
98
|
-
|
|
99
|
-
> `architecture-skill-development` を使ってプロジェクト固有のコマンドに書き換えてください。
|
|
100
|
-
|
|
101
|
-
```bash
|
|
102
|
-
# 単体テスト(高速・毎回実行)
|
|
103
|
-
<your-unit-test-command>
|
|
104
|
-
|
|
105
|
-
# 結合テスト
|
|
106
|
-
<your-integration-test-command>
|
|
107
|
-
|
|
108
|
-
# E2E テスト
|
|
109
|
-
<your-e2e-test-command>
|
|
110
|
-
|
|
111
|
-
# 全テスト
|
|
112
|
-
<your-test-command>
|
|
113
|
-
|
|
114
|
-
# 特定ファイル
|
|
115
|
-
<your-test-command> <test-file>
|
|
116
|
-
|
|
117
|
-
# カバレッジ計測
|
|
118
|
-
<your-test-command> --coverage
|
|
119
|
-
```
|
|
98
|
+
`.github/instructions/testing.instructions.md` に記載されたコマンドを使う。
|
|
120
99
|
|
|
121
100
|
## Red-Green-Refactor
|
|
122
101
|
|