Brewcode Plugin Update Check, install, and update the brewcode plugin suite (brewcode, brewdoc, brewtools, brewui). Executes all commands in the current Claude Code session — never gives "you should run" instructions. Argument Handling Skill arguments received: | Arg | Behavior | |-----|----------| | (empty) | Interactive — all 6 phases with AskUserQuestion gates | | | Phases 0-2 only (status table), no prompts | | | Phases 0-4, non-interactive "Update all" | | | Phases 0-6 non-interactive | Parse the first token of . Unknown or empty → interactive. Critical Rules - EXECUTE every command in T…

\\n'\"$(read_enabled_plugins \"$GLOBAL_SETTINGS\")\"\nfi\nif [ -f \"$PROJECT_SETTINGS\" ]; then\n enabled_keys+=

Brewcode Plugin Update Check, install, and update the brewcode plugin suite (brewcode, brewdoc, brewtools, brewui). Executes all commands in the current Claude Code session — never gives "you should run" instructions. Argument Handling Skill arguments received: | Arg | Behavior | |-----|----------| | (empty) | Interactive — all 6 phases with AskUserQuestion gates | | | Phases 0-2 only (status table), no prompts | | | Phases 0-4, non-interactive "Update all" | | | Phases 0-6 non-interactive | Parse the first token of . Unknown or empty → interactive. Critical Rules - EXECUTE every command in T…

\\n'\"$(read_enabled_plugins \"$PROJECT_SETTINGS\")\"\nfi\nenabled_keys=$(printf '%s\\n' \"$enabled_keys\" | awk 'NF' | sort -u)\n\n# ---------- walk cache ----------\n\n# Use temp file for portability (macOS bash 3.2 has no associative arrays)\nTMP_ROWS=$(mktemp 2>/dev/null || mktemp -t plugins)\ntrap 'rm -f \"$TMP_ROWS\" \"$TMP_ROWS.final\"' EXIT\n\nif [ -d \"$CACHE_DIR\" ]; then\n while IFS= read -r pj; do\n [ -n \"$pj\" ] || continue\n rel=\"${pj#\"$CACHE_DIR/\"}\"\n market=\"${rel%%/*}\"\n rest=\"${rel#*/}\"\n plugin=\"${rest%%/*}\"\n rest2=\"${rest#*/}\"\n version=\"${rest2%%/*}\"\n [ -n \"$market\" ] && [ -n \"$plugin\" ] && [ -n \"$version\" ] || continue\n [ \"$version\" = \".claude-plugin\" ] && continue\n printf '%s\\t%s\\t%s\\n' \"$plugin\" \"$version\" \"$market\" >> \"$TMP_ROWS\"\n done \u003c \u003c(find \"$CACHE_DIR\" -mindepth 5 -maxdepth 5 -type f -name plugin.json -path '*/.claude-plugin/plugin.json' 2>/dev/null || true)\nfi\n\n# Reduce to highest version per plugin\n: > \"$TMP_ROWS.final\"\nif [ -s \"$TMP_ROWS\" ]; then\n plugins_uniq=$(awk -F'\\t' '{print $1}' \"$TMP_ROWS\" | sort -u)\n for p in $plugins_uniq; do\n # pick highest version for this plugin\n best_line=$(awk -F'\\t' -v p=\"$p\" '$1==p' \"$TMP_ROWS\" \\\n | sort -t

Brewcode Plugin Update Check, install, and update the brewcode plugin suite (brewcode, brewdoc, brewtools, brewui). Executes all commands in the current Claude Code session — never gives "you should run" instructions. Argument Handling Skill arguments received: | Arg | Behavior | |-----|----------| | (empty) | Interactive — all 6 phases with AskUserQuestion gates | | | Phases 0-2 only (status table), no prompts | | | Phases 0-4, non-interactive "Update all" | | | Phases 0-6 non-interactive | Parse the first token of . Unknown or empty → interactive. Critical Rules - EXECUTE every command in T…

