phasegate 0.335.0 → 0.341.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 (111) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.ja.md +22 -9
  3. package/README.md +28 -17
  4. package/docs/ADR/038-config-state-operation-permission-policy.md +5 -2
  5. package/docs/ADR/041-non-excludable-agent-trust-roots.md +68 -0
  6. package/docs/folder_management_rules.md +10 -1
  7. package/docs/guide/antigravity-integration.md +26 -0
  8. package/docs/guide/cli-reference.md +27 -7
  9. package/docs/guide/codex-integration.md +44 -107
  10. package/docs/guide/configuration.md +28 -2
  11. package/docs/guide/grok-integration.md +26 -0
  12. package/docs/guide/hooks-integration.md +34 -5
  13. package/docs/guide/installation.md +4 -2
  14. package/docs/guide/setup-artifacts.md +4 -4
  15. package/docs/guide/skills-overview.md +4 -1
  16. package/package.json +2 -1
  17. package/scripts/harness/agent-integration/application/dto/handle-pre-tool-use-dto.ts +1 -1
  18. package/scripts/harness/agent-integration/application/dto/normalized-pre-tool-use-request.ts +32 -0
  19. package/scripts/harness/agent-integration/application/usecases/handle-post-tool-use-usecase.ts +4 -0
  20. package/scripts/harness/agent-integration/application/usecases/handle-pre-tool-use-usecase.ts +38 -3
  21. package/scripts/harness/agent-integration/application/usecases/handle-stop-usecase.ts +3 -9
  22. package/scripts/harness/agent-integration/domain/ports/full-mode-requirement-query-port.ts +3 -1
  23. package/scripts/harness/agent-integration/domain/ports/story-reflection-query-port.ts +2 -0
  24. package/scripts/harness/agent-integration/domain/services/apply-patch-write-target-extractor.ts +98 -0
  25. package/scripts/harness/agent-integration/domain/services/bash-write-target-extractor.ts +6 -52
  26. package/scripts/harness/agent-integration/domain/services/hook-to-cli-translator.ts +8 -5
  27. package/scripts/harness/agent-integration/domain/value-objects/hook-translation-result.ts +2 -2
  28. package/scripts/harness/agent-integration/domain/value-objects/protected-file-list.ts +35 -18
  29. package/scripts/harness/agent-integration/domain/value-objects/story-reflection-query-result.ts +10 -2
  30. package/scripts/harness/agent-integration/domain/value-objects/write-target-scope.ts +12 -0
  31. package/scripts/harness/agent-integration/infrastructure/adapters/child-process-cli-executor-adapter.ts +64 -13
  32. package/scripts/harness/agent-integration/infrastructure/adapters/file-system-story-reflection-query-adapter.ts +108 -2
  33. package/scripts/harness/agent-integration/infrastructure/adapters/harness-config-config-query-adapter.ts +8 -6
  34. package/scripts/harness/agent-integration/presentation/hook-skip-event-recorder.ts +3 -0
  35. package/scripts/harness/agent-integration/presentation/phasegate-status-context.ts +1 -1
  36. package/scripts/harness/agent-integration/presentation/post-tool-use-feedback.ts +39 -0
  37. package/scripts/harness/agent-integration/presentation/post-tool-use-hook.ts +21 -27
  38. package/scripts/harness/agent-integration/presentation/pre-tool-use-hook.ts +126 -70
  39. package/scripts/harness/agent-integration/presentation/pre-tool-use-payload-normalizer.ts +228 -0
  40. package/scripts/harness/agent-integration/presentation/pre-tool-use-response-renderer.ts +38 -0
  41. package/scripts/harness/agent-integration/presentation/stop-hook.ts +1 -3
  42. package/scripts/harness/biome-ast-engine/infrastructure/adapters/biome-cli-executor-adapter.ts +21 -1
  43. package/scripts/harness/biome-ast-engine/infrastructure/adapters/typescript-source-module-analyzer-adapter.ts +5 -0
  44. package/scripts/harness/ci-governance/domain/value-objects/integrity-target.ts +2 -0
  45. package/scripts/harness/config-foundation/infrastructure/schemas/harness-config-v3.schema.json +15 -0
  46. package/scripts/harness/config-foundation/infrastructure/validators/ajv-config-schema-validator.ts +6 -3
  47. package/scripts/harness/harness-api/domain/ports/biome-lint-port.ts +2 -1
  48. package/scripts/harness/harness-api/domain/services/command-dispatch-service.ts +12 -1
  49. package/scripts/harness/harness-api/infrastructure/adapters/biome-ast-engine-lint-adapter.ts +10 -2
  50. package/scripts/harness/installation/application/bundled-skill-selection.ts +28 -2
  51. package/scripts/harness/installation/application/checks/antigravity-hook-missing-check.ts +79 -0
  52. package/scripts/harness/installation/application/checks/check-utils.ts +2 -2
  53. package/scripts/harness/installation/application/checks/codex-hook-missing-check.ts +70 -6
  54. package/scripts/harness/installation/application/checks/grok-hook-missing-check.ts +79 -0
  55. package/scripts/harness/installation/application/checks/husky-runtime-inactive-check.ts +33 -0
  56. package/scripts/harness/installation/application/named-hook-json.ts +17 -0
  57. package/scripts/harness/installation/application/operator-notice.ts +42 -0
  58. package/scripts/harness/installation/application/usecases/run-doctor-diagnostics.ts +18 -7
  59. package/scripts/harness/installation/application/usecases/run-install.ts +157 -57
  60. package/scripts/harness/installation/application/usecases/run-reconcile.ts +148 -31
  61. package/scripts/harness/installation/application/usecases/run-uninstall.ts +149 -25
  62. package/scripts/harness/installation/composition-root.ts +10 -0
  63. package/scripts/harness/installation/domain/agent-target.ts +39 -0
  64. package/scripts/harness/installation/domain/check-id.ts +5 -0
  65. package/scripts/harness/installation/domain/husky-runtime-state.ts +34 -0
  66. package/scripts/harness/installation/domain/ports/git-hooks-runtime-probe.ts +9 -0
  67. package/scripts/harness/installation/domain/repair-table.ts +5 -0
  68. package/scripts/harness/installation/infrastructure/adapters/git-hooks-runtime-probe-adapter.ts +62 -0
  69. package/scripts/harness/installation/presentation/cli/install-handler.ts +25 -5
  70. package/scripts/harness/installation/presentation/cli/reconcile-handler.ts +7 -1
  71. package/scripts/harness/installation/presentation/formatters/diagnostic-report-formatter.ts +27 -0
  72. package/scripts/harness/main.ts +227 -128
  73. package/scripts/harness/phase-dependency-model/domain/services/story-reflection-checker.ts +48 -5
  74. package/scripts/harness/phase-dependency-model/domain/services/work-item-reflection-scope-resolver.ts +64 -0
  75. package/scripts/harness/phase-dependency-model/domain/values/story-reflection-mapping.ts +8 -2
  76. package/scripts/harness/phase-dependency-model/infrastructure/filesystem/file-system-story-reflection-adapter.ts +6 -1
  77. package/scripts/harness/phase-dependency-model/infrastructure/filesystem/file-system-work-item-dependency-catalog.ts +73 -0
  78. package/scripts/harness/quick-mode/application/dto/change-category-classification-contract.ts +5 -1
  79. package/scripts/harness/quick-mode/application/dto/quick-mode-eligibility-contract.ts +1 -1
  80. package/scripts/harness/quick-mode/application/ports/change-risk-advisory-port.ts +16 -0
  81. package/scripts/harness/quick-mode/application/usecases/classify-change-category-usecase.ts +3 -1
  82. package/scripts/harness/quick-mode/composition-root.ts +5 -1
  83. package/scripts/harness/quick-mode/domain/services/quick-mode-judgment-engine.ts +13 -2
  84. package/scripts/harness/quick-mode/domain/types/rejection-rule.ts +1 -1
  85. package/scripts/harness/quick-mode/infrastructure/adapters/snapshot-risk-advisory-adapter.ts +118 -0
  86. package/scripts/harness/quick-mode/presentation/formatters/change-category-formatter.ts +7 -0
  87. package/scripts/harness/quick-mode/presentation/handlers/check-change-category-handler.ts +12 -1
  88. package/scripts/harness/regression-suite/infrastructure/adapters/vitest-test-runner-adapter.ts +13 -3
  89. package/scripts/harness/setup/skill-deployer.ts +3 -45
  90. package/scripts/harness/skill-quality/application/dto/run-plan-checker-loop-output.ts +1 -0
  91. package/scripts/harness/skill-quality/application/usecases/apply-cascade-update-usecase.ts +9 -4
  92. package/scripts/harness/skill-quality/application/usecases/execute-tdd-cycle-usecase.ts +2 -1
  93. package/scripts/harness/skill-quality/application/usecases/run-plan-checker-loop-usecase.ts +8 -0
  94. package/scripts/harness/skill-quality/composition-root.ts +14 -7
  95. package/scripts/harness/skill-quality/domain/ports/plan-check-executor-port.ts +2 -0
  96. package/scripts/harness/skill-quality/domain/value-objects/cascade-update-target.ts +15 -1
  97. package/scripts/harness/skill-quality/infrastructure/adapters/l1-biome-validator-adapter.ts +9 -1
  98. package/scripts/harness/skill-quality/infrastructure/adapters/l2-validator-system-adapter.ts +18 -2
  99. package/scripts/harness/skill-quality/presentation/handlers/apply-cascade-update-handler.ts +8 -2
  100. package/scripts/harness/skill-quality/presentation/handlers/execute-tdd-cycle-handler.ts +4 -3
  101. package/scripts/harness/skill-quality/presentation/handlers/run-plan-checker-loop-handler.ts +11 -4
  102. package/scripts/harness/traceability-model/infrastructure/parsers/work-item-frontmatter-parser.ts +41 -0
  103. package/skills/README.md +7 -0
  104. package/skills/cascade-updater/SKILL.md +37 -109
  105. package/skills/cascade-updater/references//345/261/244/345/210/245/345/210/244/345/256/232/343/202/254/343/202/244/343/203/211.md +5 -3
  106. package/skills/release-publisher/SKILL.md +3 -1
  107. package/skills/skill-creator/SKILL.md +8 -9
  108. package/templates/.agents/hooks.json +16 -0
  109. package/templates/.claude/scripts/analyze-errors-hook.sh +2 -2
  110. package/templates/.claude/settings.json +5 -3
  111. package/templates/.codex/hooks.json +2 -2
