phasegate 0.152.5 → 0.152.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.152.6] - 2026-05-13
11
+
12
+ ### Changed
13
+
14
+ - **WI-152 / WI-153 / WI-154 / WI-157 / WI-169 — setup lifecycle documentation refresh** — adds the setup artifact inventory, aligns installation product construction docs with the current doctor/install/reconcile contract, refreshes bundled setup guidance skills, and modernizes developer skill documentation before publish prep.
15
+
10
16
  ## [0.152.3] - 2026-05-12
11
17
 
12
18
  ### Fixed
@@ -391,7 +391,7 @@ ISSUE-005 P3-10 で明確化された境界:
391
391
 
392
392
  | Command | Options | Description |
393
393
  |---|---|---|
394
- | `hooks:config validate` | | Validate `.harness-hooks.yml` |
394
+ | `hooks:config validate` | | Compatibility validator for legacy `.harness-hooks.yml`; new setup should use `install`, `doctor`, `reconcile`, `lint`, and `validate` |
395
395
  | `hooks:gate-check` | `--story <id>` | Completion gate check |
396
396
 
397
397
  ---
@@ -6,6 +6,8 @@ Place at project root. Generated by `npx phasegate init`.
6
6
 
7
7
  This file is the **Single Source of Truth** for all quality configuration in a Phasegate project. Every layer validator, skill, and harness behavior reads from this file.
8
8
 
9
+ It is not the whole setup state. Hook JSON, Husky scripts, CI workflow files, skill links, `.phasegate/manifest.json`, runtime reports, and Codex user-level feature flags are tracked separately. Use [Setup Artifacts](setup-artifacts.md) when auditing whether a project is fully installed. <!-- @work-item-id WI-152 -->
10
+
9
11
  ### Full Reference
10
12
 
11
13
  ```jsonc
@@ -4,6 +4,8 @@ Phasegate integrates natively with Claude Code through its hooks system. This en
4
4
 
5
5
  ## Setup
6
6
 
7
+ For new or existing projects, prefer `npx phasegate install --dry-run` followed by `npx phasegate install --apply` so existing hook JSON is merged instead of replaced. Manual editing is still possible, but then `phasegate doctor` may report missing managed targets until the expected PhaseGate entries, skill links, Husky scripts, CI workflow, and manifest are present. See [Setup Artifacts](setup-artifacts.md). <!-- @work-item-id WI-152 --> <!-- @work-item-id WI-169 -->
8
+
7
9
  Add the following to `.claude/settings.json`:
8
10
 
9
11
  ```jsonc
@@ -130,3 +132,5 @@ Additional hooks can be placed in `.claude/scripts/`:
130
132
  | targetDirs | Directories where hooks apply (relative to project root) | [] (skip if empty) |
131
133
  | formatter | "biome" or "eslint-prettier" | "biome" |
132
134
  | formatterArgs | Arguments passed to formatter | ["check", "--write"] |
135
+
136
+ Legacy `.harness-hooks.yml` and old Fuse hook files are not part of the current install lifecycle. Keep them only for archived integrations; new setup should use `install`, `doctor`, `reconcile`, `lint`, and `validate`. <!-- @work-item-id WI-157 -->
@@ -17,7 +17,7 @@ Or add it directly to your `package.json`:
17
17
  ```json
18
18
  {
19
19
  "devDependencies": {
20
- "phasegate": "^0.147.0"
20
+ "phasegate": "^0.152.6"
21
21
  }
22
22
  }
23
23
  ```
@@ -56,7 +56,7 @@ npx phasegate install --apply
56
56
  npx phasegate doctor