\\t' -k2,2V \\\n | tail -n1)\n printf '%s\\n' \"$best_line\" >> \"$TMP_ROWS.final\"\n done\nfi\n\n# ---------- marketplaces ----------\n\nmarketplaces_json=\"[]\"\nif command -v claude >/dev/null 2>&1; then\n # Derive marketplace names from cache dirs (reliable) and also try CLI output.\n if [ -d \"$CACHE_DIR\" ]; then\n cache_markets=$(find \"$CACHE_DIR\" -mindepth 1 -maxdepth 1 -type d 2>/dev/null \\\n | awk -F/ '{print $NF}' \\\n | sort -u)\n if [ -n \"$cache_markets\" ]; then\n marketplaces_json=$(printf '%s\\n' \"$cache_markets\" | jq -R . | jq -s 'unique')\n fi\n fi\nfi\n\n# ---------- build installed JSON ----------\n\ninstalled_json=\"{}\"\nif [ -s \"$TMP_ROWS.final\" ]; then\n tmp_entries=\"\"\n while IFS=

Brewcode Plugin Update Check, install, and update the brewcode plugin suite (brewcode, brewdoc, brewtools, brewui). Executes all commands in the current Claude Code session — never gives "you should run" instructions. Argument Handling Skill arguments received: | Arg | Behavior | |-----|----------| | (empty) | Interactive — all 6 phases with AskUserQuestion gates | | | Phases 0-2 only (status table), no prompts | | | Phases 0-4, non-interactive "Update all" | | | Phases 0-6 non-interactive | Parse the first token of . Unknown or empty → interactive. Critical Rules - EXECUTE every command in T…

\\t' read -r p v m; do\n [ -n \"$p\" ] || continue\n entry=$(jq -nc --arg p \"$p\" --arg v \"$v\" --arg m \"$m\" \\\n '{($p): {version:$v, marketplace:$m}}')\n tmp_entries+=\"${entry}\"

Brewcode Plugin Update Check, install, and update the brewcode plugin suite (brewcode, brewdoc, brewtools, brewui). Executes all commands in the current Claude Code session — never gives "you should run" instructions. Argument Handling Skill arguments received: | Arg | Behavior | |-----|----------| | (empty) | Interactive — all 6 phases with AskUserQuestion gates | | | Phases 0-2 only (status table), no prompts | | | Phases 0-4, non-interactive "Update all" | | | Phases 0-6 non-interactive | Parse the first token of . Unknown or empty → interactive. Critical Rules - EXECUTE every command in T…