@@ -1,141 +1,69 @@
1
1
  ---
2
2
  name: cascade-updater
3
- description: 下位フェーズの発見・変更を上位設計文書にフィードバックし影響範囲を整合的に更新
4
- model: sonnet
5
- review: opus
3
+ description: WIの設計反映や下位の発見を起点に、上位判断が必要な変更を識別し、設計本文と下位成果物の整合を更新する。
6
4
  languages: [typescript]
7
5
  ---
8
6
 
9
7
  # Cascade Updater
10
8
 
11
- 下位フェーズでの発見・変更・人間からの指示を、正しいレイヤーの設計文書にフィードバックし、影響範囲を整合的に更新するスキル。
9
+ ## 目的
12
10
 
13
- ## storyReflection ゲート通過の標準手段
11
+ 上位の意図を成果物へ伝え、下位で見つかった前提の破綻を必要な上位判断へ戻す。ゲート通過のためのタグ追記だけで終えない。
14
12
 
15
- `phaseDependencies.storyReflection`(ADR-013)は、`docs/inception/{unit}/{storyId}/` 配下の US/issue 設計が `docs/product/construction/{unit}/` の累積設計文書に反映されていない場合、`src/{unit}/*`(phasegate 自リポジトリ(dogfood)では `scripts/harness/{unit}/*`)への Write/Edit(Bash 迂回経由の書き込みも含む)を pre-tool-use hook でブロックする。
13
+ ## 入力
16
14
 
