phasegate 0.32.0 → 0.39.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +87 -1
- package/README.ja.md +498 -660
- package/README.md +8 -11
- package/docs/folder_management_rules.md +251 -0
- package/package.json +3 -1
- package/scripts/delegate-sonnet.sh +105 -0
- package/scripts/harness/main.ts +92 -7
- package/scripts/harness/setup/skill-deployer.ts +99 -0
- package/skills/environment-designer/SKILL.md +1 -1
- package/skills/implementation-planner/SKILL.md +1 -1
- package/skills/it-test-designer/SKILL.md +3 -3
- package/skills/it-test-logic-designer/SKILL.md +2 -2
- package/skills/mock-designer/SKILL.md +1 -1
- package/skills/scenario-test-designer/SKILL.md +3 -3
- package/skills/scenario-test-logic-designer/SKILL.md +2 -2
- package/skills/story-mapper/SKILL.md +1 -1
- package/skills/story-writer/SKILL.md +1 -1
- package/skills/unit-designer/SKILL.md +1 -1
- package/skills/unit-test-designer/SKILL.md +3 -3
- package/skills/unit-test-logic-designer/SKILL.md +2 -2
- package/templates/.claude/settings.json +3 -3
- package/templates/.husky/pre-commit +1 -1
- package/templates/phasegate.config.json +0 -30
package/README.ja.md
CHANGED
|
@@ -1,206 +1,192 @@
|
|
|
1
1
|
# Phasegate
|
|
2
2
|
|
|
3
|
-
**Phasegate
|
|
3
|
+
**Phasegate -- AI-Agnostic Quality Defense Toolkit**
|
|
4
4
|
|
|
5
|
-
AIエージェント(Claude Code, Codex, Cursor,
|
|
6
|
-
|
|
7
|
-
> **Core Value**: 「設計意図とコードの構造的整合性を、機械的に保証し続けること」
|
|
8
|
-
>
|
|
9
|
-
> どのAIエージェントで開発しても、このハーネスをプロジェクトに導入すれば、設計意図とコードの構造的整合性が壊れない。
|
|
5
|
+
AIエージェント(Claude Code, Codex, Cursor, Copilot 等)が生成するコードと設計の構造的整合性を機械的に保証する品質防御ツールキットです。
|
|
10
6
|
|
|
11
7
|
---
|
|
12
8
|
|
|
13
9
|
## 目次
|
|
14
10
|
|
|
15
11
|
- [何ができるのか](#何ができるのか)
|
|
16
|
-
- [
|
|
17
|
-
- [
|
|
18
|
-
- [
|
|
19
|
-
- [
|
|
20
|
-
- [
|
|
21
|
-
- [
|
|
22
|
-
- [
|
|
23
|
-
- [
|
|
24
|
-
- [メタデータ規約 (@unit / @layer / @story)](#メタデータ規約-unit--layer--story)
|
|
25
|
-
- [Claude Code Hooks 統合](#claude-code-hooks-統合)
|
|
26
|
-
- [Quick Mode](#quick-mode)
|
|
27
|
-
- [プリセット](#プリセット)
|
|
12
|
+
- [クイックスタート](#クイックスタート)
|
|
13
|
+
- [5層防御モデル](#5層防御モデル)
|
|
14
|
+
- [設定 (phasegate.config.json)](#設定-phasegateconfigjson)
|
|
15
|
+
- [CLIコマンド](#cliコマンド)
|
|
16
|
+
- [AIDLC スキル](#aidlc-スキル)
|
|
17
|
+
- [メタデータ規約](#メタデータ規約)
|
|
18
|
+
- [Claude Code Hooks](#claude-code-hooks)
|
|
19
|
+
- [カスタムフェーズゲート](#カスタムフェーズゲート)
|
|
28
20
|
- [CI/CD テンプレート](#cicd-テンプレート)
|
|
29
|
-
- [
|
|
30
|
-
- [ディレクトリ構造](#ディレクトリ構造)
|
|
31
|
-
- [バージョン管理](#バージョン管理)
|
|
21
|
+
- [導入後のプロジェクト構造](#導入後のプロジェクト構造)
|
|
32
22
|
|
|
33
23
|
---
|
|
34
24
|
|
|
35
25
|
## 何ができるのか
|
|
36
26
|
|
|
37
|
-
|
|
27
|
+
Phasegate は **「設計なしの実装を物理的に拒否する」** ツールです。
|
|
28
|
+
|
|
29
|
+
| カテゴリ | 内容 |
|
|
38
30
|
|---|---|
|
|
39
|
-
|
|
|
40
|
-
| **L2
|
|
41
|
-
| **
|
|
42
|
-
| **
|
|
43
|
-
| **
|
|
44
|
-
| **Phase Dependency Model** | 設計フェーズ間の前提条件を機械的に強制(設計なしの実装を物理的に拒否) |
|
|
45
|
-
| **Quick Mode** | バグ修正・テスト追加などの軽微な変更では最小限のゲートで高速実行 |
|
|
46
|
-
| **Claude Code Hooks** | ファイル書き込み時の自動Biome lint、セッション終了時の全テストグリーン強制 |
|
|
47
|
-
| **HarnessError** | 全バリデータのエラーにADR参照と修正コード例を付与。AIエージェントが自己修正可能 |
|
|
48
|
-
| **Nyquist Validation** | 要件→テストの双方向トレーサビリティを`requirement-test-matrix.json`で保証 |
|
|
49
|
-
| **Cascade Updater** | 下位フェーズの発見を上位設計文書に自動フィードバック |
|
|
50
|
-
| **Regression Suite** | K1-K15非交渉要件・GnGゲート・エージェント非依存性を回帰テストで継続検証 |
|
|
51
|
-
| **カスタムフェーズゲート** | `phasegate.config.json` の `gates[]` で独自のフェーズゲートを定義可能。デフォルトはAIDLCフェーズ依存 |
|
|
52
|
-
| **保護ファイル制御** | `protectedFiles.exclude` でAI書き込みから保護するファイルを設定 |
|
|
53
|
-
| **Bash書き込み検出** | シェル経由のファイル書き込み(`sed -i`, `tee`, `cp`, `mv`, リダイレクト等)を検出してブロック |
|
|
31
|
+
| **フェーズゲート** | 設計文書が存在しないとソースコードの書き込みをブロック。カスタムゲートも定義可能 |
|
|
32
|
+
| **5層バリデーション** | L1(AST) → L2(Pre-commit) → L3(CI) → L4(週次) の段階的品質チェック |
|
|
33
|
+
| **28 AIDLC スキル** | 要求定義 → 設計 → テスト設計 → TDD実装の全フェーズをスキルとして提供 |
|
|
34
|
+
| **Claude Code Hooks** | Write/Edit 時に自動でゲートチェック・Biome lint を実行 |
|
|
35
|
+
| **Quick Mode** | バグ修正・ドキュメント修正など軽微な変更ではゲートを緩和して高速実行 |
|
|
54
36
|
|
|
55
37
|
---
|
|
56
38
|
|
|
57
|
-
##
|
|
39
|
+
## クイックスタート
|
|
58
40
|
|
|
59
|
-
|
|
60
|
-
╔══════════════════════════════════════════════════════════════╗
|
|
61
|
-
║ L0 HOOKS ENGINE: Agent Hook Configuration ║
|
|
62
|
-
║ ───────────────────────────────────────────────────────── ║
|
|
63
|
-
║ hook-config .harness-hooks.yml設定検証 ║
|
|
64
|
-
║ gate-check 完了ゲートチェック ║
|
|
65
|
-
║ ║
|
|
66
|
-
║ 実行: npx phasegate validate --layer L0 ║
|
|
67
|
-
╠══════════════════════════════════════════════════════════════╣
|
|
68
|
-
║ L1 EDITOR TIME: Biome AST Rules ║
|
|
69
|
-
║ ───────────────────────────────────────────────────────── ║
|
|
70
|
-
║ require-unit-comment require-layer-comment ║
|
|
71
|
-
║ no-layer-violation enforce-folder-structure ║
|
|
72
|
-
║ no-any-abuse no-ghost-file ║
|
|
73
|
-
║ no-comment-flood no-code-duplication ║
|
|
74
|
-
║ + it-test-mock-detection + stub-comment-detection ║
|
|
75
|
-
║ ║
|
|
76
|
-
║ 実行: npx phasegate lint ║
|
|
77
|
-
╠══════════════════════════════════════════════════════════════╣
|
|
78
|
-
║ L2 PRE-COMMIT: Validators ║
|
|
79
|
-
║ ───────────────────────────────────────────────────────── ║
|
|
80
|
-
║ phase-gate 設計→実装の順序強制 ║
|
|
81
|
-
║ metadata @unit/@layer/@US-XXX/@story の完全性検証 ║
|
|
82
|
-
║ test-quality AAA / actual / single-act / no-domain-mock ║
|
|
83
|
-
║ ║
|
|
84
|
-
║ 実行: npx phasegate validate --layer L2 ║
|
|
85
|
-
╠══════════════════════════════════════════════════════════════╣
|
|
86
|
-
║ L3 CI/CD: Validators ║
|
|
87
|
-
║ ───────────────────────────────────────────────────────── ║
|
|
88
|
-
║ security ハードコード秘密・SQLインジェクション検出 ║
|
|
89
|
-
║ performance ループ内await・N+1クエリ・バンドルサイズ ║
|
|
90
|
-
║ coverage カバレッジ閾値 (standard: 90% / strict: 95%) ║
|
|
91
|
-
║ nyquist 要件→テスト双方向トレーサビリティ検証 ║
|
|
92
|
-
║ ║
|
|
93
|
-
║ 実行: npx phasegate validate --layer L3 ║
|
|
94
|
-
╠══════════════════════════════════════════════════════════════╣
|
|
95
|
-
║ L4 SCHEDULED: Validators ║
|
|
96
|
-
║ ───────────────────────────────────────────────────────── ║
|
|
97
|
-
║ drift-detect 設計↔コード双方向乖離検出 ║
|
|
98
|
-
║ consistency-check 文書間レイヤー整合性チェック ║
|
|
99
|
-
║ dead-code 未使用エクスポート・到達不能コード検出 ║
|
|
100
|
-
║ ║
|
|
101
|
-
║ 実行: npx phasegate validate --layer L4 ║
|
|
102
|
-
╚══════════════════════════════════════════════════════════════╝
|
|
103
|
-
```
|
|
41
|
+
### 前提条件
|
|
104
42
|
|
|
105
|
-
|
|
43
|
+
Node.js >= 18, npm >= 9, TypeScript 5.x
|
|
106
44
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
message: string; // 人間可読な説明
|
|
112
|
-
suggestion: string; // 修正方法の提案
|
|
113
|
-
adr_ref?: string; // 関連ADR参照 ("ADR-003" など)
|
|
114
|
-
fix_example?: string; // 修正コード例(AIエージェントの自己修正用)
|
|
115
|
-
}
|
|
45
|
+
### 1. インストール
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
npm install --save-dev phasegate
|
|
116
49
|
```
|
|
117
50
|
|
|
118
|
-
|
|
51
|
+
### 2. プロジェクト初期化
|
|
119
52
|
|
|
120
|
-
|
|
53
|
+
```bash
|
|
54
|
+
npx phasegate init --name <プロジェクト名> --preset standard
|
|
55
|
+
```
|
|
121
56
|
|
|
122
|
-
|
|
123
|
-
|---|---|
|
|
124
|
-
| Node.js | 18以上 |
|
|
125
|
-
| npm | 9以上 |
|
|
126
|
-
| TypeScript | 5.x |
|
|
57
|
+
`.claude/skills/` に28スキルを展開し、設計原則ドキュメント(`docs/principles/*.md`・`docs/folder_management_rules.md`)を配置し、`phasegate.config.json` を生成します。
|
|
127
58
|
|
|
128
|
-
|
|
59
|
+
`--preset` で初期構成を選択できます: `minimal`(プロトタイプ)/ `standard`(推奨)/ `strict`(本番)
|
|
129
60
|
|
|
130
|
-
|
|
61
|
+
オプションで `--with-husky` を付けると L2 バリデータを実行する `.husky/pre-commit` フックも同時にインストールされます。
|
|
62
|
+
|
|
63
|
+
### 3. AIDLC を開始
|
|
131
64
|
|
|
132
65
|
```bash
|
|
133
|
-
|
|
66
|
+
claude # プロジェクトルートで起動
|
|
134
67
|
```
|
|
135
68
|
|
|
136
|
-
`
|
|
69
|
+
セッション内で `/product-architect` を実行して設計を開始します。
|
|
137
70
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
}
|
|
71
|
+
### アップデート
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
npm update phasegate # パッケージ更新
|
|
75
|
+
npx phasegate update-skills # スキルを最新版に同期
|
|
144
76
|
```
|
|
145
77
|
|
|
146
78
|
---
|
|
147
79
|
|
|
148
|
-
##
|
|
80
|
+
## 5層防御モデル
|
|
149
81
|
|
|
150
|
-
|
|
82
|
+
| レイヤー | タイミング | チェック内容 | 実行コマンド |
|
|
83
|
+
|---|---|---|---|
|
|
84
|
+
| **L0** | Agent Hook | hook 設定検証・完了ゲートチェック | `npx phasegate validate --layer L0` |
|
|
85
|
+
| **L1** | エディタ保存時 | import グラフ・レイヤー違反・`@unit`/`@layer` メタデータ・AI アンチパターン | `npx phasegate lint` |
|
|
86
|
+
| **L2** | コミット前 | フェーズゲート・メタデータ完全性・テスト品質 | `npx phasegate validate --layer L2` |
|
|
87
|
+
| **L3** | CI/CD | セキュリティ・パフォーマンス・カバレッジ・要件トレーサビリティ (※) | `npx phasegate validate --layer L3` |
|
|
88
|
+
| **L4** | 週次(CI cron) | 設計-コード乖離検出・文書間整合性・デッドコード検出 | `npx phasegate validate --layer L4` |
|
|
151
89
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
90
|
+
エラーは統一された `HarnessError` フォーマットで報告され、ADR 参照と修正コード例が含まれるため AI エージェントが自己修正できます。
|
|
91
|
+
|
|
92
|
+
`--format` オプションで出力形式を切り替えられます:
|
|
155
93
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
94
|
+
| フォーマット | 用途 | 出力形式 |
|
|
95
|
+
|---|---|---|
|
|
96
|
+
| `human` | ローカル開発 | コンソール向け(絵文字・色付き) |
|
|
97
|
+
| `agent` | AI エージェント連携 | キー値テキスト(`OVERALL: PASS`, `VALIDATOR: L2-001`) |
|
|
98
|
+
| `ci` | CI/CD パイプライン | 構造化 JSON(GitHub Actions 等で解析可能) |
|
|
159
99
|
|
|
160
|
-
###
|
|
100
|
+
### L2 テスト品質ルール
|
|
161
101
|
|
|
162
|
-
|
|
163
|
-
# プロジェクトの docs/ 配下にコピー
|
|
164
|
-
cp node_modules/phasegate/docs/folder_management_rules.md docs/
|
|
165
|
-
mkdir -p docs/principles
|
|
166
|
-
cp node_modules/phasegate/docs/principles/*.md docs/principles/
|
|
167
|
-
```
|
|
102
|
+
L2 のテスト品質バリデータ(L2-003)は以下をチェックします:
|
|
168
103
|
|
|
169
|
-
|
|
104
|
+
| ルール | コード | 内容 |
|
|
105
|
+
|---|---|---|
|
|
106
|
+
| **日本語テスト名** | L2-003 | `it()` / `test()` のテスト名が日本語であること |
|
|
107
|
+
| **`actual` 変数** | L2-003 | `expect()` の対象を `const actual` に代入していること |
|
|
108
|
+
| **CLI E2E テスト存在** | L2-013 | CLI コマンドに対応する E2E テストが存在すること |
|
|
170
109
|
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
|
|
110
|
+
```typescript
|
|
111
|
+
// PASS
|
|
112
|
+
it('ユーザーが存在する場合、結果を返すこと', async () => {
|
|
113
|
+
// Arrange
|
|
114
|
+
const userId = "test_user";
|
|
115
|
+
|
|
116
|
+
// Act
|
|
117
|
+
const actual = await sut.findByUserId(userId);
|
|
118
|
+
|
|
119
|
+
// Assert
|
|
120
|
+
expect(actual).toEqual(expectedResult);
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
// FAIL — 英語テスト名 + actual 変数なし
|
|
124
|
+
it('should return user', async () => {
|
|
125
|
+
const result = await sut.findByUserId(userId);
|
|
126
|
+
expect(result).toEqual(expectedResult);
|
|
127
|
+
});
|
|
174
128
|
```
|
|
175
129
|
|
|
176
|
-
###
|
|
130
|
+
### L3 Nyquist Validation(要件カバレッジ)※ 未完成
|
|
177
131
|
|
|
178
|
-
|
|
179
|
-
|
|
132
|
+
> **注意**: バリデーションロジックは実装済みですが、マトリクスファイルの自動生成パイプラインが未完成のため、現時点では手動セットアップが必要です。
|
|
133
|
+
|
|
134
|
+
通常のコードカバレッジ(L3 coverage)は「コードの何%が実行されたか」を測りますが、Nyquist は**「要件(受け入れ基準)の何%がテストされているか」**を測ります。
|
|
135
|
+
|
|
136
|
+
**利用するには**: `.harness/requirement-test-matrix.json` を手動で作成し、受け入れ基準とテストの対応を定義します:
|
|
137
|
+
|
|
138
|
+
```json
|
|
139
|
+
{
|
|
140
|
+
"version": "1.0.0",
|
|
141
|
+
"stories": [
|
|
142
|
+
{
|
|
143
|
+
"storyId": "H07-01",
|
|
144
|
+
"storyMappings": [
|
|
145
|
+
{
|
|
146
|
+
"acId": "AC-1",
|
|
147
|
+
"testReferences": [
|
|
148
|
+
{
|
|
149
|
+
"filePath": "src/__tests__/unit/feature.test.ts",
|
|
150
|
+
"testType": "unit",
|
|
151
|
+
"testName": "特定のシナリオをテストする"
|
|
152
|
+
}
|
|
153
|
+
]
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"acId": "AC-2",
|
|
157
|
+
"testReferences": []
|
|
158
|
+
}
|
|
159
|
+
]
|
|
160
|
+
}
|
|
161
|
+
]
|
|
162
|
+
}
|
|
180
163
|
```
|
|
181
164
|
|
|
182
|
-
|
|
165
|
+
上記の例では AC-2 に `testReferences` がないため、L3 バリデータが「AC-2 はテストされていない」とエラーを報告します。`testType` は `unit` / `it` / `scenario` のいずれかです。マトリクスファイルが存在しない場合、Nyquist チェックはスキップされます。
|
|
166
|
+
|
|
167
|
+
### L4 週次実行
|
|
183
168
|
|
|
184
|
-
|
|
169
|
+
L4 は CI の cron スケジュールで週次実行します。`consistency-check` テンプレートを使います:
|
|
185
170
|
|
|
186
171
|
```bash
|
|
187
|
-
#
|
|
188
|
-
|
|
189
|
-
npx phasegate update-skills
|
|
172
|
+
# テンプレートを生成して配置
|
|
173
|
+
npx phasegate ci:generate-template --type consistency-check --render > .github/workflows/consistency-check.yml
|
|
190
174
|
```
|
|
191
175
|
|
|
176
|
+
デフォルトは毎週月曜 09:00 UTC に実行。乖離やデッドコードが検出されると GitHub Issue が自動作成されます。手動で実行する場合は `npx phasegate validate --layer L4` を使います。
|
|
177
|
+
|
|
192
178
|
---
|
|
193
179
|
|
|
194
|
-
## phasegate.config.json
|
|
180
|
+
## 設定 (phasegate.config.json)
|
|
195
181
|
|
|
196
|
-
プロジェクトルートに配置する品質設定のSingle Source of Truth
|
|
182
|
+
プロジェクトルートに配置する品質設定の Single Source of Truth です。
|
|
197
183
|
|
|
198
184
|
```jsonc
|
|
199
185
|
{
|
|
200
186
|
"project": { "name": "my-project", "preset": "standard" },
|
|
201
187
|
"layers": {
|
|
202
188
|
"L0": { "enabled": false },
|
|
203
|
-
"L1": { "enabled": true },
|
|
189
|
+
"L1": { "enabled": true, "rules": {} },
|
|
204
190
|
"L2": { "enabled": true },
|
|
205
191
|
"L3": { "enabled": true },
|
|
206
192
|
"L4": { "enabled": false }
|
|
@@ -212,22 +198,170 @@ npx phasegate update-skills
|
|
|
212
198
|
},
|
|
213
199
|
"phaseDependencies": {
|
|
214
200
|
"preset": "standard",
|
|
215
|
-
"override": false,
|
|
216
201
|
"storyReflection": { "enabled": true }
|
|
217
202
|
},
|
|
218
203
|
"protectedFiles": {
|
|
219
|
-
"exclude": ["
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
204
|
+
"exclude": ["package.json"]
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### project.preset -- レイヤー厳密度
|
|
210
|
+
|
|
211
|
+
| プリセット | 有効レイヤー | カバレッジ | 用途 |
|
|
212
|
+
|---|---|---|---|
|
|
213
|
+
| **minimal** | L1, L2 | -- | プロトタイプ・学習 |
|
|
214
|
+
| **standard** | L1-L3 | 90% | 通常開発(デフォルト) |
|
|
215
|
+
| **strict** | L1-L4 | 95% | 本番・エンタープライズ |
|
|
216
|
+
|
|
217
|
+
### layers.L1.rules -- AST ルール設定
|
|
218
|
+
|
|
219
|
+
L1 の各ルールを `"error"` / `"warning"` / `"off"` で個別に制御できます。省略したルールはデフォルト `"error"` で適用されます。
|
|
220
|
+
|
|
221
|
+
```jsonc
|
|
222
|
+
{
|
|
223
|
+
"layers": {
|
|
224
|
+
"L1": {
|
|
225
|
+
"enabled": true,
|
|
226
|
+
"rules": {
|
|
227
|
+
"no-any-abuse": "warning",
|
|
228
|
+
"no-comment-flood": "off"
|
|
229
|
+
}
|
|
230
|
+
}
|
|
224
231
|
}
|
|
225
232
|
}
|
|
226
233
|
```
|
|
227
234
|
|
|
235
|
+
| ルール | コード | チェック内容 |
|
|
236
|
+
|---|---|---|
|
|
237
|
+
| `require-unit-comment` | L1-001 | `@unit` アノテーションの存在 |
|
|
238
|
+
| `require-layer-comment` | L1-002 | `@layer` アノテーションの存在 |
|
|
239
|
+
| `no-layer-violation` | L1-003 | import グラフ解析・レイヤー依存方向違反の検出 |
|
|
240
|
+
| `enforce-folder-structure` | L1-004 | フォルダ構造と宣言レイヤーの一致 |
|
|
241
|
+
| `no-any-abuse` | L1-005 | `any` 型の濫用検出 |
|
|
242
|
+
| `no-code-duplication` | L1-006 | コード重複の検出 |
|
|
243
|
+
| `no-ghost-file` | L1-007 | 未参照ファイルの検出 |
|
|
244
|
+
| `no-comment-flood` | L1-008 | 過剰コメントの検出 |
|
|
245
|
+
| `it-test-mock-detection` | L1-017 | テストでの不適切なモック使用を検出 |
|
|
246
|
+
| `stub-comment-detection` | L1-018 | スタブコメント(TODO/FIXME/HACK 等)の検出 |
|
|
247
|
+
|
|
248
|
+
### phaseDependencies.preset -- フェーズゲート構成
|
|
249
|
+
|
|
250
|
+
`project.preset` とは独立して設定します。
|
|
251
|
+
|
|
252
|
+
| プリセット | ゲート | storyReflection | 用途 |
|
|
253
|
+
|---|---|---|---|
|
|
254
|
+
| **full** | 全 AIDLC ゲート | `logical_design` + `domain_model` required | AIDLC フルセレモニー |
|
|
255
|
+
| **standard** | コアゲート | `logical_design` required | 通常開発 |
|
|
256
|
+
| **minimal** | なし | 無効 | プロトタイプ |
|
|
257
|
+
| **custom** | `gates[]` で定義 | `storyReflection.mappings` で定義 | 完全カスタマイズ(`override: true` 必須) |
|
|
258
|
+
|
|
259
|
+
### storyReflection -- US 単位の設計反映ゲート
|
|
260
|
+
|
|
261
|
+
`storyReflection` は **「inception の設計成果が product docs に反映されるまで実装をブロックする」** 仕組みです。
|
|
262
|
+
|
|
263
|
+
#### 動作の仕組み
|
|
264
|
+
|
|
265
|
+
`src/{unit}/` への書き込み時に、以下の検査が自動で走ります:
|
|
266
|
+
|
|
267
|
+
1. `docs/inception/{unit}/` 配下のディレクトリを走査し、US-XXX / ISSUE-XXX を自動検出
|
|
268
|
+
2. 検出した各 US について、inception 側のファイルが存在するかチェック
|
|
269
|
+
3. 存在する場合、対応する product 側のファイルに `@story-id` アノテーションが含まれるかチェック
|
|
270
|
+
4. **含まれていなければ書き込みをブロック**
|
|
271
|
+
|
|
272
|
+
```
|
|
273
|
+
docs/inception/my-unit/US-001/logical_design.md ← 存在する
|
|
274
|
+
docs/product/construction/my-unit/logical_design.md ← @story-id US-001 がない
|
|
275
|
+
→ src/my-unit/ への書き込みがブロックされる
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
#### `@story-id` アノテーションの書き方
|
|
279
|
+
|
|
280
|
+
product docs に設計成果を反映する際、反映元の US/ISSUE を `@story-id` で記録します:
|
|
281
|
+
|
|
282
|
+
```markdown
|
|
283
|
+
<!-- docs/product/construction/my-unit/logical_design.md -->
|
|
284
|
+
|
|
285
|
+
## ポート定義
|
|
286
|
+
|
|
287
|
+
<!-- @story-id US-001 -->
|
|
288
|
+
### UserRepository Port
|
|
289
|
+
- findById(id: UserId): Promise<User>
|
|
290
|
+
|
|
291
|
+
<!-- @story-id US-001, US-002 -->
|
|
292
|
+
### OrderRepository Port
|
|
293
|
+
- findByUserId(id: UserId): Promise<Order[]>
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
カンマ区切りで複数の US を1つのアノテーションに記載できます。
|
|
297
|
+
|
|
298
|
+
#### standard プリセットのデフォルトマッピング
|
|
299
|
+
|
|
300
|
+
| inception 側(検出対象) | product 側(反映先) | 必須 |
|
|
301
|
+
|---|---|---|
|
|
302
|
+
| `docs/inception/{unit}/{storyId}/logical_design.md` | `docs/product/construction/{unit}/logical_design.md` | **Yes**(ブロック) |
|
|
303
|
+
| `docs/inception/{unit}/{storyId}/domain_model.md` | `docs/product/construction/{unit}/domain_model.md` | No(警告のみ) |
|
|
304
|
+
|
|
305
|
+
カスタムマッピングも定義できます:
|
|
306
|
+
|
|
307
|
+
```jsonc
|
|
308
|
+
{
|
|
309
|
+
"phaseDependencies": {
|
|
310
|
+
"preset": "standard",
|
|
311
|
+
"storyReflection": {
|
|
312
|
+
"enabled": true,
|
|
313
|
+
"mappings": [
|
|
314
|
+
{
|
|
315
|
+
"inception": "docs/inception/{unit}/{storyId}/logical_design.md",
|
|
316
|
+
"product": "docs/product/construction/{unit}/logical_design.md",
|
|
317
|
+
"required": true
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
"inception": "docs/inception/{unit}/{storyId}/domain_model.md",
|
|
321
|
+
"product": "docs/product/construction/{unit}/domain_model.md",
|
|
322
|
+
"required": true
|
|
323
|
+
}
|
|
324
|
+
]
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
#### 制限事項
|
|
331
|
+
|
|
332
|
+
- **特定の US だけゲートを通すことはできません** — inception に存在する全 US の反映が必要です
|
|
333
|
+
- `/story-implementor --story US-001` の `--story` 引数はゲートに接続されていません。検出はファイルシステムの走査のみで行われます
|
|
334
|
+
|
|
335
|
+
### quickMode -- 軽微な変更の緩和
|
|
336
|
+
|
|
337
|
+
Quick Mode は以下の方法で発動します:
|
|
338
|
+
|
|
339
|
+
- **CLI**: `npx phasegate ci-check --quick`
|
|
340
|
+
- **スキル**: `/quick-implementor` を使用すると自動で Quick Mode が適用されます
|
|
341
|
+
|
|
342
|
+
`bugfix`, `docs`, `test`, `config` カテゴリの変更では、Phase Gate と 2-Phase Execution を緩和し L1/L2 のみ維持します。
|
|
343
|
+
|
|
344
|
+
**Quick Mode が拒否される条件**(フルチェックが強制されます):
|
|
345
|
+
- `domain/` 配下に新規ファイルを追加した場合
|
|
346
|
+
- `*port.ts` や `*adapter.ts`(API 契約)を変更した場合
|
|
347
|
+
- 新機能追加・新ドメインモデル追加に該当する変更
|
|
348
|
+
|
|
349
|
+
### protectedFiles -- AI 書き込み保護
|
|
350
|
+
|
|
351
|
+
以下のファイルはデフォルトで AI による直接編集から保護されます:
|
|
352
|
+
|
|
353
|
+
| 保護ファイル | 理由 |
|
|
354
|
+
|---|---|
|
|
355
|
+
| `package.json` | 依存関係・バージョン管理 |
|
|
356
|
+
| `package-lock.json` | ロックファイル |
|
|
357
|
+
| `tsconfig.json` | TypeScript 設定 |
|
|
358
|
+
| `biome.json` / `.biome.json` | リンター設定 |
|
|
359
|
+
|
|
360
|
+
`protectedFiles.exclude` に指定すると、そのファイルの保護が解除され AI が直接編集できるようになります。保護されたファイルを編集しようとすると、PreToolUse Hook が適切なスキル(`/quick-implementor` 等)の使用をガイドします。
|
|
361
|
+
|
|
228
362
|
---
|
|
229
363
|
|
|
230
|
-
## CLI
|
|
364
|
+
## CLIコマンド
|
|
231
365
|
|
|
232
366
|
```bash
|
|
233
367
|
npx phasegate <command> [options]
|
|
@@ -239,248 +373,162 @@ npx phasegate <command> [options]
|
|
|
239
373
|
|---|---|
|
|
240
374
|
| `init --name <name>` | スキル展開 + phasegate.config.json 生成 |
|
|
241
375
|
| `update-skills` | スキルを最新版に再デプロイ |
|
|
242
|
-
| `list-features` |
|
|
243
|
-
| `enable-feature <name>` |
|
|
244
|
-
| `disable-feature <name>` | 機能を無効化 |
|
|
376
|
+
| `list-features` | 利用可能な機能一覧(下表参照) |
|
|
377
|
+
| `enable-feature <name>` / `disable-feature <name>` | 機能の有効化/無効化 |
|
|
245
378
|
|
|
246
|
-
|
|
379
|
+
利用可能な Feature flags:
|
|
247
380
|
|
|
248
|
-
|
|
|
381
|
+
| Feature | 説明 | デフォルト |
|
|
249
382
|
|---|---|---|
|
|
250
|
-
| `
|
|
251
|
-
| `
|
|
252
|
-
| `
|
|
253
|
-
| `
|
|
254
|
-
| `check-phase-gate` | フェーズゲートチェック | `--level 1\|2\|3` |
|
|
383
|
+
| `agentLessonCollection` | AI エージェントの学習ログを収集 | off (`strict` で on) |
|
|
384
|
+
| `cascadeUpdate` | 下位フェーズの変更を上位設計に自動反映 | off |
|
|
385
|
+
| `bundleSizeLimit` | バンドルサイズ制限チェック (KB) | off (`strict` で 500KB) |
|
|
386
|
+
| `deadCodeGC` | デッドコード検出・削除 | off (`strict` で on) |
|
|
255
387
|
|
|
256
|
-
|
|
388
|
+
> **注意**: Feature flags は config への保存・読み出しは動作しますが、フラグに応じたランタイム動作は未実装です(将来バージョンで対応予定)。
|
|
257
389
|
|
|
258
|
-
|
|
259
|
-
|---|---|---|
|
|
260
|
-
| `phasegate:status` | ハーネス全体の健全性サマリ | `--json` |
|
|
261
|
-
| `phasegate:check-ready` | 全storyのPhase Gate通過状態 | `--json` |
|
|
262
|
-
| `phasegate:check-phase` | 指定Unitの現在フェーズ | `--unit <unitId>` `--json` |
|
|
263
|
-
| `phasegate:ci-check` | 全L3バリデータ実行結果 | `--json` |
|
|
264
|
-
| `phasegate:detect-drift` | 設計-コード乖離レポート | `--json` |
|
|
265
|
-
| `phasegate:lint` | harness-api経由のlint | `--target <path>` `--json` |
|
|
266
|
-
| `phasegate:complete-check` | L2-L4全チェック | `--json` |
|
|
267
|
-
| `phasegate:impact-analysis` | ストーリー影響範囲分析 | `<storyId>` `--json` |
|
|
268
|
-
|
|
269
|
-
### ADR管理
|
|
270
|
-
|
|
271
|
-
| コマンド | 説明 | オプション |
|
|
272
|
-
|---|---|---|
|
|
273
|
-
| `list-adrs` | ADR一覧 | `--status Proposed\|Accepted\|Deprecated\|Superseded` |
|
|
274
|
-
| `validate-adr` | ADR検証 | `--all` または `<adrRef>` |
|
|
275
|
-
|
|
276
|
-
### HarnessError
|
|
390
|
+
### 品質チェック
|
|
277
391
|
|
|
278
|
-
| コマンド | 説明 |
|
|
392
|
+
| コマンド | 説明 | 主なオプション |
|
|
279
393
|
|---|---|---|
|
|
280
|
-
| `
|
|
281
|
-
| `
|
|
282
|
-
| `
|
|
283
|
-
|
|
284
|
-
|
|
394
|
+
| `lint` | L1 Biome AST チェック | `--target <path>` `--json` |
|
|
395
|
+
| `validate` | 指定レイヤーのバリデータ実行 | `--layer L1\|L2\|L3\|L4\|all` `--unit <name>` `--format human\|agent\|ci` |
|
|
396
|
+
| `ci-check` | CI フルチェック (L2-L4) | `--quick` `--dry-run` `--fail-on-reject` |
|
|
397
|
+
| `check-phase-gate` | フェーズゲートチェック | `--level 1\|2\|3` |
|
|
398
|
+
| `validate-metadata <files>` | メタデータ検証 | |
|
|
285
399
|
|
|
286
|
-
|
|
287
|
-
|---|---|---|
|
|
288
|
-
| `skill:execute-tdd-cycle` | TDDサイクル実行 | `--unit` `--story` `--desc` `--phase RED\|GREEN\|REFACTOR` `--passed` |
|
|
289
|
-
| `skill:check-coverage` | テストカバレッジ検証 | `--story <storyId>` `--json` |
|
|
290
|
-
| `skill:collect-lessons` | エージェントLesson収集 | `--story <storyId>` `--sources <paths>` `--write-artifact` |
|
|
291
|
-
| `skill:apply-cascade-update` | 上位設計への影響反映 | `--story <storyId>` `--dry-run` |
|
|
292
|
-
| `skill:validate-structure` | スキル構造検証 | `--file <path>` `--json` |
|
|
400
|
+
### phasegate コマンド
|
|
293
401
|
|
|
294
|
-
|
|
402
|
+
`phasegate:` プレフィックス付きのコマンドは JSON 出力に対応し、スクリプトからの利用に適しています。
|
|
295
403
|
|
|
296
|
-
| コマンド | 説明 |
|
|
297
|
-
|
|
298
|
-
| `
|
|
299
|
-
| `
|
|
300
|
-
| `
|
|
404
|
+
| コマンド | 説明 |
|
|
405
|
+
|---|---|
|
|
406
|
+
| `phasegate:status` | 全体の健全性サマリ |
|
|
407
|
+
| `phasegate:check-ready` | 全 story の Phase Gate 通過状態 |
|
|
408
|
+
| `phasegate:check-phase --unit <id>` | 指定 Unit の現在フェーズ |
|
|
409
|
+
| `phasegate:ci-check` | 全 L3 バリデータ実行 |
|
|
410
|
+
| `phasegate:detect-drift` | 設計-コード乖離レポート |
|
|
411
|
+
| `phasegate:lint --target <path>` | lint 実行 |
|
|
412
|
+
| `phasegate:complete-check` | L2-L4 全チェック |
|
|
413
|
+
| `phasegate:impact-analysis <storyId>` | ストーリー影響範囲分析 |
|
|
301
414
|
|
|
302
|
-
###
|
|
415
|
+
### その他
|
|
303
416
|
|
|
304
417
|
| コマンド | 説明 |
|
|
305
418
|
|---|---|
|
|
306
|
-
| `
|
|
307
|
-
| `
|
|
308
|
-
| `
|
|
309
|
-
| `
|
|
310
|
-
| `regression:configure-ci-gate` | CIゲート設定 |
|
|
311
|
-
| `regression:analyze-migration` | v0テスト移行分析 |
|
|
312
|
-
| `regression:migrate-v0-tests` | v0テスト移行実行 |
|
|
419
|
+
| `list-adrs` | ADR 一覧(`--status` でフィルタ可能) |
|
|
420
|
+
| `validate-adr` | ADR 検証(`--all` または `<adrRef>`) |
|
|
421
|
+
| `list-errors` | エラー定義一覧(`--layer L0-L4`) |
|
|
422
|
+
| `ci:generate-template` | CI/CD テンプレート生成(`--type <type>`) |
|
|
313
423
|
|
|
314
|
-
###
|
|
424
|
+
### Hook / 委任ラッパー
|
|
315
425
|
|
|
316
426
|
| コマンド | 説明 |
|
|
317
427
|
|---|---|
|
|
318
|
-
| `
|
|
319
|
-
| `
|
|
428
|
+
| `hook <pre-tool-use\|post-tool-use\|stop>` | Claude Code hook を起動(stdin から JSON を読む) |
|
|
429
|
+
| `pre-commit` | L2 pre-commit バリデータをステージファイルに対して実行 |
|
|
430
|
+
| `delegate-sonnet [...args]` | Sonnet 4.6 委任スクリプトの透過ラッパー(`scripts/delegate-sonnet.sh` に引数を forward) |
|
|
320
431
|
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
| コマンド | 説明 | オプション |
|
|
324
|
-
|---|---|---|
|
|
325
|
-
| `p2:check-freshness` | 設計文書の鮮度チェック | `--pattern <glob>` `--dry-run` `--format text\|json` |
|
|
326
|
-
| `p2:validate-pointers` | ドキュメント内ファイルポインタ検証 | `--include-urls` `--format text\|json` |
|
|
327
|
-
| `p2:generate-e2e-template` | E2Eテストテンプレート生成 | `--phase <phase>` `--output <path>` |
|
|
432
|
+
> 開発者向けコマンド(回帰テスト、Hooks Engine、Phase 2 拡張、スキル品質)は [DEVELOPMENT.ja.md](DEVELOPMENT.ja.md) を参照してください。
|
|
328
433
|
|
|
329
434
|
---
|
|
330
435
|
|
|
331
|
-
## AIDLC
|
|
436
|
+
## AIDLC スキル
|
|
332
437
|
|
|
333
|
-
AIDLC (AI-Driven Development Life Cycle)
|
|
438
|
+
AIDLC (AI-Driven Development Life Cycle) は設計 → テスト設計 → TDD 実装の順序を強制するプロセスです。各レベルの成果物が次のレベルの前提条件になります。
|
|
334
439
|
|
|
335
|
-
|
|
336
|
-
Level 1: 要求定義 — inception/_shared/ に配置
|
|
337
|
-
─────────────────────────────────────────────
|
|
338
|
-
/product-architect プロダクト全体像の定義
|
|
339
|
-
/story-writer Who/What/Why形式のユーザーストーリー作成
|
|
340
|
-
/story-mapper MVPスコープ整理・優先順位定義
|
|
341
|
-
/unit-designer ストーリーを独立構築可能なUnitにグルーピング
|
|
342
|
-
|
|
343
|
-
Level 2: Unit横断設計 — inception/{unit}/ に配置
|
|
344
|
-
─────────────────────────────────────────────
|
|
345
|
-
/domain-designer DDDドメインモデル設計(集約・Entity・VO・Event)
|
|
346
|
-
/logical-designer Hexagonal Architecture設計(Port & Adapter)
|
|
347
|
-
/mock-designer UIモックアップ設計
|
|
348
|
-
/environment-designer ローカル開発環境・インフラ設計
|
|
349
|
-
/it-test-designer 統合テストケース設計
|
|
350
|
-
/unit-test-designer ユニットテストケース設計
|
|
351
|
-
/it-test-logic-designer IT Vitest実装ロジック設計
|
|
352
|
-
/unit-test-logic-designer UT Vitest実装ロジック設計
|
|
353
|
-
|
|
354
|
-
Level 3: ストーリー実装 — inception/{unit}/{US-XXX}/ に配置
|
|
355
|
-
─────────────────────────────────────────────
|
|
356
|
-
/logical-designer US固有の論理設計
|
|
357
|
-
/scenario-test-designer E2Eシナリオテストケース設計
|
|
358
|
-
/scenario-test-logic-designer PlaywrightE2Eテスト実装ロジック設計
|
|
359
|
-
/uiux-designer 最終UI/UX定義
|
|
360
|
-
/implementation-readiness-checker 実装開始前の準備状況検証
|
|
361
|
-
/story-implementor TDD実装 (Red→Green→Refactor)
|
|
362
|
-
```
|
|
440
|
+
### 使い方
|
|
363
441
|
|
|
364
|
-
|
|
365
|
-
- Level 2はLevel 1の`unit-designer`完了が必須
|
|
366
|
-
- Level 3はLevel 2の`domain_model.md`・`logical_design.md`の存在が必須
|
|
367
|
-
- `story-implementor`の前に少なくとも1つのテスト設計フェーズが必須(緩和不可)
|
|
442
|
+
Claude Code セッション内でスラッシュコマンドとして実行します:
|
|
368
443
|
|
|
369
|
-
|
|
444
|
+
```
|
|
445
|
+
/product-architect ← Level 1 の最初のスキル
|
|
446
|
+
/story-implementor ← Level 3 の実装スキル
|
|
447
|
+
/quick-implementor ← バグ修正など軽微な変更
|
|
448
|
+
```
|
|
370
449
|
|
|
371
|
-
|
|
450
|
+
各スキルは前のレベルの成果物を入力として参照します。前提条件が未完了の場合、フェーズゲートがブロックします。
|
|
372
451
|
|
|
373
|
-
###
|
|
452
|
+
### Level 1: 要求定義(成果物: `docs/inception/_shared/`)
|
|
374
453
|
|
|
375
|
-
| スキル |
|
|
454
|
+
| スキル | 目的 |
|
|
376
455
|
|---|---|
|
|
377
|
-
| `/product-architect` |
|
|
378
|
-
| `/story-writer` | Who/What/Why形式のユーザーストーリーと受け入れ基準を作成 |
|
|
379
|
-
| `/story-mapper` |
|
|
380
|
-
| `/unit-designer` | ストーリーを独立構築可能なUnit
|
|
381
|
-
|
|
382
|
-
### Design (5スキル)
|
|
456
|
+
| `/product-architect` | プロダクト全体像(ドメイン・アーキテクチャ・制約)を定義 |
|
|
457
|
+
| `/story-writer` | Who/What/Why 形式のユーザーストーリーと受け入れ基準を作成 |
|
|
458
|
+
| `/story-mapper` | MVP スコープ整理・優先順位定義 |
|
|
459
|
+
| `/unit-designer` | ストーリーを独立構築可能な Unit にグルーピング |
|
|
383
460
|
|
|
384
|
-
|
|
385
|
-
|---|---|
|
|
386
|
-
| `/domain-designer` | DDDドメインモデル設計(集約・Entity・VO・イベント) |
|
|
387
|
-
| `/logical-designer` | Hexagonal Architecture設計(Port & Adapter)。横断設計とUS固有設計の2モード |
|
|
388
|
-
| `/mock-designer` | UIモックアップ設計。UI/UXの検証とフィードバック |
|
|
389
|
-
| `/uiux-designer` | テストケース・論理設計・既存UIを加味して最終UI/UX定義を策定 |
|
|
390
|
-
| `/environment-designer` | ローカル開発環境・インフラ構成設計 |
|
|
461
|
+
### Level 2: Unit 設計(成果物: `docs/inception/{unit}/`)
|
|
391
462
|
|
|
392
|
-
|
|
463
|
+
Level 1 の `/unit-designer` 完了が前提条件。
|
|
393
464
|
|
|
394
|
-
| スキル |
|
|
465
|
+
| スキル | 目的 |
|
|
395
466
|
|---|---|
|
|
396
|
-
| `/
|
|
397
|
-
| `/
|
|
398
|
-
| `/
|
|
399
|
-
| `/
|
|
400
|
-
| `/
|
|
401
|
-
| `/
|
|
402
|
-
| `/test-
|
|
467
|
+
| `/domain-designer` | DDD ドメインモデル設計(集約・Entity・VO・イベント) |
|
|
468
|
+
| `/logical-designer` | Hexagonal Architecture 設計(Port & Adapter) |
|
|
469
|
+
| `/mock-designer` | UI モックアップ設計 |
|
|
470
|
+
| `/environment-designer` | ローカル開発環境・インフラ設計 |
|
|
471
|
+
| `/unit-test-designer` | ユニットテストケース設計 |
|
|
472
|
+
| `/it-test-designer` | 統合テストケース設計 |
|
|
473
|
+
| `/unit-test-logic-designer` | UT Vitest 実装ロジック設計 |
|
|
474
|
+
| `/it-test-logic-designer` | IT Vitest 実装ロジック設計 |
|
|
403
475
|
|
|
404
|
-
###
|
|
476
|
+
### Level 3: ストーリー実装(成果物: `docs/inception/{unit}/{US-XXX}/`)
|
|
405
477
|
|
|
406
|
-
|
|
478
|
+
Level 2 の `domain_model.md` + `logical_design.md` の存在が前提条件。
|
|
479
|
+
|
|
480
|
+
| スキル | 目的 |
|
|
407
481
|
|---|---|
|
|
408
|
-
| `/
|
|
409
|
-
| `/
|
|
410
|
-
| `/
|
|
411
|
-
| `/
|
|
482
|
+
| `/logical-designer` | US 固有の論理設計 |
|
|
483
|
+
| `/uiux-designer` | 最終 UI/UX 定義 |
|
|
484
|
+
| `/scenario-test-designer` | E2E シナリオテストケース設計 |
|
|
485
|
+
| `/scenario-test-logic-designer` | Playwright E2E 実装ロジック設計 |
|
|
486
|
+
| `/implementation-readiness-checker` | 実装開始前の準備状況検証 |
|
|
487
|
+
| `/story-implementor` | TDD 実装 (Red -> Green -> Refactor) |
|
|
488
|
+
| `/quick-implementor` | 軽微変更の高速実装(バグ修正・ドキュメント等) |
|
|
412
489
|
|
|
413
|
-
### Verification
|
|
490
|
+
### Verification スキル(任意のタイミングで使用)
|
|
414
491
|
|
|
415
|
-
| スキル |
|
|
492
|
+
| スキル | 目的 |
|
|
416
493
|
|---|---|
|
|
417
|
-
| `/consistency-checker` |
|
|
418
|
-
| `/cascade-updater` |
|
|
419
|
-
| `/codex-delegator` | Codex CLI
|
|
420
|
-
| `/codebase-mapper` |
|
|
421
|
-
| `/doc-freshness-checker` |
|
|
422
|
-
| `/pointer-validator` |
|
|
423
|
-
| `/engineering-perspective` |
|
|
424
|
-
| `/
|
|
494
|
+
| `/consistency-checker` | 設計文書間の整合性チェック |
|
|
495
|
+
| `/cascade-updater` | 下位フェーズの発見を上位設計にフィードバック ※未完成 |
|
|
496
|
+
| `/codex-delegator` | Codex CLI にタスクを委任し品質管理 |
|
|
497
|
+
| `/codebase-mapper` | `@unit`/`@layer` アノテーションから構造マップ生成 |
|
|
498
|
+
| `/doc-freshness-checker` | 設計文書の鮮度チェック |
|
|
499
|
+
| `/pointer-validator` | 設計文書内のファイルパス参照を検証 |
|
|
500
|
+
| `/engineering-perspective` | Beck/Fowler/Martin/Evans の視点で設計レビュー |
|
|
501
|
+
| `/test-coverage-checker` | カバレッジ検証・Nyquist Validation |
|
|
502
|
+
| `/implementation-planner` | 実装計画の立案 |
|
|
503
|
+
| `/skill-creator` | スキルの作成・更新 |
|
|
425
504
|
|
|
426
505
|
---
|
|
427
506
|
|
|
428
|
-
## メタデータ規約
|
|
429
|
-
|
|
430
|
-
全ソースファイルの先頭にメタデータコメントを記載します。これによりL1検証・トレーサビリティ・drift-detectionが機能します。
|
|
507
|
+
## メタデータ規約
|
|
431
508
|
|
|
432
|
-
|
|
509
|
+
全ソースファイルの先頭に `@unit` / `@layer` コメントを記載します。テストファイルには `@story` も追加します。
|
|
433
510
|
|
|
434
511
|
```typescript
|
|
435
512
|
// @unit config-foundation
|
|
436
513
|
// @layer domain
|
|
514
|
+
// @story US-001 ← テストファイルのみ
|
|
437
515
|
|
|
438
516
|
export class ConfigSchema { ... }
|
|
439
517
|
```
|
|
440
518
|
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
// @unit config-foundation
|
|
447
|
-
// @layer domain
|
|
448
|
-
// @story US-001
|
|
449
|
-
|
|
450
|
-
describe('ConfigSchema', () => {
|
|
451
|
-
it('バリデーションルールが正しく適用される', () => {
|
|
452
|
-
// Arrange
|
|
453
|
-
const actual = ...;
|
|
454
|
-
|
|
455
|
-
// Act
|
|
456
|
-
...
|
|
457
|
-
|
|
458
|
-
// Assert
|
|
459
|
-
expect(actual).toBe(...);
|
|
460
|
-
});
|
|
461
|
-
});
|
|
462
|
-
```
|
|
463
|
-
|
|
464
|
-
### 設計文書 (累積更新時)
|
|
465
|
-
|
|
466
|
-
`product/construction/{unit}/` 配下の設計文書を更新する際は、更新箇所に起源USを記録します。
|
|
467
|
-
|
|
468
|
-
```markdown
|
|
469
|
-
## エンティティ: ConfigSchema
|
|
470
|
-
|
|
471
|
-
@US-001
|
|
472
|
-
- name: string(必須)
|
|
473
|
-
- version: SemVer
|
|
519
|
+
| タグ | 値の決め方 | 例 |
|
|
520
|
+
|---|---|---|
|
|
521
|
+
| `@unit` | `/unit-designer` スキルが定義した Unit 名を使用。手動の場合はドメインの論理グループ名 | `config-foundation`, `validator-system` |
|
|
522
|
+
| `@layer` | ファイルの役割に応じて4値から選択 | `domain` / `application` / `infrastructure` / `presentation` |
|
|
523
|
+
| `@story` | テストが検証するユーザーストーリーの ID | `US-001`, `US-003` |
|
|
474
524
|
|
|
475
|
-
|
|
476
|
-
- validationRules: ValidationRule[](バリデーション拡張)
|
|
477
|
-
```
|
|
525
|
+
これにより L1 検証(`require-unit-comment`, `require-layer-comment`)・トレーサビリティ・drift-detection が機能します。タグが欠けているファイルは L1 でエラーになります(`layers.L1.rules` で緩和可能)。
|
|
478
526
|
|
|
479
527
|
---
|
|
480
528
|
|
|
481
|
-
## Claude Code Hooks
|
|
529
|
+
## Claude Code Hooks
|
|
482
530
|
|
|
483
|
-
`.claude/settings.json`
|
|
531
|
+
`.claude/settings.json` に以下を設定すると、ファイル書き込み時に自動でゲートチェックと lint が実行されます。
|
|
484
532
|
|
|
485
533
|
```jsonc
|
|
486
534
|
{
|
|
@@ -518,178 +566,36 @@ describe('ConfigSchema', () => {
|
|
|
518
566
|
|
|
519
567
|
| Hook | タイミング | 動作 |
|
|
520
568
|
|---|---|---|
|
|
521
|
-
| **PreToolUse** |
|
|
522
|
-
| **PostToolUse** |
|
|
523
|
-
| **Stop** | セッション終了前 |
|
|
524
|
-
|
|
525
|
-
### PreToolUse エラーメッセージ (v0.9.0)
|
|
526
|
-
|
|
527
|
-
PreToolUse Hook がブロックした際、AIエージェントが自律的に正しい行動を取れるよう、具体的なエラーメッセージを返します。
|
|
528
|
-
|
|
529
|
-
**フェーズゲート違反:**
|
|
530
|
-
|
|
531
|
-
```
|
|
532
|
-
フェーズゲート違反: scripts/harness/config-foundation/domain/test.ts
|
|
533
|
-
対象スコープ: Level 3 (実装), Unit: config-foundation
|
|
534
|
-
ブロック理由:
|
|
535
|
-
- 成果物が不足しています: docs/product/construction/config-foundation/domain_model.md
|
|
536
|
-
- plan文書が不足しています: 2:logical-designer
|
|
537
|
-
次のアクション: /story-implementor スキルを使用して設計フェーズから開始してください。
|
|
538
|
-
実行例: /story-implementor --unit config-foundation
|
|
539
|
-
```
|
|
540
|
-
|
|
541
|
-
**保護ファイル:**
|
|
542
|
-
|
|
543
|
-
```
|
|
544
|
-
保護ファイルへの書き込みがブロックされました: package.json
|
|
545
|
-
バージョン変更を含む package.json の更新は /quick-implementor スキルを使用してください。
|
|
546
|
-
```
|
|
547
|
-
|
|
548
|
-
対象の保護ファイルに応じて、`/quick-implementor`、`/update-config`、CLI経由の変更など適切なガイダンスが表示されます。
|
|
549
|
-
|
|
550
|
-
### オプション: シェルスクリプトフック
|
|
551
|
-
|
|
552
|
-
`.claude/scripts/` 配下に以下のオプションフックを配置できます。
|
|
553
|
-
|
|
554
|
-
```jsonc
|
|
555
|
-
// .claude/settings.json に追記
|
|
556
|
-
{
|
|
557
|
-
"hooks": {
|
|
558
|
-
"PreToolUse": [
|
|
559
|
-
{
|
|
560
|
-
"matcher": "Bash",
|
|
561
|
-
"hooks": [{
|
|
562
|
-
"type": "command",
|
|
563
|
-
"command": "$CLAUDE_PROJECT_DIR/.claude/scripts/deny-check.sh"
|
|
564
|
-
}]
|
|
565
|
-
}
|
|
566
|
-
// ... 既存の Write|Edit フック
|
|
567
|
-
],
|
|
568
|
-
"PostToolUse": [
|
|
569
|
-
{
|
|
570
|
-
"matcher": "Write|Edit",
|
|
571
|
-
"hooks": [
|
|
572
|
-
{
|
|
573
|
-
"type": "command",
|
|
574
|
-
"command": "$CLAUDE_PROJECT_DIR/.claude/scripts/format-settings-hook.sh"
|
|
575
|
-
},
|
|
576
|
-
{
|
|
577
|
-
"type": "command",
|
|
578
|
-
"command": "$CLAUDE_PROJECT_DIR/.claude/scripts/format-typescript-hook.sh"
|
|
579
|
-
},
|
|
580
|
-
{
|
|
581
|
-
"type": "command",
|
|
582
|
-
"command": "$CLAUDE_PROJECT_DIR/.claude/scripts/analyze-errors-hook.sh"
|
|
583
|
-
}
|
|
584
|
-
// ... 既存の post-tool-use-hook.ts
|
|
585
|
-
]
|
|
586
|
-
}
|
|
587
|
-
]
|
|
588
|
-
}
|
|
589
|
-
}
|
|
590
|
-
```
|
|
591
|
-
|
|
592
|
-
| スクリプト | 動作 |
|
|
593
|
-
|---|---|
|
|
594
|
-
| `deny-check.sh` | 危険な git/bash コマンド(`git reset --hard`, `rm -rf` 等)をブロック |
|
|
595
|
-
| `format-settings-hook.sh` | `settings.json` 編集時に JSON を自動整形 |
|
|
596
|
-
| `format-typescript-hook.sh` | TypeScript ファイル編集時に自動フォーマット(Biome / ESLint+Prettier 切替可能) |
|
|
597
|
-
| `analyze-errors-hook.sh` | TypeScript ファイル編集時に tsc / lint エラーを検出しフィードバック |
|
|
598
|
-
|
|
599
|
-
### hook-config.json
|
|
600
|
-
|
|
601
|
-
`format-typescript-hook.sh` と `analyze-errors-hook.sh` は `.claude/scripts/hook-config.json` で対象ディレクトリとフォーマッタを設定します。
|
|
569
|
+
| **PreToolUse** | Write/Edit/Bash 実行前 | フェーズゲート違反・保護ファイルへの書き込み・Bash 経由の書き込み(`sed -i`, `tee` 等)をブロック |
|
|
570
|
+
| **PostToolUse** | Write/Edit 実行後 | Biome AST ルールを自動実行、違反を即時フィードバック |
|
|
571
|
+
| **Stop** | セッション終了前 | L2-L4 全チェックを実行、全グリーンでないと終了を保留 |
|
|
602
572
|
|
|
603
|
-
|
|
604
|
-
{
|
|
605
|
-
"targetDirs": ["scripts/harness"],
|
|
606
|
-
"formatter": "biome",
|
|
607
|
-
"formatterArgs": ["check", "--write"]
|
|
608
|
-
}
|
|
609
|
-
```
|
|
573
|
+
ブロック時は違反理由・不足している設計文書・次に実行すべきスキルを含むエラーメッセージが返されます。
|
|
610
574
|
|
|
611
|
-
|
|
612
|
-
|---|---|---|
|
|
613
|
-
| `targetDirs` | フックが適用されるディレクトリのリスト(プロジェクトルートからの相対パス) | `[]`(空の場合スキップ) |
|
|
614
|
-
| `formatter` | `"biome"` または `"eslint-prettier"` | `"biome"` |
|
|
615
|
-
| `formatterArgs` | フォーマッタに渡す引数 | `["check", "--write"]` |
|
|
575
|
+
> **オプション**: `.claude/scripts/` 配下にシェルスクリプトフック(deny-check, format, analyze-errors 等)を追加配置できます。詳細は [DEVELOPMENT.ja.md](DEVELOPMENT.ja.md#オプション-シェルスクリプトフック) を参照してください。
|
|
616
576
|
|
|
617
577
|
---
|
|
618
578
|
|
|
619
|
-
##
|
|
579
|
+
## カスタムフェーズゲート
|
|
620
580
|
|
|
621
|
-
|
|
581
|
+
デフォルトでは AIDLC フェーズ依存モデルが適用されますが、`gates[]` 配列で独自のゲートを定義できます。
|
|
622
582
|
|
|
623
|
-
|
|
624
|
-
npx phasegate ci-check --quick
|
|
625
|
-
```
|
|
583
|
+
### ゲート定義
|
|
626
584
|
|
|
627
|
-
|
|
|
585
|
+
| フィールド | 型 | 説明 |
|
|
628
586
|
|---|---|---|
|
|
629
|
-
|
|
|
630
|
-
|
|
|
631
|
-
|
|
|
632
|
-
|
|
|
633
|
-
|
|
|
634
|
-
|
|
|
635
|
-
|
|
636
|
-
`phasegate.config.json` でQuick Modeの適用条件を定義します。
|
|
637
|
-
|
|
638
|
-
```jsonc
|
|
639
|
-
{
|
|
640
|
-
"quickMode": {
|
|
641
|
-
"allowedCategories": ["bugfix", "docs", "test", "config"],
|
|
642
|
-
"maintainedLayers": ["L1", "L2"],
|
|
643
|
-
"relaxedGates": ["phase-gate", "2-phase-execution"]
|
|
644
|
-
}
|
|
645
|
-
}
|
|
646
|
-
```
|
|
647
|
-
|
|
648
|
-
**Quick Mode適用の除外** (フルハーネス必須):
|
|
649
|
-
- 新機能追加
|
|
650
|
-
- API契約変更
|
|
651
|
-
- 新ドメインモデル追加
|
|
652
|
-
|
|
653
|
-
---
|
|
654
|
-
|
|
655
|
-
## プリセット
|
|
656
|
-
|
|
657
|
-
`phasegate.config.json` のプリセットは **2 系統** あります。
|
|
658
|
-
|
|
659
|
-
### `project.preset` — レイヤー厳密度(L1-L4 有効化とカバレッジ閾値)
|
|
660
|
-
|
|
661
|
-
| プリセット | 用途 | 有効レイヤー | カバレッジ閾値 |
|
|
662
|
-
|---|---|---|---|
|
|
663
|
-
| **minimal** | 学習・プロトタイプ | L1, L2 | — |
|
|
664
|
-
| **standard** | 通常開発 | L1, L2, L3 | 90% |
|
|
665
|
-
| **strict** | 本番・エンタープライズ | L1-L4 | 95% |
|
|
666
|
-
|
|
667
|
-
`strict` プリセット追加機能:
|
|
668
|
-
- L4 スケジュール検証(週次drift-detect・dead-code検出)
|
|
669
|
-
- `agentLessonCollection: true`
|
|
670
|
-
- `bundleSizeLimit: 500 KB`
|
|
671
|
-
- `deadCodeGC: true`
|
|
672
|
-
|
|
673
|
-
### `phaseDependencies.preset` — フェーズゲート構成と storyReflection デフォルト
|
|
674
|
-
|
|
675
|
-
`project.preset` とは独立。`"default"` は後方互換のため `"full"` にフォールバックされます。
|
|
676
|
-
|
|
677
|
-
| プリセット | Phase 3 ゲート | storyReflection デフォルト | 用途 |
|
|
678
|
-
|---|---|---|---|
|
|
679
|
-
| **full** | 全 AIDLC ゲート | 有効 — `logical_design` + `domain_model` required、`uiux` optional | AIDLC フルセレモニー(旧 `default`) |
|
|
680
|
-
| **standard** | コアゲート | 有効 — `logical_design` required、`domain_model` optional | 通常開発・中庸な厳密度 |
|
|
681
|
-
| **minimal** | なし | 無効 — inception → product 反映強制なし | プロトタイプ・試行錯誤段階 |
|
|
682
|
-
| **custom** | ユーザー定義 | `storyReflection.mappings` で定義 | 完全カスタマイズ(`override: true` 必須) |
|
|
683
|
-
|
|
684
|
-
`storyReflection` は inception の US/issue 設計が `docs/product/construction/{unit}/` に反映されていない場合に `src/{unit}/*` への Write/Edit をブロックします。config で省略した場合はプリセットのデフォルト mappings がゼロコンフィグで自動適用されます。`cascade-updater` スキルがこのゲートを通過する標準手段です。詳細は [ADR-013](docs/ADR/ADR-013-story-reflection-gate.md) と [Configuration guide](docs/guide/configuration.md#storyreflection-inception--product-gate) を参照してください。
|
|
685
|
-
|
|
686
|
-
---
|
|
587
|
+
| `name` | string | ゲートの一意識別子 |
|
|
588
|
+
| `level` | 1 \| 2 \| 3 | フェーズレベル(上位は下位の通過が前提) |
|
|
589
|
+
| `blocks` | string[] | 保護するファイルの glob パターン |
|
|
590
|
+
| `requires` | string[] | 書き込み前に存在が必要なファイル |
|
|
591
|
+
| `dependsOn` | string[] | 事前に通過が必要な他のゲート名 |
|
|
592
|
+
| `description` | string | ゲートの説明 |
|
|
687
593
|
|
|
688
|
-
|
|
594
|
+
ゲートは DAG(有向非巡回グラフ)を形成します。循環依存は設定読み込み時に拒否されます。
|
|
689
595
|
|
|
690
|
-
|
|
596
|
+
### 例 1: API スキーマファーストゲート
|
|
691
597
|
|
|
692
|
-
AIDLC
|
|
598
|
+
AIDLC を使わないプロジェクトで「OpenAPI スキーマなしに API 実装を書けない」を強制する例:
|
|
693
599
|
|
|
694
600
|
```jsonc
|
|
695
601
|
{
|
|
@@ -709,212 +615,144 @@ AIDLCを使わないプロジェクトでは、`phasegate.config.json` の `gate
|
|
|
709
615
|
}
|
|
710
616
|
```
|
|
711
617
|
|
|
712
|
-
|
|
713
|
-
|---|---|---|
|
|
714
|
-
| `name` | string | ゲートの一意識別子 |
|
|
715
|
-
| `level` | 1 \| 2 \| 3 | フェーズレベル(上位レベルは下位レベルのゲート通過が前提) |
|
|
716
|
-
| `blocks` | string[] | このゲートが保護するファイルのglobパターン |
|
|
717
|
-
| `requires` | string[] | ブロック対象パスへの書き込み前に存在が必要なファイル |
|
|
718
|
-
| `dependsOn` | string[] | 事前に通過が必要な他のゲート名 |
|
|
719
|
-
| `description` | string | ゲートの説明 |
|
|
618
|
+
### 例 2: AIDLC フローを明示的に定義
|
|
720
619
|
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
---
|
|
724
|
-
|
|
725
|
-
## CI/CD テンプレート
|
|
620
|
+
[docs/folder_management_rules.md](docs/folder_management_rules.md) の **inception → product → source** フローを段階的にゲートする例:
|
|
726
621
|
|
|
727
|
-
```
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
622
|
+
```jsonc
|
|
623
|
+
{
|
|
624
|
+
"phaseDependencies": {
|
|
625
|
+
"preset": "custom",
|
|
626
|
+
"override": true,
|
|
627
|
+
"gates": [
|
|
628
|
+
// Phase 1: プロダクト概要がないとストーリー定義に進めない
|
|
629
|
+
{
|
|
630
|
+
"name": "product-overview",
|
|
631
|
+
"level": 1,
|
|
632
|
+
"blocks": [
|
|
633
|
+
"docs/product/user_stories.md",
|
|
634
|
+
"docs/product/user_story_mapping.md"
|
|
635
|
+
],
|
|
636
|
+
"requires": ["docs/product/product_overview.md"],
|
|
637
|
+
"description": "プロダクト概要がないとストーリー定義に進めない"
|
|
638
|
+
},
|
|
639
|
+
// Phase 1→2: Unit定義がないとUnit設計に進めない
|
|
640
|
+
{
|
|
641
|
+
"name": "unit-definition",
|
|
642
|
+
"level": 1,
|
|
643
|
+
"blocks": ["docs/product/construction/*/domain_model.md"],
|
|
644
|
+
"requires": ["docs/product/units/integration_contract.md"],
|
|
645
|
+
"dependsOn": ["product-overview"],
|
|
646
|
+
"description": "Unit定義・統合契約がないとUnit設計に進めない"
|
|
647
|
+
},
|
|
648
|
+
// Phase 2: ドメインモデルがないと論理設計に進めない
|
|
649
|
+
{
|
|
650
|
+
"name": "domain-model",
|
|
651
|
+
"level": 2,
|
|
652
|
+
"blocks": ["docs/product/construction/*/logical_design.md"],
|
|
653
|
+
"requires": ["docs/product/construction/{unit}/domain_model.md"],
|
|
654
|
+
"dependsOn": ["unit-definition"],
|
|
655
|
+
"description": "ドメインモデルがないと論理設計に進めない"
|
|
656
|
+
},
|
|
657
|
+
// Phase 2→3: 論理設計がないと実装コードに進めない
|
|
658
|
+
{
|
|
659
|
+
"name": "implementation-gate",
|
|
660
|
+
"level": 3,
|
|
661
|
+
"blocks": ["src/**/*.ts"],
|
|
662
|
+
"requires": [
|
|
663
|
+
"docs/product/construction/{unit}/domain_model.md",
|
|
664
|
+
"docs/product/construction/{unit}/logical_design.md"
|
|
665
|
+
],
|
|
666
|
+
"dependsOn": ["domain-model"],
|
|
667
|
+
"description": "確定版の設計文書がないと実装に進めない"
|
|
668
|
+
}
|
|
669
|
+
],
|
|
670
|
+
"storyReflection": {
|
|
671
|
+
"enabled": true,
|
|
672
|
+
"mappings": [
|
|
673
|
+
{
|
|
674
|
+
"inception": "docs/inception/{unit}/{storyId}/logical_design.md",
|
|
675
|
+
"product": "docs/product/construction/{unit}/logical_design.md",
|
|
676
|
+
"required": true
|
|
677
|
+
}
|
|
678
|
+
]
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
}
|
|
732
682
|
```
|
|
733
683
|
|
|
734
|
-
|
|
735
|
-
|---|---|---|
|
|
736
|
-
| `aidlc-gate.yml` | PR検証ワークフロー | `.github/workflows/aidlc-gate.yml` |
|
|
737
|
-
| `consistency-check.yml` | 週次整合性チェック(乖離検出時Issue自動作成) | `.github/workflows/consistency-check.yml` |
|
|
738
|
-
| `.husky/pre-commit` | Pre-commitフック | `.husky/pre-commit` |
|
|
739
|
-
|
|
740
|
-
手動配置する場合:
|
|
684
|
+
この設定では以下の順序が強制されます:
|
|
741
685
|
|
|
742
|
-
```
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
686
|
+
```
|
|
687
|
+
product_overview.md
|
|
688
|
+
→ user_stories.md / user_story_mapping.md
|
|
689
|
+
→ integration_contract.md
|
|
690
|
+
→ domain_model.md
|
|
691
|
+
→ logical_design.md
|
|
692
|
+
→ src/**/*.ts(+ storyReflection で US 単位の反映も必須)
|
|
749
693
|
```
|
|
750
694
|
|
|
751
|
-
|
|
695
|
+
> **ヒント**: `standard` や `full` プリセットはこのフローの大部分をゼロコンフィグで適用します。カスタムゲートは、段階をより細かく制御したい場合や AIDLC 以外のワークフローに使います。
|
|
752
696
|
|
|
753
|
-
|
|
697
|
+
---
|
|
754
698
|
|
|
755
|
-
|
|
699
|
+
## CI/CD テンプレート
|
|
756
700
|
|
|
757
701
|
```bash
|
|
758
|
-
|
|
759
|
-
npx phasegate
|
|
760
|
-
|
|
761
|
-
# Go/No-Go Gate 品質側3条件(3件)
|
|
762
|
-
npx phasegate regression:run-gng-gate
|
|
763
|
-
|
|
764
|
-
# K14(Phase Dependency Model)/ K15(Plan文書必須)(2件)
|
|
765
|
-
npx phasegate regression:run-k14-k15
|
|
766
|
-
|
|
767
|
-
# エージェント非依存性ガード(3件)
|
|
768
|
-
npx phasegate regression:run-agent-guard
|
|
702
|
+
npx phasegate ci:generate-template --type aidlc-gate # PR検証ワークフロー
|
|
703
|
+
npx phasegate ci:generate-template --type pre-commit # Pre-commitフック
|
|
704
|
+
npx phasegate ci:generate-template --type consistency-check # 週次整合性チェック
|
|
769
705
|
```
|
|
770
706
|
|
|
771
|
-
|
|
707
|
+
`--render` オプションでファイルに直接出力できます:
|
|
772
708
|
|
|
773
709
|
```bash
|
|
774
|
-
npx phasegate
|
|
710
|
+
npx phasegate ci:generate-template --type aidlc-gate --render > .github/workflows/aidlc-gate.yml
|
|
775
711
|
```
|
|
776
712
|
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
| # | 要件 |
|
|
780
|
-
|---|---|
|
|
781
|
-
| K1 | 5層防御モデル(L0-L4) |
|
|
782
|
-
| K2 | Phase Gate(設計→実装の順序強制) |
|
|
783
|
-
| K3 | Biome AST解析(importグラフ+循環依存検出) |
|
|
784
|
-
| K3.5 | @unit/@layer/@US-XXXメタデータ |
|
|
785
|
-
| K4 | テスト品質ルール(AAA / actual / no-domain-mock等) |
|
|
786
|
-
| K5 | DDD設計スキル群 |
|
|
787
|
-
| K6 | 2-Phase Execution(AI安全メカニズム) |
|
|
788
|
-
| K7 | Document Split(inception/product分離) |
|
|
789
|
-
| K8 | Cascade Updater |
|
|
790
|
-
| K9 | Agent-Lesson System |
|
|
791
|
-
| K10 | Security/Performance検出 |
|
|
792
|
-
| K11 | Drift Detection(双方向) |
|
|
793
|
-
| K12 | Consistency Checker |
|
|
794
|
-
| K13 | phasegate.config.json(品質設定SSOT) |
|
|
795
|
-
| K14 | Phase Dependency Model(3層フェーズ構造) |
|
|
796
|
-
| K15 | Plan文書の必須生成 |
|
|
713
|
+
> **既知の問題**: `--preset` オプションでデフォルトプリセットが見つからないエラーが発生する場合があります。`--preset` を省略して実行してください。
|
|
797
714
|
|
|
798
715
|
---
|
|
799
716
|
|
|
800
|
-
##
|
|
801
|
-
|
|
802
|
-
### ハーネスの内部構造
|
|
803
|
-
|
|
804
|
-
```
|
|
805
|
-
phasegate/
|
|
806
|
-
├── scripts/harness/
|
|
807
|
-
│ ├── main.ts # CLIエントリポイント
|
|
808
|
-
│ ├── harness-error/ # HarnessError定義・ADR参照
|
|
809
|
-
│ ├── config-foundation/ # phasegate.config.json 解析・スキーマ
|
|
810
|
-
│ ├── traceability-model/ # @unit/@layer/@story メタデータ管理
|
|
811
|
-
│ ├── phase-dependency-model/ # フェーズ依存関係・Phase Gate
|
|
812
|
-
│ ├── adr-foundation/ # ADR管理
|
|
813
|
-
│ ├── biome-ast-engine/ # Biome AST解析エンジン
|
|
814
|
-
│ ├── validator-system/ # L0-L4バリデータシステム
|
|
815
|
-
│ ├── nyquist-validation/ # 要件-テストトレーサビリティ
|
|
816
|
-
│ ├── harness-api/ # harness:* コマンドCLI層
|
|
817
|
-
│ ├── quick-mode/ # Quick Mode判定・緩和実行
|
|
818
|
-
│ ├── agent-integration/ # Claude Code Hooks アダプタ
|
|
819
|
-
│ ├── skill-quality/ # TDDサイクル・カバレッジ・Cascade Update
|
|
820
|
-
│ ├── ci-governance/ # CI/CDテンプレート・反復エラー監視
|
|
821
|
-
│ ├── regression-suite/ # K1-K15回帰テストスイート
|
|
822
|
-
│ ├── fuse-hooks-engine/ # Hooks Engine (.harness-hooks.yml・完了ゲート)
|
|
823
|
-
│ └── phase2-extensions/ # freshness/pointer/e2e-template (v2)
|
|
824
|
-
├── skills/ # 28スキル (npx phasegate init で .claude/skills/ に展開)
|
|
825
|
-
├── templates/
|
|
826
|
-
│ └── phasegate.config.json # 設定テンプレート
|
|
827
|
-
└── docs/
|
|
828
|
-
├── principles/ # アーキテクチャ哲学・テスト規約
|
|
829
|
-
└── product/ # ハーネス自身の設計文書
|
|
830
|
-
```
|
|
831
|
-
|
|
832
|
-
### 導入後のプロジェクト構造
|
|
717
|
+
## 導入後のプロジェクト構造
|
|
833
718
|
|
|
834
719
|
```
|
|
835
720
|
your-project/
|
|
836
|
-
├── phasegate.config.json
|
|
721
|
+
├── phasegate.config.json # 品質設定(Single Source of Truth)
|
|
837
722
|
├── docs/
|
|
838
|
-
│ ├── folder_management_rules.md
|
|
839
|
-
│ ├── principles/
|
|
840
|
-
│
|
|
841
|
-
│ │ └── testing-rules.md
|
|
842
|
-
│ ├── product/ # 確定版設計文書
|
|
723
|
+
│ ├── folder_management_rules.md
|
|
724
|
+
│ ├── principles/ # アーキテクチャ哲学・テスト規約
|
|
725
|
+
│ ├── product/ # 確定版設計文書
|
|
843
726
|
│ │ ├── <product>_overview.md
|
|
844
|
-
│ │ ├── units/
|
|
845
|
-
│ │
|
|
846
|
-
│ │
|
|
847
|
-
│ │ └──
|
|
848
|
-
│
|
|
849
|
-
│ │
|
|
850
|
-
│ │
|
|
851
|
-
│
|
|
852
|
-
|
|
853
|
-
│ │ │ ├── product_overview_plan.md
|
|
854
|
-
│ │ │ └── unit_design_plan.md
|
|
855
|
-
│ │ └── {unit_name}/ # Level 2/3 (Unit/US単位)
|
|
856
|
-
│ │ ├── domain_model_plan.md
|
|
857
|
-
│ │ └── {US-XXX}/
|
|
858
|
-
│ │ └── tdd_implementation_plan.md
|
|
859
|
-
│ └── ADR/ # Architecture Decision Records
|
|
860
|
-
│ └── ADR-001-*.md
|
|
861
|
-
├── src/ # 実装コード(@unit/@layer 必須)
|
|
727
|
+
│ │ ├── units/{unit}.md
|
|
728
|
+
│ │ └── construction/{unit}/
|
|
729
|
+
│ │ ├── domain_model.md
|
|
730
|
+
│ │ └── logical_design.md
|
|
731
|
+
│ ├── inception/ # AIDLC が生成する設計計画文書
|
|
732
|
+
│ │ ├── _shared/ # Level 1(プロダクト全体)
|
|
733
|
+
│ │ └── {unit}/{US-XXX}/ # Level 2/3(Unit・ストーリー単位)
|
|
734
|
+
│ └── ADR/
|
|
735
|
+
├── src/ # 実装コード(@unit/@layer 必須)
|
|
862
736
|
└── .claude/
|
|
863
|
-
├──
|
|
864
|
-
|
|
865
|
-
└── skills/ # npx phasegate init で展開(gitignore推奨)
|
|
737
|
+
├── settings.json # Hooks 設定
|
|
738
|
+
└── skills/ # npx phasegate init で展開
|
|
866
739
|
```
|
|
867
740
|
|
|
868
|
-
### .gitignore
|
|
741
|
+
### 推奨 .gitignore
|
|
869
742
|
|
|
870
743
|
```
|
|
871
744
|
node_modules/
|
|
872
|
-
.claude/skills/
|
|
745
|
+
.claude/skills/ # npx phasegate init で再生成可能
|
|
873
746
|
dist/
|
|
874
747
|
reports/
|
|
875
|
-
.harness/
|
|
876
748
|
```
|
|
877
749
|
|
|
878
750
|
---
|
|
879
751
|
|
|
880
|
-
##
|
|
752
|
+
## 開発者向けドキュメント
|
|
881
753
|
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
| 変更種別 | バージョン |
|
|
885
|
-
|---|---|
|
|
886
|
-
| バグ修正・小改善 | PATCH (例: v1.1.0 → v1.1.1) |
|
|
887
|
-
| スキル追加・新コマンド追加 | MINOR (例: v1.1.0 → v1.2.0) |
|
|
888
|
-
| 設定スキーマ変更など破壊的変更 | MAJOR (例: v1.x.x → v2.0.0) |
|
|
889
|
-
|
|
890
|
-
### リリース手順 (ハーネス側)
|
|
891
|
-
|
|
892
|
-
```bash
|
|
893
|
-
npm version patch # または minor / major
|
|
894
|
-
git push origin main --tags
|
|
895
|
-
```
|
|
896
|
-
|
|
897
|
-
### アップデート手順 (利用側プロジェクト)
|
|
898
|
-
|
|
899
|
-
```bash
|
|
900
|
-
# semver範囲内で最新版に更新
|
|
901
|
-
npm update phasegate
|
|
902
|
-
|
|
903
|
-
# スキルを最新版に同期
|
|
904
|
-
npx phasegate update-skills
|
|
905
|
-
```
|
|
906
|
-
|
|
907
|
-
> メジャーバージョンアップ時のみ `package.json` の `semver:^X.Y.Z` を手動で更新してください。
|
|
908
|
-
|
|
909
|
-
---
|
|
910
|
-
|
|
911
|
-
## ロードマップ
|
|
912
|
-
|
|
913
|
-
| バージョン | 内容 |
|
|
914
|
-
|---|---|
|
|
915
|
-
| **v1.6.0 (v1 MVH)** | L1-L4・28スキル・Claude Code Hooks・Nyquist Validation・K1-K15回帰テスト完備 |
|
|
916
|
-
| **v2.0.0** | Hooks Engine(.harness-hooks.yml設定・完了ゲート)・Phase 2拡張(doc-freshness・pointer-validator・Playwright E2Eテンプレート) |
|
|
754
|
+
phasegate 自体の開発(内部アーキテクチャ、回帰テスト、リリース手順等)については [DEVELOPMENT.ja.md](DEVELOPMENT.ja.md) を参照してください。
|
|
917
755
|
|
|
918
756
|
---
|
|
919
757
|
|
|
920
|
-
*Last updated: 2026-04-
|
|
758
|
+
*Last updated: 2026-04-07 -- v0.33.0*
|