57
57
  ```
58
58
 
59
- `install --dry-run` reports whether each target will be created, merged, skipped, or refused. `install --apply` performs the merge, adds package scripts and the `phasegate` devDependency, creates `.claude/skills` and `.codex/skills` links, writes the CI workflow when missing, and records managed entries in `.phasegate/manifest.json`.
59
+ `install --dry-run` reports whether each target will be created, merged, skipped, or refused. `install --apply` performs the merge, adds package scripts and the `phasegate` devDependency, creates `.claude/skills` and `.codex/skills` links, writes `.github/workflows/phasegate-aidlc-gate.yml` when CI is enabled, and records managed entries in `.phasegate/manifest.json`. See [Setup Artifacts](setup-artifacts.md) for the full managed target, generated artifact, runtime state, legacy artifact, and user-level setting inventory. <!-- @work-item-id WI-152 --> <!-- @work-item-id WI-169 -->
60
60
 
61
61
  If a managed update must replace existing custom content, use:
62
62
 
@@ -116,6 +116,8 @@ npx phasegate reconcile --apply
116
116
 
117
117
  `phasegate update-skills` remains available as a compatibility alias, but `reconcile` is the preferred upgrade path because it updates all managed files recorded in `.phasegate/manifest.json`.
118
118
 
119
+ `doctor --report-out <path>` writes exactly to the provided path. `.phasegate/last-doctor-report.json` is not a fixed output file unless you choose that path explicitly. <!-- @work-item-id WI-152 -->
120
+
119
121
  ## Recommended .gitignore additions
120
122
 
121
123
  ```
@@ -0,0 +1,60 @@
1
+ # Setup Artifacts
2
+
3
+ PhaseGate setup is more than `phasegate.config.json`. A healthy installation is the combination of project configuration, managed targets, generated state, runtime reports, and a small number of user-level settings.
4
+
5
+ <!-- @work-item-id WI-152 -->
6
+ <!-- @work-item-id WI-157 -->
7
+ <!-- @work-item-id WI-169 -->
8
+
9
+ ## Artifact Classes
10
+
11
+ | Class | Examples | Owner | Lifecycle |
12
+ |---|---|---|---|
13
+ | Managed target | `.claude/settings.json`, `.codex/hooks.json`, `.husky/pre-commit`, `.husky/commit-msg`, `.husky/pre-push`, `.github/workflows/phasegate-aidlc-gate.yml`, `.claude/skills`, `.codex/skills`, `package.json` PhaseGate scripts/devDependency | PhaseGate managed block or symlink plus user content | Created or merged by `install`, refreshed by `reconcile`, removed or reversed by `uninstall` |
14
+ | Configuration | `phasegate.config.json`, `package.json` | User owned, PhaseGate assisted | Created by `init`; `install` may merge scripts/devDependency into `package.json` |
15
+ | Generated artifact | `.phasegate/manifest.json`, `.phasegate/backups/*`, `.phasegate/uninstalled-*.json`, `.phasegate/baseline.json` | PhaseGate | Written by lifecycle commands and validators; safe to regenerate only through the owning command |
16
+ | Runtime state/report | `.phasegate/hook-skip-events.jsonl`, explicit `doctor --report-out <path>` output, `reports/regression/*`, resolved `reporting.outputDir` reports | PhaseGate command output | Produced while hooks, doctor, and validation commands run |
17
+ | Legacy artifact | `.harness-hooks.yml`, old Fuse hook files, `.harness/session-state.json`, `.harness/context-priority.json`, `.harness/reports` fallback | Compatibility only | Not required for current install lifecycle unless a project intentionally keeps an archived integration |
18
+ | User-level setting | Codex CLI `codex_hooks` feature flag | User machine | Must be enabled manually with `codex features enable codex_hooks`; project commands do not modify it |
19
+
20
+ ## Managed Targets
21
+
22
+ `install --apply` and `reconcile --apply` manage only explicit targets. The current structured lifecycle covers:
23
+
24
+ - Agent hook JSON: `.claude/settings.json`, `.codex/hooks.json`
25
+ - Husky scripts when requested: `.husky/pre-commit`, `.husky/commit-msg`, `.husky/pre-push`
26
+ - CI workflow when requested: `.github/workflows/phasegate-aidlc-gate.yml`
27
+ - Agent skill links: `.claude/skills`, `.codex/skills`
28
+ - Package metadata: PhaseGate scripts and `devDependencies.phasegate` in `package.json`
29
+ - Manifest: `.phasegate/manifest.json`
30
+
31
+ `init --with-ci` still deploys the legacy-compatible template set, including `.github/workflows/aidlc-gate.yml`, `.github/workflows/consistency-check.yml`, and `.github/workflows/agent-context-refresh.yml`. Structured `install` uses `.github/workflows/phasegate-aidlc-gate.yml` so it can coexist with existing project CI without taking over a generic workflow filename.
32
+
33
+ ## Doctor Findings
34
+
35
+ `phasegate doctor` evaluates setup health from the managed targets and related project state. Findings include `repairMode`, optional `repairHint`, and optional `suggestedSkill`.
36
+
37
+ | Field | Meaning |
38
+ |---|---|
39
+ | `repairMode: "mechanical"` | A PhaseGate command can usually fix the target, for example `npx phasegate install --apply` or `--force`. |
40
+ | `repairMode: "ai-assisted"` | Existing user content needs judgment before merging. Doctor includes `suggestedSkill`, usually `phasegate-config-doctor`. |
41
+ | `repairMode: "manual"` | Human review is required, commonly for semantic CI/workflow conflicts. |
42
+ | `repairHint` | Copyable command for mechanical cases. |
43
+ | `suggestedSkill` | Skill name, rationale, and invoke command for agent-assisted repair planning. |
44
+
45
+ `doctor --report-out <path>` writes exactly to the path you pass. `.phasegate/last-doctor-report.json` is not created automatically; it is only a conventional path you may choose.
46
+
47
+ ## Reports And Runtime Files
48
+
49
+ `reporting.outputDir` is the default project-visible report directory for phase dependency and phase-gate reports. Some command families have their own contracts:
50
+
51
+ - `doctor --report-out <path>` writes to the explicit path only.
52
+ - `regression:*` commands write under `reports/regression/`.
53
+ - `.harness/reports` is a legacy fallback used only when a phase-dependency provider cannot resolve project config.
54
+ - `.phasegate/hook-skip-events.jsonl` records hook bypass/skip observations for diagnosis; it is runtime state, not a managed install target.
55
+
56
+ ## Legacy Retirement
57
+
58
+ Current setup does not require `.harness-hooks.yml`, old Fuse hook files, `.harness/session-state.json`, or `.harness/context-priority.json`. Treat them as project-local compatibility artifacts. Before deleting them, check whether an archived workflow or local script still references them; otherwise prefer documenting them as retired rather than wiring new guidance around them.
59
+
60
+ `hooks:config validate` is a compatibility command for old `.harness-hooks.yml` projects. New setup should use `install`, `doctor`, `reconcile`, `lint`, and `validate`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "phasegate",
3
- "version": "0.152.5",
3
+ "version": "0.152.6",
4
4
  "packageManager": "pnpm@10.30.1",