17
- **cascade-updater はこの storyReflection ゲートを通過する標準手段である。**
15
+ 対象WI、発見・変更の内容と観測元、関連する設計・実装・テスト。既存の依頼とファイルから特定できる情報は再質問しない。意味や変更範囲が決まらない点だけ確認する。
18
16
 
19
- - `full` / `standard` プリセットでは、inception の新規 US/issue を作成した後、実装着手前に cascade-updater を実行して product 文書に `@story-id {storyId}` を追記する
20
- - cascade-updater を実行せずに実装へ進もうとすると `[L2-STORY-REFLECTION]` ブロックが発生する(エラー中で本スキルの実行が案内される)
21
- - `minimal` プリセットでは storyReflection が無効化されるためゲート連動しないが、cascade-updater による設計整合性の維持は推奨される
22
- - Quick Mode (`relaxedGates: ["phase-gate"]`) 時は storyReflection も緩和されるため、cascade-updater 実行の必須性は緩まる(ただし品質維持のため実行は推奨)
17
+ ## 前提条件
23
18
 
24
- 詳細は ADR-013 および `docs/guide/configuration.md` の storyReflection セクションを参照(consumer プロジェクトでは `node_modules/phasegate/docs/ADR/...` / `node_modules/phasegate/docs/guide/...`、phasegate 自リポジトリでは `docs/...` を参照する)。
19
+ プロジェクトのAGENTS.md、ドキュメント配置規則、対象WIと関連product設計を正本とする。配置rootはそのプロジェクトの設定を確認し、Phasegate自体のパスをconsumerへ強制しない。
25
20
 
