agentsclimarketplace

Claude plugin context audit

Skill bokuwalily/claude-code-skills/skills/claude-plugin-context-audit

セッション開始が重い/応答が直近指示を取りこぼす/context bloatが疑われるとき、SessionStartで注入される全ソース(プラグイン・rules/ecc・obsidian文脈・auto-memory・remember)のトークン内訳を測定して刈り込み候補を特定したいときFrom its SKILL.md

Install
npx -y skills add bokuwalily/claude-code-skills --skill claude-plugin-context-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

  • 0 stars0 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.9 KB, ~2.0k tokens by cl100k_base, as published. Nobody here has run it

Procedure

  1. 有効プラグイン数と総プラグイン数を確認する

    cat ~/.claude/settings.json | python3 -c "
    import json,sys; d=json.load(sys.stdin)
    plugins = d.get('plugins', {})
    enabled = [k for k,v in plugins.items() if v.get('enabled', False)]
    print(f'enabled: {len(enabled)} / total: {len(plugins)}')
    for p in sorted(enabled): print(' -', p)
    "
    
  2. 直近30日のセッションJSONLから実際に使ったプラグイン/スキルを集計する

    cd ~/.claude/projects
    find . -name "*.jsonl" -type f -mtime -30 | xargs grep -h '"toolName"\|"skill"\|/[a-z]' 2>/dev/null \
      | grep -oE '"toolName":"[^"]+"' | sort | uniq -c | sort -rn | head -30
    
  3. セッション開始時にcontextに注入されるskillメタデータ量を測定する

    # 最新セッションファイルを特定
    SF=$(find ~/.claude/projects -name "*.jsonl" -type f -newer ~/.claude/settings.json | sort -t/ -k8 | tail -1)
    # skill一覧ブロックのサイズを確認
    wc -c <<< "$(grep -o '"text":"[^"]*skills are available[^"]*"' "$SF" 2>/dev/null)"
    
  4. 実績ゼロのプラグインを洗い出して監査レポートを作成する

    cat > ~/.claude/improvements/plugin-audit-$(date +%Y-%m-%d).md << 'EOF'
    # Plugin Audit
    ## 有効だが未使用(直近30日)
    [手順2の結果と照合して記入]
    
    ## 無効化候補
    [具体的なプラグイン名をリスト]
    EOF
    
  5. 無効化を実行する(破壊的変更のため確認してから)

    # 特定プラグインを disable(settings.json を直接編集)
    python3 -c "
    import json
    with open('$HOME/.claude/settings.json') as f: d = json.load(f)
    targets = ['plugin-name-1', 'plugin-name-2']  # 削減対象
    for t in targets:
        if t in d.get('plugins', {}):
            d['plugins'][t]['enabled'] = False
    with open('$HOME/.claude/settings.json', 'w') as f: json.dump(d, f, indent=2)
    print('done')
    "
    
  6. プラグイン以外の注入源の内訳を測定する(症状が「直近指示の取りこぼし/話の混線」のとき本命はこっち)

    echo "== rules/ecc 全文注入(~/.claude/rules/ 配下はグローバル指示として自動フルロード・上限なし)=="
    find ~/.claude/rules/ecc -name '*.md' -exec cat {} + | wc -c   # bytes/4≒英tok
    echo "== obsidian文脈(obsidian_context.shが注入。MAX_CHARSで上限済み=肥大しても注入は一定)=="
    grep -E 'MAX_CHARS|head -c|sed -n' ~/.local/bin/obsidian_context.sh
    echo "== auto-memory(MEMORY.md全文注入)=="; wc -c ~/.claude/projects/*/memory/MEMORY.md
    echo "== remember(now/recent/archive/today を注入。*.done.mdは注入対象外)=="
    wc -c ~/.remember/now.md ~/.remember/recent.md ~/.remember/archive.md
    
  7. rules/ecc を刈り込む(最大効果・破壊的ではない=rules外へ退避するだけ)

    # 使う言語だけ残す。残り+zh/(中国語完全重複)をrulesツリーの外へ逃がす(隠しdirでも誤ロード回避のため外)
    A="$HOME/.claude/.rules-archive/ecc"; mkdir -p "$A"; cd ~/.claude/rules/ecc
    for d in angular arkts cpp csharp dart fsharp golang java kotlin perl php ruby rust swift zh; do
      [ -d "$d" ] && mv "$d" "$A/"; done
    # 復元は mv "$A/rust" ~/.claude/rules/ecc/ で1個ずつ
    

Pitfalls

  • 症状の切り分け: 「セッションが重い」だけならプラグイン(手順1-5)。「応答が直近のユーザー指示を取りこぼす/前の話題と混線する」なら注入総量が犯人で、本命は rules/ecc 全文注入(手順6-7)。実測では rules/ecc が単独で ~45-57K tok を占め全注入の最大ブロックだった

  • rules/ecc は @import ではなく自動ディレクトリロード~/.claude/rules/ 配下を Claude Code がグローバル指示として全文読む。だから import 行修正は不要、ファイルをツリー外へ mv するだけで注入が止まる。ロールバックは mv で戻すだけ=非破壊

  • obsidian hot.md / index.md は触っても注入は減らないobsidian_context.sh が hot.md=9000字 / index=2500字で既に上限カット済み。ファイルが32KBに膨らんでても注入は ~7K tok 一定。ディスク掃除と注入削減を混同しない

  • remember の today-*.done.md も注入対象外。掃除はディスク整理であってトークンは減らない

  • MAXプランなら$/tokenコストへの影響はない。削減のメリットは「context窓の節約」「キャッシュヒット率の安定化」「セッション起動の高速化」

  • disable は settings.json の true→false だけで即ロールバック可能。claude plugin uninstall は物理ディスクも回収するが非可逆

  • プラグインを disable するとそのプラグインが提供するスラッシュコマンドがエラーになる。稀にしか使わないが重要なコマンドは disable しないこと

  • セッション内で既に読み込まれたskillメタは次回起動まで残るため、効果確認は新規セッションで行う

Verification

# 無効化後の有効プラグイン数確認
cat ~/.claude/settings.json | python3 -c "
import json,sys; d=json.load(sys.stdin)
enabled = [k for k,v in d.get('plugins',{}).items() if v.get('enabled',False)]
print(f'enabled plugins: {len(enabled)}')
"
# 新規セッションを開いてcontext先頭のskill一覧が短くなっていれば成功

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. 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.