spec-runner 1.1.6 → 1.1.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.
Files changed (92) hide show
  1. package/README.md +51 -80
  2. package/bin/spec-runner-installer.js +401 -0
  3. package/install.sh +1 -1
  4. package/package.json +7 -6
  5. package/spec-runner/templates/.claude/agents/code-reviewer.md +69 -0
  6. package/spec-runner/templates/.claude/agents/design-reviewer.md +65 -0
  7. package/spec-runner/templates/.claude/agents/test-runner.md +34 -0
  8. package/spec-runner/templates/.claude/rules/coding.md +106 -0
  9. package/spec-runner/templates/.claude/rules/design-docs.md +63 -0
  10. package/spec-runner/templates/.claude/skills/architecture-definition/SKILL.md +60 -0
  11. package/spec-runner/templates/.claude/skills/architecture-skill-development/SKILL.md +126 -0
  12. package/spec-runner/templates/.claude/skills/commit/SKILL.md +83 -0
  13. package/spec-runner/templates/.claude/skills/design-change/SKILL.md +94 -0
  14. 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 +66 -0
  15. package/spec-runner/templates/.claude/skills/design-change/templates/90_ADR/ADR/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +81 -0
  16. package/spec-runner/templates/.claude/skills/existing-project-to-docs/SKILL.md +57 -0
  17. package/spec-runner/templates/.claude/skills/harness-engineering/SKILL.md +100 -0
  18. package/spec-runner/templates/.claude/skills/plugin-development/SKILL.md +173 -0
  19. package/spec-runner/templates/.claude/skills/plugin-development/templates/01_/350/246/201/344/273/266/345/256/232/347/276/251//346/246/202/350/246/201/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +88 -0
  20. package/spec-runner/templates/.claude/skills/plugin-development/templates/02_/346/246/202/350/246/201/350/250/255/350/250/210/90_ADR/ADR/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +81 -0
  21. package/spec-runner/templates/.claude/skills/plugin-development/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/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +80 -0
  22. package/spec-runner/templates/.claude/skills/plugin-development/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/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +57 -0
  23. package/spec-runner/templates/.claude/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/infrastructure/aws.md +53 -0
  24. package/spec-runner/templates/.claude/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/infrastructure/database.md +54 -0
  25. package/spec-runner/templates/.claude/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/infrastructure/schema.dbml +25 -0
  26. package/spec-runner/templates/.claude/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/infrastructure/sequence//343/202/267/343/203/274/343/202/261/343/203/263/343/202/271/345/233/263/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +28 -0
  27. package/spec-runner/templates/.claude/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/agents/{agent_name}/agent.md +56 -0
  28. package/spec-runner/templates/.claude/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/agents/{agent_name}/config.md +47 -0
  29. package/spec-runner/templates/.claude/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/agents/{agent_name}/domain.md +67 -0
  30. package/spec-runner/templates/.claude/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/agents/{agent_name}/prompts.md +72 -0
  31. package/spec-runner/templates/.claude/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/plugins/skills/{skill_name}/skill.md +53 -0
  32. package/spec-runner/templates/.claude/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/plugins/tools/{tool_name}/tool.md +51 -0
  33. package/spec-runner/templates/.claude/skills/test-driven-development/SKILL.md +211 -0
  34. package/spec-runner/templates/.github/agents/code-reviewer.agent.md +69 -0
  35. package/spec-runner/templates/.github/agents/design-reviewer.agent.md +65 -0
  36. package/spec-runner/templates/.github/agents/test-runner.agent.md +34 -0
  37. package/spec-runner/templates/.github/instructions/coding.instructions.md +105 -0
  38. package/spec-runner/templates/.github/instructions/design-docs.instructions.md +62 -0
  39. package/spec-runner/templates/.github/skills/architecture-definition/SKILL.md +60 -0
  40. package/spec-runner/templates/.github/skills/architecture-skill-development/SKILL.md +126 -0
  41. package/spec-runner/templates/.github/skills/commit/SKILL.md +83 -0
  42. package/spec-runner/templates/.github/skills/design-change/SKILL.md +94 -0
  43. 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 +66 -0
  44. package/spec-runner/templates/.github/skills/design-change/templates/90_ADR/ADR/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +81 -0
  45. package/spec-runner/templates/.github/skills/existing-project-to-docs/SKILL.md +57 -0
  46. package/spec-runner/templates/.github/skills/harness-engineering/SKILL.md +100 -0
  47. package/spec-runner/templates/.github/skills/plugin-development/SKILL.md +173 -0
  48. package/spec-runner/templates/.github/skills/plugin-development/templates/01_/350/246/201/344/273/266/345/256/232/347/276/251//346/246/202/350/246/201/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +88 -0
  49. package/spec-runner/templates/.github/skills/plugin-development/templates/02_/346/246/202/350/246/201/350/250/255/350/250/210/90_ADR/ADR/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +81 -0
  50. package/spec-runner/templates/.github/skills/plugin-development/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/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +80 -0
  51. package/spec-runner/templates/.github/skills/plugin-development/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/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +57 -0
  52. package/spec-runner/templates/.github/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/infrastructure/aws.md +53 -0
  53. package/spec-runner/templates/.github/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/infrastructure/database.md +54 -0
  54. package/spec-runner/templates/.github/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/infrastructure/schema.dbml +25 -0
  55. package/spec-runner/templates/.github/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/infrastructure/sequence//343/202/267/343/203/274/343/202/261/343/203/263/343/202/271/345/233/263/343/203/206/343/203/263/343/203/227/343/203/254/343/203/274/343/203/210.md +28 -0
  56. package/spec-runner/templates/.github/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/agents/{agent_name}/agent.md +56 -0
  57. package/spec-runner/templates/.github/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/agents/{agent_name}/config.md +47 -0
  58. package/spec-runner/templates/.github/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/agents/{agent_name}/domain.md +67 -0
  59. package/spec-runner/templates/.github/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/agents/{agent_name}/prompts.md +72 -0
  60. package/spec-runner/templates/.github/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/plugins/skills/{skill_name}/skill.md +53 -0
  61. package/spec-runner/templates/.github/skills/plugin-development/templates/03_/350/251/263/347/264/260/350/250/255/350/250/210/src/plugins/tools/{tool_name}/tool.md +51 -0
  62. package/spec-runner/templates/.github/skills/test-driven-development/SKILL.md +211 -0
  63. package/bin/spec-runner.js +0 -270
  64. package/docs/flow.md +0 -72
  65. package/templates/.spec-runner/project.json.example +0 -27
  66. package/templates/.spec-runner/scripts/check.sh +0 -390
  67. package/templates/.spec-runner/scripts/spec-runner-core.sh +0 -287
  68. package/templates/.spec-runner/scripts/uc-next-start.sh +0 -161
  69. package/templates/.spec-runner/spec-runner.sh +0 -29
  70. package/templates/.spec-runner/steps/steps.json +0 -96
  71. package/templates/.spec-runner/steps//343/203/206/343/202/271/343/203/210/350/250/255/350/250/210.md +0 -58
  72. package/templates/.spec-runner/steps//343/203/211/343/203/241/343/202/244/343/203/263/350/250/255/350/250/210.md +0 -52
  73. package/templates/.spec-runner/steps//344/273/225/346/247/230/347/255/226/345/256/232.md +0 -210
  74. package/templates/.spec-runner/steps//345/210/206/346/236/220.md +0 -106
  75. package/templates/.spec-runner/steps//345/256/237/350/243/205.md +0 -80
  76. package/templates/.spec-runner/steps//345/256/237/350/243/205/350/250/210/347/224/273.md +0 -96
  77. package/templates/.spec-runner/steps//346/206/262/347/253/240.md +0 -95
  78. package/templates/.spec-runner/steps//346/233/226/346/230/247/343/201/225/350/247/243/346/266/210.md +0 -110
  79. 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 +0 -33
  80. 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 +0 -26
  81. package/templates/.spec-runner/templates/phase-locks.json +0 -49
  82. 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 +0 -21
  83. 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 +0 -16
  84. package/templates/.spec-runner/templates//346/206/262/347/253/240.md +0 -51
  85. package/templates/.spec-runner/templates//351/233/206/347/264/204.md +0 -46
  86. package/templates/mkdocs-scaffold/docs/index.md +0 -32
  87. package/templates/mkdocs-scaffold/mkdocs.yml +0 -16
  88. package/templates/mkdocs-scaffold/requirements-docs.txt +0 -2
  89. package/templates/skills/uc-k1-work-card-init/SKILL.md +0 -76
  90. package/templates/skills/uc-k2-pre-commit-check/SKILL.md +0 -57
  91. package/templates/skills/uc-k3-spec-impl-diff-review/SKILL.md +0 -57
  92. package/templates/spec-runner-command.md +0 -47