5
5
  "description": "Phasegate — AI-agnostic quality defense toolkit. Enforces structural integrity between design intent and code.",
6
6
  "license": "MIT",
package/skills/README.md CHANGED
@@ -1,21 +1,21 @@
1
1
  # Skills ディレクトリ
2
2
 
3
- このディレクトリには、AIエージェントの共有スキル定義が含まれています。
3
+ このディレクトリには、AIエージェントの共有スキル定義が含まれています。現在の配布対象は 30 skills です。公開一覧は `docs/guide/skills-overview.md`、setup lifecycle の管理対象は `docs/guide/setup-artifacts.md` を正とします。<!-- @work-item-id WI-154 -->
4
4
 
5
5
  ## ディレクトリ構成と同期
6
6
 
7
7
  このディレクトリはスキルの**唯一の信頼できる情報源 (Single Source of Truth)** です。
8
- `.agent` と `.claude` の両方の環境から同じスキルにアクセスできるように、各ディレクトリには以下のようなシンボリックリンクが作成されています:
8
+ `.claude` と `.codex` の両方の環境から同じスキルにアクセスできるように、`phasegate install` / `phasegate reconcile` は必要に応じて以下のシンボリックリンクを管理します:
9
9
 
10
- - `.agent/skills` -> `./skills` (プロジェクトルートからの相対パス)
11
10
  - `.claude/skills` -> `./skills` (プロジェクトルートからの相対パス)
12
11
  - `.codex/skills` -> `./skills` (プロジェクトルートからの相対パス)
13
12
 
14
13
  技術的には、リンクは以下のように設定されています:
15
- - `.agent/skills` -> `../skills`
16
14
  - `.claude/skills` -> `../skills`
17
15
  - `.codex/skills` -> `../skills`
18
16
 
17
+ `.agent/skills` は旧 setup 由来の互換パスです。新規導入では管理対象にしません。<!-- @work-item-id WI-157 -->
18
+
19
19
  ## 新しいスキルの追加
20
20
 