26
- ## 前提条件チェック
21
+ - 標準配置では単一Unit WIは `docs/inception/{unit}/{WI-XXX}/`、横断WIは `docs/inception/_cross/{WI-XXX}/`。crossのaffectsと共有契約への実際の依存を確認する。
22
+ - 既存の実行権限・保護設定・gateは維持する。このスキルの使用やタグの存在は書込みの認可にならない。
23
+ - 実行モデルや委任可否はプロジェクトのモデルルーティングに従う。固定モデルへの委任や新たな承認段階を必須にしない。
24
+ - 帰属が曖昧な場合だけ [層別判定ガイド](references/層別判定ガイド.md) を読む。ファイルの置き場所だけでリスクを決めない。
27
25
 
28
- ### 必須インプット
29
- - **変更内容の記述** — 何が発見/変更されたか
30
- - **変更が発生したレイヤー** — どのフェーズで発見されたか
26
+ ## 実行フロー
31
27
 
32
- ---
33
-
34
- ## ⚠️ 3フェーズ実行ルール
35
-
36
- **このスキルは3フェーズで実行する。**
37
- - **Phase 1(計画)**: Opus がスコープ・方針・不明点を整理し、人間の承認を得る
38
- - **Phase 2(実行)**: プロジェクトのモデルルーティング設定に従い、実行モデルに委譲して成果物を生成する
39
- - **Phase 3(レビュー)**: Opus が成果物を検証し、問題があれば直接修正する
40
-
41
- **Phase 1/2/3を同時に実行してはならない。**
42
-
43
- ---
44
-
45
- ## Phase 1: 影響分析(plan)
46
-
47
- ### 目的
48
- 変更の帰属レイヤーを判定し、影響範囲を特定して人間の承認を得る。
28
+ ### 影響と判断を分ける
49
29
 
50
- ### 出力
51
- 会話内で以下を報告する(ファイルは作成しない):
30
+ 現行設計、発見の根拠、対象revision(commitと必要な作業差分)を確認し、どの前提と下位成果物へ影響するかを対象WIに記録する。既存記録を更新し、並行する新台帳を作らない。
52
31
 
53
- ```markdown
54
- # カスケード更新 影響分析
32
+ - **合意済みの意味を変えない整合修正**:依頼された範囲なら追加の一律承認を待たずに進める。例:設計と実装の用語一致、重複説明の統合、契約を変えない内部抽出の設計反映。
33
+ - **上位の判断を変える変更**:目的・受け入れ条件・公開API・認可・データ契約・業務不変条件・Unit境界、または依頼範囲の変更は決定者へ確認する。既に明示承認された判断を同じ内容で再度要求しない。
34
+ - **判断不明**:影響する契約と不明点を示す。安全な調査や計画は続け、未確定の前提に依存する実装は保留する。未知を自動許可にも全作業停止にも変えない。
55
35
 
56
- ## 1. 変更の起点
57
- - 発見元: {フェーズ/ストーリー}
58
- - 内容: {変更内容}
36
+ 上位判断が必要なときは、既存WI/必要なADRへ「観測・根拠」「変わる前提とrevision」「選択肢と影響」「決定者」「停止範囲」「再開条件」を残し、判断を求める。止めるのはその判断に依存する作業だけ。承認待ちを同じコマンドの自動再試行へ置き換えない。
59
37
 
60
- ## 2. 帰属レイヤー判定
61
- - 判定結果: {環境設計 / 論理設計 / Domain / ストーリー}
62
- - 理由: {判定理由}
63
- 参考: references/層別判定ガイド.md
38
+ ### 設計本文へ反映する
64
39
 
65
- ## 3. 影響を受ける文書一覧
66
- | # | ファイル | 予定される変更内容 |
67
- |---|---------|-----------------|
40
+ 合意した最上位の設計から必要な下位設計、実装・テストへ伝える。実装はプロジェクトのフェーズ順序・必要なproduct反映を満たしてから行う。調査だけの依頼なら変更案までで止める。
68
41
 
69
- ## 4. QA(不明点・確認事項)
42
+ productは**現行仕様を一貫して読める本文**へ統合・置換する。旧説明と矛盾する追記を積み重ねない。意味を変える削除には上位判断が必要だが、合意済み意味を保つ重複・旧説明の整理まで一律承認にしない。理由・旧仕様との差・根拠はWI/ADR/Gitで追跡可能にする。
70
43
 
71
- ### [Question] Q1: {質問タイトル}
72
- {質問の詳細と背景}
73
- **推奨案:** {AIの推奨案}
44
+ 新しいWI反映には `@work-item-id WI-XXX` を付ける。既存legacyタグと履歴参照は維持し、一括改番・置換しない。タグは参照の証拠であって、本文の意味的反映の証明ではない。
74
45
 
75
- [Answer]
76
- (人間が回答を記入)
77
- ```
46
+ ### 判断後に再開・終了する
78
47
 