@@ -1,161 +0,0 @@
1
- #!/usr/bin/env bash
2
- # 次の UC 仕様のひな形を作成する(Git ブランチの作成・切替は行わない)。
3
- # 使用例:
4
- # ./uc-next-start.sh "task-management" "タスク管理機能追加" "タスク管理"
5
- # ./uc-next-start.sh UC-2 "order-cancel" "注文キャンセル" "注文"
6
- # ./uc-next-start.sh --yes "task-management" "タスク管理機能追加" "タスク管理"
7
- # 引数仕様(位置引数):
8
- # [UC-ID] [SLUG] [TITLE] [CATEGORY]
9
- # - UC-ID: 省略可(例: UC-2)
10
- # - SLUG: 必須。識別用の短名(ASCII, kebab-case 推奨。ファイル名には使わず参考・一貫性のため)
11
- # - TITLE: 必須。UC ファイル題名(日本語推奨)
12
- # - CATEGORY: 必須。docs/02_ユースケース仕様/ 配下のカテゴリ名(日本語可)
13
- # 重要: 空欄の引数は禁止。SLUG/TITLE/CATEGORY は必ず指定する
14
-
15
- set -e
16
- REPO_ROOT="${REPO_ROOT:-$(git rev-parse --show-toplevel 2>/dev/null || echo ".")}"
17
- cd "$REPO_ROOT"
18
-
19
- git rev-parse --is-inside-work-tree >/dev/null 2>&1 || {
20
- echo "Error: Git リポジトリ内で実行してください。" >&2
21
- exit 1
22
- }
23
-
24
- YES_MODE=false
25
- ARGS=()
26
- for a in "$@"; do
27
- case "$a" in
28
- --yes|-y) YES_MODE=true ;;
29
- *)
30
- if [[ -z "$a" ]]; then
31
- echo "Error: 空文字の引数は使用できません。UC-ID を省略する場合は引数自体を渡さないでください。" >&2
32
- exit 1
33
- fi
34
- ARGS+=("$a")
35
- ;;
36
- esac
37
- done
38
-
39
- PROJECT_JSON="$REPO_ROOT/.spec-runner/project.json"
40
- [[ -f "$PROJECT_JSON" ]] || { echo "uc-next-start: project.json がありません: $PROJECT_JSON" >&2; exit 1; }
41
- command -v jq >/dev/null 2>&1 || { echo "uc-next-start: jq が必要です(brew install jq)" >&2; exit 1; }
42
- UC_ID_RE="$(jq -r '.naming.uc_id_pattern' "$PROJECT_JSON")"
43
- [[ -n "$UC_ID_RE" && "$UC_ID_RE" != "null" ]] || {
44
- echo "uc-next-start: project.json の naming.uc_id_pattern が未設定です" >&2
45
- exit 1
46
- }
47
-
48
- next_uc_id_for_category() {
49
- local category="$1"
50
- local dir="$REPO_ROOT/docs/02_ユースケース仕様/${category}"
51
- mkdir -p "$dir"
52
- local max=0
53
- for f in "$dir"/UC-*.md; do
54
- [[ -e "$f" ]] || continue
55
- base=$(basename "$f" .md)
56
- if [[ "$base" =~ ^(${UC_ID_RE})- ]]; then
57
- uc_id="${BASH_REMATCH[1]}"
58
- digits=$(echo "$uc_id" | tr -cd '0-9')
59
- [[ -z "$digits" ]] && continue
60
- n=$((10#$digits))
61
- [[ $n -gt $max ]] && max=$n
62
- fi
63
- done
64
- printf "UC-%d\n" $((max + 1))
65
- }
66
-
67
- NEXT_UC=""
68
- UC_ID_EXPLICIT=0
69
- SLUG=""
70
- TITLE=""
71
- CATEGORY=""
72
- if [[ ${#ARGS[@]} -ge 1 ]] && [[ "${ARGS[0]}" =~ ^${UC_ID_RE}$ ]]; then
73
- [[ ${#ARGS[@]} -eq 4 ]] || {
74
- echo "Usage: .spec-runner/scripts/uc-next-start.sh [UC-ID] \"SLUG\" \"TITLE\" \"CATEGORY\" [--yes]" >&2
75
- echo " - UC-ID を指定した場合は SLUG/TITLE/CATEGORY の3引数が必須です" >&2
76
- exit 1
77
- }
78
- NEXT_UC="${ARGS[0]}"
79
- UC_ID_EXPLICIT=1
80
- SLUG="${ARGS[1]}"
81
- TITLE="${ARGS[2]}"
82
- CATEGORY="${ARGS[3]}"
83
- else
84
- [[ ${#ARGS[@]} -eq 3 ]] || {
85
- echo "Usage: .spec-runner/scripts/uc-next-start.sh [UC-ID] \"SLUG\" \"TITLE\" \"CATEGORY\" [--yes]" >&2
86
- echo " - UC-ID は任意、SLUG/TITLE/CATEGORY は必須です(空文字禁止)" >&2
87
- exit 1
88
- }
89
- SLUG="${ARGS[0]}"
90
- TITLE="${ARGS[1]}"
91
- CATEGORY="${ARGS[2]}"
92
- fi
93
-
94
- if [[ -z "$SLUG" || -z "$TITLE" || -z "$CATEGORY" ]]; then
95
- echo "Usage: .spec-runner/scripts/uc-next-start.sh [UC-ID] \"SLUG\" \"TITLE\" \"CATEGORY\" [--yes]" >&2
96
- echo " - UC-ID は任意、SLUG/TITLE/CATEGORY は必須です(空文字禁止)" >&2
97
- exit 1
98
- fi
99
-
100
- SLUG=$(echo "$SLUG" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g' | sed 's/--*/-/g' | sed 's/^-*//' | sed 's/-*$//')
101
- if [[ -z "$SLUG" ]]; then
102
- echo "Error: SLUG は英数字・ハイフンへ正規化可能な値を指定してください(例: task-management)。" >&2
103
- exit 1
104
- fi
105
-
106
- DOC_TITLE="$TITLE"
107
- DOC_TITLE=$(echo "$DOC_TITLE" | sed 's/[\\\\\\/\\:\\*\\?\\\"\\<\\>\\|]/ /g' | sed 's/[[:space:]]\\+/ /g' | sed 's/^ *//; s/ *$//')
108
- if [[ -z "$DOC_TITLE" ]]; then
109
- echo "Error: TITLE が不正です(危険文字除去後に空になりました)。" >&2
110
- exit 1
111
- fi
112
-
113
- CATEGORY=$(echo "$CATEGORY" | sed 's/[\\\/:\*\?"<>|]//g' | sed 's/[[:cntrl:]]//g' | sed 's/[[:space:]]\+/ /g' | sed 's/^ *//; s/ *$//')
114
- if [[ -z "$CATEGORY" ]]; then
115
- echo "Error: CATEGORY は空にできません。" >&2
116
- exit 1
117
- fi
118
-
119
- if [[ $UC_ID_EXPLICIT -eq 0 ]]; then
120
- NEXT_UC="$(next_uc_id_for_category "$CATEGORY")"
121
- fi
122
-
123
- FEATURE_DIR="docs/02_ユースケース仕様/${CATEGORY}"
124
- UC_DOC="${FEATURE_DIR}/${NEXT_UC}-${DOC_TITLE}.md"
125
-
126
- if [[ -f "$UC_DOC" ]]; then
127
- echo "Error: 既に存在します: $UC_DOC" >&2
128
- exit 1
129
- fi
130
-
131
- UC_ID_PATTERN="^${UC_ID_RE}$"
132
- if ! echo "$NEXT_UC" | grep -qE "$UC_ID_PATTERN"; then
133
- echo "Error: UC-ID が命名規則に合いません: $NEXT_UC(期待: $UC_ID_PATTERN)" >&2
134
- exit 1
135
- fi
136
-
137
- if [[ "$YES_MODE" != true ]]; then
138
- echo "次の UC 仕様のひな形を作成します(ブランチは作成しません)。"
139
- echo " → $UC_DOC"
140
- echo -n " 実行してよろしいですか? [y/N]: "
141
- read -r ans
142
- case "$ans" in
143
- [yY]|[yY][eE][sS]) ;;
144
- *) echo "キャンセルしました。"; exit 0 ;;
145
- esac
146
- fi
147
-
148
- mkdir -p "$FEATURE_DIR"
149
- mkdir -p "${FEATURE_DIR}/判断記録"
150
- TEMPLATE="$REPO_ROOT/.spec-runner/templates/UC-N-ユースケース名.md"
151
- if [[ -f "$TEMPLATE" ]]; then
152
- sed "s/UC-N/${NEXT_UC}/g; s/{ユースケース名}/${DOC_TITLE}/g" "$TEMPLATE" > "$UC_DOC"
153
- echo "Created: $UC_DOC"
154
- else
155
- touch "$UC_DOC"
156
- echo "# ${NEXT_UC}: ${DOC_TITLE}" >> "$UC_DOC"
157
- echo "Created: $UC_DOC"
158
- fi
159
-
160
- echo ""
161
- echo "UC 仕様の準備ができました(現在のブランチは変更していません)。次のステップに進んでください。"
@@ -1,29 +0,0 @@
1
- #!/usr/bin/env bash
2
- # spec-runner エントリポイント。次のステップ(現在フェーズ・やるべきステップ .md)を返す。
3
- # 使用: .spec-runner/spec-runner.sh [次のステップ] [--json|--lock]
4
-
5
- set -e
6
- REPO_ROOT="${REPO_ROOT:-$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)}"
7
- cd "$REPO_ROOT"
8
- SR="$REPO_ROOT/.spec-runner/scripts"
9
-
10
- cmd="${1:-}"
11
- shift || true
12
-
13
- case "$cmd" in
14
- 次のステップ|"")
15
- if [[ "$cmd" == "" ]]; then
16
- # 引数なしは「次のステップ」として扱う(/spec-runner スラッシュコマンド用)
17
- :
18
- fi
19
- case "${1:-}" in
20
- --lock) exec "$SR/spec-runner-core.sh" --status ;;
21
- *) exec "$SR/spec-runner-core.sh" --phase "$@" ;;
22
- esac
23
- ;;
24
- *)
25
- echo "spec-runner: 引数なし、または「次のステップ」[--json|--lock] のみ対応しています。" >&2
26
- echo " 使用例: .spec-runner/spec-runner.sh 次のステップ --json" >&2
27
- exit 1
28
- ;;
29
- esac
@@ -1,96 +0,0 @@
1
- {
2
- "version": 2,
3
- "note": "薄いオーケストレータ向け steps 定義。主線6本(実行フェーズ5本 + 憲章)+ 横断2本(clarify/analyze)。",
4
- "common": {
5
- "docs": {
6
- "root": "docs",
7
- "work_card": "docs/work.md",
8
- "charter": "docs/01_憲章/憲章.md",
9
- "uc_root": "docs/02_ユースケース仕様",
10
- "domain_root": "docs/03_ドメイン設計",
11
- "architecture_root": "docs/04_アーキテクチャ",
12
- "infra_root": "docs/05_インフラ設計",
13
- "api_root": "docs/06_API仕様",
14
- "openapi": "docs/06_API仕様/openapi.yaml"
15
- },
16
- "commands": {
17
- "check": ".spec-runner/scripts/check.sh",
18
- "start_next_uc": ".spec-runner/scripts/uc-next-start.sh"
19
- }
20
- },
21
- "steps": [
22
- {
23
- "id": "charter",
24
- "name_ja": "憲章",
25
- "phase": 0,
26
- "md_file": "憲章.md",
27
- "commands": [{ "id": "check", "command": ".spec-runner/scripts/check.sh" }],
28
- "primary_outputs": ["docs/01_憲章/憲章.md", "docs/work.md"]
29
- },
30
- {
31
- "id": "uc_spec",
32
- "name_ja": "仕様策定",
33
- "phase": 1,
34
- "md_file": "仕様策定.md",
35
- "commands": [
36
- { "id": "start_uc_spec_scaffold", "command": ".spec-runner/scripts/uc-next-start.sh" },
37
- { "id": "check", "command": ".spec-runner/scripts/check.sh" }
38
- ],
39
- "primary_outputs": ["docs/02_ユースケース仕様/<カテゴリ>/UC-<N>-<題名>.md", "docs/work.md"]
40
- },
41
- {
42
- "id": "domain",
43
- "name_ja": "ドメイン設計",
44
- "phase": 2,
45
- "md_file": "ドメイン設計.md",
46
- "commands": [{ "id": "check", "command": ".spec-runner/scripts/check.sh" }],
47
- "primary_outputs": [
48
- "docs/03_ドメイン設計/ユビキタス言語辞書.md",
49
- "docs/03_ドメイン設計/ドメインモデル.md",
50
- "docs/03_ドメイン設計/集約.md",
51
- "docs/work.md"
52
- ]
53
- },
54
- {
55
- "id": "architecture_plan",
56
- "name_ja": "実装計画",
57
- "phase": 3,
58
- "md_file": "実装計画.md",
59
- "commands": [{ "id": "check", "command": ".spec-runner/scripts/check.sh" }],
60
- "primary_outputs": ["docs/04_アーキテクチャ/*", "docs/work.md"],
61
- "secondary_outputs_optional": ["docs/06_API仕様/openapi.yaml"]
62
- },
63
- {
64
- "id": "test_design",
65
- "name_ja": "テスト設計",
66
- "phase": 5,
67
- "md_file": "テスト設計.md",
68
- "commands": [{ "id": "check", "command": ".spec-runner/scripts/check.sh" }],
69
- "primary_outputs": ["<test_design.dir>/**/*.spec.*", "docs/work.md"]
70
- },
71
- {
72
- "id": "implement",
73
- "name_ja": "実装",
74
- "phase": 6,
75
- "md_file": "実装.md",
76
- "commands": [{ "id": "check", "command": ".spec-runner/scripts/check.sh" }],
77
- "primary_outputs": ["src/**", "<tests green>", "docs/work.md"]
78
- },
79
- {
80
- "id": "clarify",
81
- "name_ja": "曖昧さ解消",
82
- "phase": null,
83
- "md_file": "曖昧さ解消.md",
84
- "commands": [{ "id": "check", "command": ".spec-runner/scripts/check.sh" }],
85
- "primary_outputs": ["(target spec update)", "docs/work.md"]
86
- },
87
- {
88
- "id": "analyze",
89
- "name_ja": "分析",
90
- "phase": null,
91
- "md_file": "分析.md",
92
- "commands": [{ "id": "check", "command": ".spec-runner/scripts/check.sh" }],
93
- "primary_outputs": ["(analysis report)", "docs/work.md"]
94
- }
95
- ]
96
- }
@@ -1,58 +0,0 @@
1
- ---
2
- step_id: test_design
3
- phase: 5
4
- primary_output: project.json の test_design.dir(既定 tests)
5
- ---
6
-
7
- # テスト設計(Phase 5: TEST DESIGN)
8
-
9
- **やること**: UC 仕様と受入条件に基づき、**PENDING 状態のテストコード**を `test_design.dir`(既定 `tests`)に作成する。あわせて `docs/work.md` の実装タスク・検証結果を更新する。
10
-
11
- **機械的な前提**(`project.json` の `test_design.require_uc_prefixed_tests` が true のとき): ファイル名は **`UC-N-<slug>.spec.<ext>`**(対象 UC の番号と一致)にすること。true の場合だけ、**命名が無いと「次のステップ」は実装フェーズに進みません**。
12
-
13
- | 項目 | 内容 |
14
- |------|------|
15
- | **出力先** | `.spec-runner/project.json` の `test_design.dir`(既定: `tests`)、パターンは `test_design.pattern`(既定: `*.spec.*`)。Python は `test_*.py` 等に変更可 |
16
- | **ドキュメント** | **読み取り専用**(test_design.dir への**追加のみ**)。UC 仕様の修正は「曖昧さ解消」等で別途 |
17
- | **命名** | (推奨) `UC-N-{ユースケース名}.spec.{拡張子}` 。`test_design.require_uc_prefixed_tests=true` のときだけ必須。 |
18
- | **ピラミッド** | spec セクション 14: Unit : Integration : E2E ≈ 70 : 20 : 10。E2E は UC 1 本あたり最大 2 本目安 |
19
-
20
- ## ユーザー入力
21
-
22
- `$ARGUMENTS`(空でなければ必ず考慮)
23
-
24
- ```text
25
- $ARGUMENTS
26
- ```
27
-
28
- ## 実行フロー
29
-
30
- 1. **セットアップ**
31
- リポジトリルートで `.spec-runner/spec-runner.sh 次のステップ --json`。JSON の `feature_spec`・`feature_dir` を使用。
32
-
33
- 2. **UC 仕様の読み込み**
34
- - FEATURE_SPEC から受入条件・成功基準・ユーザーストーリーを抽出
35
- - `docs/04_アーキテクチャ/命名規則.md` の SOURCE_EXTENSIONS でテスト拡張子(例: ts → `.spec.ts`)
36
- - `feature_spec` のファイル名から UC 番号と識別名を決める(例: `UC-1-注文作成.md` → UC-1, order-placement)
37
-
38
- 3. **配置と命名**
39
- - ベース: **`project.json` の `test_design.dir`**、パターンは `test_design.pattern`
40
- - `test_design.require_uc_prefixed_tests=true` の場合:
41
- - ユニット/UC: `{dir}/unit/UC-N-{名}.spec.{ext}`(例: `tests/unit/UC-1-order-placement.spec.ts`)
42
- - E2E: `{dir}/e2e/UC-N-{名}.e2e.spec.{ext}`
43
- - 集約不変条件: `{dir}/unit/{集約名}.invariants.spec.{ext}`
44
- - `false` の場合: `test_design.pattern` に合致するテストファイル名であれば任意(ディレクトリ構造は既存に合わせる)
45
-
46
- 4. **PENDING で記述**
47
- - 受入条件・成功基準ごとに **スキップ/TODO**(`it.todo` / `test.skip` / `@pending` 等)
48
- - 説明文は UC の受入・成功基準と対応。アサーションは仮で可(Phase 6 でグリーン)
49
- - **E2E**: 当該 UC のハッピーパスを 1 本以上 PENDING。Phase 6 完了時は**少なくとも 1 本グリーン**を目標
50
-
51
- 5. **コンパイル・実行確認**
52
- プロジェクトのテストコマンドでコンパイル通過、PENDING がスキップされて実行できること。Gate 5 は「テストコード存在 + コンパイル通過」。
53
-
54
- 6. **報告**
55
- 作成ファイル一覧と UC・受入条件の対応表。続けて「分析」「チェックリスト」→ 人間承認後 **AI が phase-locks 更新** → Phase 6 へ、と案内。
56
-
57
- ---
58
- **次**: 完了後、次のステップへ進む。
@@ -1,52 +0,0 @@
1
- ---
2
- step_id: domain
3
- phase: 1
4
- primary_output: docs/03_ドメイン設計/
5
- ---
6
-
7
- # ドメイン設計(Domain)
8
-
9
- **やること**: `docs/03_ドメイン設計/` にユビキタス言語・ドメインモデル・集約等を整備する。完了後、レビュー通過で `phase-locks.json` の `domain` に `completed: true`。あわせて `docs/work.md` の実装タスクを更新する。
10
-
11
- | 項目 | 内容 |
12
- |------|------|
13
- | **成果物** | `docs/03_ドメイン設計/` 配下の各ファイル |
14
- | **テンプレ** | 無い場合は `.spec-runner/templates/` から `ユビキタス言語辞書.md`, `ドメインモデル.md`, `集約.md` 等を生成してから編集 |
15
- | **ロック** | 設計書本文に `status: reviewed` は書かない(phase-locks のみ) |
16
-
17
- ## ユーザー入力
18
-
19
- `$ARGUMENTS`(空でなければ必ず考慮)
20
-
21
- ```text
22
- $ARGUMENTS
23
- ```
24
-
25
- ## 前提条件
26
-
27
- | 状況 | 行動 |
28
- |------|------|
29
- | `docs/03_ドメイン設計/` が無い | このフェーズで**新規作成**し、各ファイルを配置する(フェーズごとにフォルダを1つずつ作る想定) |
30
- | ファイルが無い | テンプレから生成してから編集 |
31
-
32
- ## 実行フロー
33
-
34
- 1. **成果物の確認**(spec.md Phase 1 に沿っているか)
35
- - `ユビキタス言語辞書.md`(禁止語欄付き)
36
- - `ドメインモデル.md`
37
- - `集約.md`(各集約に**「対応テーブル」**欄)
38
- - 必要に応じて `エンティティ.md`・`値オブジェクト.md`
39
-
40
- 2. **編集・追記**
41
- ユーザー指示や UC で発見した新概念に基づき上記を更新。骨格(主要集約と境界)を確定し、必要に応じて後続で肉付けする。
42
- 不明は推測で確定せず **`[要確認: ...]`** を残す(例: `[要確認: 集約境界の決め手(更新頻度/整合性要件)]`)。
43
-
44
- 3. **レビュー通過後**
45
- **AI が** `.spec-runner/phase-locks.json` の `domain` に `completed: true` と `locked_at` を設定。
46
-
47
- ## 重要ルール
48
-
49
- - **集約.md** の各集約に **対応テーブル(schema.dbml との対応)** 欄を必ず含める(spec.md Phase 1 ゲート)。
50
-
51
- ---
52
- **次**: 完了後、次のステップへ進む。
@@ -1,210 +0,0 @@
1
- ---
2
- step_id: spec
3
- phase: 3
4
- primary_output: docs/02_ユースケース仕様/<カテゴリ>/UC-N-xxx.md
5
- ---
6
-
7
- # ユースケース仕様(UC 仕様書)
8
-
9
- **やること**: 機能説明(`$ARGUMENTS`)から UC 仕様書を作成(または更新)し、テンプレに沿って埋める。その後 quality フロー(clarify → analyze)を回し、必要に応じて checklist を実施して review-pass へ進む。あわせて `docs/work.md` の受入条件・実装タスクを同期する。
10
-
11
- | 項目 | 内容 |
12
- |------|------|
13
- | **成果物** | `docs/02_ユースケース仕様/<カテゴリ>/UC-N-xxx.md`(1 UC = 1 本) |
14
- | **Git** | **フェーズごとにブランチを切る必要はない。** 今いるブランチで仕様を書いてよい。**コミットしたくなったタイミング**で、AI に `project.json` の naming に沿った**ブランチ名・コミットメッセージを相談し、checkout / 作成・コミットまで一緒にやってもらう**運用でよい |
15
- | **品質フロー** | `phase-locks.json` の `quality` を使って **clarify → analyze** を自動進行。必要なら checklist を追加で実施 |
16
- | **判断ログ(任意)** | `docs/02_.../<カテゴリ>/判断記録/UC-N-MMDD-題名.md`。テンプレ: `.spec-runner/templates/UC-N-MMDD-判断記録テンプレ.md` |
17
-
18
- **補足(spec-runner コア)**: テスト設計・実装フェーズは、ブランチではなく **UC 仕様と lock 状態**で判定されます。`uc_discovery.completed=false` の間は UC 作成フェーズを継続し、未レビュー UC がある場合は `clarify/analyze` を優先します。`spec-runner` はブランチを作りません。
19
-
20
- ## ユーザー入力
21
-
22
- `$ARGUMENTS` が機能説明。空でコマンドしていない限り、繰り返し入力を求めない。
23
- ただし **`$ARGUMENTS` が空** の場合は停止せず、AI 側で候補提案を行ってユーザー選択に進む。
24
-
25
- ```text
26
- $ARGUMENTS
27
- ```
28
-
29
- ## フォルダの作成
30
-
31
- - **`docs/02_ユースケース仕様/`** が無ければ新規作成。**カテゴリごとにフォルダ**(例: タスク管理、認証)を切り、その中に **UC-N-xxx.md を複数本**作る(カテゴリは 1 UC で終わらせない)。
32
- - `uc-next-start.sh` でカテゴリ指定するとそのフォルダ内に作成される。
33
- - **CRUD は原則別 UC**(作成 / 編集 / 削除を分ける)。同一フロー・同一権限・同一受入条件で差分が小さい場合のみ統合可。
34
- - 目安: 1カテゴリにつき最低 2〜3 UC。MVP は最小 1 UC でも可だが、次に必ず細分化候補を洗い出す。
35
-
36
- ## 実行フロー
37
-
38
- ### 0. スコープ判定と UC 分解提案(先に実施)
39
-
40
- - 入力が広いテーマ(例: 「タスク管理基盤」「認証基盤」「決済基盤」)の場合、**そのまま 1 UC を作らない**。
41
- - 先に AI が UC 分解案を提案し、ユーザー合意を取ってから UC を作成する。
42
- - 提案フォーマット(簡潔):
43
- - 候補 UC 一覧(`UC-候補: 目的 / 範囲 / 非対象`)
44
- - 優先順(MVP から)
45
- - まず作る 1 件(最小価値)
46
- - 合意後は **1 件ずつ** UC を追加する。土台づくりに **`uc-next-start.sh`**(仕様ひな形のみ)を使っても、手動で `UC-N-xxx.md` を置いてもよい(CRUD は原則別 UC)。
47
-
48
- ### 0.5. 引数なし時の候補提示(必須)
49
-
50
- - 条件: `$ARGUMENTS` が空。
51
- - 挙動:
52
- 1. AI がこのプロジェクト向けの機能案を **3〜5 件**提示する。
53
- 2. 各案は 1 行で、`案N: 目的 / 主な利用者 / 想定カテゴリ` の形式で簡潔に示す。
54
- 3. 「番号で選択」または「自由入力で別案指定」を案内する。
55
- 4. **ユーザーが選ぶまで `uc-next-start.sh` を実行しない**。
56
- - ユーザー回答後:
57
- - 選択された案(または自由入力文)を今回の機能説明として扱い、以降のステップを通常どおり実行する。
58
-
59
- ### 1. 短名 SLUG(2〜4 語)
60
-
61
- - 機能説明からキーワード抽出。`uc-next-start.sh` の**第1引数(UC-ID 省略時)または第2引数**として必須。**ASCII のみ**、kebab-case(例: order-placement, user-auth)。スクリプトはファイル名には使わず、**人間・AI がブランチ名を考えるときのタグ**として使う。
62
- - **UC ファイル名は TITLE を使用**(`UC-<N>-<TITLE>.md`)。
63
- - 技術略語(OAuth2, API, JWT)はそのまま。`TITLE` は日本語で記述する。
64
- - 例: 「ユーザー認証」→ user-auth / 「OAuth2 API」→ oauth2-api-integration 等。
65
-
66
- ### 2. UC 仕様の作成
67
-
68
- - `docs/01_憲章/憲章.md` は先に確定する。未コミット差分がある場合は、**コミットしたくなったら AI に差分確認・メッセージ案・コミットを依頼**する(憲章と UC を同じコミットにまとめる必要はない)。
69
- - **ショートカット**: `.spec-runner/scripts/uc-next-start.sh [UC-ID] "$SLUG" "$TITLE" "$CATEGORY" [--yes]` — **UC 仕様のひな形ファイルだけ**を所定フォルダに作成する(**Git のブランチ作成・checkout は行わない**)。**使わず**手動で `UC-N-xxx.md` を置いてもよい。
70
- - UC-ID は省略可(省略時は自動採番)。**SLUG / TITLE / CATEGORY は必須**(空文字禁止)。
71
- - CATEGORY で配置先が決まる(カテゴリ名は日本語可)。**機能ごとに 1 回だけ**。
72
- - シングルクォートはエスケープ(例: `'I'\''m Groot'`)またはダブルクォート。
73
- - 引数の実例:
74
- - `./.spec-runner/scripts/uc-next-start.sh "task-management" "タスク管理機能追加" "タスク管理" --yes`
75
- - `./.spec-runner/scripts/uc-next-start.sh UC-2 "order-cancel" "注文キャンセル" "注文" --yes`
76
- - `./.spec-runner/scripts/uc-next-start.sh UC-3 "task-import" "タスク一括登録" "タスク管理" --yes`
77
-
78
- ### 3. テンプレ読込
79
-
80
- `.spec-runner/templates/UC-N-ユースケース名.md` で必須セクションを把握。
81
-
82
- ### 4. 本文生成の内訳
83
-
84
- 1. 入力パース。空なら「0.5 引数なし時の候補提示」を実施し、選択後に続行する(即 ERROR にしない)
85
- 2. 重要概念(アクター・アクション・データ・制約)
86
- 3. 不明点: **推測で確定しない** → **`[要確認: ...]`**。付けるのは影響大・解釈複数・デフォルト無しのときのみ。**上限 3 個**。優先: スコープ > セキュリティ > UX > 技術詳細
87
- 4. 「ユーザーシナリオとテスト」を埋める。フロー特定できなければ ERROR
88
- 5. 機能要件(テスト可能)。仮定は「仮定」セクションへ
89
- 6. 成功基準(測定可能・技術非依存・定量+定性)
90
- 7. データが関わる場合は主要エンティティ
91
- 8. SUCCESS(計画の準備完了)
92
-
93
- ### 5. 書き込み
94
-
95
- テンプレ構造を保ち、プレースホルダを具体内容で置換し **SPEC_FILE** に保存。
96
-
97
- ### 6. 仕様品質検証
98
-
99
- **a. チェックリスト(任意)**
100
- checklists を使う場合のみ `FEATURE_DIR/checklists/requirements.md` を生成。UC のみなら **checklists/ 不要**。作成例は **付録 A**。
101
-
102
- **b.** 各チェック項目で合格/不合格を判定し問題を記録。
103
-
104
- **c. 結果の扱い**
105
-
106
- - 全合格 → ステップ 7 へ
107
- - 不合格([要確認] 以外): 列挙→仕様更新→最大 3 回反復。残りは注記と警告
108
- - **[要確認] 残り**: 抽出→3 個超なら影響大 3 個に整理→ユーザーへ質問表(**付録 B** 形式)。Q1–Q3 まで一括提示→回答後に置換→再検証
109
-
110
- **d.** 反復ごとにチェックリストファイルを更新
111
-
112
- ### 7. 完了報告
113
-
114
- 仕様パス・チェックリスト結果・次フェーズ(曖昧さ解消 / 実装計画)の準備状況。
115
-
116
- ※ 分解提案を経た場合は、採用された UC 分割案(採用順)も合わせて報告する。
117
-
118
- ※ **UC 洗い出しが完了したら** `./.spec-runner/phase-locks.json` の `uc_discovery.completed` を `true` にする(以降 `domain` に進む)。
119
-
120
- **注**: `uc-next-start.sh` は仕様ファイルの生成のみ。現在のブランチは変わらない。
121
-
122
- ## 付録 A: 仕様品質チェックリスト例
123
-
124
- ```markdown
125
- # 仕様品質チェックリスト: [機能名]
126
-
127
- **目的**: 計画に進む前に仕様の完全性・品質を検証する
128
- **作成日**: [日付]
129
- **機能**: [spec.md へのリンク]
130
-
131
- ## コンテンツ品質
132
-
133
- - [ ] 実装詳細(言語・フレームワーク・API)が含まれていない
134
- - [ ] ユーザー価値とビジネスニーズに焦点がある
135
- - [ ] 非技術のステークホルダー向けに書かれている
136
- - [ ] 必須セクションがすべて完了している
137
-
138
- ## 要件の完全性
139
-
140
- - [ ] [要確認] マーカーが残っていない
141
- - [ ] 要件がテスト可能で曖昧でない
142
- - [ ] 成功基準が測定可能
143
- - [ ] 成功基準が技術に依存しない(実装詳細なし)
144
- - [ ] 受入シナリオがすべて定義されている
145
- - [ ] エッジケースが特定されている
146
- - [ ] スコープが明確に境界づけされている
147
- - [ ] 依存関係と仮定が特定されている
148
-
149
- ## 機能の準備状況
150
-
151
- - [ ] 全機能要件に明確な受入基準がある
152
- - [ ] ユーザーシナリオが主要フローをカバーしている
153
- - [ ] 成功基準で定義した測定可能な結果を満たしている
154
- - [ ] 仕様に実装詳細が混入していない
155
-
156
- ## 注記
157
-
158
- - 未完了の項目は「曖昧さ解消」または「実装計画」の前に仕様を更新すること
159
- ```
160
-
161
- ## 付録 B: [要確認] 用質問表フォーマット
162
-
163
- ```markdown
164
- ## 質問 [N]: [トピック]
165
-
166
- **文脈**: [該当仕様セクションの引用]
167
-
168
- **確認したいこと**: [要確認マーカーからの具体的な質問]
169
-
170
- **回答案**:
171
-
172
- | 選択肢 | 回答 | 影響 |
173
- |--------|------|------|
174
- | A | [第1案] | [機能への影響] |
175
- | B | [第2案] | [機能への影響] |
176
- | C | [第3案] | [機能への影響] |
177
- | 独自 | 自分で回答する | [独自入力の方法] |
178
-
179
- **選択**: _[ユーザー応答を待つ]_
180
- ```
181
-
182
- 表のパイプを揃え、区切りは `|--------|` 以上。**質問は Q1–Q3 を一度に出し**、全回答後に仕様を更新。
183
-
184
- ## 付録 C: ガイドライン
185
-
186
- - **WHAT / WHY** に集中。**HOW(実装)**は書かない
187
- - ビジネス担当者向け。仕様に埋め込みチェックリストは作らない(別コマンド)
188
- - **必須セクション**は全機能で完了。**任意**は該当時のみ。N/A で残さず削除
189
-
190
- ### AI 生成時
191
-
192
- 1. 推測で確定しない → `[要確認]`
193
- 2. 仮に進める場合のみ「仮定」に明示
194
- 3. [要確認] は最大 3(スコープ・解釈・デフォルト無しの重要判断のみ)
195
- 4. 優先: スコープ > セキュリティ > UX > 技術詳細
196
- 5. テスター目線で曖昧要件は不合格にできるように
197
-
198
- **推測してよい例**(通常は質問しない): データ保持の業界標準、一般 Web 性能目標、分かりやすいエラー表現、Web ならセッション/OAuth2、連携は REST/GraphQL 等プロジェクト準拠。
199
-
200
- ### 成功基準
201
-
202
- - 測定可能(時間・割合・件数等)、技術非依存、ユーザー/ビジネス結果、実装を知らず検証可能
203
- - 受入条件は日本語フォーマット(`前提` / `操作` / `期待`)で記述する。複数件は表形式(`| 前提 | 操作 | 期待 |`)を使用する
204
-
205
- **良い例**: 「3 分以内にチェックアウト」「1 万同時ユーザー」「検索 95% が 1 秒以内」
206
-
207
- **悪い例**: API 200ms、DB TPS、React 描画、Redis ヒット率(実装寄り)
208
-
209
- ---
210
- **次**: 完了後、次のステップへ進む。