Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions .claude/hooks-config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -117,11 +117,13 @@ default_branch = "master" # "main" など、リポジトリに合わせて変
# type = "command"
# cmd = "gh pr checks --required"

# マージ後の学び提案機能(将来実装)
# [[merge_pipeline.post_steps]]
# name = "post_merge_learnings"
# type = "ai"
# prompt = "analyze_pr_learnings"
# マージ後のフィードバックループ自動起動 (ADR-029 試験運用)
# cli-merge-pipeline が .claude/post-merge-feedback-pending.json を書き込み、
# hooks-stop-feedback-dispatch が検出して /post-merge-feedback skill を起動する。
[[merge_pipeline.post_steps]]
name = "post_merge_feedback"
type = "ai"
prompt = "post-merge-feedback"

# ─── Post-PR Monitor: daemon + state file ───
#
Expand Down
68 changes: 6 additions & 62 deletions docs/todo.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,65 +6,9 @@

## 現在進行中

### マージ後フィードバックの定常化 (post-merge-feedback 自動起動)
### post-merge-feedback skill の pending file 対応 (skill リポジトリ側で実施)

> **全体ゴール**: `pnpm merge-pr` 後、Stop 時に `/post-merge-feedback` skill の起動を Claude に指示する自動化を本プロジェクトで dogfood 開始できる状態にする。
>
> **設計の核 (state file + 現セッション起動)**: cli-merge-pipeline が `.claude/post-merge-feedback-pending.json` を書き込み、新規 Stop hook が検出 → `additionalContext` で Claude に skill 起動を指示。新セッションを spawn しないので ADR-014 選択肢 3「skill はメイン会話内で実行」の原則を維持し、セッション知見の引き継ぎ問題を構造的に回避する。
>
> **依存関係・順序**: `1-C (hook)` を先に進める。最後に `1-D (有効化 + 試験運用開始)`。`1-E (skill 更新)` は独立タスクとして切り出し済み。
>
> **全タスク共通の参照先**: 設計の詳細は `docs/adr/adr-029-post-merge-feedback-auto-trigger.md` (PR #69 で新規作成、PR #70 で create_new 採用 / producer フィールド追加を反映)。以降のタスクはこの ADR の仕様に従う。

#### 1-C. hooks-stop-feedback-dispatch 新規 exe (コード + 配布統合、1 PR)

- **やろうとしたこと**: Stop 時に pending file を検出し、`additionalContext` で Claude に skill 起動を指示する単一責務 hook を追加。既存 `hooks-stop-quality` とは責務分離 (ADR-022 原則)
- **現在地**: 未着手
- [ ] `src/hooks-stop-feedback-dispatch/` 新規 crate
- `Cargo.toml` を workspace member に登録 (ADR-026)
- `src/main.rs` を実装:
- stdin JSON 読み取り (`stop_hook_active` 等)
- `stop_hook_active == true` → silent exit (無限ループ防止、hooks-stop-quality と同じパターン)
- pending 不在 → silent exit
- 破損 (size 0 / parse 失敗 / schema_version 不一致) → 削除して silent exit
- stale (created_at + 24h < now) → 削除して silent exit
- `status == "pending"` → 構造化 `additionalContext` を stdout に出力 + pending file の `status` を `"dispatched"` に atomic 更新 (`dispatched_at` も設定)
- `status == "dispatched"` → silent exit (二重通知しない)
- `status == "consumed"` → 削除して silent exit (後片付け)
- [ ] `Cargo.toml` (workspace root) の `members` に追加
- [ ] `package.json` に `build:hooks-stop-feedback-dispatch` 追加、`deploy:hooks` に統合
- [ ] `.claude/settings.json` の Stop hook エントリに 2 つ目の exe を追加 (hooks-stop-quality の**後**の順序)
- [ ] `templates/settings.json` にも同様の設定を反映 (派生プロジェクト配布用)
- [ ] unit test 追加:
- pending 不在で正常 exit
- `stop_hook_active = true` で silent exit (pending を読まない)
- 破損 pending の削除 + silent exit
- stale pending の削除 + silent exit
- status=pending → additionalContext 生成 + status=dispatched へ更新
- status=dispatched → silent exit
- status=consumed → 削除 + silent exit
- additionalContext 文字列フォーマット検証 (構造化タグの key 順序等)
- **完了基準**: `cargo test` 通過 + `pnpm build:hooks-stop-feedback-dispatch` / `pnpm deploy:hooks` 成功 + hooks-stop-quality と並行動作確認
- **詰まっている箇所**: なし

#### 1-D. post_steps 有効化 + 試験運用開始 (設定 + todo 更新、1 PR)

- **やろうとしたこと**: 設定を有効化し、本プロジェクトで dogfood を開始する
- **現在地**: 未着手
- [ ] `.claude/hooks-config.toml` の `[[merge_pipeline.post_steps]]` を有効化:
```toml
[[merge_pipeline.post_steps]]
name = "post_merge_feedback"
type = "ai"
prompt = "post-merge-feedback"
```
- [ ] `templates/hooks-config.toml` にも反映 (派生プロジェクト用、デフォルト opt-in/opt-out 方針は PR 内で判断)
- [ ] `docs/todo.md` から本タスク群 (1-C〜1-D、および section ヘッダーと前文) を削除 (運用ルール: 完了タスクは ADR/仕組みに反映後に削除。1-A は PR #69、1-B は PR #70 で削除済)
- **完了基準**: 実マージ (別 PR) の `pnpm merge-pr` で pending file が生成され、Stop 時に Claude が構造化 `additionalContext` を受け取って skill 起動を試みるフローが走ること (skill 未対応なら手動起動で検証)
- **詰まっている箇所**: なし
- **依存関係**: 1-C (hook) の完了

#### 1-E. post-merge-feedback skill の pending file 対応 (別タスク、skill リポジトリ側で実施)
> **参照**: `docs/adr/adr-029-post-merge-feedback-auto-trigger.md` — CLI / Stop hook / skill の 3 者協調設計。本タスクは skill 側の Phase 0 対応 (ADR-029 task 1-E)。

- **やろうとしたこと**: skill Phase 1 の前段に「pending file 先読み (Phase 0)」を追加し、status が `"dispatched"` の場合は引数指定と同等の最優先度で採用。skill 完了時に `status = "consumed"` に更新してからファイル削除
- **現在地**: 未着手
Expand All @@ -77,14 +21,14 @@
- [ ] (任意) skill eval の追加: pending file ありのケース / 破損ケース / status 別の挙動
- **完了基準**: skill が pending file を正しく consume し、本プロジェクトの dogfood で Claude が自動起動した skill から Feedback Report が出力される
- **詰まっている箇所**: skill の管理場所 (本プロジェクト外) の扱いは `/skill-sync-check` の結果次第
- **依存関係**: 1-C/1-D とは並行可能だが、dogfood の完結には 1-E も必要

#### 1-F. (追って) ADR-014 試験運用フラグ解除 + takt-test-vc 反映
### (追って) ADR-014 試験運用フラグ解除 + takt-test-vc 反映

> **参照**: `docs/adr/adr-029-post-merge-feedback-auto-trigger.md` — 本タスクは ADR-029 task 1-F。本プロジェクトでの dogfood が十分に回ってから着手。

- **やろうとしたこと**: dogfood 1-2 週間で問題なければ ADR-014 を本採用化し、takt-test-vc へバックポート
- **現在地**: 未着手。1-D 以降 + 運用観察が前提
- **現在地**: 未着手。本プロジェクトで実マージ数回の観察が前提
- **詰まっている箇所**: dogfood 結果に依存するため着手タイミングは未定
- **依存関係**: 1-D 完了 + 本プロジェクトで実マージ数回の観察

---

Expand Down
13 changes: 13 additions & 0 deletions templates/hooks-config-python.toml
Original file line number Diff line number Diff line change
Expand Up @@ -49,3 +49,16 @@ cmd = "pnpm py-test:e2e"
# max_duration_secs = 600
# check_ci = true
# check_coderabbit = true

# ─── Merge Pipeline: post_steps ───
# pnpm merge-pr 後に post-merge-feedback skill を自動起動する (ADR-029 試験運用)。
# 有効化には post-merge-feedback skill が deploy されている必要があります。

# [merge_pipeline]
# step_timeout = 120
# default_branch = "master" # リポジトリに合わせて変更

# [[merge_pipeline.post_steps]]
# name = "post_merge_feedback"
# type = "ai"
# prompt = "post-merge-feedback"
13 changes: 13 additions & 0 deletions templates/hooks-config-typescript.toml
Original file line number Diff line number Diff line change
Expand Up @@ -53,3 +53,16 @@ cmd = "pnpm build"
# max_duration_secs = 600
# check_ci = true
# check_coderabbit = true

# ─── Merge Pipeline: post_steps ───
# pnpm merge-pr 後に post-merge-feedback skill を自動起動する (ADR-029 試験運用)。
# 有効化には post-merge-feedback skill が deploy されている必要があります。

# [merge_pipeline]
# step_timeout = 120
# default_branch = "master" # リポジトリに合わせて変更

# [[merge_pipeline.post_steps]]
# name = "post_merge_feedback"
# type = "ai"
# prompt = "post-merge-feedback"