79
- ### Phase 1 完了条件
80
- - 影響分析を報告した
81
- - 不明点がある場合は`[Question]`セクションに記載した
82
- - **人間にボールを渡した**
83
- - **設計文書はまだ更新していない**
84
-
85
- ---
48
+ | 判断 | 次の行動 |
49
+ |---|---|
50
+ | 承認 | 決定と対象revisionを記録し、上位設計から依存成果物へ反映して再検証する。満たした再開条件で対象作業を再開する |
51
+ | 却下 | その変更案を終了する。旧契約内で目的を達成できる場合は再計画し、同じ案の承認要求を繰り返さない |
52
+ | 代替案 | 明示的に選ばれた案と範囲に合わせて再計画する。提示された選択肢を承認と推定しない |
53
+ | 判断後に前提が変更 | 変更された前提と影響だけを再評価する。古い承認を新revisionへ無条件に流用しない |
86
54
 
87
- ## Phase 2: 実行(execution)
55
+ 設計レビュー、機械検証、テスト結果を別々に記録する。World Modelを利用している場合は既存の明示依存/pinの両端のrevisionを確認し、その運用に従って必要なレビューを更新する。未導入環境に導入を要求せず、baseline/waiverを削除して解決したことにしない。
88
56
 
89
- ### 開始条件
90
- - 人間がPhase 1の影響分析を承認した
57
+ ## 出力と完了条件
91
58
 
92
- ### ワークフロー
93
-
94
- 1. **該当レイヤーの文書を更新** — 変更内容を反映(追記優先、変更理由を記録)
95
- 2. **下位レイヤーの影響確認** — 更新により下位文書に矛盾が生じないか確認・更新
96
- 3. **更新レポート出力** — 変更した全文書の一覧と変更内容を報告
97
-
98
- ### 更新時の原則
99
-
100
- - **更新は該当レイヤー以下のみ** — 上位の抽象設計は汚さない
101
- - **追記優先** — 既存の記述を削除するのではなく、新しい制約・ルールを追記する
102
- - **変更理由を記録** — なぜこの変更が必要になったかを文書内に簡潔に記録する
103
-
104
- ### Phase 2 最低出力基準(Sonnet委任時の品質制約)
105
-
106
- 以下の基準を満たさない出力は不完全とみなし、Phase 3レビューでBLOCKとする。
107
-
108
- | 基準 | 最低要件 |
109
- |------|---------|
110
- | 帰属レイヤー明記 | 各変更が帰属するレイヤーが明示されていること |
111
- | 変更理由記録 | 全変更箇所に変更理由が記録されていること |
112
- | 追記優先 | 既存記述の削除ではなく追記で対応していること(削除は明示的承認があった場合のみ) |
113
- | 下位影響確認 | 更新による下位文書への影響が確認・記録されていること |
114
- | 更新レポート | 変更した全文書の一覧と変更内容が報告されていること |
115
-
116
- 詳細な判定パターンと具体例は [references/層別判定ガイド.md](references/層別判定ガイド.md) を参照。
117
-
118
- ---
59
+ 対象WIの記録から、変更理由・判断、対象revision、更新した上位/下位文書、関連実装・テストと検証結果へ到達できるようにする。無関係なWIの再審査はしない。
119
60
 
120
- ## Phase 3: レビュー(Opus review)
61
+ 完了前に、現行productの矛盾が解消されたか、上位の決定が必要な下位成果物へ伝わったか、検証が更新後のrevisionを対象としているかを確認する。未実施テストや残る上位判断は未完了と明記する。下位成果物への反映が未完ならタグが揃っていても完了としない。
121
62
 
122
- ### 実行主体
123
- メインセッション(model-routing.md の Architect ロール)が実行する。Sonnetへの再委任は行わない。
63
+ ## CLI・ゲートとの境界
124
64
 
125
- ### レビュー手順
126
- 1. Sonnetが出力したファイルを読み込む
127
- 2. プロジェクトのレビュー基準に沿って検証する
128
- 3. **スキル固有レビュー観点**を検証する
129
- 4. 判定結果を出力する
65
+ `skill:apply-cascade-update` は互換用のタグ追記CLIであり、設計本文の統合更新や意味レビューを代行しない。CLIの成功を本スキルの完了と扱わない。
130
66
 