\\n'\n done \u003c \"$TMP_ROWS.final\"\n if [ -n \"$tmp_entries\" ]; then\n installed_json=$(printf '%s' \"$tmp_entries\" | jq -s 'add // {}')\n fi\nfi\n\n# ---------- enabled JSON ----------\n\nif [ -z \"$enabled_keys\" ]; then\n enabled_json=\"[]\"\nelse\n enabled_json=$(printf '%s\\n' \"$enabled_keys\" | jq -R . | jq -s .)\nfi\n\n# ---------- emit ----------\n\njq -n \\\n --argjson marketplaces \"$marketplaces_json\" \\\n --argjson enabled \"$enabled_json\" \\\n --argjson installed \"$installed_json\" \\\n --arg cache_dir \"$CACHE_DIR\" \\\n '{marketplaces:$marketplaces, enabledPlugins:$enabled, installed:$installed, cache_dir:$cache_dir}'\n","content_type":"application/x-sh; charset=utf-8","language":"bash","size":4552,"content_sha256":"2e076089814a70f611d27f47c48d58b680992e25e31b9490ae86fa8de4d811c9"},{"filename":"scripts/fetch-latest-versions.sh","content":"#!/usr/bin/env bash\n# fetch-latest-versions.sh\n# Fetches latest versions of brewcode plugin suite from GitHub.\n# Primary: raw plugin.json from main branch.\n# Fallback: gh api release tag_name.\n#\n# Output: JSON {\"brewcode\":\"X.Y.Z\",\"brewdoc\":\"X.Y.Z\",\"brewtools\":\"X.Y.Z\",\"brewui\":\"X.Y.Z\"}\n# On failure for a plugin, value = \"unknown\".\n\nset -uo pipefail\n\nlog() { printf '%s\\n' \"$*\" >&2; }\n\nPLUGINS=(brewcode brewdoc brewtools brewui)\nREPO=\"kochetkov-ma/claude-brewcode\"\nRAW_BASE=\"https://raw.githubusercontent.com/${REPO}/main\"\n\nif ! command -v jq >/dev/null 2>&1; then\n log \"ERROR: jq required\"\n printf '{\"error\":\"jq-missing\"}\\n'\n exit 1\nfi\n\nfetch_release_tag() {\n command -v gh >/dev/null 2>&1 || { printf ''; return; }\n gh api \"repos/${REPO}/releases/latest\" --jq '.tag_name // \"\"' 2>/dev/null | sed 's/^v//'\n}\n\nRELEASE_FALLBACK=\"\"\n\nfetch_version() {\n local plugin=\"$1\"\n local url=\"${RAW_BASE}/${plugin}/.claude-plugin/plugin.json\"\n local body ver\n body=$(curl -sSL --max-time 10 \"$url\" 2>/dev/null || true)\n if [ -n \"$body\" ]; then\n ver=$(printf '%s' \"$body\" | jq -r '.version // \"\"' 2>/dev/null || true)\n if [ -n \"$ver\" ] && [ \"$ver\" != \"null\" ]; then\n printf '%s' \"$ver\"\n return\n fi\n fi\n # fallback: release tag (shared across all 4 plugins in this repo)\n if [ -z \"$RELEASE_FALLBACK\" ]; then\n RELEASE_FALLBACK=$(fetch_release_tag)\n fi\n if [ -n \"$RELEASE_FALLBACK\" ]; then\n printf '%s' \"$RELEASE_FALLBACK\"\n return\n fi\n printf 'unknown'\n}\n\n# Build JSON directly (no associative array — macOS bash 3.2 compat)\nentries=\"\"\nfor p in \"${PLUGINS[@]}\"; do\n v=$(fetch_version \"$p\")\n entries+=$(jq -nc --arg p \"$p\" --arg v \"$v\" '{($p): $v}')\n entries+=

Brewcode Plugin Update Check, install, and update the brewcode plugin suite (brewcode, brewdoc, brewtools, brewui). Executes all commands in the current Claude Code session — never gives "you should run" instructions. Argument Handling Skill arguments received: | Arg | Behavior | |-----|----------| | (empty) | Interactive — all 6 phases with AskUserQuestion gates | | | Phases 0-2 only (status table), no prompts | | | Phases 0-4, non-interactive "Update all" | | | Phases 0-6 non-interactive | Parse the first token of . Unknown or empty → interactive. Critical Rules - EXECUTE every command in T…

