| name | metsuke-config |
| description | Customize metsuke configuration — interactive wizard that scans installed plugins and available skills, then asks one question at a time to build config.json |
| allowed-tools | Bash(mkdir:*), Bash(cp:*), Bash(cat:*), Bash(jq:*), Bash(bash:*), Bash(date:*), Bash(test:*), Read(*), AskUserQuestion |
Metsuke Configuration Wizard
導入済みプラグインとセッションで利用可能なスキルをスキャンし、推奨チェックを 1 問ずつ対話で組み立てていくウィザード。カタログ(${CLAUDE_PLUGIN_ROOT}/config/recommendations.json)に定義された推奨のうち、環境にマッチしたものだけを質問する。
Steps
1. 環境スキャン
bash "${CLAUDE_PLUGIN_ROOT}/scripts/scan-environment.sh"
これで {"installed_plugins": [...]} が得られる。installed_plugins[] を PLUGINS として保持する。
失敗時のハンドリング:
- exit 非 0(jq 未インストール等の致命的エラー)→ ユーザーに stderr 内容を提示して中断
- stderr に警告が出る(壊れた installed_plugins.json 等)→ 内容をユーザーに提示し、「プラグインスキャンは一部失敗しましたが続行しますか?」を
AskUserQuestion で確認
installed_plugins が空配列 → スキル系推奨のみ進めるので続行して OK(スキップせず先へ)
続いて、現在の会話の system-reminder から利用可能スキル ID を抽出する:
- 直近までの system-reminder テキストに "The following skills are available" や "利用可能" といったスキル一覧セクションが含まれている
- 正規表現
^-\s+([\w:-]+): で行頭から ID を抽出(例: superpowers:brainstorming, pr-review-toolkit:review-pr, plan-document-reviewer)
- 抽出できたものを
SKILLS として保持する
既存 config を読む:
test -f ~/.config/metsuke/config.json && cat ~/.config/metsuke/config.json || cat "${CLAUDE_PLUGIN_ROOT}/config/default.json"
既存ユーザー config があるかどうかで後続の分岐を決める。
2. 既存 config がある場合のモード選択
~/.config/metsuke/config.json が存在するときは先に AskUserQuestion で:
- 増分追加: 現在の checks[] に未登録の推奨だけ質問する(既存 checks は温存)
- 全部見直す: 既存 checks をベースにせず空から組み立てる(保存時に旧ファイルはバックアップ)
- キャンセル: 何もせず終了
存在しないときは自動的に「新規作成モード」。
3. 推奨マッチング
カタログを読む:
jq -c '.recommendations[]' "${CLAUDE_PLUGIN_ROOT}/config/recommendations.json"
各 recommendation について以下の条件でマッチ判定:
match.plugin があれば、$PLUGINS に完全一致するか
match.skill があれば、$SKILLS に完全一致するか
match.always == true なら常にマッチ
増分モードの場合、既存 config の checks[].name と recommendation.check_template.name が一致する推奨はスキップする。
マッチしたものを QUEUE として順番に保持する。
4. 1 問ずつ対話
ベースの checks[] を用意する(新規作成 or 全部見直しなら []、増分モードなら既存 config の .checks)。
QUEUE の各 recommendation について順番に以下を実行:
-
現時点の checks[] を表示(積み上がっていく感を出す):
現在の checks:
- impl_review (pre_commit/block)
- plan_review (plan_mode/remind)
(まだ何もありません)
-
AskUserQuestion で recommendation.question を表示、recommendation.options[] の label を選択肢として出す。
-
ユーザーの回答 action に応じて:
"skip" → 何もしない
"block" または "remind" → {...check_template, action: "<選択値>"} を checks[] に追加
全推奨の質問が終わったら、追加カスタムチェックの有無を聞く:
「他に追加したいカスタムチェックはありますか? [はい / いいえ]」
「はい」が選ばれたら:
「現在、カスタムチェックの対話追加は未対応です。保存後に ~/.config/metsuke/config.json を手動で編集してください(書式は README や config/default.json を参照)」
と案内して次へ進む。
5. プレビューと確認
構築した新 config 全体を整形 JSON で表示:
echo "$NEW_CONFIG" | jq '.'
AskUserQuestion で:
- 保存: ステップ 6 へ
- 最初からやり直す: ステップ 3 へ戻る(回答を全破棄してキューを再構築)
- 破棄: 何もせず終了
6. 保存
既存 config があれば timestamped backup を取る:
BACKUP_TS=$(date +%Y%m%d-%H%M%S)
test -f ~/.config/metsuke/config.json && cp ~/.config/metsuke/config.json ~/.config/metsuke/config.json.bak-${BACKUP_TS}
書き込み:
mkdir -p ~/.config/metsuke
echo "$NEW_CONFIG" | jq '.' > ~/.config/metsuke/config.json
最後に以下を表示:
- 保存先のパス
- バックアップを取った場合はそのパス
- 次に試せるコマンド:
/metsuke:metsuke-status
Configuration Reference
生成される config の各フィールド:
| フィールド | 説明 |
|---|
checks[].name | チェックの識別名(マーカーファイル名) |
checks[].enabled | false で一時無効化 |
checks[].trigger | pre_commit / plan_mode |
checks[].action | block(pre_commit でのみ有効) / remind |
checks[].detection_patterns | SubagentStop で検知する部分一致パターン配列 |
checks[].message | 未完了時に表示するメッセージ |
commit_aliases | git commit 以外にコミット相当として扱うエイリアス(例: gc, gcm) |
plan_mode + block の組み合わせは remind として扱われる。