21
- 新しいスキルを追加する場合は、この `skills` ディレクトリに直接追加してください。シンボリックリンクを通じて、両方のエージェントから自動的に利用可能になります。
21
+ 新しいスキルを追加する場合は、この `skills` ディレクトリに直接追加してください。あわせて `docs/guide/skills-overview.md`、README の skill 数、必要なら `skills/phasegate-toolkit-guide/SKILL.md` の参照先を更新します。シンボリックリンクを通じて、対応エージェントから利用可能になります。<!-- @work-item-id WI-154 -->
@@ -9,7 +9,7 @@ description: 現在の phasegate.config.json を schema + プロジェクト検
9
9
 
10
10
  ## このスキルが解決する問題
11
11
 
12
- phasegate を導入した直後の config は単純な default で、実プロジェクトの構造 (monorepo / formatter 選定 / architecture style / Quick Mode の運用方針) に最適化されていない。AI が schema を知らずに勘で書き換えると壊れるため、**schema + 検出結果に基づいた決定的提案** が必要。
12
+ phasegate を導入した直後の config は単純な default で、実プロジェクトの構造 (monorepo / formatter 選定 / architecture style / Quick Mode の運用方針) に最適化されていない。さらに setup lifecycle は `phasegate.config.json` だけでは完結せず、manifest、hook JSON、Husky、CI、skill link、doctor finding を合わせて読む必要がある。AI が schema や setup contract を知らずに勘で書き換えると壊れるため、**schema + 検出結果に基づいた決定的提案** が必要。<!-- @work-item-id WI-153 -->
13
13
 
14
14
  ## 設計原則
15
15
 
@@ -18,7 +18,7 @@ phasegate を導入した直後の config は単純な default で、実プロ
18
18
  3. **AI 推論は判断要素のみ** — architecture preset 選定、relaxedGates 推奨値などは AI が判断するが根拠を必ず示す
19
19
  4. **schema は enum 違反確認時のみ Read** — 日常診断は本 SKILL 内の判定基準で十分。schema 全文 Read は値域不明時に限定する
20
20
  5. **read-only な Q&A は phasegate-toolkit-guide に委譲** — 「L2 って何?」など概念質問は本 skill スコープ外
21
- 6. **変更後は L2 検証必須** `npx phasegate validate --layer L2` を走らせてからユーザーに完了報告
21
+ 6. **変更後は対象別に検証** config 変更は `npx phasegate validate --layer L2`、setup lifecycle 変更は `npx phasegate doctor`、hook/script/metadata 変更は `npx phasegate lint` または `npm run phasegate:check-ready` を走らせてからユーザーに完了報告
22
22
 
23
23
  ## 診断プロセス
24
24
 
@@ -33,11 +33,19 @@ phasegate を導入した直後の config は単純な default で、実プロ
33
33
  | pnpm workspace | `pnpm-workspace.yaml` (存在すれば) | workspace 検出 |
34
34
  | lerna config | `lerna.json` (存在すれば) | workspace 検出 |
35
35
  | hook config | `.claude/scripts/hook-config.json` | 既存 hook 設定確認 |
36
+ | doctor report | 明示された report path、またはユーザーが指定した `.phasegate/last-doctor-report.json` | `repairMode` / `repairHint` / `suggestedSkill` の確認 |
37
+ | manifest | `.phasegate/manifest.json` | install / reconcile / uninstall の managed target と hash 状態確認 |
38
+ | Claude hooks | `.claude/settings.json` | managed hook JSON と user customization の確認 |
39
+ | Codex hooks | `.codex/hooks.json` | managed hook JSON と Codex hook 配線確認 |
40
+ | Husky scripts | `.husky/pre-commit`, `.husky/commit-msg`, `.husky/pre-push` | pre-commit backstop と bypass audit の確認 |
41
+ | CI workflows | `.github/workflows/*` | `phasegate-aidlc-gate.yml` や既存 workflow との競合確認 |
36
42
 
37
43
  **schema は必要なときだけ Read** (enum 違反疑い時など): `node_modules/phasegate/scripts/harness/config-foundation/infrastructure/schemas/harness-config-v3.schema.json` (or `harness-config-v2.schema.json` if v2)。
38
44
 
39
45
  phasegate リポジトリ自体 (dogfood) の場合は `node_modules/phasegate/` を `scripts/harness/config-foundation/...` に置換。
