Claude plugin context audit
Skill bokuwalily/claude-code-skills/skills/claude-plugin-context-audit
75 battle-tested Claude Code skills from shipping 20+ apps solo — macOS, Next.js, Vercel, iOS/Expo, Cloudflare, Phaser, local AI media & more
npx -y skills add bokuwalily/claude-code-skills --skill claude-plugin-context-auditAssembled 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.
What its author says it does
Copied from the file, not written here
セッション開始が重い/応答が直近指示を取りこぼす/context bloatが疑われるとき、SessionStartで注入される全ソース(プラグイン・rules/ecc・obsidian文脈・auto-memory・remember)のトークン内訳を測定して刈り込み候補を特定したいとき
SKILL.md
5.9 KB, as published. Nobody here has run it
Procedure
-
有効プラグイン数と総プラグイン数を確認する
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) " -
直近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 -
セッション開始時に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)" -
実績ゼロのプラグインを洗い出して監査レポートを作成する
cat > ~/.claude/improvements/plugin-audit-$(date +%Y-%m-%d).md << 'EOF' # Plugin Audit ## 有効だが未使用(直近30日) [手順2の結果と照合して記入] ## 無効化候補 [具体的なプラグイン名をリスト] EOF -
無効化を実行する(破壊的変更のため確認してから)
# 特定プラグインを 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') " -
プラグイン以外の注入源の内訳を測定する(症状が「直近指示の取りこぼし/話の混線」のとき本命はこっち)
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 -
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一覧が短くなっていれば成功