agentsclimarketplace

Approve audit

Skill hirokimry/vibecorp/skills/approve-audit

コマンドログを棚卸しし、settings.local.json の allow リストへの追加を提案・実行する。「/vibecorp:approve-audit」「許可リスト更新」「コマンド棚卸し」と言った時に使用。From its SKILL.md

Install
npx -y skills add hirokimry/vibecorp --skill approve-audit

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

5.8 KB, as published. Nobody here has run it

🛡️ 許可リスト棚卸し

[!IMPORTANT] このスキルはコマンドログを棚卸しし、settings.local.json の allow リストへの追加を提案・実行 する。 ユーザーの承認なしに settings.local.json を変更しない。 全提案は AskUserQuestion で明示確認を取る。

コマンドログを棚卸しし、settings.local.json の allow リストを最適化する。

worktree モード

--worktree <path> が指定された場合、全操作を指定パス内で実行する。

  • Bash: 全コマンドを cd <path> && command で実行する。
  • Read/Write/Edit: <path>/ を基準とした絶対パスを使用する。
  • $CLAUDE_PROJECT_DIR: worktree モードでは <path> に置き換える。
  • 未指定時は従来通り CWD で実行する(後方互換)。

🔄 ワークフロー

1. ログファイルの読み込み

ログファイルを読み込む。

ログファイルパス: ~/.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"

ログファイルが存在しない、または空の場合は「記録されたコマンドがありません」と報告して終了する。

2. settings.local.json の allow パターン取得

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)完全一致

3. 未許可コマンドの抽出

ログの各コマンドに対して allow パターンとの照合を行い、マッチしないコマンド を抽出する。

照合ルール:

  • Bash(prefix:*) パターン: コマンドが prefix で始まればマッチ。
  • Bash(exact) パターン: コマンドが完全一致すればマッチ。
  • 複数回実行されたコマンドはカウントを集計する。

4. パターン化と提案

未許可コマンドを分析し、類似コマンドをグルーピングしてパターンを提案する。

パターン化のガイドライン:

  • 同じコマンドの異なるサブコマンド → 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」と入力してください。

5. ユーザー承認

AskUserQuestion でユーザーの選択を取得する。

6. settings.local.json への書き込み

承認されたパターンを settings.local.json の permissions.allow に追加する。

cat "$CLAUDE_PROJECT_DIR"/.claude/settings.local.json

ファイルが存在しない場合は新規作成する。

{
  "permissions": {
    "allow": []
  }
}

既存の allow リストに承認されたパターンを追加する。jq では string interpolation \(...) を使わない — 必ず + で結合する(根拠)。

書き込み後、追加されたパターンを報告する。

7. ログファイルのクリア(任意)

ユーザーに「ログファイルを削除しますか?」と確認し、承認された場合のみ削除する。

source "$CLAUDE_PROJECT_DIR"/.claude/lib/common.sh
rm -f "$(vibecorp_state_path command-log)"

8. 結果報告

## /vibecorp:approve-audit 完了

- 記録コマンド数: {n}
- 未許可コマンド数: {n}
- 追加パターン数: {n}
- 追加先: .claude/settings.local.json

制約

  • --force、--hard、--no-verify は使用しない。
  • ユーザーの明示的な指示なしに force push しない。
  • jq では string interpolation \(...) を使わない — 必ず + で結合する(根拠)。
  • コマンドをそのまま実行する — 2>/dev/null、|| echo、; echo 等のリダイレクトやフォールバックを付加しない(根拠)。
  • ユーザーの承認なしに settings.local.json を変更しない。

🔗 関連ルール

  • プロンプト作成基準: .claude/rules/prompt-writing.md
  • マークダウン規約: .claude/rules/markdown.md
  • シェル規約: .claude/rules/shell.md

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.