40
46
 
47
+ `doctor --report-out <path>` は指定された path にだけ書く。`.phasegate/last-doctor-report.json` は固定生成物ではないため、存在しない場合は `npx phasegate doctor --json` を実行して現状を読み取る。<!-- @work-item-id WI-152 -->
48
+
41
49
  ### Step 1.5: Fresh init 判定 (重要)
42
50
 
43
51
  以下の **全条件** を満たす場合、フル診断は早期。Step 2 に進まず AIDLC 開始を案内する:
@@ -115,6 +123,15 @@ product-architect で Unit を作り、いくつかの logical_design を書い
115
123
  - `formatter: "biome"` だが `@biomejs/biome` が devDependencies に無い → WARN: prettier に切り替え推奨
116
124
  - v0.119 未満で deploy された hook script (bash 4 `mapfile` 使用) → WARN: macOS の bash 3.2 で silent fail。`phasegate init` 再実行で更新
117
125
 
126
+ #### 観点 9: setup lifecycle と doctor finding
127
+
128
+ - `phasegate doctor --json` の finding に `repairMode: "ai-assisted"` と `suggestedSkill.skillName = "phasegate-config-doctor"` がある → 本 skill が merge 方針、保持する user content、実行すべき `install --apply` / `--force` / `reconcile --apply` を提案する
129
+ - `repairHint` がある mechanical finding → 原則として hint のコマンドを優先し、実行前に対象ファイルと manifest の差分を確認
130
+ - manifest parse error → `.phasegate/manifest.json` を手で修復する前に backup / uninstall / reinstall の選択肢を提示
131
+ - reconcile / uninstall が refuse → user modified managed target として扱い、`--force` のリスクと backup path を説明して承認を取る
132
+ - Codex の `codex_hooks` feature flag は user-level setting。project-local `install` では変更されないため、必要なら `codex features enable codex_hooks` を案内
133
+ - Codex native `apply_patch` bypass は hook で完全捕捉できない。`.husky/pre-commit` の `phasegate pre-commit` が backstop になるため、Husky 配線を診断対象に含める
134
+
118
135
  ### Step 3: 診断レポート
119
136
 
120
137
  診断結果を以下の形式で提示する:
@@ -179,13 +196,21 @@ options:
179
196
 
180
197
  ユーザーが適用対象を確定したら `Edit` で `phasegate.config.json` を変更。
181
198
 
182
- **変更後の必須検証**:
199
+ **変更後の検証**:
183
200
 
184
201
  ```bash
185
202
  npx phasegate validate --layer L2
186
203
  ```
187
204
 
188
- L2 でエラーが出た場合は変更を **rollback** し、ユーザーに報告 (silent に進めない)。
205
+ setup target を触った場合は以下も使い分ける:
206
+
207
+ ```bash
208
+ npx phasegate doctor
209
+ npx phasegate lint
210
+ npm run phasegate:check-ready
211
+ ```
212
+
213
+ 検証でエラーが出た場合は変更を **rollback** し、ユーザーに報告 (silent に進めない)。
189
214
 
190
215
  ## phasegate-toolkit-guide との使い分け
191
216
 
@@ -119,10 +119,15 @@ docs/guide/ # phasegate リポジトリ自体 (dogfood)
119
119
  - 「phasegate のインストール方法は?」
120
120
  - 「monorepo で使うときは?」
121
121
  - 「既存プロジェクトに後から導入したい」
122
+ - 「doctor の repairMode / suggestedSkill って何?」
123
+ - 「.phasegate/manifest.json や hook-skip-events は何?」
122
124
 
123
125
  **参照先**:
124
126
  - 新規導入: `docs/guide/installation.md`
125
127
  - 既存プロジェクト導入: `docs/guide/retrofit-adoption.md`
128
+ - setup artifact / doctor finding / legacy artifact: `docs/guide/setup-artifacts.md`
129
+
130
+ `setup-artifacts.md` は managed target / generated artifact / runtime state / legacy artifact / user-level setting の分類を持つ。`doctor --report-out` は明示 path への出力で、`.phasegate/last-doctor-report.json` は固定生成物ではない点もここを参照する。<!-- @work-item-id WI-153 -->
126
131
 
127
132
  ### 8. skill 一覧と使い分け
128
133