131
- ### スキル固有レビュー観点(BLOCK基準)
132
- - [ ] 変更が正しいレイヤーに帰属しているか(上位の抽象設計を汚していないか)
133
- - [ ] 変更理由が全箇所に記録されているか
134
- - [ ] 既存記述の不必要な削除がないか
135
- - [ ] 下位文書への影響が確認されているか
136
- - [ ] Phase 1の影響分析と実際の更新範囲が一致しているか
67
+ storyReflectionで止まった場合は、エラーが示すWI・不足文書・反映先を確認し、inception/productを正規の順で修正してから再検証する。同じ根拠・revisionで解決済みなのに拒否が残る場合は、入力と診断を保存して原因を調査・引き継ぎ、保護解除や同一状態の無限再試行をしない。Quick Mode等の利用だけで設計整合や承認が済んだと推定しない。
137
68
 
138
- ### 判定と修正
139
- - **BLOCK項目にFAIL** → Opusが直接修正してから完了とする
140
- - **WARNのみFAIL** → Opusが直接修正してから完了とする
141
- - **全PASS** → 完了
69
+ ゲート設定の詳細は配備されたPhasegateの `docs/guide/configuration.md` とADR-013を必要時に参照する(consumerでは `node_modules/phasegate/docs/`、本リポジトリでは `docs/`)。
@@ -2,14 +2,16 @@
2
2
 
3
3
  変更・発見の種類ごとに、どのレイヤーの設計文書を更新すべきかの判定基準と具体例。
4
4
 
5
- ## 環境設計に帰属するもの(最も頻度が高い)
5
+ 帰属と承認要否は別に判断する。頻度やファイル位置ではなく、変更で意味が変わる最上位の前提を確認する。以下の例でも、目的・契約・認可・不変条件に影響するならその決定へ戻る。
6
+
7
+ ## 環境設計に帰属するもの
6
8
 
7
9
  **判定基準:** コードの正しさではなく、環境の正しさに関する問題
8
10
 
9
11
  | パターン | 例 |
10
12
  |---------|-----|
11
13
  | 設定ファイルの漏れ | サービス/関数が設定ファイルに未登録 |
12
- | ランタイム制約 | 認証トークンのアルゴリズム不一致 |
14
+ | ランタイム制約 | 合意済みランタイムと実行環境の不一致(認証アルゴリズムの変更は認可契約も確認) |
13
15
  | フレームワーク制約 | 特定ファイルからのexportルール、ビルド制約 |
14
16
  | シードデータ不足 | テストに必要なデータ層の欠落 |
15
17
  | マイグレーション漏れ | DB変更が適用されていない |
@@ -37,7 +39,7 @@
37
39
  | 状態遷移の不足 | 必要なドメインイベントが未定義 |
38
40
  | 不変条件の誤り | ビジネスルールの理解が間違っていた |
39
41
 
40
- ## ストーリー/Unitに帰属するもの(非常にまれ)
42
+ ## ストーリー/Unitに帰属するもの
41
43
 
42
44
  **判定基準:** そもそも何を作るかの理解に関する問題
43
45
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: release-publisher
3
3
  kind: advisory
4
- description: phasegate のリリース手順(version bump / git tag / npm publish)の厳格ガイド。この npm アカウントは security key (FIDO/WebAuthn) 認証のため publish は必ず `npm publish --auth-type=web`。使用タイミング:「リリースして」「publish して」「npm に上げて」「バージョンを上げてタグを打って」「EOTP エラーが出た」「npm publish が認証で失敗する」など、version bump・タグ付与・npm publish・publish 認証トラブルに関わる場面。
4
+ description: Phasegate本体パッケージのリリースを依頼されたときのメンテナー向け手順。利用者プロジェクトのリリースや一般的なnpm認証相談には適用しない。
5
5
  model: sonnet
6
6
  review: opus
7
7
  languages: [typescript]
@@ -11,6 +11,8 @@ languages: [typescript]
11
11
 
12
12
  ## 目的
13
13
 
14
+ 対象はPhasegate本体のリポジトリだけ。以下の認証・バージョニング規則を利用者プロジェクトへ適用しない。publish、tag、pushはユーザーが依頼した範囲だけ実施する。対象や現行の公開手順が確認できない場合は先に確認する。
15
+
14
16
  phasegate パッケージのリリース(version bump → git tag → npm publish)を、誤操作・認証事故なしに完遂するための厳格手順ガイド(advisory)。正となる規範は `CLAUDE.md` の「バージョニングルール」「npm publish ルール」節、および `DEVELOPMENT.md` の「Versioning and Release」「Troubleshooting npm publish authentication」節。本スキルはそれらを実行手順として展開する。
