mirror of
https://github.com/kochetkov-ma/claude-brewcode.git
synced 2026-09-14 20:16:41 +08:00
v3.10.0: sync CC 2.1.144-2.1.173, shorten descriptions, deep-compress LLM docs, fix false plugin-list/nesting/Stop claims
This commit is contained in:
@@ -6,13 +6,13 @@
|
||||
},
|
||||
"metadata": {
|
||||
"description": "Claude Code plugin suite: brewcode for infinite task execution, brewdoc for documentation tools, brewtools for text utilities, brewui for UI/visual/creative tools",
|
||||
"version": "3.9.2"
|
||||
"version": "3.10.0"
|
||||
},
|
||||
"plugins": [
|
||||
{
|
||||
"name": "brewcode",
|
||||
"description": "Brewcode - full-featured development platform for Claude Code: infinite focus tasks, prompt optimization, skill/agent creation, quorum reviews, rules management",
|
||||
"version": "3.9.2",
|
||||
"version": "3.10.0",
|
||||
"category": "productivity",
|
||||
"keywords": [
|
||||
"brewcode",
|
||||
@@ -46,7 +46,7 @@
|
||||
{
|
||||
"name": "brewdoc",
|
||||
"description": "Brewdoc - Claude Code documentation tools: auto-sync for skills/agents/rules, my-claude installation docs, memory optimization, md-to-pdf conversion",
|
||||
"version": "3.9.2",
|
||||
"version": "3.10.0",
|
||||
"category": "productivity",
|
||||
"keywords": [
|
||||
"brewdoc",
|
||||
@@ -74,7 +74,7 @@
|
||||
{
|
||||
"name": "brewtools",
|
||||
"description": "Brewtools - universal utilities for Claude Code: text optimization, humanization, secrets scanning",
|
||||
"version": "3.9.2",
|
||||
"version": "3.10.0",
|
||||
"category": "productivity",
|
||||
"keywords": [
|
||||
"brewtools",
|
||||
@@ -102,7 +102,7 @@
|
||||
{
|
||||
"name": "brewui",
|
||||
"description": "Brewui - UI/visual/creative tools for Claude Code: AI image generation, design-to-code conversion",
|
||||
"version": "3.9.2",
|
||||
"version": "3.10.0",
|
||||
"category": "productivity",
|
||||
"keywords": [
|
||||
"brewui",
|
||||
|
||||
@@ -2,6 +2,52 @@
|
||||
|
||||
---
|
||||
|
||||
## v3.10.0 (2026-06-11)
|
||||
|
||||
> Docs: [brewcode/agents/skill-creator](https://doc-claude.brewcode.app/brewcode/agents/skill-creator/) | [brewcode/agents/agent-creator](https://doc-claude.brewcode.app/brewcode/agents/agent-creator/) | [brewcode/agents/hook-creator](https://doc-claude.brewcode.app/brewcode/agents/hook-creator/) | [brewcode/hooks](https://doc-claude.brewcode.app/brewcode/hooks/) | [brewtools/skills/plugin-update](https://doc-claude.brewcode.app/brewtools/skills/plugin-update/) | [faq](https://doc-claude.brewcode.app/faq/) | [installation](https://doc-claude.brewcode.app/installation/)
|
||||
|
||||
> **Theme:** sync the plugin suite with Claude Code 2.1.144-2.1.173 — remove false platform claims, document new features, shorten skill/agent descriptions, and deep-compress LLM-facing docs.
|
||||
|
||||
### repo
|
||||
|
||||
#### Fixed
|
||||
- **plugin list claim was false:** the suite documented that `claude plugin list` does not exist. It has existed since CC 2.1.163. `brewtools:plugin-update` now uses `claude plugin list --json` as the **primary** discovery path (objects: `id, version, scope, enabled, installPath, installedAt, lastUpdated, mcpServers?`; `version` may be `"unknown"`; prefix `unset CLAUDECODE &&` inside a session). `discover-plugins.sh` is kept as the **fallback** for CC < 2.1.163. Fixed in SKILL.md, references, README, `faq.mdx`, `installation.mdx`, and the plugin-update MDX page.
|
||||
- **"subagents cannot spawn subagents" was false:** CC 2.1.172 allows nesting up to 5 levels. Corrected in `CLAUDE.md`, `agent-creator`, `skill-creator`, guide refs, and MDX. Framed correctly: CC allows it, but the **brewcode workflow** still requires spawning from the main conversation (the 2-step report protocol binds the lock to one session and delivers report/coordinator instructions there; nested spawns bypass session binding, KNOWLEDGE injection, and the coordinator loop).
|
||||
- **"Stop additionalContext does nothing" was false:** Stop and SubagentStop hooks support `hookSpecificOutput.additionalContext` since CC 2.1.163. Corrected in `hook-creator` and `hooks.mdx`.
|
||||
|
||||
### brewcode
|
||||
|
||||
#### Added
|
||||
- **CC 2.1.144-2.1.173 platform facts** across creator agents: `disallowed-tools` skill frontmatter (2.1.152), `/reload-skills` (2.1.152), root-level `SKILL.md` with no `skills/` subdir (2.1.142), `MessageDisplay` hook event (2.1.152), SessionStart `reloadSkills` / `sessionTitle` outputs (2.1.152), `--safe-mode` / `CLAUDE_CODE_SAFE_MODE` and `disableBundledSkills` / `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` (2.1.169), post-session hook (2.1.169, self-hosted runner only — NOT a hooks.json event), and **Fable 5** (`claude-fable-5`, Mythos-class above Opus, CC 2.1.170) added to agent model lists.
|
||||
- **session-start hook sets sessionTitle:** `session-start.mjs` now sets `hookSpecificOutput.sessionTitle` to the active brewcode task name when a task lock exists (CC 2.1.152; ignored by older CC).
|
||||
|
||||
#### Changed
|
||||
- **Shorter skill/agent descriptions:** every skill description trimmed to <= 120 chars (optimal ~100) and every agent description to <= 100 chars (optimal ~80), keeping the strongest distinct trigger keywords (EN + RU where present). `<example>` blocks removed from creator-agent frontmatter. The skill/agent generators (skill-creator, agent-creator, `skills`, `agents`, `teams`, `setup`, `e2e`) now emit descriptions within these caps.
|
||||
|
||||
### Optimization
|
||||
|
||||
#### Changed
|
||||
- **Deep/standard token compression of LLM-facing docs.** Top files compressed (chars, deep batch + key agents):
|
||||
|
||||
| File | Before | After | Saved |
|
||||
|------|--------|-------|-------|
|
||||
| brewcode/docs/flow.md | ~72.3K | ~57.5K | -20% |
|
||||
| brewcode/docs/grepai.md | ~49.2K | ~16.8K | -66% |
|
||||
| brewcode/docs/commands.md | ~39.4K | ~17.5K | -55% |
|
||||
| brewcode/docs/hooks.md | ~30.7K | ~12.5K | -58% |
|
||||
| brewcode/agents/skill-creator.md | ~50.8K | ~38.6K | -25% |
|
||||
| brewcode/agents/hook-creator.md | ~44.8K | ~26.2K | -43% |
|
||||
| brewcode/agents/agent-creator.md | ~30.1K | ~21.8K | -23% |
|
||||
| brewui/skills/glm-design-to-code/SKILL.md | ~34.4K | ~21.5K | -37% |
|
||||
|
||||
Plus standard-mode passes on the remaining top-25 + Phase 1-2 touched files. Deep+key set: ~430.9K -> ~330.8K chars (~25K tokens, **-23%**). Frontmatter and all facts preserved; every compressed file passed a comprehension gate (32/32 questions) and path-existence check.
|
||||
|
||||
### Next (deferred)
|
||||
- `MessageDisplay` hook adoption in brewcode hooks (2.1.152) — documented, not yet wired.
|
||||
- Nested subagents inside the brewcode workflow (2.1.172) — requires session-aware lock handling in `pre-task.mjs`/`post-task.mjs` first.
|
||||
|
||||
---
|
||||
|
||||
## v3.9.2 (2026-05-16)
|
||||
|
||||
### repo
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "brewcode",
|
||||
"version": "3.9.2",
|
||||
"version": "3.10.0",
|
||||
"description": "Brewcode - full-featured development platform for Claude Code: infinite focus tasks, prompt optimization, skill/agent creation, quorum reviews, rules management",
|
||||
"author": {
|
||||
"name": "Maksim Kochetkov",
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
|
||||
| Field | Value |
|
||||
|-------|-------|
|
||||
| Version | 3.9.2 |
|
||||
| Version | 3.10.0 |
|
||||
| Skills | 15 |
|
||||
| Agents | 12+ |
|
||||
| Hooks | 8 |
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "claude-plugin-brewcode",
|
||||
"version": "3.9.2",
|
||||
"version": "3.10.0",
|
||||
"description": "Infinite task execution with automatic handoff for Claude Code",
|
||||
"keywords": [
|
||||
"claude-code",
|
||||
@@ -36,6 +36,6 @@
|
||||
},
|
||||
"claude-plugin": {
|
||||
"name": "brewcode",
|
||||
"version": "3.9.2"
|
||||
"version": "3.10.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "brewdoc",
|
||||
"version": "3.9.2",
|
||||
"version": "3.10.0",
|
||||
"description": "Brewdoc - Claude Code documentation tools: auto-sync for skills/agents/rules, my-claude installation docs, memory optimization",
|
||||
"author": {
|
||||
"name": "Maksim Kochetkov",
|
||||
|
||||
@@ -109,7 +109,7 @@ if [ ! -f "$HISTORY_FILE" ]; then
|
||||
cat > "$HISTORY_FILE" <<'HEADER'
|
||||
# brewpage.app — Published Pages
|
||||
|
||||
> Owner tokens allow delete (no in-place PUT for sites; html/json/kv support PUT). Keep this file private.
|
||||
> Owner tokens allow delete and in-place republish (html/json/kv/sites all support PUT). Keep this file private.
|
||||
> Delete: `curl -s -X DELETE "https://brewpage.app/api/{ns}/{id}" -H "X-Owner-Token: TOKEN"`
|
||||
|
||||
| Date | URL | Owner Token | TTL | Type |
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "brewtools",
|
||||
"version": "3.9.2",
|
||||
"version": "3.10.0",
|
||||
"description": "Brewtools - universal utilities for Claude Code: text optimization, humanization, secrets scanning",
|
||||
"author": {
|
||||
"name": "Maksim Kochetkov",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "brewui",
|
||||
"version": "3.9.2",
|
||||
"version": "3.10.0",
|
||||
"description": "Brewui - UI/visual/creative tools for Claude Code: AI image generation, design-to-code conversion",
|
||||
"author": {
|
||||
"name": "Maksim Kochetkov",
|
||||
|
||||
@@ -52,7 +52,7 @@ import { Callout, Card, CardGrid, Steps, UpdateNotice } from '../../../../compon
|
||||
<li>
|
||||
<div>
|
||||
<strong>Clarify intent</strong>
|
||||
<p>Asks 2-3 targeted questions: desired role, allowed tools, model tier (opus / sonnet / haiku). For improvement requests, reads the existing agent file first.</p>
|
||||
<p>Asks 2-3 targeted questions: desired role, allowed tools, model tier (fable / opus / sonnet / haiku). For improvement requests, reads the existing agent file first.</p>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
@@ -94,7 +94,7 @@ import { Callout, Card, CardGrid, Steps, UpdateNotice } from '../../../../compon
|
||||
---
|
||||
name: agent-name # REQ: [a-z0-9-]+
|
||||
description: "..." # REQ: action verb + Triggers: keyword list
|
||||
model: sonnet # OPT: sonnet|opus|haiku|inherit
|
||||
model: sonnet # OPT: fable|opus|sonnet|haiku|inherit (fable=claude-fable-5, Mythos-class, CC 2.1.170+)
|
||||
effort: high # OPT: low|medium|high|auto (plugin agents, v2.1.78+)
|
||||
maxTurns: 20 # OPT: integer (plugin agents, v2.1.78+)
|
||||
tools: Read, Glob, Grep # OPT: omit = inherit all
|
||||
@@ -123,7 +123,7 @@ Description patterns by ambiguity level:
|
||||
| Some — 1-2 other agents | Single-line + detailed Triggers | `"Creates bash scripts. Triggers: create script, bash script, shell script"` |
|
||||
| High — creator/meta agents | Multi-line + 2-3 `<example>` blocks | See agent-creator.md source |
|
||||
|
||||
Subagent spawn constraint: subagents run in `SubAgentLoop` which excludes `AgentTool`. Nesting is not possible by design — chain from the main conversation instead.
|
||||
Subagent spawn constraint: CC 2.1.172 allows nested subagent spawning up to 5 levels deep. However, brewcode workflow requires spawning only from the main conversation — the 2-step report protocol (`post-task.mjs`) binds the task lock to one session and delivers report/coordinator instructions back to the spawning conversation. Nested spawns bypass session binding, `KNOWLEDGE` injection, and the coordinator loop. This is a **brewcode workflow policy**, not a Claude Code platform limitation.
|
||||
|
||||
Known active bugs: [#29423](https://github.com/anthropics/claude-code/issues/29423) (subagents skip CLAUDE.md), [#27736](https://github.com/anthropics/claude-code/issues/27736) (`skills:` in plugin agents), [#31392](https://github.com/anthropics/claude-code/issues/31392) (global agents not discovered in v2.1.70+).
|
||||
</details>
|
||||
|
||||
@@ -8,11 +8,11 @@ import { Badge, Callout, Card, CardGrid, Steps, UpdateNotice } from '../../../..
|
||||
# Hook Creator
|
||||
|
||||
<Callout type="caution">
|
||||
**Hooks fail silently when the wrong output channel is used.** `additionalContext` on a `Stop` event does nothing — Claude never sees it. `decision:"block"` on `PostToolUse` is not a valid field. Getting the event-to-channel mapping wrong means the hook runs and produces zero effect, with no error to debug.
|
||||
**Hooks fail silently when the wrong output channel is used.** On `Stop` and `SubagentStop`, use `hookSpecificOutput.additionalContext` to give Claude feedback and keep the turn going — plain `additionalContext` at the top level is not the correct channel for those events. `decision:"block"` on `PostToolUse` is not a valid field. Getting the event-to-channel mapping wrong means the hook runs and produces zero effect, with no error to debug.
|
||||
</Callout>
|
||||
|
||||
<Callout type="tip">
|
||||
**hook-creator knows all 26 events, 4 hook types, and the full routing matrix.** Describe what you want in plain language — it picks the right event, output channel, and schema, then delivers a working file with fail-safe error handling included.
|
||||
**hook-creator knows all 27 events, 4 hook types, and the full routing matrix.** Describe what you want in plain language — it picks the right event, output channel, and schema, then delivers a working file with fail-safe error handling included.
|
||||
</Callout>
|
||||
|
||||
## Quick reference
|
||||
@@ -60,7 +60,7 @@ import { Badge, Callout, Card, CardGrid, Steps, UpdateNotice } from '../../../..
|
||||
<li>
|
||||
<div>
|
||||
<strong>Select event and channel</strong>
|
||||
<p>Applies the routing matrix — picks the correct event from 26 options and the right output channel (<code>additionalContext</code>, <code>updatedInput</code>, <code>permissionDecision</code>, <code>decision</code>) for your goal. Wrong channel = silent failure, so this step is non-negotiable.</p>
|
||||
<p>Applies the routing matrix — picks the correct event from 27 options and the right output channel (<code>additionalContext</code>, <code>updatedInput</code>, <code>permissionDecision</code>, <code>decision</code>, <code>hookSpecificOutput</code>) for your goal. Wrong channel = silent failure, so this step is non-negotiable.</p>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
@@ -94,25 +94,28 @@ import { Badge, Callout, Card, CardGrid, Steps, UpdateNotice } from '../../../..
|
||||
| Inject into subagent prompt | `updatedInput.prompt` | PreToolUse (matcher: Task) |
|
||||
| Block tool execution | `permissionDecision:"deny"` | PreToolUse |
|
||||
| Block session stop | `decision:"block"` + `reason` | Stop |
|
||||
| Give Claude feedback at stop (keep turn going) | `hookSpecificOutput.additionalContext` | Stop, SubagentStop |
|
||||
| Post-tool feedback | `additionalContext` | PostToolUse |
|
||||
| Modify tool parameters | `updatedInput` | PreToolUse |
|
||||
| Show user warning (Claude does NOT see) | `systemMessage` | Any |
|
||||
| Auto-allow permission | `decision.behavior:"allow"` | PermissionRequest |
|
||||
| Control teammates | `{continue, stopReason}` JSON | TeammateIdle, TaskCompleted, TaskCreated |
|
||||
| Re-scan skill dirs on startup | `reloadSkills: true` | SessionStart (CC 2.1.152) |
|
||||
| Set session title on startup/resume | `hookSpecificOutput.sessionTitle` | SessionStart (CC 2.1.152) |
|
||||
|
||||
### All 26 events
|
||||
### All 27 events
|
||||
|
||||
| Event | Blocking? | Key use |
|
||||
|-------|-----------|---------|
|
||||
| SessionStart | No | Context injection on start/resume |
|
||||
| SessionStart | No | Context injection on start/resume; supports `reloadSkills` and `sessionTitle` outputs (CC 2.1.152) |
|
||||
| UserPromptSubmit | Yes | Gate or modify user prompts |
|
||||
| PreToolUse | Yes | Allow / deny / modify tool calls |
|
||||
| PermissionRequest | Yes | Auto-allow or auto-deny permission dialogs |
|
||||
| PostToolUse | No | Feedback after tool completes |
|
||||
| PostToolUseFailure | No | React to failed tool call |
|
||||
| SubagentStart | No | Inject into subagent context |
|
||||
| SubagentStop | Yes | Block subagent exit |
|
||||
| Stop | Yes | Block session exit until condition met |
|
||||
| SubagentStop | Yes | Block subagent exit; supports `additionalContext` to give Claude feedback |
|
||||
| Stop | Yes | Block session exit until condition met; supports `additionalContext` to give Claude feedback (CC 2.1.163) |
|
||||
| PreCompact | No | Write handoff before auto-compact |
|
||||
| PostCompact | No | React after compact |
|
||||
| Notification | No | Log or react to notifications |
|
||||
@@ -130,6 +133,7 @@ import { Badge, Callout, Card, CardGrid, Steps, UpdateNotice } from '../../../..
|
||||
| ElicitationResult | Yes | Post-elicitation hook |
|
||||
| SessionEnd | No | Cleanup on session close |
|
||||
| PermissionDenied | Yes | Retry after auto-mode denial (v2.1.89+) |
|
||||
| MessageDisplay | No | Transform or hide assistant message text as it is displayed to the user (CC 2.1.152) |
|
||||
|
||||
### Hook types
|
||||
|
||||
@@ -144,6 +148,26 @@ import { Badge, Callout, Card, CardGrid, Steps, UpdateNotice } from '../../../..
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Troubleshooting flags and environment variables (expand)</summary>
|
||||
|
||||
### Safe mode and bundled skills
|
||||
|
||||
| Flag / Env var | Effect |
|
||||
|----------------|--------|
|
||||
| `--safe-mode` or `CLAUDE_CODE_SAFE_MODE=1` | Starts CC with ALL customizations disabled: CLAUDE.md, plugins, skills, hooks, MCP servers. Use to isolate whether a hook is causing a startup problem. (CC 2.1.169) |
|
||||
| `--disable-bundled-skills` or `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS=1` | Hides all bundled skills, workflows, and built-in commands without disabling plugins or hooks. Useful when a bundled skill name collides with a project skill. |
|
||||
|
||||
<Callout type="tip">
|
||||
`--safe-mode` is also the fastest way to verify a hook regression: if the problem disappears in safe mode, the hook is the cause.
|
||||
</Callout>
|
||||
|
||||
### Post-session lifecycle hook
|
||||
|
||||
A **post-session lifecycle hook** runs after a session ends and before the workspace is deleted. This is **NOT a hooks.json event** — do not add it to `hooks.json`; it will be silently ignored. It is available only on **self-hosted runners** as a workspace lifecycle callback configured at the runner level. (CC 2.1.169)
|
||||
|
||||
</details>
|
||||
|
||||
<CardGrid>
|
||||
<Card title="Brewcode overview" icon="document" href="/brewcode/">
|
||||
All brewcode agents and skills — hooks live here in the plugin's hooks/ directory.
|
||||
|
||||
@@ -20,7 +20,7 @@ import { Badge, Callout, Card, CardGrid, Steps, UpdateNotice } from '../../../..
|
||||
| Field | Value |
|
||||
|-------|-------|
|
||||
| Trigger | "create skill", "new skill", "skill doesn't invoke", "improve skill", "fix skill trigger" |
|
||||
| Model | opus |
|
||||
| Model | opus (default); `claude-fable-5` for Mythos-class tasks (CC 2.1.170+) |
|
||||
| Tools | Read, Write, Edit, Glob, Grep, Bash, Task, Skill, AskUserQuestion |
|
||||
|
||||
## When to use
|
||||
@@ -146,9 +146,10 @@ Common mistakes: multiline `|` (truncated at 250 chars since v2.1.84), missing `
|
||||
| `user-invocable` | true/false | `false` = hide from menu, Claude-only |
|
||||
| `context` | `fork` | Isolated subagent, fresh context |
|
||||
| `agent` | Explore, Plan, general-purpose, developer | With `context: fork` |
|
||||
| `model` | opus, sonnet, haiku | Based on complexity |
|
||||
| `model` | opus, sonnet, haiku, `claude-fable-5` | Based on complexity; Fable 5 (Mythos-class) available since CC 2.1.170 — above Opus tier |
|
||||
| `effort` | low, medium, high, max, auto | v2.1.80+ |
|
||||
| `allowed-tools` | tool list | Minimal set |
|
||||
| `disallowed-tools` | tool list | Removes tools while the skill is active (CC 2.1.152) |
|
||||
| `argument-hint` | string | Autocomplete hint |
|
||||
| `once` | true/false | Fire once per session |
|
||||
|
||||
@@ -179,6 +180,12 @@ Replace ARGS_HERE with the actual value from above.
|
||||
| `context: fork` | 1–4 | Works well, context isolated |
|
||||
| `context: fork` | 5+ | Memory loss — forgets task structure, skips phases |
|
||||
|
||||
### Additional skill facts (CC 2.1.142+)
|
||||
|
||||
Root-level `SKILL.md`: a plugin with a `SKILL.md` at the plugin root (no `skills/` subdirectory) is surfaced as a skill automatically since CC 2.1.142. Useful for single-skill plugins.
|
||||
|
||||
`/reload-skills` re-scans skill directories without restarting the session (CC 2.1.152). Use this after editing or adding a `SKILL.md` — no session restart needed.
|
||||
|
||||
### Known bugs
|
||||
|
||||
| Issue | Impact | Workaround |
|
||||
@@ -189,6 +196,10 @@ Replace ARGS_HERE with the actual value from above.
|
||||
| [#17417](https://github.com/anthropics/claude-code/issues/17417) | `skill.md` (lowercase) silently ignored | Use `SKILL.md` (uppercase) |
|
||||
| [#10768](https://github.com/anthropics/claude-code/issues/10768) | Auto-activation 20–50% (NOT PLANNED) | Optimize description or use `/name` |
|
||||
|
||||
### Subagent spawn constraint
|
||||
|
||||
CC 2.1.172 allows nested subagent spawning up to 5 levels deep. However, brewcode workflow requires spawning only from the main conversation — the 2-step report protocol (`post-task.mjs`) binds the task lock to one session and delivers report/coordinator instructions back to the spawning conversation. Nested spawns bypass session binding, `KNOWLEDGE` injection, and the coordinator loop. This is a **brewcode workflow policy**, not a Claude Code platform limitation.
|
||||
|
||||
</details>
|
||||
|
||||
<CardGrid>
|
||||
|
||||
@@ -114,6 +114,7 @@ Initializes the session, logs the session ID, and manages Plan Mode symlinks.
|
||||
| `resume` | Log session_id |
|
||||
| `clear` | Create symlink LATEST.md -> newest plan |
|
||||
| `compact` + active task | Handoff instructions in additionalContext |
|
||||
| any + active task lock | Set `hookSpecificOutput.sessionTitle` to active task name (CC 2.1.152+; ignored by older versions) |
|
||||
|
||||
**LATEST.md symlink:**
|
||||
1. Checks `~/.claude/plans/` for `.md` files
|
||||
@@ -275,6 +276,10 @@ Controls session exit: blocks when a task is active, cleans up the lock when fin
|
||||
**Recursion protection:** If `input.stop_hook_active === true`, the hook is skipped
|
||||
to prevent an infinite loop.
|
||||
|
||||
**additionalContext (CC 2.1.163+):** Stop and SubagentStop events support
|
||||
`hookSpecificOutput.additionalContext`. `stop.mjs` uses this channel to surface the
|
||||
blocking reason in the Claude Code UI when exit is prevented.
|
||||
|
||||
---
|
||||
|
||||
### 9. permission-guard.sh
|
||||
|
||||
@@ -74,7 +74,7 @@ Status legend: ✅ current · ⬇️ update available · ❌ missing · ❓ unkn
|
||||
<li>
|
||||
<div>
|
||||
<strong>Discover installed plugins</strong>
|
||||
<p>Runs <code>discover-plugins.sh</code>, which reads <code>~/.claude/settings.json</code> and walks the plugin cache at <code>~/.claude/plugins/cache/</code>. Outputs a JSON object with each installed plugin and its version. <code>claude plugin list</code> does not exist as a subcommand — the script bypasses it entirely.</p>
|
||||
<p>Primary path: runs <code>claude plugin list --json</code> (CC 2.1.163+, prefixed with <code>unset CLAUDECODE &&</code> inside a session). Returns an array of objects: <code>id</code>, <code>version</code>, <code>scope</code>, <code>enabled</code>, <code>installPath</code>, <code>installedAt</code>, <code>lastUpdated</code>, and optional <code>mcpServers</code>. The <code>version</code> field may read <code>"unknown"</code> for locally-loaded plugins. Fallback: if the command errors, returns empty output, or produces invalid JSON, the skill runs <code>discover-plugins.sh</code>, which reads <code>~/.claude/settings.json</code> and walks <code>~/.claude/plugins/cache/</code> directly.</p>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
@@ -122,7 +122,7 @@ Run `/reload-plugins` or restart the session after any install or update. Claude
|
||||
<details>
|
||||
<summary>Internals</summary>
|
||||
|
||||
**Discovery** — no `claude plugin list`. The skill uses `discover-plugins.sh`, which parses `~/.claude/settings.json` for marketplace registrations and walks `~/.claude/plugins/cache/` for installed version directories.
|
||||
**Discovery** — primary: `claude plugin list --json` (available since CC 2.1.163). Returns objects with fields `id`, `version`, `scope`, `enabled`, `installPath`, `installedAt`, `lastUpdated`, and optionally `mcpServers`. The `version` field may be `"unknown"` for dev-mode plugins. When run inside a session, the Bash invocation is prefixed with `unset CLAUDECODE &&` to avoid the env-var conflict. Fallback: if the command errors, returns empty output, or returns invalid JSON (CC older than 2.1.163), the skill falls back to `discover-plugins.sh`, which parses `~/.claude/settings.json` for marketplace registrations and walks `~/.claude/plugins/cache/` for installed version directories.
|
||||
|
||||
**Update chain** — runs in this fixed order:
|
||||
|
||||
|
||||
@@ -137,8 +137,8 @@ The marketplace metadata lives at:
|
||||
|
||||
Run [`/brewtools:plugin-update`](/brewtools/skills/plugin-update/) inside a Claude Code session. It reports the installed and latest available version for each plugin and prompts you to update if a newer version exists.
|
||||
|
||||
<Callout type="note" title="Note">
|
||||
The <code>claude plugin list</code> CLI command does not exist. Version checking must be done through the <a href="/brewtools/skills/plugin-update/"><code>/brewtools:plugin-update</code></a> skill or by inspecting the cache directory above.
|
||||
<Callout type="note" title="CLI version check (CC 2.1.163+)">
|
||||
Run <code>claude plugin list</code> (or <code>claude plugin list --json</code> for machine-readable output) to see installed plugins with their versions. Inside an active Claude session, prefix with <code>unset CLAUDECODE &&</code> to avoid the env-var conflict. On CC older than 2.1.163 the command does not exist — use the cache directory path above or <a href="/brewtools/skills/plugin-update/"><code>/brewtools:plugin-update</code></a> as a fallback.
|
||||
</Callout>
|
||||
|
||||
</Spoiler>
|
||||
|
||||
Reference in New Issue
Block a user