From vibecorp
コマンドログを棚卸しし、settings.local.json の allow リストへの追加を提案・実行する。「/vibecorp:approve-audit」「許可リスト更新」「コマンド棚卸し」と言った時に使用。
How this skill is triggered — by the user, by Claude, or both
Slash command
/vibecorp:approve-auditThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> [!IMPORTANT]
[!IMPORTANT] このスキルはコマンドログを棚卸しし、
settings.local.jsonの allow リストへの追加を提案・実行 する。 ユーザーの承認なしにsettings.local.jsonを変更しない。 全提案はAskUserQuestionで明示確認を取る。
コマンドログを棚卸しし、settings.local.json の allow リストを最適化する。
--worktree <path> が指定された場合、全操作を指定パス内で実行する。
cd <path> && command で実行する。<path>/ を基準とした絶対パスを使用する。$CLAUDE_PROJECT_DIR: worktree モードでは <path> に置き換える。ログファイルを読み込む。
ログファイルパス: ~/.cache/vibecorp/state/<repo-id>/command-log(.claude/lib/common.sh の vibecorp_state_path command-log で取得)
source "$CLAUDE_PROJECT_DIR"/.claude/lib/common.sh
log_file="$(vibecorp_state_path command-log)"
cat "$log_file"
ログファイルが存在しない、または空の場合は「記録されたコマンドがありません」と報告して終了する。
if [ -f "$CLAUDE_PROJECT_DIR"/.claude/settings.local.json ]; then
cat "$CLAUDE_PROJECT_DIR"/.claude/settings.local.json
else
echo '{"permissions":{"allow":[]}}'
fi
ファイルが存在しない場合、または permissions.allow が空の場合は空リストとして扱う。
permissions.allow 配列の各エントリを取得する。パターンの形式は以下のとおり。
| パターン | 意味 |
|---|---|
Bash(prefix:*) | コマンドプレフィックスマッチ |
Bash(exact) | 完全一致 |
ログの各コマンドに対して allow パターンとの照合を行い、マッチしないコマンド を抽出する。
照合ルール:
Bash(prefix:*) パターン: コマンドが prefix で始まればマッチ。Bash(exact) パターン: コマンドが完全一致すればマッチ。未許可コマンドを分析し、類似コマンドをグルーピングしてパターンを提案する。
パターン化のガイドライン:
Bash(command:*) にまとめる(例: npm run build, npm run test → Bash(npm run:*))。git diff HEAD, git diff main → Bash(git diff:*))。提案フォーマット:
## コマンドログ棚卸し結果
ログ期間: {最初のタイムスタンプ} 〜 {最後のタイムスタンプ}
記録コマンド数: {総数}
未許可コマンド数: {件数}
### allow リスト追加提案
| # | パターン | 実行回数 | 代表コマンド |
|---|---------|---------|------------|
| 1 | Bash(npm run:*) | 5 | npm run build, npm run test |
| 2 | Bash(docker compose:*) | 3 | docker compose up, docker compose down |
| 3 | Bash(rm -rf node_modules) | 1 | rm -rf node_modules |
追加するパターンの番号を指定してください(例: 1,2)。
全て追加する場合は「all」、キャンセルする場合は「none」と入力してください。
AskUserQuestion でユーザーの選択を取得する。
承認されたパターンを settings.local.json の permissions.allow に追加する。
cat "$CLAUDE_PROJECT_DIR"/.claude/settings.local.json
ファイルが存在しない場合は新規作成する。
{
"permissions": {
"allow": []
}
}
既存の allow リストに承認されたパターンを追加する。jq では string interpolation \(...) を使わない — 必ず + で結合する(根拠)。
書き込み後、追加されたパターンを報告する。
ユーザーに「ログファイルを削除しますか?」と確認し、承認された場合のみ削除する。
source "$CLAUDE_PROJECT_DIR"/.claude/lib/common.sh
rm -f "$(vibecorp_state_path command-log)"
## /vibecorp:approve-audit 完了
- 記録コマンド数: {n}
- 未許可コマンド数: {n}
- 追加パターン数: {n}
- 追加先: .claude/settings.local.json
--force、--hard、--no-verify は使用しない。\(...) を使わない — 必ず + で結合する(根拠)。2>/dev/null、|| echo、; echo 等のリダイレクトやフォールバックを付加しない(根拠)。settings.local.json を変更しない。.claude/rules/prompt-writing.md.claude/rules/markdown.md.claude/rules/shell.mdnpx claudepluginhub hirokimry/vibecorp --plugin vibecorpCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.