15
17
 
16
18
  ## 絶対ルール(違反禁止)
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: skill-creator
3
3
  kind: advisory
4
- description: phasegate バンドルのスキルを新規作成・改訂するための著者向けガイド。phasegate 固有の frontmatter 契約・正規見出し(skill-structure バリデータ)・モデル委任レンダリング・カタログ登録・日本語規約を扱う。スキルを追加/編集する際に使用する。
4
+ description: Phasegate本体のバンドルスキルを追加・改訂するときのメンテナー向けガイド。利用者プロジェクト独自のスキル作成には適用しない。
5
5
  model: opus
6
6
  languages: [typescript]
7
7
  ---
@@ -57,8 +57,8 @@ phasegate のスキル frontmatter は `name` / `description` に加えて、他
57
57
 
58
58
  新規スキルは skill-structure バリデータ(`scripts/harness/skill-quality/domain/services/skill-structure-validator.ts`)に**必ず合格**する。バリデータはスキルの **kind** ごとに必須セクションを決める:
59
59
 
60
- - **lifecycle**(既定・23 スキル): `frontmatter` / `languageMetadata` / `purpose` / `inputs` / `outputs` / `prerequisites` / `executionFlow` の 7 セクションを全保有すること。
61
- - **advisory**(allowlist の 7 スキル。本スキル含む): `frontmatter` / `languageMetadata` / `purpose` の 3 セクションのみ必須。
60
+ - **lifecycle**(既定): `frontmatter` / `languageMetadata` / `purpose` / `inputs` / `outputs` / `prerequisites` / `executionFlow` の 7 セクションを全保有すること。
61
+ - **advisory**(allowlist。本スキル含む): `frontmatter` / `languageMetadata` / `purpose` の 3 セクションのみ必須。件数の正本は以下のcorpusテスト。
62
62
 
63
63
  ### セクション名 → 見出しの対応(sectionMap)
64
64
 
@@ -77,16 +77,15 @@ phasegate のスキル frontmatter は `name` / `description` に加えて、他
77
77
  ### kind の登録場所(allowlist / taxonomy)
78
78
 
79
79
  - kind 型と必須セクションの定義: `scripts/harness/skill-quality/domain/types/skill-kind.ts` と `.../value-objects/skill-structure.ts`。
80
- - **advisory allowlist の pin**: `scripts/harness/__tests__/integration/skill-quality/skill-corpus-conformance.test.ts` の `ADVISORY_SKILLS` 配列。ここに列挙された 7 件だけが `kind: advisory` を宣言でき、8 件目の自己宣言はテストが fail する。**advisory を増やす場合はこのテストの allowlist を意図的に更新すること**(lifecycle 要求の回避を防ぐ pin)。lifecycle スキルを追加する場合は allowlist 変更不要だが、7 セクションを全て満たす必要がある。
80
+ - **advisory allowlist の pin**: `scripts/harness/__tests__/integration/skill-quality/skill-corpus-conformance.test.ts` の `ADVISORY_SKILLS` 配列。列挙されていない自己宣言はテストが fail する。**advisory を増やす場合はこのテストの allowlist を意図的に更新すること**(lifecycle 要求の回避を防ぐ pin)。lifecycle スキルを追加する場合は allowlist 変更不要だが、7 セクションを全て満たす必要がある。
81
81
 
82
82
  ## カタログ登録(新規スキル追加時に必須)
83
83
 
84
84
  新規スキルは SKILL.md を書くだけでは配信されない。以下のカタログ・件数 pin を必ず更新する:
85
85
 
86
- 1. `scripts/harness/setup/skill-deployer.ts` の `SKILL_CATEGORIES`(`core` / `aidlc` / `utility` / `guidance` のいずれかに追加)。ここに載らないスキルは `getSkillsForSet` の配信対象にならない。
87
- 2. `scripts/harness/installation/application/bundled-skill-selection.ts`(インストール時の選択ロジック)。
88
- 3. 件数 pin: `skills/README.md`("30 skills" の記述)・`docs/guide/skills-overview.md`("30 skills")。スキル総数を変えたら両方を同期更新する。
89
- 4. advisory を追加する場合は前述の `skill-corpus-conformance.test.ts` の `ADVISORY_SKILLS` と、テスト内の件数期待値(`skills.length` / lifecycle・advisory の内訳)も更新する。
86
+ 1. 単一正本 `scripts/harness/installation/application/bundled-skill-selection.ts` のカテゴリと配布選択。setup側は委譲するためカタログを複製しない。consumerには本体用のrelease-publisher/skill-creatorを含めず、旧core/allの互換は維持する。
87
+ 2. `skills/README.md`・`docs/guide/skills-overview.md`の配布説明と件数を実体に合わせる。
88
+ 3. advisoryを追加する場合は前述のcorpusテストのallowlistと件数期待値も更新する。
90
89
 
