䜿ãããªãMCPãã©ã°ã€ã³ãéãã«ã³ã³ããã¹ããé£ã â 鱿¬¡èªå disable ã§åžžæè»œéå
ãClaude Codeç°å¢ãã·ãªãŒãºã®ç¶ãã§ããåäœã®gitèšå®ããã¯ã¢ããèªåå ã«ç¶ããŠãä»å㯠æå¹ã«ãããŸãŸæŸçœ®ãã MCP ãã©ã°ã€ã³ãã³ã³ããã¹ããéãã«åãç¶ããåé¡ ãšãããã鱿¬¡ã§èªå disable ãã3段ãã€ãã©ã€ã³ãæžããŸãã
ãã©ã°ã€ã³ã enable ãããšãäžåºŠãåŒã°ããªããŠãèµ·åæã« tool schema ãæ³šå ¥ãããŸãããå ¥ãã£ã±ãªãããç©ã¿éãªããš Claude ãå®éã«äœ¿ããããŒã¯ã³éãéãã«åããŠããããã®èšäºã§ã¯ãã®æ€åºããèªå disableã»ãã£ãã·ã¥ã¢ãŒã«ã€ããŸã§å®ã³ãŒãã§äžæ¬ã«ã€ãªããŸãã
å°ãããšïŒè¶³ããåŒããªããã©ã°ã€ã³ç®¡ç
æ°ãããã©ã°ã€ã³ãå ¥ããåæ©ã¯æç¢ºã§ããããã®ããŒã«ã䜿ãããããšããèœåçãªè¡åããããŸããå€ãåæ©ã¯ååšããŸãããããã®ãã©ã°ã€ã³æè¿äœ¿ã£ãŠãªããªããšæ°ã¥ãæ©äŒããããããªãã
Claude Code ã¯ã»ãã·ã§ã³éå§æãsettings.json ã® enabledPlugins ã§ true ã«ãªã£ãŠãããã©ã°ã€ã³å
šä»¶ã® tool schema ã context ã«æ³šå
¥ããŸãããæå¹ã ãã©30æ¥äžåºŠãåŒã°ããŠããªãããã©ã°ã€ã³ãå¢ããã»ã©ãæ¯åã®ã³ã³ããã¹ãå
é ããŒãè²¢ç®ã§åãŸããŸãã
æ°ã¶æã§è©Šã㊠enable ãããŸãŸå¿ãããã©ã°ã€ã³ãç©ã¿éãªããš DormantïŒæå¹ãªã®ã«æªäœ¿çšïŒã30æ¬ãè¶ ããããšããããŸãã
æ§æïŒ3段ãã€ãã©ã€ã³
plugin-usage.sh â äŒç ãã©ã°ã€ã³ãå¯èŠåïŒæåå®è¡ / 鱿¬¡ã¬ããŒãïŒ
plugin-auto-disable.sh â 30æ¥æªäœ¿çšã鱿¬¡ã§èªå disable
cleanup-plugin-cache.sh â ç¡å¹åæžã¿ãã£ãã·ã¥ã .disabled-cache/ ãžã¢ãŒã«ã€ã
plugin-auto-disable.sh apply ã®æ«å°Ÿã cleanup-plugin-cache.sh apply ãé£éåŒã³åºãããæ§æãªã®ã§ãlaunchd ããèµ·åãããšã³ããªãã€ã³ãã¯1æ¬ã§ãã
Step 1 â plugin-usage.sh ã§äŒç ãã©ã°ã€ã³ãå¯èŠå
~/.claude/scripts/plugin-usage.sh ã¯éå» N æ¥ïŒããã©ã«ã14æ¥ïŒã®ã»ãã·ã§ã³ JSONL ãããå®éã« tool_use ãšããŠåŒã°ãããã©ã°ã€ã³ã ããéèšããŸãã
# plugin-usage.sh æç²
LOG_DIR="$HOME/.claude/projects/-Users-matsubara"
DAYS="${1:-14}"
find "$LOG_DIR" -maxdepth 1 -name "*.jsonl" -mtime -"$DAYS" -print0 2>/dev/null | xargs -0 cat 2>/dev/null \
| jq -R -r 'fromjson? | select(.type=="assistant") | .message.content[]? | select(.type=="tool_use")
| if .name=="Skill" then ((.input.skill // "") | select(contains(":")) | split(":")[0])
else (.name | select(startswith("mcp__plugin_")) | sub("^mcp__plugin_";"") | split("_")[0]) end' 2>/dev/null \
| sort | uniq -c | sort -rn > "$TMP"
enabled plugin æ°ãš distinct åŒã³åºãæ°ã®å·®ã Dormant ãšããŠåºããŸãã
TOTAL_ENABLED=$(jq -r '[.enabledPlugins // {} | to_entries[] | select(.value)] | length' "$SETTINGS")
# Dormant = TOTAL_ENABLED - USED_COUNT
ãªã grep ã§ã¯ãªã jq ã§éèšããã
æ§å®è£ 㯠grep ã§éšåæååãããããŠããŸãããJSONL å ã®ãdeferred tools å šåæãè¡ïŒäœ¿çšå¯èœããŒã«åã®é·å€§ãªãªã¹ãïŒããåŒã³åºãããšããŠèª€èšäžããterraform çãåŒãã§ããªãã®ã«äžäœã«çŸããããDormant æ°ããã€ãã¹ã«ãªã£ããããŠããŸããã
select(.type=="tool_use")ãéãããšã§ å®éã«åŒã°ããåŒã³åºãã ã ãæ°ããããçŽããŠããŸãã
åºåã€ã¡ãŒãž:
## Summary
- Enabled plugins: **62**
- Distinct plugins referenced in logs: **29**
- Dormant (enabled but never invoked): **33**
## Dormant Plugins (enabled, no recent invocation)
_Candidates for disabling to reduce context tax_
...
## Recommendation
- 33 plugins enabled but unused in last 14 days
- Heavy dormant load â disabling these could free significant context budget
- To disable a plugin: edit `enabledPlugins` in ~/.claude/settings.json
Dormant ã30è¶ ã«ãªããš "Heavy dormant load" ãšåºãŸãããã®ãããå€ã¯ã¹ã¯ãªããå ã«ããŒãã³ãŒããããŠããŸãã
Step 2 â plugin-auto-disable.sh ã鱿¬¡ã§èªå disable
~/.claude/scripts/plugin-auto-disable.sh ãæ¬äœã§ããããã©ã«ã㯠dryïŒå€æŽãªãïŒãapply ãæž¡ããšå®éã«ç¡å¹åããŸãã
# plugin-auto-disable.sh æç²
MODE="${1:-dry}"
DAYS="${DAYS:-30}" # 芳枬ãŠã£ã³ããŠïŒããã©ã«ã30æ¥ïŒ
MIN_CACHE_MB="${MIN_CACHE_MB:-5}" # 5MBæªæºã®ãã£ãã·ã¥ã¯å¯Ÿè±¡å€
WEEKLY_MAX="${WEEKLY_MAX:-5}" # 1åã®å®è¡ã§æå€§5ä»¶
åäœãããŒ:
- éå»30æ¥ã® JSONL ãã MCP åŒã³åºãïŒSkill åŒã³åºããã€ã³ããã¯ã¹å
enabledPluginsã§trueã®ãã©ã°ã€ã³äžèЧã python3 ã§ååŸ- PROTECTED ãªã¹ãã«å«ãŸãããã®ãé€å€
- åè£ããã£ãã·ã¥ãµã€ãºéé ã§ãœãŒããã
MIN_CACHE_MB以äžã®ãã®ãWEEKLY_MAXä»¶ãŸã§çµã applyã¢ãŒãæã¯plugin-disable.sh applyâcleanup-plugin-cache.sh applyãé ã«å®è¡
# åè£ããµã€ãºã§ãœãŒãã㊠WEEKLY_MAX ä»¶éžåº
SIZED=()
for p in "${CANDIDATES[@]}"; do
size=$(du -sm "$HOME/.claude/plugins/cache/claude-plugins-official/$p" 2>/dev/null | awk '{print $1}')
size="${size:-0}"
[ "$size" -lt "$MIN_CACHE_MB" ] && continue
SIZED+=("${size}\t${p}")
done
SELECTED=()
while IFS=$'\t' read -r sz p; do
SELECTED+=("$p")
[ "${#SELECTED[@]}" -ge "$WEEKLY_MAX" ] && break
done < <(printf '%b\n' "${SIZED[@]}" | sort -rn)
ãã£ãã·ã¥ãµã€ãºéé ã§åªå ããã®ã¯åããã³ã³ããã¹ãéã倧ãããã®ããåŠçããããã§ãã
PROTECTED ãªã¹ãã®èšèš
èªå disable ã®æå€§ã®ãªã¹ã¯ã¯èª€æ€åºã§ãããã»ãŒäœ¿ããªããã©æ¶ãããšå°ãããã©ã°ã€ã³ãå®ãããã« PROTECTED é åããããŸãã
PROTECTED=(
remember plugin-dev hookify skill-creator session-report
security-guidance superpowers context7 explanatory-output-style
learning-output-style code-review feature-dev claude-md-management
# LSPs: Claude Code ãééçã«åŒã³åºãå¯èœæ§ãtool_use ã§ã¯çŸããªã
typescript-lsp pyright-lsp php-lsp ruby-lsp rust-analyzer-lsp swift-lsp
# Process tools: ad-hoc ã«åŒã°ããå¯èœæ§
code-simplifier code-modernization ralph-loop agent-sdk-dev mcp-server-dev
playground commit-commands pr-review-toolkit
# æ¢ç¥ã®èª€æ€åºïŒéå»ã®ã»ãã·ã§ã³ã§ãã©ãã«ïŒ
azure-cosmos-db-assistant
)
ã«ããŽãªããšã®ä¿è·çç±:
| ã«ããŽãª | 代衚 | å®ãçç± |
|---|---|---|
| ã€ã³ãã©ç³» | hookify superpowers remember | èµ·åæããã¯ã»ã¹ãã«åŒã³åºãã®æ žãJSONL ã« tool_use ãšããŠçŸããªã |
| LSP ç³» | typescript-lsp ç | Claude Code æ¬äœãå éšã§ééçã«åŒã¶ããã°ã«èšé²ãããªã |
| éçºæ¯æŽ | code-review feature-dev | ad-hoc ã«äœ¿ããåŒã°ãªãæéãé·ããŠãå¿ èŠ |
| æ¢ç¥èª€æ€åº | azure-cosmos-db-assistant | éå»ã«èªå disable ããŠå°ã£ãå®çžŸãã |
LSP ç³»ã PROTECTED ã«å ¥ããªããšå³è©°ãŸã
typescript-lspç㯠Claude Code æ¬äœãå éšã§äœ¿ããŸãããŠãŒã¶ãŒãæç€ºçã« Skill ããŒã«ã MCP ããŒã«ãšããŠåŒã¶ããã§ã¯ãªãããtool_useãã°ã«çŸããŸãããPROTECTED ã«å ¥ããŠããªããšãæ®éã«äœ¿ã£ãŠããã®ã«èªå disable ãããŸãã
Step 3 â cleanup-plugin-cache.sh ã§ãã£ãã·ã¥ãã¢ãŒã«ã€ã
disable ããŠã ~/.claude/plugins/cache/ ã«ãã£ãã·ã¥ã¯æ®ããŸããcleanup-plugin-cache.sh ãããã ~/.claude/plugins/.disabled-cache/ ãžç§»åããŸãã
# cleanup-plugin-cache.sh æç²
CACHE_DIR="$HOME/.claude/plugins/cache/claude-plugins-official"
ARCHIVE_DIR="$HOME/.claude/plugins/.disabled-cache"
PURGE_DAYS="${PURGE_DAYS:-30}"
for dir in "$CACHE_DIR"/*/; do
name=$(basename "$dir")
if ! echo "$ENABLED" | grep -qx "$name"; then
if [ "$MODE" = "apply" ]; then
mv "$dir" "$ARCHIVE_DIR/" && echo " archived: $name"
fi
fi
done
å®åé€ã¯ããŸãããmv ã§éé¿ããã ããªã®ã§ã埩å
㯠mv äžçºã§å¯éã§ãã
ããã« purge ãµãã¢ãŒãã§ .disabled-cache/ ã« PURGE_DAYSïŒããã©ã«ã30æ¥ïŒä»¥äžæŸçœ®ããããã®ã ããç©çåé€ã§ããŸãã
# ã¢ãŒã«ã€ããã30æ¥åŸã«ç©çåé€
~/.claude/scripts/cleanup-plugin-cache.sh purge
launchd ã§æ¥æ06:45ã«èªåå
~/Library/LaunchAgents/com.shun.plugin-auto-disable.plist ã§é±æ¬¡ã¹ã±ãžã¥ãŒã«ãèšå®ããŠããŸãã
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>6</integer>
<key>Minute</key>
<integer>45</integer>
<key>Weekday</key>
<integer>0</integer>
</dict>
æ¯é±æ¥æã®06:45ã« plugin-auto-disable.sh apply ãèµ°ãããã°ã¯ ~/.claude/logs/plugin-auto-disable.log ã«è¿œèšãããŸãã
ç»é²ãšç¢ºèª:
# ç»é²
launchctl load ~/Library/LaunchAgents/com.shun.plugin-auto-disable.plist
# 皌å確èª
launchctl list | grep plugin-auto-disable
# æåãã¹ãïŒå€æŽãªãïŒ
~/.claude/scripts/plugin-auto-disable.sh dry
# æåå®è¡
~/.claude/scripts/plugin-auto-disable.sh apply
èžãã èœãšã穎
- grep ã®éšåãããã deferred tools åæè¡ããåŒã³åºãããšããŠæŸã â jq ã§
type=="tool_use"ãæç€ºãããŸã§ Dormant æ°ããã€ãã¹ã«ãªã£ãŠãããterraform çã幜éã§äžäœã«çŸããŠãã - LSP ç³»ã PROTECTED ã«å
¥ãå¿ã㊠disable ããã â
typescript-lspãæ¶ããŠããåãã§ãã¯ãå¹ããªããªã£ããPROTECTED ã«è¿œå ããŠåŸ©å MIN_CACHE_MBãèšå®ããªããšåŸ®å°ãã£ãã·ã¥ã®ãã©ã°ã€ã³ã察象ã«ãªã â 5MB æªæºã¯ impact ãå°ãããªã¹ã¯ã ããããããã©ã«ã5MBã§ãã£ã«ã¿WEEKLY_MAXã倧ãããããããšå¿ èŠãã©ã°ã€ã³ãå·»ã蟌ã â é±5ä»¶äžéãæ¥ãã§äžæ°ã«ããå¿ èŠã¯ãªã- launchd ã Mac ã¹ãªãŒãäžã«ãžã§ããã¹ããããã â æ¥ææ06:45 ã¯èµ·åäžãå€ãæå»ãã¹ããããããŠãç¿é±ã«æã¡è¶ãããã ãã§å®å®³ãªã
plugin-disable.shãååšããªããš apply ã空æ¯ã âplugin-auto-disable.shã¯å éšã§ãã®ã¹ã¯ãªãããåŒã¶ã©ãããŒæ§æãã¹ã¯ãªããäžåŒãæããªããšåããªã
ãŸãšã
plugin-usage.shã§ã»ãã·ã§ã³ JSONL ã®å®tool_useãéèšããDormant ãã©ã°ã€ã³ãå¯èŠåãã- æ§ grep å®è£
㯠deferred tools åæè¡ã誀èšäžãããjq ã§
type=="tool_use"ãæç€ºããã®ãæ£è§£ plugin-auto-disable.shã30æ¥æªäœ¿çšã»ãã£ãã·ã¥5MB以äžã»é±5ä»¶äžéã§èªå disable ãã- PROTECTED ãªã¹ãã« LSPã»ã€ã³ãã©ç³»ã»æ¢ç¥èª€æ€åºãå¿ ãå ¥ãããå ¥ããªããšå¿ èŠãªãã©ã°ã€ã³ãæ¶ãã
cleanup-plugin-cache.shããã£ãã·ã¥ã.disabled-cache/ãžã¢ãŒã«ã€ãã30æ¥åŸã®purgeã§ç©çåé€- launchd
Weekday=0 / Hour=6 / Minute=45ã§æ¯é±æ¥æ06:45ã«ç¡äººå®è¡
次åã¯ãããã§ç¢ºä¿ããã³ã³ããã¹ãäœè£ã確èªããããã«äœã£ã statusline ã®ãªã¢ã«ã¿ã€ã ã³ã³ããã¹ã䜿çšçã¡ãŒã¿ãŒ ã®è©±ãæžããŸãã
LilyïŒ@bokuwalilyïŒâ å人éçºè ãClaude Code ã§èªåååºç€ãçµã¿ãªãããiOSã¢ããªãWebãµãŒãã¹ãéç£ããŠããŸã
- AIã§ãå¯ãŠãŠãåãä»çµã¿ããäœã£ãŠæ120äžã«ãã話㯠noteã®ææèšäº ã«ð°
- OSS: github.com/bokuwalily ð
- ææ°æ å ±ã»ãåãåãã㯠X @bokuwalily ãžð
çããã® â€ïž ãã·ã§ã¢ãå±ã¿ã«ãªããŸãïŒ