@careerchain/stdd 0.1.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.
Files changed (53) hide show
  1. package/README.md +44 -0
  2. package/assets/.claude/agents/code-reviewer.md +170 -0
  3. package/assets/.claude/agents/implementer.md +96 -0
  4. package/assets/.claude/agents/plan-writer.md +124 -0
  5. package/assets/.claude/agents/qa-engineer.md +133 -0
  6. package/assets/.claude/agents/spec-reviewer.md +173 -0
  7. package/assets/.claude/agents/spec-writer.md +194 -0
  8. package/assets/.claude/agents/test-reviewer.md +218 -0
  9. package/assets/.claude/docs/spec-driven-development-guide.md +436 -0
  10. package/assets/.claude/hooks/pre-push-check.sh +160 -0
  11. package/assets/.claude/settings.json +67 -0
  12. package/assets/.claude/skills/auto-implement/SKILL.md +168 -0
  13. package/assets/.claude/skills/auto-implement/references/github-project.md +54 -0
  14. package/assets/.claude/skills/auto-implement/references/phases.md +244 -0
  15. package/assets/.claude/skills/create-pr/SKILL.md +112 -0
  16. package/assets/.claude/skills/documenting-plans/SKILL.md +217 -0
  17. package/assets/.claude/skills/documenting-plans/templates/plan.md +182 -0
  18. package/assets/.claude/skills/documenting-specifications/SKILL.md +300 -0
  19. package/assets/.claude/skills/documenting-specifications/guides/error-handling.md +78 -0
  20. package/assets/.claude/skills/documenting-specifications/guides/stdd-violations.md +237 -0
  21. package/assets/.claude/skills/documenting-specifications/templates/requirements.md +184 -0
  22. package/assets/.claude/skills/documenting-specifications/templates/screen-items-definition.md +179 -0
  23. package/assets/.claude/skills/documenting-specifications/templates/tech-design.md +241 -0
  24. package/assets/.claude/skills/generating-wireframes/SKILL.md +121 -0
  25. package/assets/.claude/skills/generating-wireframes/examples/tob-form.html +497 -0
  26. package/assets/.claude/skills/generating-wireframes/examples/tob-list.html +536 -0
  27. package/assets/.claude/skills/generating-wireframes/examples/toc-form.html +493 -0
  28. package/assets/.claude/skills/generating-wireframes/examples/toc-list.html +538 -0
  29. package/assets/.claude/skills/generating-wireframes/guides/from-requirements.md +53 -0
  30. package/assets/.claude/skills/generating-wireframes/templates/index.html +472 -0
  31. package/assets/.claude/skills/generating-wireframes/templates/screen.html +480 -0
  32. package/assets/.claude/skills/introducing-stdd/SKILL.md +185 -0
  33. package/assets/.claude/skills/introducing-stdd/templates/introduction-plan.md +64 -0
  34. package/assets/.claude/skills/kaizen/SKILL.md +129 -0
  35. package/assets/.claude/skills/kaizen/references/code-examples.md +233 -0
  36. package/assets/.claude/skills/reverse-engineering-common-spec/SKILL.md +137 -0
  37. package/assets/.claude/skills/reverse-engineering-feature-spec/SKILL.md +463 -0
  38. package/assets/.claude/skills/reverse-engineering-feature-spec/guides/accuracy.md +215 -0
  39. package/assets/.claude/skills/reverse-engineering-feature-spec/guides/figma-capture.md +313 -0
  40. package/assets/.claude/skills/review-pr-with-agents/SKILL.md +159 -0
  41. package/assets/.claude/skills/searching-existing-solutions/SKILL.md +110 -0
  42. package/assets/.claude/skills/setup-stdd/SKILL.md +82 -0
  43. package/assets/.claude/skills/software-architecture/SKILL.md +260 -0
  44. package/assets/.claude/skills/starting-new-with-stdd/SKILL.md +142 -0
  45. package/assets/.claude/skills/starting-new-with-stdd/templates/bootstrap-plan.md +73 -0
  46. package/assets/.claude/skills/tailoring-spec-format/SKILL.md +103 -0
  47. package/assets/.claude/skills/verifying-consistency/SKILL.md +90 -0
  48. package/assets/stdd.config.yml.tpl +34 -0
  49. package/dist/cli.js +148 -0
  50. package/dist/cli.js.map +1 -0
  51. package/dist/install.js +121 -0
  52. package/dist/install.js.map +1 -0
  53. package/package.json +48 -0