91
90
  > なお `scripts/harness/` 配下のソース(`skill-deployer.ts` / `bundled-skill-selection.ts` 等)の変更はフェーズゲート対象であり、`quick-implementor` / `story-implementor` スキル経由で行う(CLAUDE.md 参照)。スキル本文(`skills/**` の docs)編集はゲート緩和対象。
92
91
 
@@ -113,5 +112,5 @@ phasegate のスキル frontmatter は `name` / `description` に加えて、他
113
112
  3. **雛形の用意** — 同種の既存スキル(lifecycle は例えば `unit-designer`、advisory は `phasegate-config-doctor`)の SKILL.md を土台にコピーし、frontmatter・見出しを埋める。
114
113
  4. **本文作成** — 日本語散文で。3 フェーズ系なら結合文字列をバイト単位で流用。詳細は `references/` へ切り出す。
115
114
  5. **構造検証** — `npx vitest run scripts/harness/__tests__/integration/skill-quality`(corpus-conformance)で宣言 kind の必須セクションに合格することを確認。
116
- 6. **カタログ登録** — `SKILL_CATEGORIES` / `bundled-skill-selection.ts` / 件数 pin(README・skills-overview)を更新。
115
+ 6. **カタログ登録** — `bundled-skill-selection.ts`と関連する配布説明・corpus期待値を更新。
117
116
  7. **反復** — 実タスクで使い、SKILL.md / references を改善する。
@@ -0,0 +1,16 @@
1
+ {
2
+ "phasegate-gate": {
3
+ "PreToolUse": [
4
+ {
5
+ "matcher": "^(write_to_file|replace_file_content|multi_replace_file_content|run_command)$",
6
+ "hooks": [
7
+ {
8
+ "type": "command",
9
+ "command": "npx phasegate hook pre-tool-use",
10
+ "timeout": 30
11
+ }
12
+ ]
13
+ }
14
+ ]
15
+ }
16
+ }
@@ -96,10 +96,10 @@ if command -v npx >/dev/null 2>&1; then
96
96
  fi
97
97
  fi
98
98
 
99
- # Biome lint check
99
+ # PhaseGate lint check (uses the target project's PhaseGate/Biome configuration)
100
100
  LINT_OUTPUT=""
101
101
  if command -v npx >/dev/null 2>&1; then
102
- LINT_RAW=$(npx @biomejs/biome lint "$LOCAL_PATH" 2>&1)
102
+ LINT_RAW=$(npx phasegate lint --json --skip-eslint-removal-check 2>&1)
103
103
  if [ $? -ne 0 ] && [ -n "$LINT_RAW" ]; then
104
104
  LINT_OUTPUT=$(echo "$LINT_RAW" | head -5)
105
105
  fi
@@ -2,7 +2,7 @@
2
2
  "hooks": {
3
3
  "PreToolUse": [
4
4
  {
5
- "matcher": "Bash",
5
+ "matcher": "Bash|apply_patch",
6
6
  "hooks": [
7
7
  {
8
8
  "type": "command",
@@ -10,7 +10,8 @@
10
10
  },
11
11
  {
12
12
  "type": "command",
13
- "command": "npx phasegate hook pre-tool-use"
13
+ "command": "npx phasegate hook pre-tool-use",
14
+ "timeout": 30
14
15
  }
15
16
  ]
16
17
  },
@@ -19,7 +20,8 @@
19
20
  "hooks": [
20
21
  {
21
22
  "type": "command",
22
- "command": "npx phasegate hook pre-tool-use"
23
+ "command": "npx phasegate hook pre-tool-use",
24
+ "timeout": 30
23
25
  }
24
26
  ]
25
27
  }
@@ -25,7 +25,7 @@
25
25
  ],
26
26
  "PreToolUse": [
27
27
  {
28
- "matcher": "Bash",
28
+ "matcher": "Bash|apply_patch",
29
29
  "hooks": [
30
30
  {
31
31
  "type": "command",
@@ -37,7 +37,7 @@
37
37
  ],
38
38
  "PostToolUse": [
39
39
  {
40
- "matcher": "Bash",
40
+ "matcher": "Bash|apply_patch",
41
41
  "hooks": [
42
42
  {
43
43
  "type": "command",