\\n'\ndone\nprintf '%s' \"$entries\" | jq -s 'add // {}'\n","content_type":"application/x-sh; charset=utf-8","language":"bash","size":1747,"content_sha256":"e43fa80971d1fe288e7477f7839d1d7fe27453e21170477598e136c3999a9b2c"}],"content_json":{"type":"doc","content":[{"type":"heading","attrs":{"level":1},"content":[{"text":"Brewcode Plugin Update","type":"text"}]},{"type":"blockquote","content":[{"type":"paragraph","content":[{"text":"Check, install, and update the brewcode plugin suite (brewcode, brewdoc, brewtools, brewui). Executes all commands in the current Claude Code session — never gives \"you should run\" instructions.","type":"text"}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Argument Handling","type":"text"}]},{"type":"paragraph","content":[{"text":"Skill arguments received:","type":"text","marks":[{"type":"strong"}]},{"text":" ","type":"text"},{"text":"$ARGUMENTS","type":"text","marks":[{"type":"code_inline"}]}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Arg","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Behavior","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"(empty)","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Interactive — all 6 phases with AskUserQuestion gates","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"check","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Phases 0-2 only (status table), no prompts","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"update","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Phases 0-4, non-interactive \"Update all\"","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"all","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Phases 0-6 non-interactive","type":"text"}]}]}]}]},{"type":"paragraph","content":[{"text":"Parse the first token of ","type":"text"},{"text":"$ARGUMENTS","type":"text","marks":[{"type":"code_inline"}]},{"text":". Unknown or empty → interactive.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Critical Rules","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"EXECUTE every ","type":"text"},{"text":"claude plugin ...","type":"text","marks":[{"type":"code_inline"}]},{"text":" command in THIS session via Bash tool. Show full output.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"NEVER use ","type":"text"},{"text":"claude plugin list","type":"text","marks":[{"type":"code_inline"}]},{"text":" — that subcommand does not exist. Use scripts/discover-plugins.sh.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"NEVER suggest ","type":"text"},{"text":"--plugin-dir","type":"text","marks":[{"type":"code_inline"}]},{"text":" for end users (dev-only).","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"ALWAYS print the reload notice at the end, even on no-op runs.","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"AskUserQuestion: options lists only, no free-text fields.","type":"text"}]}]}]},{"type":"hr","attrs":{"markup":"---"}},{"type":"heading","attrs":{"level":2},"content":[{"text":"Phase 0 — Discover Installed Plugins","type":"text"}]},{"type":"paragraph","content":[{"text":"EXECUTE","type":"text","marks":[{"type":"strong"}]},{"text":" using Bash tool:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"bash \"${CLAUDE_SKILL_DIR}/scripts/discover-plugins.sh\" && echo \"✅ discover OK\" || echo \"❌ discover FAILED\"","type":"text"}]},{"type":"blockquote","content":[{"type":"paragraph","content":[{"text":"STOP if ❌","type":"text","marks":[{"type":"strong"}]},{"text":" — inspect stderr, fix script, retry once. If still fails, report to user and continue without installed data (treat everything as missing).","type":"text"}]}]},{"type":"paragraph","content":[{"text":"Parse the JSON output. Partition into:","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"suite = {brewcode, brewdoc, brewtools, brewui}","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"other = everything else","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"paragraph","content":[{"text":"Read ","type":"text"},{"text":"references/discovery.md","type":"text","marks":[{"type":"link","attrs":{"href":"references/discovery.md","title":null}}]},{"text":" if you need details on how discovery works.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Phase 1 — Fetch Latest Versions","type":"text"}]},{"type":"paragraph","content":[{"text":"EXECUTE","type":"text","marks":[{"type":"strong"}]},{"text":" using Bash tool:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"bash \"${CLAUDE_SKILL_DIR}/scripts/fetch-latest-versions.sh\" && echo \"✅ fetch OK\" || echo \"❌ fetch FAILED\"","type":"text"}]},{"type":"blockquote","content":[{"type":"paragraph","content":[{"text":"STOP if ❌","type":"text","marks":[{"type":"strong"}]},{"text":" — report network issue, mark latest versions as \"unknown\", continue.","type":"text"}]}]},{"type":"paragraph","content":[{"text":"Merge with Phase 0 data.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Phase 2 — Status Table","type":"text"}]},{"type":"paragraph","content":[{"text":"Render markdown table to the user:","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Plugin","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Installed","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Latest","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Status","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"brewcode","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"3.4.51","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"3.4.52","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"⬇️ update","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"brewdoc","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"3.4.51","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"3.4.51","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"✅ current","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"brewtools","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"—","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"3.4.51","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"❌ missing","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"brewui","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"3.4.51","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"3.4.51","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"✅ current","type":"text"}]}]}]}]},{"type":"paragraph","content":[{"text":"Status legend: ✅ current, ⬇️ update available, ❌ missing, ❓ unknown.","type":"text"}]},{"type":"paragraph","content":[{"text":"Also list ","type":"text"},{"text":"other","type":"text","marks":[{"type":"code_inline"}]},{"text":" plugins below with their versions (informational).","type":"text"}]},{"type":"paragraph","content":[{"text":"If arg = ","type":"text","marks":[{"type":"strong"}]},{"text":"check","type":"text","marks":[{"type":"code_inline"},{"type":"strong"}]},{"text":" → STOP here. Skip to Phase 6.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Phase 2b — Token-Cost Table (Optional)","type":"text"}]},{"type":"paragraph","content":[{"text":"Precheck command availability:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"claude plugin details --help >/dev/null 2>&1 && echo \"available\" || echo \"skip\"","type":"text"}]},{"type":"paragraph","content":[{"text":"If unavailable → SKIP this phase entirely (proceed to Phase 3).","type":"text"}]},{"type":"paragraph","content":[{"text":"If available, for each installed suite plugin run:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"claude plugin details \u003cplugin>@claude-brewcode","type":"text"}]},{"type":"paragraph","content":[{"text":"Parse output and render a token-cost table to the user:","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Plugin","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Base Tokens","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"With Skills","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Hooks","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Total","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"brewcode","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"...","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"...","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"...","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"...","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"brewdoc","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"...","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"...","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"...","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"...","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"brewtools","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"...","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"...","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"...","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"...","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"brewui","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"...","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"...","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"...","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"...","type":"text"}]}]}]}]},{"type":"paragraph","content":[{"text":"Column names depend on actual ","type":"text"},{"text":"claude plugin details","type":"text","marks":[{"type":"code_inline"}]},{"text":" output fields — adapt accordingly. If a field is missing, render ","type":"text"},{"text":"—","type":"text","marks":[{"type":"code_inline"}]},{"text":". If the command fails for a specific plugin, render ","type":"text"},{"text":"❓","type":"text","marks":[{"type":"code_inline"}]},{"text":" for that row and continue.","type":"text"}]},{"type":"paragraph","content":[{"text":"Phase is informational only; do not block on errors.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Phase 3 — Install Missing","type":"text"}]},{"type":"paragraph","content":[{"text":"For each missing suite plugin, ask the user via AskUserQuestion (unless arg ∈ {","type":"text"},{"text":"update","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"all","type":"text","marks":[{"type":"code_inline"}]},{"text":"}, then skip installation or auto-install only for ","type":"text"},{"text":"all","type":"text","marks":[{"type":"code_inline"}]},{"text":").","type":"text"}]},{"type":"paragraph","content":[{"text":"AskUserQuestion","type":"text","marks":[{"type":"strong"}]},{"text":" (only in interactive mode, only if missing plugins exist):","type":"text"}]},{"type":"paragraph","content":[{"text":"Question: \"Install missing brewcode plugins?\" Options:","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"\"Install all missing\" — install every missing suite plugin","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"\"Install selected\" — ask per-plugin","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"\"Skip install\" — proceed to updates","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"If \"Install selected\" — ask per plugin with options ","type":"text"},{"text":"[\"Install\", \"Skip\"]","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]},{"type":"paragraph","content":[{"text":"EXECUTE","type":"text","marks":[{"type":"strong"}]},{"text":" (idempotent — re-adding marketplace is safe):","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"claude plugin marketplace add https://github.com/kochetkov-ma/claude-brewcode && echo \"✅ marketplace add OK\" || echo \"⚠️ marketplace add warning (may already exist)\"","type":"text"}]},{"type":"paragraph","content":[{"text":"Then for each plugin to install:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"claude plugin install \u003cplugin>@claude-brewcode && echo \"✅ install \u003cplugin> OK\" || echo \"❌ install \u003cplugin> FAILED\"","type":"text"}]},{"type":"paragraph","content":[{"text":"Show full output of each command to the user.","type":"text"}]},{"type":"paragraph","content":[{"text":"Reference prompt for multi-command recovery: ","type":"text"},{"text":"references/install-prompt.md","type":"text","marks":[{"type":"link","attrs":{"href":"references/install-prompt.md","title":null}}]},{"text":".","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Phase 4 — Update Outdated","type":"text"}]},{"type":"paragraph","content":[{"text":"AskUserQuestion","type":"text","marks":[{"type":"strong"}]},{"text":" (only interactive; ","type":"text"},{"text":"update","type":"text","marks":[{"type":"code_inline"}]},{"text":" and ","type":"text"},{"text":"all","type":"text","marks":[{"type":"code_inline"}]},{"text":" auto-pick \"Update all\"):","type":"text"}]},{"type":"paragraph","content":[{"text":"Question: \"Update brewcode plugin suite?\" Options:","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"\"Update all\" — full chain (marketplace + all 4 plugins)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"\"Update suite only\" — same as \"all\" (alias)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"\"Update selected\" — ask per-plugin","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"\"Skip updates\" — proceed to Phase 5","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"EXECUTE","type":"text","marks":[{"type":"strong"}]},{"text":" full chain in order, showing output of each:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"claude plugin marketplace update claude-brewcode && echo \"✅ marketplace update OK\" || echo \"❌ marketplace update FAILED\"","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"claude plugin update brewcode@claude-brewcode && echo \"✅ brewcode update OK\" || echo \"❌ brewcode update FAILED\"","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"claude plugin update brewdoc@claude-brewcode && echo \"✅ brewdoc update OK\" || echo \"❌ brewdoc update FAILED\"","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"claude plugin update brewtools@claude-brewcode && echo \"✅ brewtools update OK\" || echo \"❌ brewtools update FAILED\"","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"claude plugin update brewui@claude-brewcode && echo \"✅ brewui update OK\" || echo \"❌ brewui update FAILED\"","type":"text"}]},{"type":"paragraph","content":[{"text":"If any step fails, report exact error and continue with remaining steps. Reference: ","type":"text"},{"text":"references/update-commands.md","type":"text","marks":[{"type":"link","attrs":{"href":"references/update-commands.md","title":null}}]},{"text":", ","type":"text"},{"text":"references/update-prompt.md","type":"text","marks":[{"type":"link","attrs":{"href":"references/update-prompt.md","title":null}}]},{"text":".","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Phase 5 — Auto-Update Toggle (Optional)","type":"text"}]},{"type":"paragraph","content":[{"text":"Skip for arg ∈ {","type":"text","marks":[{"type":"strong"}]},{"text":"check","type":"text","marks":[{"type":"code_inline"},{"type":"strong"}]},{"text":", ","type":"text","marks":[{"type":"strong"}]},{"text":"update","type":"text","marks":[{"type":"code_inline"},{"type":"strong"}]},{"text":"}.","type":"text","marks":[{"type":"strong"}]},{"text":" Only interactive or ","type":"text"},{"text":"all","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]},{"type":"paragraph","content":[{"text":"Per Claude Code docs, third-party marketplace auto-update is OFF by default and toggled per-marketplace via ","type":"text"},{"text":"/plugin","type":"text","marks":[{"type":"code_inline"}]},{"text":" UI → Marketplaces → claude-brewcode. The exact settings.json key is unverified — see ","type":"text"},{"text":"references/autoupdate-research.md","type":"text","marks":[{"type":"link","attrs":{"href":"references/autoupdate-research.md","title":null}}]},{"text":".","type":"text"}]},{"type":"paragraph","content":[{"text":"AskUserQuestion","type":"text","marks":[{"type":"strong"}]},{"text":" (interactive only):","type":"text"}]},{"type":"paragraph","content":[{"text":"Question: \"Enable auto-update for claude-brewcode marketplace?\" Options:","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"\"Enable via /plugin UI\" — instruct user to open ","type":"text"},{"text":"/plugin","type":"text","marks":[{"type":"code_inline"}]},{"text":" → Marketplaces → claude-brewcode → toggle auto-update","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"\"Skip\" — leave current setting","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"Do NOT patch settings.json blindly — the key is unverified. Tell the user to toggle via ","type":"text"},{"text":"/plugin","type":"text","marks":[{"type":"code_inline"}]},{"text":" UI.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Phase 5b — Prune Stale Plugin Caches","type":"text"}]},{"type":"paragraph","content":[{"text":"EXECUTE","type":"text","marks":[{"type":"strong"}]},{"text":" using Bash tool:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"claude plugin prune --help >/dev/null 2>&1 && claude plugin prune || echo \"skipped: claude plugin prune unavailable\"","type":"text"}]},{"type":"paragraph","content":[{"text":"Cleans stale plugin caches left behind by older versions. Non-fatal: if the CLI lacks ","type":"text"},{"text":"prune","type":"text","marks":[{"type":"code_inline"}]},{"text":", the ","type":"text"},{"text":"||","type":"text","marks":[{"type":"code_inline"}]},{"text":" fallback prints a skip notice and continues.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Phase 6 — Reload Notice & Final Report","type":"text"}]},{"type":"paragraph","content":[{"text":"ALWAYS print","type":"text","marks":[{"type":"strong"}]},{"text":" the contents of ","type":"text"},{"text":"references/reload-notice.md","type":"text","marks":[{"type":"link","attrs":{"href":"references/reload-notice.md","title":null}}]},{"text":":","type":"text"}]},{"type":"blockquote","content":[{"type":"paragraph","content":[{"text":"⚠️ ","type":"text"},{"text":"Reload plugins to activate updates.","type":"text","marks":[{"type":"strong"}]},{"text":" Preferred: run ","type":"text"},{"text":"/reload-plugins","type":"text","marks":[{"type":"code_inline"}]},{"text":" in this session. Fallback: type ","type":"text"},{"text":"exit","type":"text","marks":[{"type":"code_inline"}]},{"text":", then run ","type":"text"},{"text":"claude","type":"text","marks":[{"type":"code_inline"}]},{"text":" again.","type":"text"}]}]},{"type":"paragraph","content":[{"text":"Then print a final summary:","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Plugins installed this run: [...]","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Plugins updated this run: [...]","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Plugins skipped: [...]","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Errors encountered: [...]","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"Done.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"\u003c!-- W3-T8 research note: Marketplace auto-update settings.json key not confirmed in CC docs as of 2026-05-12. Continue using UI guidance. Re-investigate when CC adds documented marketplace.autoUpdate setting. -->","type":"text"}]}]},"metadata":{"date":"2026-06-05","name":"brewtools:plugin-update","model":"sonnet","author":"@skillopedia","source":{"stars":27,"repo_name":"claude-brewcode","origin_url":"https://github.com/kochetkov-ma/claude-brewcode/blob/HEAD/brewtools/skills/plugin-update/SKILL.md","repo_owner":"kochetkov-ma","body_sha256":"265839ad46f8a3255d29e322ef0f436332da52469326fa4563e340ae2e63fa2f","cluster_key":"0c9a1ddbdd3e68a5b3e006e358179df32b4b61dfbab0f921fa221101fc0d6d51","clean_bundle":{"format":"clean-skill-bundle-v1","source":"kochetkov-ma/claude-brewcode/brewtools/skills/plugin-update/SKILL.md","attachments":[{"id":"e25ed974-784e-5ce5-ba7f-49589d7d1600","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/e25ed974-784e-5ce5-ba7f-49589d7d1600/attachment.md","path":"README.md","size":5154,"sha256":"9d38cbe3b7c286eec2a693e0c6e8cd1b5b97dfaf3eb7816a80f91c87af1d0a4b","contentType":"text/markdown; charset=utf-8"},{"id":"9e527482-3064-5d1d-b616-2174e6530e8f","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/9e527482-3064-5d1d-b616-2174e6530e8f/attachment.md","path":"references/autoupdate-research.md","size":1464,"sha256":"9354673ca75c2094d1b496daf303624ca17a895233a52212bebd500a619b1c93","contentType":"text/markdown; charset=utf-8"},{"id":"5dd1b40b-6370-5feb-b47d-b9102ab634a8","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/5dd1b40b-6370-5feb-b47d-b9102ab634a8/attachment.md","path":"references/discovery.md","size":1452,"sha256":"c77d07f62069d0f4b62464fa1d2a58fb2e47de137ee5de569757d4412842f416","contentType":"text/markdown; charset=utf-8"},{"id":"c7aec437-ef12-5044-a068-1a632e3ed8bd","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/c7aec437-ef12-5044-a068-1a632e3ed8bd/attachment.md","path":"references/install-prompt.md","size":572,"sha256":"f27778b7804e38312165301f5807d797ce4c1991a03eb1121767f461d1cf78bb","contentType":"text/markdown; charset=utf-8"},{"id":"2c19a03b-39b3-52ad-952b-c8f7c756a095","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/2c19a03b-39b3-52ad-952b-c8f7c756a095/attachment.md","path":"references/reload-notice.md","size":163,"sha256":"6f6e568b7a2f6dc2f75962a603cdd4fe397a02c59f96d0c5744cc3be7299fa06","contentType":"text/markdown; charset=utf-8"},{"id":"66d1cfaa-9c9d-503d-be09-820a78e7be65","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/66d1cfaa-9c9d-503d-be09-820a78e7be65/attachment.md","path":"references/update-commands.md","size":1355,"sha256":"9b6cb6470e59e2959d1a11a15b1f99b8be4b96a2e08a1f5461f35d07115054f9","contentType":"text/markdown; charset=utf-8"},{"id":"7935ef52-91f8-5630-b59a-e97f4d37d32d","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/7935ef52-91f8-5630-b59a-e97f4d37d32d/attachment.md","path":"references/update-prompt.md","size":539,"sha256":"6488c4b0030c1834a07d3f5227db2a7cfbdf8d239596e141749690258c9f2b15","contentType":"text/markdown; charset=utf-8"},{"id":"d77b39d3-3992-5530-8e3c-b236453ad300","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/d77b39d3-3992-5530-8e3c-b236453ad300/attachment.sh","path":"scripts/discover-plugins.sh","size":4552,"sha256":"2e076089814a70f611d27f47c48d58b680992e25e31b9490ae86fa8de4d811c9","contentType":"application/x-sh; charset=utf-8"},{"id":"6bc76220-1f73-59b0-8bc7-019715565355","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/6bc76220-1f73-59b0-8bc7-019715565355/attachment.sh","path":"scripts/fetch-latest-versions.sh","size":1747,"sha256":"e43fa80971d1fe288e7477f7839d1d7fe27453e21170477598e136c3999a9b2c","contentType":"application/x-sh; charset=utf-8"}],"bundle_sha256":"584004189666ae30bdde42c41b127581a05e5f4c042d81d9bd30e19707d941b1","attachment_count":9,"text_attachments":9,"attachment_storage":"skillopedia-attachments-v1","binary_attachments":0,"excluded_attachments":[]},"cluster_size":1,"skill_md_path":"brewtools/skills/plugin-update/SKILL.md","import_metadata":{"date":"2026-06-05","author":"@skillopedia","version":"v1","category":"finance-legal-compliance","category_label":"Finance"},"exact_dupes_collapsed_into_this":0},"version":"v1","category":"finance-legal-compliance","import_tag":"clean-skills-v1","description":"Checks installed Claude Code plugins, installs missing brewcode plugins, updates outdated ones, reports versions. Triggers - \"update plugins\", \"check plugin versions\", \"обнови плагины\", \"установить бриукод\", \"plugin update\", \"marketplace update\".","allowed-tools":"Read, Bash, AskUserQuestion, Write, WebFetch","argument-hint":"[check|update|all] — no args = interactive. check = status only, update = prompt to update, all = everything non-interactive","user-invocable":true}},"renderedAt":1782986365887}

Brewcode Plugin Update Check, install, and update the brewcode plugin suite (brewcode, brewdoc, brewtools, brewui). Executes all commands in the current Claude Code session — never gives "you should run" instructions. Argument Handling Skill arguments received: | Arg | Behavior | |-----|----------| | (empty) | Interactive — all 6 phases with AskUserQuestion gates | | | Phases 0-2 only (status table), no prompts | | | Phases 0-4, non-interactive "Update all" | | | Phases 0-6 non-interactive | Parse the first token of . Unknown or empty → interactive. Critical Rules - EXECUTE every command in T…