spec-runner 1.0.5 → 1.0.6
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 +4 -6
- package/package.json +1 -1
- package/templates/base/scripts/spec-runner.sh +34 -67
- package/templates/claude/.claude/commands/sr-/343/202/262/343/203/274/343/203/210/350/250/255/345/256/232.md +2 -2
- package/templates/claude/CLAUDE.md +1 -1
- package/templates/copilot/.github/copilot-instructions.md +1 -1
- package/templates/copilot/.github/prompts/sr-/343/202/262/343/203/274/343/203/210/350/250/255/345/256/232.prompt.md +2 -2
- package/templates/cursor/.cursor/commands/sr-/343/202/262/343/203/274/343/203/210/350/250/255/345/256/232.md +4 -2
- package/templates/cursor/.cursor/commands/sr-/345/210/235/346/234/237/345/214/226.md +31 -6
- package/templates/cursor/.cursor/commands/sr-/350/250/255/345/256/232.md +15 -6
- package/templates/cursor/.cursorrules +2 -1
- package/templates/claude/.claude/commands/sr-/345/256/214/344/272/206.md +0 -9
- package/templates/copilot/.github/prompts/sr-/345/256/214/344/272/206.prompt.md +0 -13
- package/templates/cursor/.cursor/commands/sr-/345/256/214/344/272/206.md +0 -9
package/README.md
CHANGED
|
@@ -89,9 +89,7 @@ npx spec-runner
|
|
|
89
89
|
⑥ 実装
|
|
90
90
|
./.spec-runner/scripts/spec-runner.sh implement
|
|
91
91
|
テストを Green にする実装を書く
|
|
92
|
-
|
|
93
|
-
⑦ 完了
|
|
94
|
-
./.spec-runner/scripts/spec-runner.sh complete
|
|
92
|
+
完了したら: git push → PR 作成。次のユースケースは init <名前> で開始
|
|
95
93
|
```
|
|
96
94
|
|
|
97
95
|
TDD はデフォルトで有効。実装に進むには「テスト設計ドキュメント」と「テストコードのコミット」が必須。無効にしたいときは `.spec-runner/config.sh` で `export TDD_ENABLED="false"`。
|
|
@@ -140,7 +138,7 @@ curl -sSL https://raw.githubusercontent.com/spec-runner/spec-runner/main/install
|
|
|
140
138
|
| ④ plan(技術計画) | `design-high` → `design-detail`(domain / usecase / table / infra) |
|
|
141
139
|
| ⑤ analyze(整合性) | `review-pass` と CI の phase-gate-check |
|
|
142
140
|
| ⑥ tasks(タスク分割) | テスト設計・実装フェーズでのタスク単位の進め方 |
|
|
143
|
-
| ⑦ implement |
|
|
141
|
+
| ⑦ implement | 実装完了後は push → PR。次の UC は `init` で開始 |
|
|
144
142
|
|
|
145
143
|
---
|
|
146
144
|
|
|
@@ -200,7 +198,7 @@ npx spec-runner --update
|
|
|
200
198
|
|
|
201
199
|
## スラッシュコマンド
|
|
202
200
|
|
|
203
|
-
**`/sr-状態` を実行すると、現在のフェーズと「次にやるべきこと」(次に打つコマンド)が動的に表示される。**
|
|
201
|
+
**`/sr-状態` を実行すると、現在のフェーズと「次にやるべきこと」(次に打つコマンド)が動的に表示される。** フェーズ移行(概要設計〜実装)はこの案内に従い、実装完了後は push → PR → 次の UC は init で開始。
|
|
204
202
|
|
|
205
203
|
| コマンド | 説明 |
|
|
206
204
|
|----------|------|
|
|
@@ -214,7 +212,7 @@ npx spec-runner --update
|
|
|
214
212
|
| `/sr-修正` 内容 | 修正 |
|
|
215
213
|
| `/sr-緊急修正` 内容 | 緊急修正 |
|
|
216
214
|
|
|
217
|
-
|
|
215
|
+
概要設計・詳細設計・テスト設計・実装は、`/sr-状態` の案内に表示されるので個別に指定不要。実装完了後は push → PR。次の UC は `/sr-初期化` で開始。
|
|
218
216
|
|
|
219
217
|
定義: Claude `.claude/commands/` / Cursor `.cursor/commands/` / Copilot `.github/prompts/*.prompt.md`(いずれもファイル名・コマンド名は日本語)
|
|
220
218
|
|
package/package.json
CHANGED
|
@@ -18,7 +18,6 @@
|
|
|
18
18
|
# ./.spec-runner/scripts/spec-runner.sh fix <修正内容>
|
|
19
19
|
# ./.spec-runner/scripts/spec-runner.sh hotfix <内容>
|
|
20
20
|
# ./.spec-runner/scripts/spec-runner.sh review-pass <ドキュメントパス>
|
|
21
|
-
# ./.spec-runner/scripts/spec-runner.sh complete
|
|
22
21
|
# =============================================================================
|
|
23
22
|
|
|
24
23
|
set -euo pipefail
|
|
@@ -245,13 +244,17 @@ cmd_init() {
|
|
|
245
244
|
step "ユースケース初期化: $usecase"
|
|
246
245
|
echo ""
|
|
247
246
|
|
|
248
|
-
# 既存のstate
|
|
247
|
+
# 既存のstateがあれば警告(SR_YES=1 のときは AI/CI 用に確認をスキップ)
|
|
249
248
|
if [[ -f "$STATE_FILE" ]]; then
|
|
250
249
|
local current
|
|
251
250
|
current=$(state_get "usecase")
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
251
|
+
if [[ "${SR_YES:-0}" == "1" ]]; then
|
|
252
|
+
warn "作業中のユースケース '$current' を上書きします(SR_YES=1)"
|
|
253
|
+
else
|
|
254
|
+
warn "作業中のユースケース '$current' があります"
|
|
255
|
+
read -r -p "上書きしますか? [y/N] " answer
|
|
256
|
+
[[ "$answer" =~ ^[Yy]$ ]] || die "中止しました"
|
|
257
|
+
fi
|
|
255
258
|
fi
|
|
256
259
|
|
|
257
260
|
# ブランチ作成
|
|
@@ -708,59 +711,10 @@ cmd_implement() {
|
|
|
708
711
|
info " 1. テストを Green にする実装を書く"
|
|
709
712
|
info " 2. 設計と乖離した場合は先にドキュメントを更新する"
|
|
710
713
|
info " 3. コードとドキュメントを同一コミットに含める"
|
|
711
|
-
info " 4.
|
|
714
|
+
info " 4. 完了したら: git push → PR 作成。次のユースケースは init <名前> で開始"
|
|
712
715
|
warn "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
713
716
|
}
|
|
714
717
|
|
|
715
|
-
# ── complete ──────────────────────────────────────────────────────────────────
|
|
716
|
-
cmd_complete() {
|
|
717
|
-
require_state
|
|
718
|
-
|
|
719
|
-
echo ""
|
|
720
|
-
step "【完了チェック】実装の完了条件を確認します"
|
|
721
|
-
echo ""
|
|
722
|
-
|
|
723
|
-
local errors=0
|
|
724
|
-
|
|
725
|
-
# テストが通るか確認を促す
|
|
726
|
-
warn "テストが全て通過していることを確認してください"
|
|
727
|
-
read -r -p "全テスト通過済みですか? [y/N] " ans_test
|
|
728
|
-
[[ "$ans_test" =~ ^[Yy]$ ]] || { fail "テストを通過させてから完了してください"; ((errors++)); }
|
|
729
|
-
|
|
730
|
-
# ドキュメントと実装の乖離チェック
|
|
731
|
-
read -r -p "設計ドキュメントと実装に乖離はないですか? [y/N] " ans_doc
|
|
732
|
-
[[ "$ans_doc" =~ ^[Yy]$ ]] || { fail "ドキュメントを更新してから完了してください"; ((errors++)); }
|
|
733
|
-
|
|
734
|
-
if [[ $errors -gt 0 ]]; then
|
|
735
|
-
echo ""
|
|
736
|
-
die "完了条件を満たしていません"
|
|
737
|
-
fi
|
|
738
|
-
|
|
739
|
-
state_set_str "phase" "complete"
|
|
740
|
-
state_push_history "実装完了"
|
|
741
|
-
|
|
742
|
-
# ブランチ情報の表示
|
|
743
|
-
local branch agg_branch usecase
|
|
744
|
-
branch=$(state_get "branch")
|
|
745
|
-
agg_branch=$(state_get "aggregate_branch")
|
|
746
|
-
usecase=$(state_get "usecase")
|
|
747
|
-
|
|
748
|
-
echo ""
|
|
749
|
-
ok "『$usecase』の実装が完了しました!"
|
|
750
|
-
echo ""
|
|
751
|
-
info "次のステップ:"
|
|
752
|
-
info " 1. git push origin $branch"
|
|
753
|
-
if [[ -f "$PROJECT_ROOT/.github/PULL_REQUEST_TEMPLATE.md" ]]; then
|
|
754
|
-
info " 2. Pull Request を作成(.github/PULL_REQUEST_TEMPLATE.md を使用)"
|
|
755
|
-
else
|
|
756
|
-
info " 2. Pull Request を作成"
|
|
757
|
-
fi
|
|
758
|
-
if [[ -n "$agg_branch" ]]; then
|
|
759
|
-
info " 3. PRマージ先: $agg_branch"
|
|
760
|
-
info " 4. 関連ユースケースがすべて揃ったら $agg_branch → main へPR"
|
|
761
|
-
fi
|
|
762
|
-
}
|
|
763
|
-
|
|
764
718
|
# ── review-pass ───────────────────────────────────────────────────────────────
|
|
765
719
|
cmd_review_pass() {
|
|
766
720
|
local file="${1:-}"
|
|
@@ -836,13 +790,31 @@ cmd_review_pass() {
|
|
|
836
790
|
esac
|
|
837
791
|
}
|
|
838
792
|
|
|
793
|
+
# 日本語ゲート名 → 内部キー(set-gate で日本語指定時に使用)
|
|
794
|
+
gate_ja_to_key() {
|
|
795
|
+
case "$1" in
|
|
796
|
+
要件レビュー済み) echo "require_approved" ;;
|
|
797
|
+
用語集確認済み) echo "glossary_checked" ;;
|
|
798
|
+
概要設計レビュー済み) echo "high_level_reviewed" ;;
|
|
799
|
+
ドメインモデルレビュー済み) echo "domain_model_reviewed" ;;
|
|
800
|
+
ユースケース設計レビュー済み) echo "usecase_design_reviewed" ;;
|
|
801
|
+
テーブル設計レビュー済み) echo "table_design_reviewed" ;;
|
|
802
|
+
インフラ設計レビュー済み) echo "infra_design_reviewed" ;;
|
|
803
|
+
テスト設計レビュー済み) echo "test_design_reviewed" ;;
|
|
804
|
+
テストコードコミット済み) echo "test_code_committed" ;;
|
|
805
|
+
*) echo "$1" ;;
|
|
806
|
+
esac
|
|
807
|
+
}
|
|
808
|
+
|
|
839
809
|
# ── set-gate ──────────────────────────────────────────────────────────────────
|
|
840
810
|
cmd_set_gate() {
|
|
841
811
|
require_state
|
|
842
812
|
local gate="${1:-}"
|
|
843
|
-
[[ -n "$gate" ]] || die "使い方: ./.spec-runner/scripts/spec-runner.sh set-gate <ゲート名>"
|
|
844
|
-
|
|
845
|
-
|
|
813
|
+
[[ -n "$gate" ]] || die "使い方: ./.spec-runner/scripts/spec-runner.sh set-gate <ゲート名> 例: 用語集確認済み、テストコードコミット済み"
|
|
814
|
+
local key
|
|
815
|
+
key=$(gate_ja_to_key "$gate")
|
|
816
|
+
state_set_bool "gates.$key" true
|
|
817
|
+
ok "ゲートフラグ設定: $key = true"
|
|
846
818
|
}
|
|
847
819
|
|
|
848
820
|
# ── status 表示用:フェーズ・ゲートの日本語ラベル ─────────────────────────────
|
|
@@ -970,7 +942,7 @@ cmd_status() {
|
|
|
970
942
|
require)
|
|
971
943
|
echo -e " 1. ${CYAN}$req_file${NC} を編集"
|
|
972
944
|
echo -e " 2. /sr-レビュー $req_file"
|
|
973
|
-
echo -e " 3. /sr-ゲート設定
|
|
945
|
+
echo -e " 3. /sr-ゲート設定 用語集確認済み"
|
|
974
946
|
echo -e " 4. /sr-概要設計"
|
|
975
947
|
;;
|
|
976
948
|
design-high)
|
|
@@ -997,15 +969,12 @@ cmd_status() {
|
|
|
997
969
|
;;
|
|
998
970
|
test-design)
|
|
999
971
|
echo -e " 1. docs/04_テスト設計/$(uc_slug).md を編集し、テストコードを書く(Red)"
|
|
1000
|
-
echo -e " 2. テストコードをコミット → /sr-ゲート設定
|
|
972
|
+
echo -e " 2. テストコードをコミット → /sr-ゲート設定 テストコードコミット済み"
|
|
1001
973
|
echo -e " 3. /sr-レビュー docs/04_テスト設計/$(uc_slug).md"
|
|
1002
974
|
echo -e " 4. /sr-実装"
|
|
1003
975
|
;;
|
|
1004
976
|
implement)
|
|
1005
|
-
echo -e "
|
|
1006
|
-
;;
|
|
1007
|
-
complete)
|
|
1008
|
-
echo -e " 完了。PR を作成してマージしてください。"
|
|
977
|
+
echo -e " 実装完了したら: git push → PR 作成。次のユースケースは /sr-初期化 <名前> で開始"
|
|
1009
978
|
;;
|
|
1010
979
|
fix)
|
|
1011
980
|
echo -e " 案内に従って該当ドキュメントを修正し、必要なら /sr-詳細設計 等から再実行。"
|
|
@@ -1136,7 +1105,6 @@ main() {
|
|
|
1136
1105
|
design-detail) cmd_design_detail "$@" ;;
|
|
1137
1106
|
test-design) cmd_test_design "$@" ;;
|
|
1138
1107
|
implement) cmd_implement "$@" ;;
|
|
1139
|
-
complete) cmd_complete "$@" ;;
|
|
1140
1108
|
review-pass) cmd_review_pass "$@" ;;
|
|
1141
1109
|
set-gate) cmd_set_gate "$@" ;;
|
|
1142
1110
|
status) cmd_status "$@" ;;
|
|
@@ -1154,11 +1122,10 @@ main() {
|
|
|
1154
1122
|
echo " design-detail <sub> 詳細設計フェーズ(sub: domain|usecase|table|infra)"
|
|
1155
1123
|
echo " test-design テスト設計フェーズに移行(ゲートチェック)"
|
|
1156
1124
|
echo " implement 実装フェーズに移行(ゲートチェック)"
|
|
1157
|
-
echo " complete 実装完了(完了チェック)"
|
|
1158
1125
|
echo ""
|
|
1159
1126
|
echo -e "${BOLD}レビュー:${NC}"
|
|
1160
1127
|
echo " review-pass <ファイル> ドキュメントをレビュー通過にする"
|
|
1161
|
-
echo " set-gate <ゲート名>
|
|
1128
|
+
echo " set-gate <ゲート名> 手動でゲートフラグを立てる(日本語可。例: 用語集確認済み)"
|
|
1162
1129
|
echo ""
|
|
1163
1130
|
echo -e "${BOLD}確認:${NC}"
|
|
1164
1131
|
echo " status 現在の状態を表示"
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# /sr-ゲート設定
|
|
2
2
|
|
|
3
|
-
**チャットで使うコマンド**。$ARGUMENTS にゲート名を指定し、以下を**ターミナルで実行**してください(例: `/sr-ゲート設定
|
|
3
|
+
**チャットで使うコマンド**。$ARGUMENTS にゲート名を指定し、以下を**ターミナルで実行**してください(例: `/sr-ゲート設定 用語集確認済み`)。
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
6
|
./.spec-runner/scripts/spec-runner.sh set-gate $ARGUMENTS
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
ゲート名は**日本語**でも**英語キー**でも指定できます。引数が空の場合は、ユーザーに「ゲート名を指定してください。例: 用語集確認済み、テストコードコミット済み、概要設計レビュー済み」と伝えてください。
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
- require → design-high → design-detail (domain → usecase → table → infra) → test-design → implement
|
|
20
20
|
- 各フェーズ完了時: `./.spec-runner/scripts/spec-runner.sh review-pass <該当ファイル>`
|
|
21
21
|
- ゲート: `./.spec-runner/scripts/spec-runner.sh set-gate glossary_checked` など
|
|
22
|
-
-
|
|
22
|
+
- 実装完了後: git push → PR。次のユースケースは `init <名前>` で開始
|
|
23
23
|
- 修正: `./.spec-runner/scripts/spec-runner.sh fix "内容"` / `./.spec-runner/scripts/spec-runner.sh hotfix "内容"`
|
|
24
24
|
|
|
25
25
|
詳細はプロジェクトの README を参照。
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
agent: 'agent'
|
|
3
3
|
description: 'spec-runner: ゲート通過を記録'
|
|
4
|
-
argument-hint: 'ゲート名(例:
|
|
4
|
+
argument-hint: 'ゲート名(例: 用語集確認済み、テストコードコミット済み)'
|
|
5
5
|
tools: ['shell']
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -11,4 +11,4 @@ tools: ['shell']
|
|
|
11
11
|
./.spec-runner/scripts/spec-runner.sh set-gate ${input:gate:ゲート名}
|
|
12
12
|
```
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
ゲート名は日本語(用語集確認済み、テストコードコミット済み など)または英語キーで指定できます。引数が空の場合は、ユーザーに「ゲート名を指定してください。例: 用語集確認済み、テストコードコミット済み」と伝えてください。
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
# /sr-ゲート設定
|
|
2
2
|
|
|
3
|
-
**チャットで使うコマンド**。ユーザーが `/sr-ゲート設定` の後に続けて入力したゲート名で、以下を**ターミナルで実行**してください(例: `/sr-ゲート設定
|
|
3
|
+
**チャットで使うコマンド**。ユーザーが `/sr-ゲート設定` の後に続けて入力したゲート名で、以下を**ターミナルで実行**してください(例: `/sr-ゲート設定 用語集確認済み`)。
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
6
|
./.spec-runner/scripts/spec-runner.sh set-gate <ユーザーが入力したゲート名>
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
ゲート名は**日本語**でも**英語キー**でも指定できます。引数が空の場合は、ユーザーに次のように伝えてください。
|
|
10
|
+
|
|
11
|
+
「ゲート名を指定してください。例: 用語集確認済み、テストコードコミット済み、概要設計レビュー済み」
|
|
@@ -1,10 +1,35 @@
|
|
|
1
1
|
# /sr-初期化
|
|
2
2
|
|
|
3
|
-
**チャットで使うコマンド**。ユーザーが `/sr-初期化`
|
|
3
|
+
**チャットで使うコマンド**。ユーザーが `/sr-初期化` の後に続けて入力した文字列を引数として扱います(例: `/sr-初期化 Todoアプリ` → ユースケース名「Todoアプリ」)。
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
./.spec-runner/scripts/spec-runner.sh init <ユーザーが入力した引数>
|
|
7
|
-
```
|
|
5
|
+
## 重要: 対話は「チャット上で AI が埋める」形式で行う
|
|
8
6
|
|
|
9
|
-
-
|
|
10
|
-
|
|
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,11 +1,20 @@
|
|
|
1
1
|
# /sr-設定
|
|
2
2
|
|
|
3
|
-
詳細設定(パス・TDD・DDD
|
|
3
|
+
詳細設定(パス・TDD・DDD 等)を**チャット上で AI が埋める**形で行います。ユースケースは作成しません。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## 重要: 対話はターミナルではなくチャットで行う
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
./.spec-runner/scripts/spec-runner.sh init
|
|
9
|
-
```
|
|
7
|
+
- **ターミナルで `init` を実行して入力待ちにしないこと。** AI がプロジェクトを確認し、必要ならチャットでユーザーに聞きながら設定を決め、**AI が** `.spec-runner/config.sh` を編集・生成する。
|
|
10
8
|
|
|
11
|
-
|
|
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` を実行して対話に頼る必要はない。**
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
- `phase` が `implement` でないときは実装コードを生成しない。ユーザーに「現在のフェーズを確認してください」と伝える。
|
|
9
9
|
- ユーザーが「init して」「status 確認して」「design-high で進めて」などと言ったら、対応する `./scripts/spec-runner.sh` をターミナルで実行する。
|
|
10
10
|
- スラッシュコマンド `/sr-init` などは `.cursor/commands/` に定義済み。チャットで `/sr-status` のように呼び出せる(Agent 経由でシェル実行)。
|
|
11
|
+
- **初期化・設定**: `/sr-初期化` や `/sr-設定` では、未設定時も**ターミナルの入力待ちにしない**。AI がプロジェクトを確認し、チャットで聞くか推測して `.spec-runner/config.sh` を編集・生成してから init を実行する(対話は「AI がどんどん埋めていく」形式)。
|
|
11
12
|
|
|
12
13
|
## TDD(テスト駆動)— デフォルトで有効
|
|
13
14
|
|
|
@@ -19,7 +20,7 @@
|
|
|
19
20
|
- require → design-high → design-detail (domain → usecase → table → infra) → test-design → implement
|
|
20
21
|
- 各フェーズ完了時: `./scripts/spec-runner.sh review-pass <該当ファイル>`
|
|
21
22
|
- ゲート: `./scripts/spec-runner.sh set-gate glossary_checked` など
|
|
22
|
-
-
|
|
23
|
+
- 実装完了後: git push → PR。次のユースケースは `./scripts/spec-runner.sh init <名前>` で開始
|
|
23
24
|
- 修正: `./scripts/spec-runner.sh fix "内容"` / `./scripts/spec-runner.sh hotfix "内容"`
|
|
24
25
|
|
|
25
26
|
詳細はプロジェクトの CLAUDE.md または README を参照。
|