spec-runner 1.0.6 → 1.0.8
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/README.md +36 -184
- package/bin/spec-runner.js +157 -703
- package/install.sh +6 -12
- package/package.json +3 -7
- package/templates/.spec-runner/hooks/pre-commit +47 -0
- package/templates/.spec-runner/hooks/pre-push +9 -0
- package/templates/.spec-runner/project.json.example +27 -0
- package/templates/.spec-runner/scripts/branch/uc-next-start.sh +172 -0
- package/templates/.spec-runner/scripts/check.sh +403 -0
- package/templates/.spec-runner/scripts/spec-runner-core.sh +411 -0
- package/templates/.spec-runner/scripts/test/require-tests-green.sh +27 -0
- package/templates/.spec-runner/spec-runner.sh +30 -0
- package/templates/.spec-runner/steps/steps.json +171 -0
- package/templates/.spec-runner/steps//343/201/235/343/201/256/344/273/226/344/275/234/346/245/255.md +34 -0
- package/templates/.spec-runner/steps//343/202/277/343/202/271/343/202/257/344/270/200/350/246/247.md +95 -0
- package/templates/.spec-runner/steps//343/203/201/343/202/247/343/203/203/343/202/257/343/203/252/343/202/271/343/203/210.md +80 -0
- package/templates/.spec-runner/steps//343/203/206/343/202/271/343/203/210/350/250/255/350/250/210.md +57 -0
- package/templates/.spec-runner/steps//343/203/211/343/203/241/343/202/244/343/203/263/350/250/255/350/250/210.md +52 -0
- package/templates/.spec-runner/steps//344/273/225/346/247/230/347/255/226/345/256/232.md +173 -0
- package/templates/.spec-runner/steps//345/210/206/346/236/220.md +104 -0
- package/templates/.spec-runner/steps//345/256/237/350/243/205.md +79 -0
- package/templates/.spec-runner/steps//345/256/237/350/243/205/350/250/210/347/224/273.md +96 -0
- package/templates/.spec-runner/steps//346/206/262/347/253/240.md +95 -0
- package/templates/.spec-runner/steps//346/233/226/346/230/247/343/201/225/350/247/243/346/266/210.md +99 -0
- package/templates/.spec-runner/templates/UC-N-MMDD-/345/210/244/346/226/255/350/250/230/351/214/262/343/203/206/343/203/263/343/203/227/343/203/254.md +33 -0
- package/templates/.spec-runner/templates/UC-N-/343/203/246/343/203/274/343/202/271/343/202/261/343/203/274/343/202/271/345/220/215.md +20 -0
- package/templates/.spec-runner/templates/grade-history.json +5 -0
- package/templates/.spec-runner/templates/phase-locks.json +29 -0
- package/templates/.spec-runner/templates//343/203/211/343/203/241/343/202/244/343/203/263/343/203/242/343/203/207/343/203/253.md +21 -0
- package/templates/.spec-runner/templates//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 +16 -0
- package/templates/.spec-runner/templates//346/206/262/347/253/240.md +51 -0
- package/templates/.spec-runner/templates//351/233/206/347/264/204.md +46 -0
- package/templates/spec-runner-command.md +42 -0
- package/templates/base/.github/PULL_REQUEST_TEMPLATE.md +0 -43
- package/templates/base/.github/workflows/phase-gate-check.yml +0 -216
- package/templates/base/scripts/spec-runner.sh +0 -1144
- package/templates/base/templates/01_/350/246/201/344/273/266/345/256/232/347/276/251//343/201/262/343/201/252/345/275/242.md +0 -40
- package/templates/base/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210//343/202/244/343/203/263/343/203/225/343/203/251.md +0 -14
- package/templates/base/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210//343/203/206/343/203/274/343/203/226/343/203/253.md +0 -17
- package/templates/base/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210//343/203/211/343/203/241/343/202/244/343/203/263.md +0 -18
- package/templates/base/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210//343/203/246/343/203/274/343/202/271/343/202/261/343/203/274/343/202/271.md +0 -12
- package/templates/base/templates/99_/350/250/255/350/250/210/345/210/244/346/226/255/350/250/230/351/214/262//343/201/262/343/201/252/345/275/242.md +0 -46
- package/templates/base/templates/README.md +0 -32
- package/templates/base/templates//345/210/235/346/234/237/343/203/211/343/202/255/343/203/245/343/203/241/343/203/263/343/203/210/01_/346/206/262/347/253/240.md +0 -48
- package/templates/base/templates//345/210/235/346/234/237/343/203/211/343/202/255/343/203/245/343/203/241/343/203/263/343/203/210/02_/344/273/225/346/247/230.md +0 -39
- package/templates/base/templates//345/210/235/346/234/237/343/203/211/343/202/255/343/203/245/343/203/241/343/203/263/343/203/210/03_/347/224/250/350/252/236/351/233/206.md +0 -51
- package/templates/base/templates//345/210/235/346/234/237/343/203/211/343/202/255/343/203/245/343/203/241/343/203/263/343/203/210/99_/350/250/255/350/250/210/345/210/244/346/226/255/350/250/230/351/214/262/.gitkeep +0 -0
- package/templates/base/templates//345/210/235/346/234/237/343/203/211/343/202/255/343/203/245/343/203/241/343/203/263/343/203/210//343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210/344/270/200/350/246/247.md +0 -14
- package/templates/base/templates//345/210/235/346/234/237/343/203/211/343/202/255/343/203/245/343/203/241/343/203/263/343/203/210//346/214/257/343/202/212/350/277/224/343/202/212//350/262/240/345/202/265.md +0 -8
- package/templates/claude/.claude/commands/sr-/343/202/262/343/203/274/343/203/210/350/250/255/345/256/232.md +0 -9
- package/templates/claude/.claude/commands/sr-/343/203/206/343/202/271/343/203/210/350/250/255/350/250/210.md +0 -9
- package/templates/claude/.claude/commands/sr-/343/203/254/343/203/223/343/203/245/343/203/274.md +0 -9
- package/templates/claude/.claude/commands/sr-/344/273/225/346/247/230.md +0 -9
- package/templates/claude/.claude/commands/sr-/344/277/256/346/255/243.md +0 -9
- package/templates/claude/.claude/commands/sr-/345/210/235/346/234/237/345/214/226.md +0 -10
- package/templates/claude/.claude/commands/sr-/345/256/237/350/243/205.md +0 -9
- package/templates/claude/.claude/commands/sr-/346/206/262/347/253/240.md +0 -9
- package/templates/claude/.claude/commands/sr-/346/246/202/350/246/201/350/250/255/350/250/210.md +0 -9
- package/templates/claude/.claude/commands/sr-/347/212/266/346/205/213.md +0 -9
- package/templates/claude/.claude/commands/sr-/347/267/212/346/200/245/344/277/256/346/255/243.md +0 -9
- package/templates/claude/.claude/commands/sr-/350/250/255/345/256/232.md +0 -11
- package/templates/claude/.claude/commands/sr-/350/251/263/347/264/260/350/250/255/350/250/210.md +0 -9
- package/templates/claude/.claude/hooks/pre-tool-use.sh +0 -79
- package/templates/claude/.claude/settings.json +0 -29
- package/templates/claude/CLAUDE.md +0 -141
- package/templates/copilot/.github/copilot-instructions.md +0 -25
- package/templates/copilot/.github/prompts/sr-/343/202/262/343/203/274/343/203/210/350/250/255/345/256/232.prompt.md +0 -14
- package/templates/copilot/.github/prompts/sr-/343/203/206/343/202/271/343/203/210/350/250/255/350/250/210.prompt.md +0 -13
- package/templates/copilot/.github/prompts/sr-/343/203/254/343/203/223/343/203/245/343/203/274.prompt.md +0 -14
- package/templates/copilot/.github/prompts/sr-/344/273/225/346/247/230.prompt.md +0 -13
- package/templates/copilot/.github/prompts/sr-/344/277/256/346/255/243.prompt.md +0 -14
- package/templates/copilot/.github/prompts/sr-/345/210/235/346/234/237/345/214/226.prompt.md +0 -15
- package/templates/copilot/.github/prompts/sr-/345/256/237/350/243/205.prompt.md +0 -13
- package/templates/copilot/.github/prompts/sr-/346/206/262/347/253/240.prompt.md +0 -13
- package/templates/copilot/.github/prompts/sr-/346/246/202/350/246/201/350/250/255/350/250/210.prompt.md +0 -13
- package/templates/copilot/.github/prompts/sr-/347/212/266/346/205/213.prompt.md +0 -13
- package/templates/copilot/.github/prompts/sr-/347/267/212/346/200/245/344/277/256/346/255/243.prompt.md +0 -14
- package/templates/copilot/.github/prompts/sr-/350/250/255/345/256/232.prompt.md +0 -13
- package/templates/copilot/.github/prompts/sr-/350/251/263/347/264/260/350/250/255/350/250/210.prompt.md +0 -14
- package/templates/cursor/.cursor/commands/sr-/343/202/262/343/203/274/343/203/210/350/250/255/345/256/232.md +0 -11
- package/templates/cursor/.cursor/commands/sr-/343/203/206/343/202/271/343/203/210/350/250/255/350/250/210.md +0 -9
- package/templates/cursor/.cursor/commands/sr-/343/203/254/343/203/223/343/203/245/343/203/274.md +0 -9
- package/templates/cursor/.cursor/commands/sr-/344/273/225/346/247/230.md +0 -9
- package/templates/cursor/.cursor/commands/sr-/344/277/256/346/255/243.md +0 -9
- package/templates/cursor/.cursor/commands/sr-/345/210/235/346/234/237/345/214/226.md +0 -35
- package/templates/cursor/.cursor/commands/sr-/345/256/237/350/243/205.md +0 -9
- package/templates/cursor/.cursor/commands/sr-/346/206/262/347/253/240.md +0 -9
- package/templates/cursor/.cursor/commands/sr-/346/246/202/350/246/201/350/250/255/350/250/210.md +0 -9
- package/templates/cursor/.cursor/commands/sr-/347/212/266/346/205/213.md +0 -9
- package/templates/cursor/.cursor/commands/sr-/347/267/212/346/200/245/344/277/256/346/255/243.md +0 -9
- package/templates/cursor/.cursor/commands/sr-/350/250/255/345/256/232.md +0 -20
- package/templates/cursor/.cursor/commands/sr-/350/251/263/347/264/260/350/250/255/350/250/210.md +0 -9
- package/templates/cursor/.cursorrules +0 -26
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
# 開発ルール(Claude Code 向け)
|
|
2
|
-
|
|
3
|
-
このプロジェクトは **.spec-runner/scripts/spec-runner.sh** によるフェーズゲートで運用している。
|
|
4
|
-
本ファイルは AI 向けの指示であり、**.spec-runner/scripts/spec-runner.sh** はフェーズが通過していないと実行を拒否するため、設計をスキップできない。
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## 最優先ルール
|
|
9
|
-
|
|
10
|
-
**何かを実装する前に必ず実行せよ:**
|
|
11
|
-
|
|
12
|
-
`./.spec-runner/scripts/spec-runner.sh status`(チャットでは `/sr-状態`)で現在のフェーズを確認する。
|
|
13
|
-
|
|
14
|
-
`phase` が `implement` でない場合、実装コードを生成してはならない。
|
|
15
|
-
代わりに「現在のフェーズを確認してください」と伝えてユーザーに委ねよ。
|
|
16
|
-
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
## TDD(テスト駆動)ルール(デフォルトで有効)
|
|
20
|
-
|
|
21
|
-
**実装フェーズに進むまでに、テストを必ず含める。**
|
|
22
|
-
|
|
23
|
-
1. **テスト設計** … `docs/04_テスト設計/<UC名>.md` を書く
|
|
24
|
-
2. **テストを先に書く(Red)** … 実装より前にテストコードを書き、失敗することを確認する
|
|
25
|
-
3. **テストコードをコミット** … `./.spec-runner/scripts/spec-runner.sh set-gate test_code_committed` でゲート通過
|
|
26
|
-
4. **実装で Green** … `implement` フェーズでテストを通す実装を書く
|
|
27
|
-
|
|
28
|
-
ドキュメントだけでなく**テストコードも必須**。テストを書かずに実装に進むことはできない。ゲートが `TEST_DIR` 配下の未コミットを検出し、コミットするまで `implement` に進めない。
|
|
29
|
-
|
|
30
|
-
- **テストのパス**は `.spec-runner/config.sh` の `TEST_DIR` で動的に指定(例: `tests`, `spec`, `__tests__`)。ここに置いたテストが未コミットだと implement ゲートでブロックされる。
|
|
31
|
-
- TDD をオプションにしたい場合: `export TDD_ENABLED="false"` にすると、実装前にテストコードを書かなくても `implement` に進める。
|
|
32
|
-
|
|
33
|
-
---
|
|
34
|
-
|
|
35
|
-
## スラッシュコマンド(チャット用)
|
|
36
|
-
|
|
37
|
-
### .claude/commands/(Claude Code カスタムスラッシュコマンド)
|
|
38
|
-
|
|
39
|
-
`.claude/commands/` に Markdown を置くと、チャット欄で `/sr-憲章` や `/sr-状態` などのスラッシュコマンドとして呼び出せる。各ファイルは「spec-runner.sh を実行せよ」という指示になっており、**ハード強制**に繋がる。コマンド一覧は **README の「スラッシュコマンド」** を参照。各 .md 内の `$ARGUMENTS` には、ユーザーがスラッシュの後に続けて入力した文字列が入る。
|
|
40
|
-
|
|
41
|
-
### 自然言語・短いスラッシュでの依頼
|
|
42
|
-
|
|
43
|
-
ユーザーが `/init`・`/status`・`/design-high` などの短いスラッシュ、または「init して」「顧客登録で design-high まで進めて」などの自然言語で依頼した場合も、**必ず** 対応する `./.spec-runner/scripts/spec-runner.sh` をターミナルで実行すること(上記の `/sr-*` と同じ動作)。
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
## フェーズ別の行動規則
|
|
48
|
-
|
|
49
|
-
### require(要件定義)フェーズ
|
|
50
|
-
- `docs/01_要件/<UC名>.md` を編集する
|
|
51
|
-
- 実装・設計・テーブル定義は書かない
|
|
52
|
-
- 完了後: `./.spec-runner/scripts/spec-runner.sh review-pass docs/01_要件/<UC名>.md`
|
|
53
|
-
|
|
54
|
-
### design-high(概要設計)フェーズ
|
|
55
|
-
- `docs/02_概要設計/<UC名>.md` を編集する
|
|
56
|
-
- ユースケース記述とドメインモデル候補の洗い出しのみ
|
|
57
|
-
- **具体的なメソッド定義・テーブルカラムは書かない**
|
|
58
|
-
- 新しい概念が出たら先に `docs/03_用語集.md` に追加する
|
|
59
|
-
- 完了後: `./.spec-runner/scripts/spec-runner.sh review-pass docs/02_概要設計/<UC名>.md`
|
|
60
|
-
|
|
61
|
-
### design-detail(詳細設計)フェーズ
|
|
62
|
-
この順序で作業する:
|
|
63
|
-
|
|
64
|
-
1. **domain** → `docs/03_詳細設計/<UC名>/ドメイン.md`
|
|
65
|
-
- エンティティ・値オブジェクト・ドメインイベント・集約・リポジトリIF
|
|
66
|
-
- 振る舞い(メソッド)の定義
|
|
67
|
-
- ← レビュー通過後に次へ
|
|
68
|
-
|
|
69
|
-
2. **usecase** → `docs/03_詳細設計/<UC名>/ユースケース.md`
|
|
70
|
-
- ドメインモデルを使う設計(ドメインモデルを参照して書く)
|
|
71
|
-
- Command/Query の入出力・シーケンス図
|
|
72
|
-
- ← レビュー通過後に次へ
|
|
73
|
-
|
|
74
|
-
3. **table** → `docs/03_詳細設計/<UC名>/テーブル.md`
|
|
75
|
-
- ドメインモデル ≠ テーブル(用途で分けてOK)
|
|
76
|
-
- ER図(Mermaid)
|
|
77
|
-
- ← レビュー通過後に次へ
|
|
78
|
-
|
|
79
|
-
4. **infra** → `docs/03_詳細設計/<UC名>/インフラ.md`
|
|
80
|
-
- APIエンドポイント定義
|
|
81
|
-
- リポジトリ実装方針
|
|
82
|
-
- フロントエンドコンポーネント構成
|
|
83
|
-
- ← レビュー通過後に次へ
|
|
84
|
-
|
|
85
|
-
### test-design(テスト設計)フェーズ
|
|
86
|
-
- `docs/04_テスト設計/<UC名>.md` を編集する
|
|
87
|
-
- **TDD: テストコードを実装より先に書く(Red 状態で OK)**
|
|
88
|
-
- テストコードをコミットしてから次へ: `./.spec-runner/scripts/spec-runner.sh set-gate test_code_committed`
|
|
89
|
-
- 完了後: `./.spec-runner/scripts/spec-runner.sh review-pass docs/04_テスト設計/<UC名>.md`
|
|
90
|
-
|
|
91
|
-
### implement(実装)フェーズ
|
|
92
|
-
- **TDD: テストを Green にする実装を書く**
|
|
93
|
-
- 設計と乖離した場合は先にドキュメントを更新する
|
|
94
|
-
- コードとドキュメントを同一コミットに含める
|
|
95
|
-
- 実装完了後: git push → PR。次のユースケースは `./.spec-runner/scripts/spec-runner.sh init <名前>` で開始
|
|
96
|
-
|
|
97
|
-
---
|
|
98
|
-
|
|
99
|
-
## ドキュメント同時更新ルール
|
|
100
|
-
|
|
101
|
-
| 変更内容 | 必ず同時更新するもの |
|
|
102
|
-
|---------|-------------------|
|
|
103
|
-
| `Domain/` 配下のクラス変更 | `docs/03_詳細設計/<UC名>/ドメイン.md` |
|
|
104
|
-
| `UseCase/` 配下のクラス変更 | `docs/03_詳細設計/<UC名>/ユースケース.md` |
|
|
105
|
-
| `Infrastructure/Api/` の変更 | `docs/03_詳細設計/<UC名>/インフラ.md` |
|
|
106
|
-
| DBマイグレーション | `docs/03_詳細設計/<UC名>/テーブル.md` |
|
|
107
|
-
| 新しいエンティティ/値オブジェクト | `docs/03_用語集.md` |
|
|
108
|
-
| アーキテクチャ判断 | `docs/99_設計判断記録/<番号>-<タイトル>.md` |
|
|
109
|
-
|
|
110
|
-
---
|
|
111
|
-
|
|
112
|
-
## ユビキタス言語ルール
|
|
113
|
-
|
|
114
|
-
- 設計ドキュメント → `docs/03_用語集.md` の **日本語** 列を使う
|
|
115
|
-
- コード(クラス名・メソッド名・変数名)→ **英語** 列を使う
|
|
116
|
-
- PHPDoc/JSDoc → 日本語のユビキタス言語を `@description` に併記する
|
|
117
|
-
- 新しい概念が登場 → **まず `docs/03_用語集.md` に追加してから**設計・実装に入る
|
|
118
|
-
|
|
119
|
-
---
|
|
120
|
-
|
|
121
|
-
## DDDレイヤー依存ルール(違反禁止)
|
|
122
|
-
|
|
123
|
-
```
|
|
124
|
-
Infrastructure → UseCase → Domain
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
- `Domain/` のコードは `UseCase/` や `Infrastructure/` を import してはならない
|
|
128
|
-
- `UseCase/` のコードは `Infrastructure/` の具体実装を import してはならない
|
|
129
|
-
- Eloquentモデルは `Infrastructure/Persistence/` のみで使用する
|
|
130
|
-
|
|
131
|
-
---
|
|
132
|
-
|
|
133
|
-
## Gitコミットメッセージ
|
|
134
|
-
|
|
135
|
-
```
|
|
136
|
-
<type>(<scope>): <日本語の説明>
|
|
137
|
-
|
|
138
|
-
type: feat, fix, docs, refactor, test, chore
|
|
139
|
-
scope: domain, usecase, infra, frontend, design, adr, test
|
|
140
|
-
```
|
|
141
|
-
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# spec-runner(GitHub Copilot 用指示)
|
|
2
|
-
|
|
3
|
-
このプロジェクトは **.spec-runner/scripts/spec-runner.sh** によるフェーズゲートで運用している。実装前に必ずフェーズを確認すること。
|
|
4
|
-
|
|
5
|
-
## 最優先
|
|
6
|
-
|
|
7
|
-
- 実装コードを書く前に **必ず** `./.spec-runner/scripts/spec-runner.sh status` を実行する。
|
|
8
|
-
- `phase` が `implement` でないときは実装コードを生成しない。ユーザーに「現在のフェーズを確認してください」と伝える。
|
|
9
|
-
- ユーザーが「init して」「status 確認して」「design-high で進めて」などと言ったら、対応する `./.spec-runner/scripts/spec-runner.sh` をターミナルで実行する。
|
|
10
|
-
- スラッシュコマンド `/sr-初期化` などは `.github/prompts/*.prompt.md` に定義済み(コマンド名は日本語)。`tools: [shell]` でシェル実行される。
|
|
11
|
-
|
|
12
|
-
## TDD(テスト駆動)— デフォルトで有効
|
|
13
|
-
|
|
14
|
-
- 実装前に **テスト設計ドキュメント** と **テストコード** を必ず書く。テストを先に書いて Red → 実装で Green。
|
|
15
|
-
- `.spec-runner/config.sh` の `TDD_ENABLED=false` で無効化すると、テストなしでも implement に進める(オプション)。
|
|
16
|
-
|
|
17
|
-
## フェーズとコマンド
|
|
18
|
-
|
|
19
|
-
- require → design-high → design-detail (domain → usecase → table → infra) → test-design → implement
|
|
20
|
-
- 各フェーズ完了時: `./.spec-runner/scripts/spec-runner.sh review-pass <該当ファイル>`
|
|
21
|
-
- ゲート: `./.spec-runner/scripts/spec-runner.sh set-gate glossary_checked` など
|
|
22
|
-
- 実装完了後: git push → PR。次のユースケースは `init <名前>` で開始
|
|
23
|
-
- 修正: `./.spec-runner/scripts/spec-runner.sh fix "内容"` / `./.spec-runner/scripts/spec-runner.sh hotfix "内容"`
|
|
24
|
-
|
|
25
|
-
詳細はプロジェクトの README を参照。
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
agent: 'agent'
|
|
3
|
-
description: 'spec-runner: ゲート通過を記録'
|
|
4
|
-
argument-hint: 'ゲート名(例: 用語集確認済み、テストコードコミット済み)'
|
|
5
|
-
tools: ['shell']
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
以下を**必ずシェルで実行**してください。
|
|
9
|
-
|
|
10
|
-
```bash
|
|
11
|
-
./.spec-runner/scripts/spec-runner.sh set-gate ${input:gate:ゲート名}
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
ゲート名は日本語(用語集確認済み、テストコードコミット済み など)または英語キーで指定できます。引数が空の場合は、ユーザーに「ゲート名を指定してください。例: 用語集確認済み、テストコードコミット済み」と伝えてください。
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
agent: 'agent'
|
|
3
|
-
description: 'spec-runner: レビュー通過を記録'
|
|
4
|
-
argument-hint: 'ファイルパス(例: docs/01_要件/顧客登録.md)'
|
|
5
|
-
tools: ['shell']
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
以下を**必ずシェルで実行**してください。
|
|
9
|
-
|
|
10
|
-
```bash
|
|
11
|
-
./.spec-runner/scripts/spec-runner.sh review-pass ${input:path:レビュー通過させるファイルパス}
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
引数が空の場合は、ユーザーに「ファイルパスを指定してください」と伝えてください。
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
agent: 'agent'
|
|
3
|
-
description: 'spec-runner: プロジェクト仕様を編集。何を作るか・なぜか・スコープを docs/02_仕様.md に書く'
|
|
4
|
-
tools: []
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
**チャットで使うプロンプト**。プロジェクト仕様を編集します。
|
|
8
|
-
|
|
9
|
-
1. `docs/02_仕様.md` の内容を読み、必要なら開く。
|
|
10
|
-
2. ユーザーと一緒に「このプロジェクトで作るもの」「作る理由」「スコープ(含む/含まない)」「想定ユーザー」を書き足す・修正する。
|
|
11
|
-
3. 曖昧な点があれば質問して解消する。
|
|
12
|
-
|
|
13
|
-
init の前に書いておくと、最初のユースケースを決めやすくなる。
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
agent: 'agent'
|
|
3
|
-
description: 'spec-runner: 通常修正(設計変更を伴う)'
|
|
4
|
-
argument-hint: '修正内容'
|
|
5
|
-
tools: ['shell']
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
以下を**必ずシェルで実行**してください。
|
|
9
|
-
|
|
10
|
-
```bash
|
|
11
|
-
./.spec-runner/scripts/spec-runner.sh fix "${input:content:修正内容}"
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
引数が空の場合は、ユーザーに「修正内容を指定してください」と伝えてください。
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
agent: 'agent'
|
|
3
|
-
description: 'spec-runner: ユースケースを初期化(未設定なら詳細設定の対話から)。チャットで /sr-初期化 ユースケース名 集約名 と入力して使う'
|
|
4
|
-
argument-hint: 'ユースケース名 集約名(例: 顧客登録 顧客管理)。空なら設定対話のみ'
|
|
5
|
-
tools: ['shell']
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
**チャットで /sr-初期化 と入力して使う**。以下を**必ずシェルで実行**してください。
|
|
9
|
-
|
|
10
|
-
```bash
|
|
11
|
-
./.spec-runner/scripts/spec-runner.sh init ${input:args:ユースケース名 集約名(スペース区切り。集約名は省略可)}
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
- **引数あり**: 未設定なら詳細設定の対話 → ユースケース作成。
|
|
15
|
-
- **引数が空**: 設定対話のみ。ユースケースを作らない場合はこのまま実行でよい。ユースケースを作る場合は引数で名前を指定するよう伝えてください。
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
agent: 'agent'
|
|
3
|
-
description: 'spec-runner: プロジェクト憲章を編集。不変原則・品質ルールを docs/01_憲章.md に書く'
|
|
4
|
-
tools: []
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
**チャットで使うプロンプト**。プロジェクト憲章を編集します。
|
|
8
|
-
|
|
9
|
-
1. `docs/01_憲章.md` の内容を読み、必要なら開く。
|
|
10
|
-
2. ユーザーと一緒に「このプロジェクトで守る開発ルール」「品質基準」「フォルダ・成果物の原則」を書き足す・修正する。
|
|
11
|
-
3. 憲章は技術やツールに依存しない抽象的なルールに留める。
|
|
12
|
-
|
|
13
|
-
init の前に書いておくと、その後のユースケース開発で参照できる。
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
agent: 'agent'
|
|
3
|
-
description: 'spec-runner: 緊急修正(負債として記録)'
|
|
4
|
-
argument-hint: '修正内容'
|
|
5
|
-
tools: ['shell']
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
以下を**必ずシェルで実行**してください。
|
|
9
|
-
|
|
10
|
-
```bash
|
|
11
|
-
./.spec-runner/scripts/spec-runner.sh hotfix "${input:content:修正内容}"
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
引数が空の場合は、ユーザーに「修正内容を指定してください」と伝えてください。
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
agent: 'agent'
|
|
3
|
-
description: 'spec-runner: 詳細設定の対話のみ(パス・TDD等)。ユースケースは作らない'
|
|
4
|
-
tools: ['shell']
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
以下を**必ずシェルで実行**してください。
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
./.spec-runner/scripts/spec-runner.sh init
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
引数なしのため、対話でパス・TDD 等を聞かれたあと終了します。ユースケースを作成する場合は /sr-初期化 でユースケース名・集約名を指定してください。
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
agent: 'agent'
|
|
3
|
-
description: 'spec-runner: 詳細設計サブフェーズ(domain / usecase / table / infra)'
|
|
4
|
-
argument-hint: 'domain | usecase | table | infra'
|
|
5
|
-
tools: ['shell']
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
以下を**必ずシェルで実行**してください。
|
|
9
|
-
|
|
10
|
-
```bash
|
|
11
|
-
./.spec-runner/scripts/spec-runner.sh design-detail ${input:sub:サブフェーズ(domain, usecase, table, infra)}
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
引数が無効な場合は、ユーザーに「domain, usecase, table, infra のいずれかを指定してください」と伝えてください。
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
# /sr-ゲート設定
|
|
2
|
-
|
|
3
|
-
**チャットで使うコマンド**。ユーザーが `/sr-ゲート設定` の後に続けて入力したゲート名で、以下を**ターミナルで実行**してください(例: `/sr-ゲート設定 用語集確認済み`)。
|
|
4
|
-
|
|
5
|
-
```bash
|
|
6
|
-
./.spec-runner/scripts/spec-runner.sh set-gate <ユーザーが入力したゲート名>
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
ゲート名は**日本語**でも**英語キー**でも指定できます。引数が空の場合は、ユーザーに次のように伝えてください。
|
|
10
|
-
|
|
11
|
-
「ゲート名を指定してください。例: 用語集確認済み、テストコードコミット済み、概要設計レビュー済み」
|
package/templates/cursor/.cursor/commands/sr-/343/203/254/343/203/223/343/203/245/343/203/274.md
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
# /sr-レビュー
|
|
2
|
-
|
|
3
|
-
**チャットで使うコマンド**。ユーザーが `/sr-レビュー` の後に続けて入力したファイルパスで、以下を**ターミナルで実行**してください(例: `/sr-レビュー docs/01_要件/顧客登録.md`)。
|
|
4
|
-
|
|
5
|
-
```bash
|
|
6
|
-
./.spec-runner/scripts/spec-runner.sh review-pass <ユーザーが入力したファイルパス>
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
引数が空の場合は、ユーザーに「レビュー通過させるファイルパスを指定してください」と伝えてください。
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
# /sr-初期化
|
|
2
|
-
|
|
3
|
-
**チャットで使うコマンド**。ユーザーが `/sr-初期化` の後に続けて入力した文字列を引数として扱います(例: `/sr-初期化 Todoアプリ` → ユースケース名「Todoアプリ」)。
|
|
4
|
-
|
|
5
|
-
## 重要: 対話は「チャット上で AI が埋める」形式で行う
|
|
6
|
-
|
|
7
|
-
- **ターミナルで read や npx --configure の入力待ちにしないこと。** 未設定時は、**AI が** プロジェクト構成を確認し、必要ならチャットでユーザーに聞きながら設定を決め、**AI が** `.spec-runner/config.sh` を編集・生成してから init を実行する。
|
|
8
|
-
|
|
9
|
-
## 手順
|
|
10
|
-
|
|
11
|
-
1. **設定済みか確認**
|
|
12
|
-
`.spec-runner/config.sh` が存在し、かつ `CONFIGURED="true"` かどうかを確認する。
|
|
13
|
-
|
|
14
|
-
2. **未設定の場合(config.sh がない、または CONFIGURED が true でない)**
|
|
15
|
-
- プロジェクトの `package.json` や既存の `src/` などを確認し、Domain/UseCase/テストのパスなどを推測する。
|
|
16
|
-
- 必要ならチャットでユーザーに聞く(例: 「Domain のパスは `src/domain` でよさそうですが、変更しますか?」)。
|
|
17
|
-
- 決まったら **AI が** `.spec-runner/config.sh` を編集または作成する。必ず `export CONFIGURED="true"` を設定し、以下の変数も設定する(既存の config.sh がある場合は必要な部分だけ上書きする)。
|
|
18
|
-
- その後、ターミナルで `./.spec-runner/scripts/spec-runner.sh init <引数>` を実行する。このときはすでに CONFIGURED が true なので、ターミナルでの対話は発生しない。
|
|
19
|
-
|
|
20
|
-
3. **設定済みの場合**
|
|
21
|
-
そのまま `./.spec-runner/scripts/spec-runner.sh init <ユーザーが入力した引数>` を実行する。
|
|
22
|
-
|
|
23
|
-
4. **引数がない場合**
|
|
24
|
-
ユーザーに「ユースケース名(と任意で集約名)を指定してください」と伝えるか、設定だけしたい場合は `/sr-設定` を案内する。
|
|
25
|
-
|
|
26
|
-
## config.sh に必要な変数(AI が書くときの目安)
|
|
27
|
-
|
|
28
|
-
- `CONFIGURED="true"` (必須)
|
|
29
|
-
- `DOMAIN_PATH`, `USECASE_PATH`, `INFRA_PATH`(例: `src/domain`, `src/useCase`, `src/infrastructure`)
|
|
30
|
-
- `TEST_DIR`(例: `tests`), `SOURCE_EXTENSIONS`(例: `ts tsx js jsx`), `TEST_EXTENSIONS`(例: `test.ts spec.ts`)
|
|
31
|
-
- `TDD_ENABLED`, `SPEC_RUNNER_DDD_ENABLED`(`"true"` / `"false"`)
|
|
32
|
-
- `BUILD_CMD`, `TEST_CMD`, `LINT_CMD`(例: `npm run build`, `npm test`, `npm run lint`)
|
|
33
|
-
- その他、既存の `.spec-runner/config.sh` にあれば同じ形式で揃える(`SPEC_RUNNER_FRAMEWORK`, `SPEC_RUNNER_TOOLS`, `SPEC_RUNNER_LANGUAGE`, `CI_PLATFORM` など)。
|
|
34
|
-
|
|
35
|
-
非対話で実行したいときは、上書き確認もスキップするため `SR_YES=1 ./.spec-runner/scripts/spec-runner.sh init <引数>` のように実行してよい。
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
# /sr-設定
|
|
2
|
-
|
|
3
|
-
詳細設定(パス・TDD・DDD 等)を**チャット上で AI が埋める**形で行います。ユースケースは作成しません。
|
|
4
|
-
|
|
5
|
-
## 重要: 対話はターミナルではなくチャットで行う
|
|
6
|
-
|
|
7
|
-
- **ターミナルで `init` を実行して入力待ちにしないこと。** AI がプロジェクトを確認し、必要ならチャットでユーザーに聞きながら設定を決め、**AI が** `.spec-runner/config.sh` を編集・生成する。
|
|
8
|
-
|
|
9
|
-
## 手順
|
|
10
|
-
|
|
11
|
-
1. `.spec-runner/config.sh` の有無を確認する。ない場合は `npx spec-runner` で一度セットアップされている必要がある(config.sh が存在する前提)。
|
|
12
|
-
2. プロジェクト構成(`package.json`、既存の `src/` やテストディレクトリなど)を確認し、以下を決める(不明ならチャットでユーザーに聞く):
|
|
13
|
-
- Domain / UseCase / Infrastructure のパス
|
|
14
|
-
- テストディレクトリ、ソース・テストの拡張子
|
|
15
|
-
- TDD を必須にするか、DDD を使うか
|
|
16
|
-
- CI プラットフォーム、ドキュメント言語 など
|
|
17
|
-
3. **AI が** `.spec-runner/config.sh` を編集または作成する。必ず `export CONFIGURED="true"` を設定し、`sr-初期化` のコマンド説明にある変数(DOMAIN_PATH, USECASE_PATH, TEST_DIR, TDD_ENABLED など)を適切に設定する。
|
|
18
|
-
4. 完了したら「設定を config.sh に反映しました。ユースケースを開始する場合は `/sr-初期化 ユースケース名 集約名` を使ってください」と伝える。
|
|
19
|
-
|
|
20
|
-
**ターミナルで `./.spec-runner/scripts/spec-runner.sh init` を実行して対話に頼る必要はない。**
|
package/templates/cursor/.cursor/commands/sr-/350/251/263/347/264/260/350/250/255/350/250/210.md
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
# /sr-詳細設計
|
|
2
|
-
|
|
3
|
-
以下を**必ずターミナルで実行**してください。ユーザーが続けて入力したサブフェーズ(domain / usecase / table / infra)を渡します(例: `/sr-詳細設計 domain`)。
|
|
4
|
-
|
|
5
|
-
```bash
|
|
6
|
-
./.spec-runner/scripts/spec-runner.sh design-detail <ユーザーが入力したサブフェーズ>
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
引数が空、または domain / usecase / table / infra 以外の場合は、ユーザーに「サブフェーズを指定してください: domain, usecase, table, infra」と伝えてください。
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
# spec-runner(Cursor 用ルール)
|
|
2
|
-
|
|
3
|
-
このプロジェクトは **scripts/spec-runner.sh** によるフェーズゲートで運用している。実装前に必ずフェーズを確認すること。
|
|
4
|
-
|
|
5
|
-
## 最優先
|
|
6
|
-
|
|
7
|
-
- 実装コードを書く前に **必ず** `./scripts/spec-runner.sh status` を実行する。
|
|
8
|
-
- `phase` が `implement` でないときは実装コードを生成しない。ユーザーに「現在のフェーズを確認してください」と伝える。
|
|
9
|
-
- ユーザーが「init して」「status 確認して」「design-high で進めて」などと言ったら、対応する `./scripts/spec-runner.sh` をターミナルで実行する。
|
|
10
|
-
- スラッシュコマンド `/sr-init` などは `.cursor/commands/` に定義済み。チャットで `/sr-status` のように呼び出せる(Agent 経由でシェル実行)。
|
|
11
|
-
- **初期化・設定**: `/sr-初期化` や `/sr-設定` では、未設定時も**ターミナルの入力待ちにしない**。AI がプロジェクトを確認し、チャットで聞くか推測して `.spec-runner/config.sh` を編集・生成してから init を実行する(対話は「AI がどんどん埋めていく」形式)。
|
|
12
|
-
|
|
13
|
-
## TDD(テスト駆動)— デフォルトで有効
|
|
14
|
-
|
|
15
|
-
- 実装前に **テスト設計ドキュメント** と **テストコード** を必ず書く。テストを先に書いて Red → 実装で Green。
|
|
16
|
-
- `.spec-runner/config.sh` の `TDD_ENABLED=false` で無効化すると、テストなしでも implement に進める(オプション)。
|
|
17
|
-
|
|
18
|
-
## フェーズとコマンド
|
|
19
|
-
|
|
20
|
-
- require → design-high → design-detail (domain → usecase → table → infra) → test-design → implement
|
|
21
|
-
- 各フェーズ完了時: `./scripts/spec-runner.sh review-pass <該当ファイル>`
|
|
22
|
-
- ゲート: `./scripts/spec-runner.sh set-gate glossary_checked` など
|
|
23
|
-
- 実装完了後: git push → PR。次のユースケースは `./scripts/spec-runner.sh init <名前>` で開始
|
|
24
|
-
- 修正: `./scripts/spec-runner.sh fix "内容"` / `./scripts/spec-runner.sh hotfix "内容"`
|
|
25
|
-
|
|
26
|
-
詳細はプロジェクトの CLAUDE.md または README を参照。
|