@@ -0,0 +1,168 @@
1
+ ---
2
+ name: auto-implement
3
+ description: |-
4
+ GitHub issue を起点として、Spec 作成→PLAN 作成→実装(STDD)→QA→コードレビュー→Figma 更新→PR 作成までを専門エージェント(Spec Writer / Implementer / QA Engineer / Code Reviewer 等)にオーケストレーションして自動実行する。
5
+ when_to_use: |-
6
+ 「auto implement」「自動実装」「issue から実装」「issue 番号を指定して実装」「Agent Teams で実装」「issue を元に PR まで」「#123 を実装して」など、GitHub issue を起点とした包括的な自動実装の依頼があったとき。
7
+ allowed-tools: Bash, Read, Write, Edit, Grep, Glob, Agent
8
+ ---
9
+
10
+ # issue 起点の自動実装オーケストレーション
11
+
12
+ GitHub issueを受け取り、Spec作成→実装→QA→コードレビュー→PR作成までを自動で実行するオーケストレーションスキル。
13
+
14
+ ## 引数
15
+
16
+ **形式**: `#<issue番号> [--mode <full|spec-only|impl-only|quick>]`
17
+
18
+ ## Step 1: 引数パース
19
+
20
+ 引数から以下を抽出:
21
+
22
+ - **issue番号**: `#123` 形式(必須)
23
+ - **実行モード**: `--mode` オプション(任意)
24
+
25
+ issue番号が指定されていない場合はエラーメッセージを表示して終了。
26
+
27
+ ## Step 2: issue情報の取得
28
+
29
+ GitHub MCP toolsまたは `gh issue view` を使ってissue情報を取得する。
30
+
31
+ 取得する情報:
32
+
33
+ - タイトル
34
+ - 本文(description)
35
+ - ラベル
36
+ - コメント
37
+
38
+ ## Step 3: 実行モード判定
39
+
40
+ `--mode` が指定されている場合はそのモードを使用。未指定の場合は以下のロジックで自動判定:
41
+
42
+ | 条件 | モード |
43
+ | ------------------------------------------------------------------------------------------- | ----------- |
44
+ | ラベルに `bug` を含む | `impl-only` |
45
+ | ラベルに `documentation` を含む、またはタイトルに「Spec」「リバースエンジニアリング」を含む | `spec-only` |
46
+ | タイトルに「typo」「修正」を含む、またはissue本文が短い(200文字以下) | `quick` |
47
+ | 上記いずれにも該当しない | `full` |
48
+
49
+ 判定結果を表示し、**`--mode` が未指定の場合はユーザーに確認を求める**:
50
+
51
+ ```
52
+ 実行モード: <mode>(自動判定理由: <reason>)
53
+
54
+ このモードで実行してよろしいですか?(y/n、または別のモードを指定: full / spec-only / impl-only / quick)
55
+ ```
56
+
57
+ 承認されるまで次のステップに進まないこと。
58
+
59
+ ## Step 4: ブランチ作成・Worktree準備
60
+
61
+ `.stdd.config.yml` の `project.primary_branch` を統合先ブランチとして読み取る。
62
+
63
+ ```bash
64
+ # <primary_branch> は .stdd.config.yml の project.primary_branch
65
+ git fetch origin <primary_branch>
66
+ ```
67
+
68
+ issueタイトルからブランチ名を生成(`<branch_prefix><kebab-case-summary>`。`branch_prefix` は `.stdd.config.yml` の `workflow.branch_prefix`、既定 `claude/`)。
69
+ Worktree作成スクリプトを実行:
70
+
71
+ ```bash
72
+ ./scripts/create-worktree.sh -b claude/<branch-name> -i <instance-id>
73
+ ```
74
+
75
+ devcontainerを起動:
76
+
77
+ ```bash
78
+ devcontainer up --workspace-folder ../worktree-<instance-id> --override-config ../worktree-<instance-id>/.devcontainer/devcontainer.override.json
79
+ ```
80
+
81
+ 以降の作業はすべてworktree内のdevcontainerで実行する。
82
+
83
+ ## Step 4.5: issueをIn Progressに移動
84
+
85
+ GitHub Projectのステータス更新の手順は [references/github-project.md](references/github-project.md) を参照。
86
+ `project` スコープが必要。トークンにスコープがない場合はスキップしてStep 5に進む。
87
+
88
+ ## Step 5: フェーズ実行
89
+
90
+ このスキルは **Team Lead(オーケストレーター)** として動作し、専門エージェントにタスクを依頼しながら開発フロー全体を統括する。
91
+
92
+ ### チーム編成
93
+
94
+ ```
95
+ Team Lead(オーケストレーター) ← このスキル自身
96
+ ├→ Spec Writer : REQUIREMENTS.md + TECH_DESIGN.md 作成
97
+ ├→ Spec Reviewer : Spec の品質・整合性・漏れをレビュー
98
+ ├→ Plan Writer : タスク分解・実装計画(PLANドキュメント)を作成
99
+ ├→ Implementer : テスト作成 → 実装(STDDフロー)
100
+ ├→ Test Reviewer : テスト戦略準拠・形骸的テスト検出・テストコード品質レビュー
101
+ ├→ Build Error Resolver : ビルド・型エラーの段階的修正(エラー発生時に自動起動)
102
+ ├→ QA Engineer : Playwright MCP動作確認・テスト実行・整合性チェック・simplify
103
+ ├→ Code Reviewer : PRレビュー・コード品質・セキュリティチェック
104
+ ├→ Penetration Tester : 攻撃者視点での脆弱性検証・エクスプロイト試行
105
+ └→ Figma Updater : UIキャプチャ→Figmaファイル更新(Team Leadが直接実行)
106
+ ```
107
+
108
+ **Team Leadの役割**:
109
+
110
+ - 各フェーズで対応するエージェントに作業を依頼する
111
+ - エージェントの成果物を受け取り、次のフェーズに引き渡す
112
+ - 問題が発生した場合は適切なエージェントに修正を依頼し、最大3回の修正ループを管理する
113
+ - 全フェーズの完了後にPRを作成し、ユーザーに報告する
114
+
115
+ 各フェーズの詳細な手順は [references/phases.md](references/phases.md) を参照。
116
+ モードに応じて以下のフェーズを順次実行する:
117
+
118
+ | Phase | 名称 | full | spec-only | impl-only | quick |
119
+ | --------- | ---------------------- | ---- | --------- | --------- | ----- |
120
+ | Phase 1 | Spec作成 | ✓ | ✓ | | |
121
+ | Phase 1.5 | PLAN作成 | ✓ | | ✓ | |
122
+ | Phase 2 | 実装 | ✓ | | ✓ | ✓ |
123
+ | Phase 2.5 | テストレビュー | ✓ | | ✓ | |
124
+ | Phase 3 | QA | ✓ | | ✓ | |
125
+ | Phase 4 | コードレビュー | ✓ | | ✓ | |
126
+ | Phase 4.3 | ペネトレーションテスト | ✓ | | ✓ | |
127
+ | Phase 4.5 | Figma更新 | ✓ | | ✓ | |
128
+ | Phase 5 | PR作成 | ✓ | ✓ | ✓ | ✓ |
129
+
130
+ ## Step 6: 完了報告
131
+
132
+ 以下の形式で結果を報告:
133
+
134
+ ```
135
+ ## 実行完了
136
+
137
+ - **Issue**: #<issue番号> <タイトル>
138
+ - **モード**: <mode>
139
+ - **ブランチ**: <branch-name>
140
+ - **PR**: <PR URL>
141
+
142
+ ### フェーズ実行結果
143
+ | フェーズ | 状態 | 備考 |
144
+ |---------|------|------|
145
+ | Spec作成 | OK / SKIP | |
146
+ | Specレビュー | OK / SKIP | |
147
+ | PLAN作成 | OK / SKIP | |
148
+ | テスト作成 | OK / SKIP | |
149
+ | テストレビュー | OK / SKIP | |
150
+ | 実装 | OK / SKIP | |
151
+ | QA | OK / SKIP | |
152
+ | コードレビュー | OK / SKIP | |
153
+ | ペネトレーションテスト | OK / SKIP | |
154
+ | Figma更新 | OK / SKIP | |
155
+ | PR作成 | OK | |
156
+ ```
157
+
158
+ ## エラーハンドリング
159
+
160
+ - 各フェーズで3回の修正ループを超えた場合、そのフェーズで停止し、現状をコミット・pushしてdraft PRを作成する
161
+ - PR descriptionに未解決の問題を記載し、手動対応を依頼する
162
+
163
+ ## 注意事項
164
+
165
+ - Agent Teamsの実験的機能を使用(`CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS`)
166
+ - コスト管理のため、各Teammateは該当フェーズでのみ起動する
167
+ - Worktreeベースの開発フローに従う
168
+ - CLAUDE.mdのすべてのルールを遵守する
@@ -0,0 +1,54 @@
1
+ # GitHub Projectステータス更新
2
+
3
+ `auto-implement` skill のStep 4.5 / Phase 5 から参照される、GitHub Projectのステータスを変更する手順。
4
+
5
+ ## 1. issueに対応するProject Item IDを取得
6
+
7
+ ```bash
8
+ gh api graphql -f query='
9
+ mutation {
10
+ addProjectV2ItemById(input: {
11
+ projectId: "PVT_kwDODMaq2s4BOnqv"
12
+ contentId: "<ISSUE_NODE_ID>"
13
+ }) {
14
+ item { id }
15
+ }
16
+ }'
17
+ ```
18
+
19
+ ISSUE_NODE_IDは以下で取得:
20
+
21
+ ```bash
22
+ gh issue view <番号> --json id -q '.id'
23
+ ```
24
+
25
+ 既にProjectに追加済みの場合も同じmutationで既存Item IDが返る。
26
+
27
+ ## 2. ステータスを更新
28
+
29
+ ```bash
30
+ gh api graphql -f query='
31
+ mutation {
32
+ updateProjectV2ItemFieldValue(input: {
33
+ projectId: "PVT_kwDODMaq2s4BOnqv"
34
+ itemId: "<ITEM_ID>"
35
+ fieldId: "PVTSSF_lADODMaq2s4BOnqvzg9RK3M"
36
+ value: { singleSelectOptionId: "<OPTION_ID>" }
37
+ }) {
38
+ projectV2Item { id }
39
+ }
40
+ }'
41
+ ```
42
+
43
+ ### Option IDマッピング
44
+
45
+ | ステータス | OPTION_ID |
46
+ | ----------- | ---------- |
47
+ | In progress | `47fc9ee4` |
48
+ | In review | `df73e18b` |
49
+
50
+ ## 注意
51
+
52
+ - `project` スコープが必要
53
+ - スコープがない場合はステータス更新をスキップしてフローを継続する
54
+ - 失敗してもPR作成や実装フローはブロックしない
@@ -0,0 +1,244 @@
1
+ # Auto Implement - Phase詳細
2
+
3
+ 各フェーズの詳細な手順。SKILL.mdから参照される。
4
+
5
+ ## Reviewer エージェント運用の前提(必読)
6
+
7
+ `spec-reviewer` / `test-reviewer` / `code-reviewer` は **独立した Evaluator** として懐疑的にチューニングされている。Team Lead は以下を順守すること:
8
+
9
+ - **Reviewer の判定は原則そのまま受け入れる**: NEEDS CHANGES / ⚠️ 要修正 / ❌ Blocked を「厳しすぎる」と判断して無視しない。各 Reviewer は Hard Threshold を1項目でも下回ったら必ず NEEDS CHANGES 以下を出すよう設計されている。
10
+ - **差し戻し時は Reviewer 出力をそのまま渡す**: Reviewer 出力末尾の「Generator への差し戻し指示」セクションを、対象 Generator(spec-writer / implementer)にそのまま引き渡す。Team Lead が要約・再解釈しない。
11
+ - **再レビューは差分のみではなく全体を見させる**: 修正後の Spec/テスト/コード全体を Reviewer に渡し、修正により別の Hard Threshold を割っていないか確認させる。
12
+ - **3回ループ超過時**: 後述の各 Phase のループ上限(最大3回)を超えた場合、現状をコミット・push して draft PR を作成する。PR description には **どの Reviewer がどの Hard Threshold で停止させたか** を明記する。
13
+
14
+ ## Phase 1: Spec作成(`full`, `spec-only`のみ)
15
+
16
+ **Spec Writerに依頼**して、issueの情報をもとにSpecドキュメントを作成する。
17
+
18
+ 1. `docs/` 配下に該当機能のディレクトリを作成(存在しない場合)
19
+ 2. `REQUIREMENTS.md` を作成:
20
+ - ビジネス要件の整理
21
+ - ユーザージャーニーの定義
22
+ - 受入基準の明確化
23
+ 3. ワイヤーフレーム(WF)を生成(UI を持つ機能の場合):
24
+ - `generating-wireframes` スキルに従い `docs/<app>/<feature-path>/wireframes/` に HTML WF を生成
25
+ - REQUIREMENTS.md「3. UI/UX デザイン」から `./wireframes/index.html` にリンク
26
+ - UI を持たない機能(バッチ・API のみ等)はスキップ
27
+ 4. `TECH_DESIGN.md` を作成:
28
+ - 技術設計方針
29
+ - ファイル構成
30
+ - テスト戦略(テストケース一覧)
31
+ 5. 必要に応じて `SCREEN_ITEMS_DEFINITION.md` を作成
32
+
33
+ 作成したSpecをコミット。
34
+
35
+ **Spec Reviewerに依頼**して、作成されたSpecをレビューする。
36
+
37
+ チェック項目:
38
+
39
+ - 要件の網羅性(issueの要求がすべてカバーされているか)
40
+ - 技術設計の実現可能性
41
+ - テスト戦略の十分性
42
+ - 既存実装との整合性
43
+
44
+ ### 判定と差し戻しループ
45
+
46
+ Spec Reviewer の **Hard Threshold(SSOT 違反 0件)** を1件でも下回った場合は必ず ⚠️ 要修正 となる。
47
+
48
+ - **⚠️ 要修正**: Spec Reviewer 出力末尾の「Generator への差し戻し指示」をそのまま spec-writer に渡して修正させ、再度 Spec Reviewer に依頼する。**最大3回**ループ。
49
+ - **✅ 承認**: 次の Phase に進む。
50
+ - **3回ループ後も未解消**: 現状をコミットして次の Phase に進むが、未解消の指摘は PR description に明記する。
51
+
52
+ HIGH/MEDIUM の指摘がある場合は Hard Threshold とは別に判断する。Team Lead は HIGH が複数残っていれば実質的に差し戻す方向で扱う。
53
+
54
+ ## Phase 1.5: PLANドキュメント作成(`full`, `impl-only`)
55
+
56
+ **Plan Writerに依頼**して、Specドキュメントに基づきPLANドキュメントを作成する。
57
+
58
+ 1. REQUIREMENTS.mdのUser JourneyとPriorityを確認
59
+ 2. TECH_DESIGN.mdのTest Strategyに基づきタスクを分解
60
+ 3. テスト→実装の順序でタスクリストを作成
61
+ 4. ファイル構成(新規/既存修正/既存維持)を明記
62
+ 5. PLANドキュメントをコミット
63
+
64
+ 配置先: `docs/<app>/<feature-path>/plans/[yyyy-mm-dd].md`
65
+
66
+ ## Phase 2: 実装(`full`, `impl-only`, `quick`)
67
+
68
+ **Implementerに依頼**して、PLANドキュメント(存在する場合)に従いSTDDフローで実装する。
69
+
70
+ 1. **テスト作成**(`quick`モードではスキップ可):
71
+ - PLANドキュメントのタスクリストに従いテストを作成(Unit → Integration → E2E)
72
+ - テストが失敗すること(Red状態)を確認
73
+ - テストをコミット
74
+
75
+ **`quick`モード以外では、テストをコミットした時点で一旦Phase 2の作業を中断し、Phase 2.5(テストレビュー)に進む**。Phase 2.5で承認されてから次の「実装」ステップに戻る。
76
+
77
+ 2. **実装**:
78
+ - PLANドキュメントのタスクリストに従い実装
79
+ - テストがパスすること(Green状態)を確認
80
+ - 実装をコミット
81
+
82
+ 3. **型チェック**: `.stdd.config.yml` の `commands.typecheck` を実行する。
83
+
84
+ ```bash
85
+ # 例(実際の値は .stdd.config.yml に従う)
86
+ <commands.typecheck>
87
+ ```
88
+
89
+ 4. **ビルドエラー解決**(型チェック/ビルドでエラーが発生した場合):
90
+ **Build Error Resolverに依頼**して、ビルド・型エラーを段階的に修正する。
91
+ - エラーを1つずつ修正し、修正ごとに型チェックを再実行
92
+ - 修正が新たなエラーを生まないことを確認
93
+ - 最大3回の修正ループ後もエラーが残る場合はImplementerに差し戻し
94
+
95
+ ## Phase 2.5: テストレビュー(`full`, `impl-only`のみ)
96
+
97
+ **Phase 2のステップ1(テスト作成)が完了し、テストがコミットされた直後、ステップ2(実装)を開始する前にこのPhaseを実行する。** 実装前にテスト自体の妥当性を検証することで、誤ったテストに基づく無駄な実装を防ぐ。
98
+
99
+ ### スキップ条件
100
+
101
+ - `quick`モード(テスト作成自体をスキップしているため)
102
+ - PLANドキュメントが存在しない(`impl-only` でPLANを飛ばしたケース等)かつテストコード変更がない場合
103
+
104
+ ### 実行手順
105
+
106
+ **Test Reviewerに依頼**して、作成されたテストをレビューする。
107
+
108
+ レビュー観点:
109
+
110
+ 1. **Spec準拠**: TECH_DESIGN.mdのテスト戦略(ジャーニー別テストレベル分類・テスト総数・内訳)に作成テストが則っているか
111
+ 2. **形骸的テストの検出**: トートロジー、モック戻り値のassert、内容を検証しないアサーション等、意味のないテストがないか
112
+ - ただしE2EテストでUI要素(role, aria-label, data-testid, 可視テキスト等)に依拠した検証は許容
113
+ 3. **一般的なテスト品質**: AAA構造、独立性、命名、Flaky耐性、アサーションの具体性
114
+
115
+ ### 判定結果の扱い
116
+
117
+ Test Reviewer の **Hard Threshold**(HIGH 0件 / MEDIUM ≤2件 / 形骸的テスト 0件 / TECH_DESIGN.md整合 / P0 E2E完全カバー / 受入基準テスト網羅)を1項目でも下回った場合は必ず NEEDS CHANGES 以下となる。
118
+
119
+ - **PASS**: Phase 2のステップ2(実装)に戻って作業を継続。
120
+ - **NEEDS CHANGES**: Test Reviewer 出力末尾の「Generator への差し戻し指示」をそのまま implementer に渡してテストを修正させる → テストを再コミット → Test Reviewer に再レビュー依頼。**最大3回**ループ。
121
+ - **CRITICAL ISSUES**: Spec の受入基準がまったく検証されていない等の重大な問題。implementer に差し戻し、場合によっては Phase 1 の spec-writer にもテスト戦略の見直しを依頼する。
122
+
123
+ 3回の修正ループ後も問題が解消されない場合は、現状のテストをコミットして Phase 2 のステップ2に進み、未解消の Hard Threshold 違反項目を PR description に明記する。
124
+
125
+ ## Phase 3: QA(`full`, `impl-only`のみ)
126
+
127
+ **QA Engineerに依頼**して、品質を確認する。
128
+
129
+ 1. **ユニットテスト実行**: `.stdd.config.yml` の `apps[]` を読み、各アプリについて `apps[].path` ディレクトリで `commands.test` を実行する(apps[] の数だけ繰り返す)。
130
+
131
+ ```bash
132
+ # 例(実際の値は .stdd.config.yml に従う)
133
+ cd <apps[].path> && <commands.test>
134
+ ```
135
+
136
+ 2. **E2Eテスト実行**(関連テストがある場合):
137
+
138
+ ```bash
139
+ cd e2e && npm run test
140
+ ```
141
+
142
+ 3. **整合性チェック**: `verifying-consistency` skill と同等のチェックを実施
143
+
144
+ 4. **コード品質チェック**: `simplify` skill と同等のレビューを実施
145
+
146
+ 問題がある場合:
147
+
148
+ - **ビルド・型エラー**: Build Error Resolverに修正を依頼
149
+ - **テスト失敗・ロジックの問題**: Implementerに修正を依頼
150
+ - 修正→QAを最大3回繰り返す
151
+
152
+ ## Phase 4: コードレビュー(`full`, `impl-only`のみ)
153
+
154
+ **Code Reviewerに依頼**して、コード品質をレビューする。
155
+
156
+ チェック項目:
157
+
158
+ - `CLAUDE.md` のコーディング規約準拠(存在する場合のみ。snake_case禁止、!演算子禁止、asキャスト禁止等)
159
+ - セキュリティ(OWASP Top 10)
160
+ - パフォーマンス
161
+ - レスポンシブ対応
162
+ - 適切なエラーハンドリング
163
+
164
+ ### 判定と差し戻しループ
165
+
166
+ Code Reviewer の **Hard Threshold**(Critical 0件 / High 0件 / Medium ≤2件 / OWASP Critical/High 0件 / `CLAUDE.md` 絶対ルール違反 0件(存在する場合のみ評価) / `.claude/docs/coding-conventions.md` 全項目準拠(存在する場合のみ評価))を1項目でも下回った場合は必ず NEEDS CHANGES 以下となる。
167
+
168
+ - **✅ PASS**: 次の Phase に進む。
169
+ - **⚠️ NEEDS CHANGES**: Code Reviewer 出力末尾の「Generator への差し戻し指示」をそのまま implementer に渡して修正させ、再度 Code Reviewer に依頼。**最大3回**ループ。
170
+ - **❌ Blocked**: セキュリティ脆弱性が実証可能 or アーキテクチャ崩壊レベル。即座に implementer に最優先で修正を依頼。3回ループで解消しなければ draft PR を作成し、PR description で **Blocked 理由** を明示する。
171
+
172
+ 3回の修正ループ後も問題が解消されない場合は、現状をコミットして次の Phase に進むが、未解消の Hard Threshold 違反項目を PR description に明記する。
173
+
174
+ ## Phase 4.3: ペネトレーションテスト(`full`, `impl-only`のみ)
175
+
176
+ **このPhaseはPhase 4(コードレビュー)の後に実行する。**
177
+
178
+ ### スキップ条件
179
+
180
+ 変更ファイルがすべて以下に該当する場合はスキップしてPhase 4.5に進む:
181
+
182
+ - `.md` / `.txt` 等のドキュメントファイルのみ
183
+ - `.claude/` 配下の設定・エージェント定義のみ
184
+ - CSS/Tailwindクラスのスタイル変更のみ(Server Actions/APIルート/マイグレーションに影響なし)
185
+
186
+ ### 実行手順
187
+
188
+ **Penetration Testerに依頼**して、攻撃者視点で変更箇所の脆弱性を検証する。
189
+
190
+ 1. **偵察**: 変更されたファイルから攻撃対象領域をマッピング
191
+ 2. **攻撃シナリオ設計**: 認証バイパス、認可エスカレーション、RLSバイパス、インジェクション、IDOR、ビジネスロジック悪用の観点で攻撃シナリオを設計
192
+ 3. **エクスプロイト実行**: 稼働中のローカル環境に対して実際に攻撃ペイロードを送信
193
+ 4. **結果報告**: 実証された脆弱性(PoC付き)と潜在的リスクを報告
194
+
195
+ ### 判定基準
196
+
197
+ - **SECURE**: 次のPhaseに進む
198
+ - **AT RISK**: Medium以上の潜在リスクをImplementerに修正依頼し、修正→再テストを最大3回繰り返す
199
+ - **COMPROMISED**: 脆弱性が実証された。Implementerに即座に修正を依頼し、修正→再テストを最大3回繰り返す
200
+
201
+ ### Phase 4.5との関係
202
+
203
+ Phase 4.3の判定がSECUREまたはAT RISK(修正済み)の場合のみPhase 4.5を実行する。COMPROMISEDが3回の修正ループ後も解消されない場合はPhase 4.5をスキップし、draft PRを作成する。
204
+
205
+ ## Phase 4.5: Figmaデザイン更新(`full`, `impl-only`のみ)
206
+
207
+ UI変更を伴う実装の場合、対象のSpecドキュメント(REQUIREMENTS.md)に「Figmaデザイン」セクションが存在するかを確認し、存在する場合はFigmaファイルを更新する。
208
+
209
+ **このPhaseはPhase 4.3(ペネトレーションテスト)完了後に実行する。**
210
+
211
+ ### 実行条件の判定
212
+
213
+ 1. 対象のREQUIREMENTS.mdを読み、`### Figmaデザイン` セクションの有無を確認
214
+ 2. セクションが存在し、FigmaファイルURLが記載されている場合 → **Figma更新を実行**
215
+ 3. セクションが存在しない場合 → **スキップ**(Phase 5に進む)
216
+
217
+ ### 更新手順
218
+
219
+ 1. **UIキャプチャ**: Playwright MCPを使用して、変更が反映された画面のスクリーンショットを取得
220
+ - REQUIREMENTS.mdの「Figmaデザイン」セクションに記載された各画面状態をキャプチャ
221
+ - 変更の影響がある画面のみ対象(全画面を再キャプチャする必要はない)
222
+ - ログインが必要な場合はCLAUDE.mdのテストユーザー情報を使用
223
+ 2. **Figmaファイル更新**: Figma MCPを使用して、キャプチャした画像でFigmaファイルの該当ノードを更新
224
+ - REQUIREMENTS.mdに記載されたnode-idに対応するノードを更新
225
+ - 新しい画面状態が追加された場合は、新しいノードとして追加
226
+ 3. **REQUIREMENTS.mdのリンク更新**: 新しいノードを追加した場合、Figmaデザインセクションにリンクを追記してコミット
227
+
228
+ ### エラー時の扱い
229
+
230
+ - Figma MCPが利用できない場合やエラーが発生した場合は**スキップ**してPhase 5に進む
231
+ - 完了報告の備考欄にスキップ理由を記載する
232
+ - Figma更新の失敗はPR作成をブロックしない
233
+
234
+ ## Phase 5: PR作成(全モード)
235
+
236
+ すべてのコミットをpushし、`create-pr` skill と同等のフローでPRを作成する。
237
+
238
+ PRのdescriptionには以下を含める:
239
+
240
+ - 対応issue番号(`Closes #<issue番号>`)
241
+ - 実行モード
242
+ - 各フェーズの実行結果サマリ
243
+
244
+ PR作成後、GitHub Projectのステータスを「In review」に変更する([references/github-project.md](github-project.md) の手順に従い、option IDに `"df73e18b"` を指定)。
@@ -0,0 +1,112 @@
1
+ ---
2
+ name: create-pr
3
+ description: |-
4
+ 現在のブランチから主ブランチ(`.stdd.config.yml` の `project.primary_branch`)への Pull Request を作成する。差分情報の収集→変更内容の分析→PR description の自動生成→`gh pr create` 実行までを一括で行う。
5
+ when_to_use: |-
6
+ 「PR作成」「プルリクエスト」「pull request」「PR出して」「create PR」「マージリクエスト」など、ブランチを主ブランチにマージするための PR 作成依頼があったとき。
7
+ allowed-tools: Bash, Read, Grep
8
+ ---
9
+
10
+ # Pull Request 作成
11
+
12
+ 現在のブランチから主ブランチ(`.stdd.config.yml` の `project.primary_branch`)へのPRを作成する。差分を分析し、適切なtitle/descriptionを自動生成する。
13
+
14
+ 以降のコマンド例では `<primary_branch>` を `.stdd.config.yml` の `project.primary_branch` の値に置き換えて実行する。
15
+
16
+ ## 1. 差分情報の収集
17
+
18
+ ```bash
19
+ # <primary_branch> は .stdd.config.yml の project.primary_branch
20
+ git fetch origin <primary_branch>
21
+ ```
22
+
23
+ 以下を並列で実行:
24
+
25
+ ```bash
26
+ git log --oneline origin/<primary_branch>...HEAD
27
+ git diff origin/<primary_branch>...HEAD --name-only
28
+ git diff origin/<primary_branch>...HEAD --stat
29
+ git branch --show-current
30
+ ```
31
+
32
+ 必要に応じて変更内容の詳細も確認:
33
+
34
+ ```bash
35
+ git diff origin/<primary_branch>...HEAD
36
+ ```
37
+
38
+ ## 2. 変更内容の分析
39
+
40
+ 1. **変更の種類を特定**: feat / fix / refactor / docs / test / style / perf / chore
41
+ 2. **影響範囲を特定**: `.stdd.config.yml` の各 `apps[].id` / supabase / e2e / docs(apps[] を読み、変更があったアプリを列挙する)
42
+ 3. **主要な変更点を抽出**: 新規ファイル、削除ファイル、大幅変更ファイル
43
+
44
+ ## 3. Issue情報の確認
45
+
46
+ 引数やコミットメッセージからissue番号(`#123`形式)を検出した場合:
47
+
48
+ - PR descriptionの末尾に `Closes #123` を追記してissueを自動クローズする
49
+ - 複数ある場合は `Closes #123, Closes #456` のように列挙する
50
+
51
+ ## 4. PRの作成
52
+
53
+ `gh pr create` を使ってPRを作成する。
54
+
55
+ ### タイトル
56
+
57
+ - 70文字以内
58
+ - 変更の種類をprefixに付ける(例: `feat: ユーザー一覧のフィルター機能を追加`)
59
+
60
+ ### Description テンプレート
61
+
62
+ ```markdown
63
+ ## 概要
64
+
65
+ [変更の目的・背景を1-2文で説明]
66
+
67
+ ## 変更内容
68
+
69
+ - [変更点1]
70
+ - [変更点2]
71
+ - [変更点3]
72
+
73
+ ## 影響範囲
74
+
75
+ - [ ] <apps[].id> <!-- .stdd.config.yml の apps[] を読み、apps[] の数だけ列挙する -->
76
+ - [ ] supabase
77
+ - [ ] e2e
78
+ - [ ] docs
79
+
80
+ ## 確認手順
81
+
82
+ 1. [確認手順1]
83
+ 2. [確認手順2]
84
+
85
+ ## 備考
86
+
87
+ [レビュアーへの補足事項があれば記載。なければセクションごと削除]
88
+
89
+ Closes #[issue番号]
90
+ ```
91
+
92
+ ### 作成コマンド
93
+
94
+ bodyは一時ファイル経由で渡す(ヒアドキュメントは避ける):
95
+
96
+ ```bash
97
+ # <primary_branch> は .stdd.config.yml の project.primary_branch
98
+ gh pr create --base <primary_branch> --title "タイトル" --body-file /tmp/pr-body.md
99
+ ```
100
+
101
+ ## 5. 完了
102
+
103
+ 作成したPRのURLを表示する。
104
+
105
+ ## 注意事項
106
+
107
+ - 「何が変わったか」「なぜ変わったか」を日本語で端的に記述する
108
+ - 技術的な詳細より変更の目的を重視する
109
+ - 影響範囲のチェックボックスは該当するもののみチェックを入れる
110
+ - 確認手順には実際にレビュアーが確認すべき操作を具体的に記載する
111
+ - 機密情報(APIキー、パスワードなど)が含まれていないか確認する
112
+ - リモートにpushされていない場合は先にpushする