mirror of
https://github.com/kochetkov-ma/claude-brewcode.git
synced 2026-09-14 20:16:41 +08:00
fix(skills): generated skills stay model-invocable
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": "5.5.0"
|
||||
"version": "5.5.1"
|
||||
},
|
||||
"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": "5.5.0",
|
||||
"version": "5.5.1",
|
||||
"category": "productivity",
|
||||
"keywords": [
|
||||
"brewcode",
|
||||
@@ -46,7 +46,7 @@
|
||||
{
|
||||
"name": "brewdoc",
|
||||
"description": "Brewdoc - Claude Code documentation tools: my-claude installation docs, memory sync, md-to-pdf conversion",
|
||||
"version": "5.5.0",
|
||||
"version": "5.5.1",
|
||||
"category": "productivity",
|
||||
"keywords": [
|
||||
"brewdoc",
|
||||
@@ -72,7 +72,7 @@
|
||||
{
|
||||
"name": "brewtools",
|
||||
"description": "Brewtools - universal utilities for Claude Code: text optimization, humanization, secrets scanning",
|
||||
"version": "5.5.0",
|
||||
"version": "5.5.1",
|
||||
"category": "productivity",
|
||||
"keywords": [
|
||||
"brewtools",
|
||||
@@ -100,7 +100,7 @@
|
||||
{
|
||||
"name": "brewui",
|
||||
"description": "Placeholder for future UI/visual/creative tools (currently empty, installable)",
|
||||
"version": "5.5.0",
|
||||
"version": "5.5.1",
|
||||
"category": "productivity",
|
||||
"keywords": [
|
||||
"ui",
|
||||
|
||||
@@ -342,6 +342,9 @@ stripped, provenance stamp kept). Every emitted artifact is stamped with the fou
|
||||
you export NOTHING for them. `version` is read out of the plugin's own `.codex-plugin/plugin.json` by script
|
||||
self-location and `last_updated` is `date +%F`. Both stay `{PLUGIN_VERSION}` / `{LAST_UPDATED}` in the raw
|
||||
`.template-baseline/` copies, so a plain version bump makes `upgrade` report IDENTICAL, never a diff.
|
||||
> `disable-model-invocation` MUST NOT be set on the emitted skill: the model invoking it mid-plan is a
|
||||
> first-class path, alongside the user typing `/superreview`.
|
||||
|
||||
Key off the ONE machine-readable status line the writer prints — the
|
||||
`already installed` refusal path prints NO status line, because nothing was written:
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/bin/sh
|
||||
# brewcode-meta: version=5.5.0 generated_by=brewcode:teams-setup
|
||||
# brewcode-meta: version=5.5.1 generated_by=brewcode:teams-setup
|
||||
set -eu
|
||||
|
||||
USAGE="Usage: trace-ops.sh <add|read|cursor|migrate> <team_dir> [args...]"
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env node
|
||||
// brewcode-meta: version=5.5.0 generated_by=brewtools:think-short-setup
|
||||
// brewcode-meta: version=5.5.1 generated_by=brewtools:think-short-setup
|
||||
/**
|
||||
* think-short — UserPromptSubmit hook (self-contained, no plugin-root deps).
|
||||
*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<!-- think-short brewcode-meta: version=5.5.0 generated_by=brewtools:think-short-setup -->
|
||||
<!-- think-short brewcode-meta: version=5.5.1 generated_by=brewtools:think-short-setup -->
|
||||
Be terse. Lead with results. Use ASCII unless the requested artifact requires other text.
|
||||
Think short: keep internal reasoning minimal and do not narrate exploration.
|
||||
Search before opening large files. Prefer focused edits and parallel read-only checks.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env node
|
||||
// brewcode-meta: version=5.5.0 generated_by=brewtools:think-short-setup
|
||||
// brewcode-meta: version=5.5.1 generated_by=brewtools:think-short-setup
|
||||
/**
|
||||
* think-short — SessionStart hook (self-contained, no plugin-root deps).
|
||||
*
|
||||
|
||||
@@ -2,6 +2,38 @@
|
||||
|
||||
---
|
||||
|
||||
## v5.5.1 (2026-08-10)
|
||||
|
||||
> Docs: [memory-sync-setup](https://doc-claude.brewcode.app/brewdoc/skills/memory-sync-setup/) | [superreview-setup](https://doc-claude.brewcode.app/brewcode/skills/superreview-setup/) | [task-board-setup](https://doc-claude.brewcode.app/brewtools/skills/task-board-setup/) | [setup-status](https://doc-claude.brewcode.app/brewcode/skills/setup-status/)
|
||||
|
||||
> `disable-model-invocation: true` is the right answer for the 27 distributed skills — 27 model-visible descriptions would be a permanent token tax. It is the wrong answer for a skill a generator writes into your repo: that skill exists to be reached, and `/memory-sync` was the one emit still carrying the flag, invisible to the model that was supposed to call it. The flag now belongs to distributed `-setup` skills only, and the generator enforces that on every install, upgrade and validate.
|
||||
|
||||
### brewdoc
|
||||
|
||||
#### Fixed
|
||||
|
||||
- **The emitted `/memory-sync` is model-invocable.** `references/SKILL.md.template` no longer bakes `disable-model-invocation: true`, so Claude can fire the skill mid-plan and prose triggers ("sync memory", "обнови память") resolve. The `-setup` skill itself is unchanged — still `user-invocable: true` **and** `disable-model-invocation: true`, still typed by hand
|
||||
|
||||
#### Changed
|
||||
|
||||
- **`upgrade` migrates a legacy install without a re-emit.** `generate.sh restamp` — the mandatory last step of `upgrade` — now DELETES a surviving `disable-model-invocation` key from an already-installed `SKILL.md` and prints a `REMOVED:` line. Nothing else in the body moves; hand-edits and SELF-SYNC changes survive
|
||||
- **`generate.sh validate` check (5)** hard-fails when the emitted frontmatter carries `disable-model-invocation`, so a hand-edit or a stale template can never quietly hide the skill again
|
||||
|
||||
### brewcode
|
||||
|
||||
#### Changed
|
||||
|
||||
- **`superreview-setup`** carries a normative guard: `disable-model-invocation` MUST NOT be set on the emitted `superreview` skill. Behavior is unchanged — that emit was already model-invocable; the rule is now written down where the generator can be read
|
||||
- **`setup-status`**: the `.md` frontmatter example in `references/artifact-metadata.md` no longer shows the key, and a normative sentence states that a generated artifact stays model-invocable and that the flag belongs only to distributed `-setup` skills
|
||||
|
||||
### brewtools
|
||||
|
||||
#### Changed
|
||||
|
||||
- **`task-board-setup`**: the same guard on the emitted `task-board` skill, matching the one `task-spec` already carried. Both emits were already model-invocable; nothing about the deployed board changes
|
||||
|
||||
---
|
||||
|
||||
## v5.5.0 (2026-08-10)
|
||||
|
||||
> Docs: [agent-return-setup](https://doc-claude.brewcode.app/brewtools/skills/agent-return-setup/) | [setup-status](https://doc-claude.brewcode.app/brewcode/skills/setup-status/) | [teams-setup](https://doc-claude.brewcode.app/brewcode/skills/teams-setup/) | [superreview-setup](https://doc-claude.brewcode.app/brewcode/skills/superreview-setup/) | [think-short-setup](https://doc-claude.brewcode.app/brewtools/skills/think-short-setup/) | [agent-creator](https://doc-claude.brewcode.app/brewcode/agents/agent-creator/) | [skill-creator](https://doc-claude.brewcode.app/brewcode/agents/skill-creator/) | [hook-creator](https://doc-claude.brewcode.app/brewcode/agents/hook-creator/) | [bash-expert](https://doc-claude.brewcode.app/brewcode/agents/bash-expert/) | [bc-rules-organizer](https://doc-claude.brewcode.app/brewcode/agents/bc-rules-organizer/) | [text-optimizer](https://doc-claude.brewcode.app/brewtools/agents/text-optimizer/) | [ssh-admin](https://doc-claude.brewcode.app/brewtools/agents/ssh-admin/) | [deploy-admin](https://doc-claude.brewcode.app/brewtools/agents/deploy-admin/)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "brewcode",
|
||||
"version": "5.5.0",
|
||||
"version": "5.5.1",
|
||||
"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",
|
||||
|
||||
@@ -342,6 +342,9 @@ stripped, provenance stamp kept). Every emitted artifact is stamped with the fou
|
||||
you export NOTHING for them. `version` is read out of the plugin's own `.codex-plugin/plugin.json` by script
|
||||
self-location and `last_updated` is `date +%F`. Both stay `{PLUGIN_VERSION}` / `{LAST_UPDATED}` in the raw
|
||||
`.template-baseline/` copies, so a plain version bump makes `upgrade` report IDENTICAL, never a diff.
|
||||
> `disable-model-invocation` MUST NOT be set on the emitted skill: the model invoking it mid-plan is a
|
||||
> first-class path, alongside the user typing `/superreview`.
|
||||
|
||||
Key off the ONE machine-readable status line the writer prints — the
|
||||
`already installed` refusal path prints NO status line, because nothing was written:
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/bin/sh
|
||||
# brewcode-meta: version=5.5.0 generated_by=brewcode:teams-setup
|
||||
# brewcode-meta: version=5.5.1 generated_by=brewcode:teams-setup
|
||||
set -eu
|
||||
|
||||
USAGE="Usage: trace-ops.sh <add|read|cursor|migrate> <team_dir> [args...]"
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
|
||||
| Field | Value |
|
||||
|-------|-------|
|
||||
| Version | 5.5.0 |
|
||||
| Version | 5.5.1 |
|
||||
| Skills | 9 |
|
||||
| Agents | 5 |
|
||||
| Hooks | 2 |
|
||||
|
||||
@@ -6,7 +6,7 @@ maxTurns: 80
|
||||
color: cyan
|
||||
tools: Read, Write, Edit, Glob, Grep, Bash, Agent, WebFetch, WebSearch, AskUserQuestion
|
||||
doc_type: llm
|
||||
version: "5.5.0"
|
||||
version: "5.5.1"
|
||||
generated_by: "brewcode"
|
||||
last_updated: "2026-08-10"
|
||||
---
|
||||
|
||||
@@ -6,7 +6,7 @@ maxTurns: 60
|
||||
color: green
|
||||
tools: Read, Write, Edit, Glob, Grep, Bash, WebFetch
|
||||
doc_type: llm
|
||||
version: "5.5.0"
|
||||
version: "5.5.1"
|
||||
generated_by: "brewcode"
|
||||
last_updated: "2026-08-10"
|
||||
---
|
||||
|
||||
@@ -5,7 +5,7 @@ model: haiku
|
||||
maxTurns: 60
|
||||
tools: Read, Write, Edit, Glob, Grep, Bash, Agent
|
||||
doc_type: llm
|
||||
version: "5.5.0"
|
||||
version: "5.5.1"
|
||||
generated_by: "brewcode"
|
||||
last_updated: "2026-08-10"
|
||||
---
|
||||
|
||||
@@ -6,7 +6,7 @@ maxTurns: 80
|
||||
color: yellow
|
||||
tools: Read, Write, Edit, Glob, Grep, Bash, WebFetch, WebSearch
|
||||
doc_type: llm
|
||||
version: "5.5.0"
|
||||
version: "5.5.1"
|
||||
generated_by: "brewcode"
|
||||
last_updated: "2026-08-10"
|
||||
---
|
||||
|
||||
@@ -6,7 +6,7 @@ maxTurns: 80
|
||||
color: green
|
||||
tools: Read, Write, Edit, Glob, Grep, Bash, Agent, AskUserQuestion
|
||||
doc_type: llm
|
||||
version: "5.5.0"
|
||||
version: "5.5.1"
|
||||
generated_by: "brewcode"
|
||||
last_updated: "2026-08-10"
|
||||
---
|
||||
|
||||
@@ -6,7 +6,7 @@ description: Detailed description of all brewcode plugin commands
|
||||
|
||||
# BC Plugin Commands
|
||||
|
||||
> **ver:** 5.5.0 | **Author:** Maksim Kochetkov | **License:** MIT
|
||||
> **ver:** 5.5.1 | **Author:** Maksim Kochetkov | **License:** MIT
|
||||
|
||||
## Naming
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ description: Complete file tree of the brewcode plugin with descriptions
|
||||
|
||||
# Brewcode Plugin - File Tree
|
||||
|
||||
> Version: 5.5.0 | Files: 149 | Directories: 44 (excludes the generated `.codex/` mirror; no dotfiles, `__pycache__`, or `node_modules` exist under `brewcode/`)
|
||||
> Version: 5.5.1 | Files: 149 | Directories: 44 (excludes the generated `.codex/` mirror; no dotfiles, `__pycache__`, or `node_modules` exist under `brewcode/`)
|
||||
|
||||
## Plugin Structure
|
||||
|
||||
@@ -12,7 +12,7 @@ description: Complete file tree of the brewcode plugin with descriptions
|
||||
brewcode/ # Plugin root directory
|
||||
│
|
||||
├── .claude-plugin/ # Claude Code plugin configuration
|
||||
│ └── plugin.json # Manifest (name, version 5.5.0, skills/ reference)
|
||||
│ └── plugin.json # Manifest (name, version 5.5.1, skills/ reference)
|
||||
│
|
||||
├── hooks/ # Node.js scripts for Claude Code events
|
||||
│ ├── hooks.json # Binds 2 events (UserPromptSubmit, SessionStart)
|
||||
@@ -101,7 +101,7 @@ brewcode/ # Plugin root directory
|
||||
│
|
||||
├── README.md # Components, commands, agents, hooks, architecture, flow diagrams
|
||||
├── INSTALL.md # Installation: plugin-dir, marketplace, embedding, troubleshooting
|
||||
└── package.json # npm: claude-plugin-brewcode@5.5.0, build/publish scripts
|
||||
└── package.json # npm: claude-plugin-brewcode@5.5.1, build/publish scripts
|
||||
```
|
||||
|
||||
## Target Project Structure
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "claude-plugin-brewcode",
|
||||
"version": "5.5.0",
|
||||
"version": "5.5.1",
|
||||
"description": "Infinite task execution with automatic handoff for Claude Code",
|
||||
"keywords": [
|
||||
"claude-code",
|
||||
@@ -36,6 +36,6 @@
|
||||
},
|
||||
"claude-plugin": {
|
||||
"name": "brewcode",
|
||||
"version": "5.5.0"
|
||||
"version": "5.5.1"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ paths:
|
||||
- "**/*"
|
||||
description: semble-first — one semantic search, then read the exact line; rg stays for exact matching
|
||||
doc_type: llm
|
||||
version: "5.5.0"
|
||||
version: "5.5.1"
|
||||
generated_by: "brewcode:semble-setup"
|
||||
---
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env node
|
||||
// brewcode-meta: version=5.5.0 generated_by=brewcode:semble-setup
|
||||
// brewcode-meta: version=5.5.1 generated_by=brewcode:semble-setup
|
||||
/**
|
||||
* brewcode:semble-setup — UserPromptSubmit hook (self-contained, installed into
|
||||
* a project). It runs alongside the advisory hooks, it does not replace them.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env node
|
||||
// brewcode-meta: version=5.5.0 generated_by=brewcode:semble-setup
|
||||
// brewcode-meta: version=5.5.1 generated_by=brewcode:semble-setup
|
||||
/**
|
||||
* brewcode:semble-setup — SessionStart hook (self-contained, installed into a project).
|
||||
*
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env node
|
||||
// brewcode-meta: version=5.5.0 generated_by=brewcode:semble-setup
|
||||
// brewcode-meta: version=5.5.1 generated_by=brewcode:semble-setup
|
||||
/**
|
||||
* brewcode:semble-setup — PostToolUse / PostToolUseFailure hook (self-contained,
|
||||
* installed into a project). PURE OBSERVER.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# brewcode-meta: version=5.5.0 generated_by=brewcode:semble-setup
|
||||
# brewcode-meta: version=5.5.1 generated_by=brewcode:semble-setup
|
||||
# brewcode:semble — managed file. Regenerate with
|
||||
# semble-guidance.sh install --part ignore --force
|
||||
# Edit it freely: any change makes it `user_modified`, and the installer then
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
doc_type: llm
|
||||
version: "5.5.0"
|
||||
version: "5.5.1"
|
||||
generated_by: "brewcode"
|
||||
last_updated: "2026-08-10"
|
||||
---
|
||||
@@ -142,7 +142,6 @@ must not report the version that `install` left. Six implementations, all four c
|
||||
name: superreview
|
||||
description: "Deep project-tailored review."
|
||||
user-invocable: true
|
||||
disable-model-invocation: true
|
||||
doc_type: llm
|
||||
version: "X.Y.Z"
|
||||
generated_by: "brewcode:superreview-setup"
|
||||
@@ -150,6 +149,10 @@ last_updated: "YYYY-MM-DD"
|
||||
---
|
||||
```
|
||||
|
||||
**A GENERATED artifact stays model-invocable - `disable-model-invocation: true` belongs ONLY to the
|
||||
distributed `-setup` skills.** The generator is user-only so it never fires by itself; what it emits
|
||||
must be reachable mid-plan without the user typing the slash command.
|
||||
|
||||
Every example in this document uses `X.Y.Z` / `YYYY-MM-DD` on purpose. A literal
|
||||
version in a normative document goes stale at the next bump and then teaches the
|
||||
wrong number - the release stamper rewrites only this file's own frontmatter, never
|
||||
|
||||
@@ -338,6 +338,9 @@ stripped, provenance stamp kept). Every emitted artifact is stamped with the fou
|
||||
you export NOTHING for them. `version` is read out of the plugin's own `.claude-plugin/plugin.json` by script
|
||||
self-location and `last_updated` is `date +%F`. Both stay `{PLUGIN_VERSION}` / `{LAST_UPDATED}` in the raw
|
||||
`.template-baseline/` copies, so a plain version bump makes `upgrade` report IDENTICAL, never a diff.
|
||||
> `disable-model-invocation` MUST NOT be set on the emitted skill: the model invoking it mid-plan is a
|
||||
> first-class path, alongside the user typing `/superreview`.
|
||||
|
||||
Key off the ONE machine-readable status line the writer prints — the
|
||||
`already installed` refusal path prints NO status line, because nothing was written:
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/bin/sh
|
||||
# brewcode-meta: version=5.5.0 generated_by=brewcode:teams-setup
|
||||
# brewcode-meta: version=5.5.1 generated_by=brewcode:teams-setup
|
||||
set -eu
|
||||
|
||||
USAGE="Usage: trace-ops.sh <add|read|cursor|migrate> <team_dir> [args...]"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "brewdoc",
|
||||
"version": "5.5.0",
|
||||
"version": "5.5.1",
|
||||
"description": "Brewdoc - Claude Code documentation tools: my-claude installation docs, memory-sync generator",
|
||||
"author": {
|
||||
"name": "Maksim Kochetkov",
|
||||
|
||||
+2
-2
@@ -4,7 +4,7 @@
|
||||
|
||||
| Field | Value |
|
||||
|-------|-------|
|
||||
| Version | 5.5.0 |
|
||||
| Version | 5.5.1 |
|
||||
| Skills | 5 |
|
||||
| Agents | 0 |
|
||||
| Hooks | 0 |
|
||||
@@ -81,7 +81,7 @@ claude --plugin-dir ./brewdoc
|
||||
|
||||
> **Canonical modes.** Setup skills answer the same verbs, in this order: `status | install | upgrade | enable | disable | uninstall | purge`. No argument = `status` if installed, `install` if not. Extras (`sync`, `reread`, `frontmatter`, a fine-tune prompt) come *after* the canonical verb. The v4 aliases `init`, `on`, `off`, `setup`, `remove` and `reset` are gone -- v5.0.0 is a deliberate breaking change with no back-compat. Both brewdoc setup skills implement `enable`/`disable` -- `docsync-setup` flips the `enabled` key in `.claude/docsync/config.json`, `memory-sync-setup` renames `SKILL.md` <-> `SKILL.md.disabled` -- and both implement `purge`; the Arguments column below is authoritative.
|
||||
|
||||
> Every brewdoc skill is `user-invocable: true` **and** `disable-model-invocation: true` -- and so is every one of the 27 skills across the suite. Claude never sees their descriptions and never fires one on its own; you type the command. That is a deliberate trade: 27 model-visible descriptions would cost tokens in every request forever, and none of these skills wants to be auto-triggered. Run [`/brewcode:setup-status`](../brewcode/skills/setup-status/README.md) to see what is installed, stale, disabled or missing across every plugin.
|
||||
> Every brewdoc skill is `user-invocable: true` **and** `disable-model-invocation: true` -- and so is every one of the 27 skills across the suite. Claude never sees their descriptions and never fires one on its own; you type the command. That is a deliberate trade: 27 model-visible descriptions would cost tokens in every request forever, and none of these skills wants to be auto-triggered. **Skills a generator emits are the opposite by design** -- `/memory-sync`, like `/superreview`, `/task-board` and `/task-spec`, ships model-invocable so Claude can fire it mid-plan; the flag is for distributed `-setup` skills only. Run [`/brewcode:setup-status`](../brewcode/skills/setup-status/README.md) to see what is installed, stale, disabled or missing across every plugin.
|
||||
|
||||
| Skill | Purpose | Model | Arguments |
|
||||
|-------|---------|-------|-----------|
|
||||
|
||||
@@ -4,7 +4,7 @@ description: Detailed description of all brewdoc plugin commands
|
||||
|
||||
# Brewdoc Plugin Commands
|
||||
|
||||
> **Version:** 5.5.0 | **Author:** Maksim Kochetkov | **License:** MIT
|
||||
> **Version:** 5.5.1 | **Author:** Maksim Kochetkov | **License:** MIT
|
||||
|
||||
## Quick Reference
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env node
|
||||
// brewcode-meta: version=5.5.0 generated_by=brewdoc:docsync-setup
|
||||
// brewcode-meta: version=5.5.1 generated_by=brewdoc:docsync-setup
|
||||
/**
|
||||
* docsync-gate — Stop hook (self-contained, project-local)
|
||||
*
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env node
|
||||
// brewcode-meta: version=5.5.0 generated_by=brewdoc:docsync-setup
|
||||
// brewcode-meta: version=5.5.1 generated_by=brewdoc:docsync-setup
|
||||
/**
|
||||
* docsync-track — PostToolUse:Write|Edit|MultiEdit hook (self-contained, project-local)
|
||||
*
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env node
|
||||
// brewcode-meta: version=5.5.0 generated_by=brewdoc:docsync-setup
|
||||
// brewcode-meta: version=5.5.1 generated_by=brewdoc:docsync-setup
|
||||
/**
|
||||
* docsync-watch — PostToolUse:Read hook (self-contained, project-local)
|
||||
*
|
||||
|
||||
@@ -162,6 +162,9 @@ changes. Run `status` any time to see whether it is due.
|
||||
|
||||
- The emitted skill is **self-contained** -- no plugin dependency. It uses only project-local agents
|
||||
(`.claude/agents/`) and built-ins (`Explore` / `Plan` / `general-purpose`).
|
||||
- The emitted skill is **model-invocable** -- it carries no `disable-model-invocation`, so Claude can fire
|
||||
`/memory-sync` mid-plan and prose triggers work. That flag is for distributed `-setup` skills only;
|
||||
`restamp` deletes it from a pre-5.5.1 install and `validate` fails if it is present.
|
||||
- `emit` never overwrites a live installation. `MEMORY_SYNC_FORCE=1` is the conscious override and it destroys
|
||||
hand-edits; `upgrade` is the safe path.
|
||||
- A stale provenance stamp is NEVER a reason to re-emit. `generate.sh restamp` rewrites the metadata keys in
|
||||
|
||||
@@ -342,7 +342,13 @@ bash "${CLAUDE_SKILL_DIR}/scripts/generate.sh" emit && echo "✅ emit" || echo "
|
||||
|
||||
This writes the FOUR-file tree: `<target>/.claude/skills/memory-sync/SKILL.md` with scalars substituted, plus
|
||||
`references/memory-guide.md`, `references/agent-audit.md` and `references/hard-sync.md` copied into the emitted
|
||||
`references/`. It stamps provenance into the emitted SKILL.md's YAML FRONTMATTER, appended after the
|
||||
`references/`.
|
||||
|
||||
> `disable-model-invocation` MUST NOT be set on the emitted skill: plain-prose invocation ("память устарела",
|
||||
> "sync memory") is a first-class path, alongside `/memory-sync [scope]`. Legacy installs that still carry the key
|
||||
> are stripped by `generate.sh restamp`; `validate` fails on a survivor.
|
||||
|
||||
It stamps provenance into the emitted SKILL.md's YAML FRONTMATTER, appended after the
|
||||
skill's own keys:
|
||||
|
||||
```yaml
|
||||
@@ -486,7 +492,7 @@ the single list -- do not restate it here.
|
||||
| Emit material | `${CLAUDE_SKILL_DIR}/references/` | `SKILL.md.template`, `memory-guide.md`, `agent-audit.md`, `hard-sync.md` -- four files emitted |
|
||||
| Emitted default depth | `NORMAL` | `HARD` is per-run, from the emitted skill's own arguments; nothing is regenerated to switch |
|
||||
| Generation script | `${CLAUDE_SKILL_DIR}/scripts/generate.sh` | `scan` \| `emit` \| `validate` \| `restamp` \| `status` \| `enable` \| `disable` \| `uninstall` \| `purge` |
|
||||
| Provenance refresh | `generate.sh restamp` | Metadata-only, idempotent, mandatory tail of `upgrade`. Rewrites `version` / `last_updated` / `surface_files`, adds `doc_type` / `generated_by` when absent, deletes a pre-5.0 tail stamp, re-copies a reference ONLY when its sole difference from the plugin source is the release stamp. Aborts rather than write if anything outside the metadata block would move |
|
||||
| Provenance refresh | `generate.sh restamp` | Metadata-only, idempotent, mandatory tail of `upgrade`. Rewrites `version` / `last_updated` / `surface_files`, adds `doc_type` / `generated_by` when absent, deletes a pre-5.0 tail stamp and a legacy `disable-model-invocation`, re-copies a reference ONLY when its sole difference from the plugin source is the release stamp. Aborts rather than write if anything outside the metadata block would move |
|
||||
| Mode | `status` when installed, else `install` | `status` (read-only) \| `install` \| `upgrade` \| `enable` \| `disable` \| `uninstall` \| `purge` |
|
||||
| Disabled marker | `<target>/.claude/skills/memory-sync/SKILL.md.disabled` | What `disable` renames `SKILL.md` to. Its presence IS the disabled state -- there is no config file to keep in sync |
|
||||
| Overwrite | refused | `emit` never overwrites a live installation; `MEMORY_SYNC_FORCE=1` overrides and DESTROYS hand-edits |
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
name: memory-sync
|
||||
description: "Syncs {PROJECT_NAME} instruction memory (CLAUDE.md at any depth, rules, conventions, agents, skills) against real code: verifies facts, deletes stale, dedups, compresses, re-audits agents; never grows. Excludes docs. Triggers: sync memory, memory sync, memory drift, sync agents, audit agents, обнови CLAUDE.md, синхронизируй память, память устарела"
|
||||
user-invocable: true
|
||||
disable-model-invocation: true
|
||||
argument-hint: "[prompt] [session|branch|commit <sha>[..<sha>]|recent[:N]|all] [hard] [free-form focus]"
|
||||
allowed-tools: Read, Edit, Glob, Grep, Bash, Agent
|
||||
model: opus
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<!-- brewcode-meta: version=5.5.0 generated_by=brewdoc:memory-sync-setup -->
|
||||
<!-- brewcode-meta: version=5.5.1 generated_by=brewdoc:memory-sync-setup -->
|
||||
# Agent and Skill Re-Audit
|
||||
|
||||
The standing best-practice audit `/memory-sync` runs on EVERY agent file and EVERY skill file, on EVERY run, at
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<!-- brewcode-meta: version=5.5.0 generated_by=brewdoc:memory-sync-setup -->
|
||||
<!-- brewcode-meta: version=5.5.1 generated_by=brewdoc:memory-sync-setup -->
|
||||
# Hard Sync
|
||||
|
||||
The two aggressive DELETION passes of `/memory-sync`. Cited by the emitted skill's Phase 2 batch prompt at
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<!-- brewcode-meta: version=5.5.0 generated_by=brewdoc:memory-sync-setup -->
|
||||
<!-- brewcode-meta: version=5.5.1 generated_by=brewdoc:memory-sync-setup -->
|
||||
# Memory Guide
|
||||
|
||||
Where a fact BELONGS, how to compress it, and what never gets written at all. Cited by every `/memory-sync`
|
||||
|
||||
@@ -454,6 +454,9 @@ restamp_skill() {
|
||||
|
||||
_was=$(_fm_meta "$_f" version); [ -n "$_was" ] || _was="(unstamped)"
|
||||
_wasl=$(_legacy_stamp "$_f")
|
||||
# Legacy installs (emitted while the template still baked it) are user-only; the emitted skill must be
|
||||
# model-invocable, so the key is dropped here - the only mode that can reach an installed SKILL.md.
|
||||
_wasdmi=$(_fm_meta "$_f" disable-model-invocation)
|
||||
_dt=$(_fm_meta "$_f" doc_type)
|
||||
case "$_dt" in llm|user|skip) ;; *) _dt="$META_DOC_TYPE" ;; esac
|
||||
_sfv=$(printf '%s' "${SURFACE_COUNTS:-$(derive_surface_counts)}" | tr -d '"' | tr '\n\r' ' ')
|
||||
@@ -476,6 +479,7 @@ restamp_skill() {
|
||||
print; next
|
||||
}
|
||||
n == 1 && /^(doc_type|version|generated_by|last_updated|surface_files):/ { next }
|
||||
n == 1 && /^disable-model-invocation:/ { next }
|
||||
n >= 2 && index($0, legacy) > 0 { next }
|
||||
{ print }
|
||||
END { if (!done) exit 3 }
|
||||
@@ -500,6 +504,7 @@ restamp_skill() {
|
||||
echo " doc_type: -> $_dt"
|
||||
echo " surface_files: -> $_sfv"
|
||||
[ -z "$_wasl" ] || echo "REMOVED: pre-5.0 tail stamp -> $_wasl"
|
||||
[ -z "$_wasdmi" ] || echo "REMOVED: disable-model-invocation: $_wasdmi -> /memory-sync is model-invocable again"
|
||||
refresh_refs
|
||||
rm -rf "$_bd"; _bd=""
|
||||
echo "✅ restamp (metadata keys only - body and every hand-edit verified byte-identical)"
|
||||
@@ -609,6 +614,16 @@ validate_emit() {
|
||||
[ -z "$_legacy" ] || echo "⚠️ a pre-5.0 tail stamp also survives in this file - delete that line, the frontmatter supersedes it"
|
||||
fi
|
||||
|
||||
# (5) the emitted skill stays model-invocable - plain prose must reach it, not only `/memory-sync`
|
||||
_dmi=$(_fm_meta "$TARGET/SKILL.md" disable-model-invocation)
|
||||
if [ -n "$_dmi" ]; then
|
||||
echo "❌ FAILED: $TARGET/SKILL.md: frontmatter sets disable-model-invocation: $_dmi - the emitted skill must stay model-invocable"
|
||||
echo " -> run \`generate.sh restamp\`: it deletes the key in place, body and hand-edits untouched"
|
||||
_errors=$((_errors+1))
|
||||
else
|
||||
echo "✅ model-invocable (no disable-model-invocation key - prose invocation works alongside /memory-sync)"
|
||||
fi
|
||||
|
||||
if [ "$_errors" -eq 0 ]; then echo "✅ validate PASSED"; else echo "❌ FAILED: $_errors check(s) failed"; fi
|
||||
exit "$_errors"
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "brewtools",
|
||||
"version": "5.5.0",
|
||||
"version": "5.5.1",
|
||||
"description": "Brewtools - universal utilities for Claude Code: text optimization, humanization, secrets scanning",
|
||||
"author": {
|
||||
"name": "Maksim Kochetkov",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env node
|
||||
// brewcode-meta: version=5.5.0 generated_by=brewtools:think-short-setup
|
||||
// brewcode-meta: version=5.5.1 generated_by=brewtools:think-short-setup
|
||||
/**
|
||||
* think-short — UserPromptSubmit hook (self-contained, no plugin-root deps).
|
||||
*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<!-- think-short brewcode-meta: version=5.5.0 generated_by=brewtools:think-short-setup -->
|
||||
<!-- think-short brewcode-meta: version=5.5.1 generated_by=brewtools:think-short-setup -->
|
||||
Be terse. Lead with results. Use ASCII unless the requested artifact requires other text.
|
||||
Think short: keep internal reasoning minimal and do not narrate exploration.
|
||||
Search before opening large files. Prefer focused edits and parallel read-only checks.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env node
|
||||
// brewcode-meta: version=5.5.0 generated_by=brewtools:think-short-setup
|
||||
// brewcode-meta: version=5.5.1 generated_by=brewtools:think-short-setup
|
||||
/**
|
||||
* think-short — SessionStart hook (self-contained, no plugin-root deps).
|
||||
*
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
|
||||
| Field | Value |
|
||||
|-------|-------|
|
||||
| Version | 5.5.0 |
|
||||
| Version | 5.5.1 |
|
||||
| Skills | 13 |
|
||||
| Agents | 3 |
|
||||
| Hooks | 2 |
|
||||
|
||||
@@ -5,7 +5,7 @@ model: inherit
|
||||
maxTurns: 80
|
||||
tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion, WebFetch, WebSearch
|
||||
doc_type: llm
|
||||
version: "5.5.0"
|
||||
version: "5.5.1"
|
||||
generated_by: "brewtools"
|
||||
last_updated: "2026-08-10"
|
||||
---
|
||||
|
||||
@@ -5,7 +5,7 @@ model: inherit
|
||||
maxTurns: 80
|
||||
tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion, WebFetch, WebSearch
|
||||
doc_type: llm
|
||||
version: "5.5.0"
|
||||
version: "5.5.1"
|
||||
generated_by: "brewtools"
|
||||
last_updated: "2026-08-10"
|
||||
---
|
||||
|
||||
@@ -7,7 +7,7 @@ color: magenta
|
||||
tools: Read, Write, Edit, Glob, Grep, Bash, WebFetch, AskUserQuestion
|
||||
skills: brewtools:text-optimize
|
||||
doc_type: llm
|
||||
version: "5.5.0"
|
||||
version: "5.5.1"
|
||||
generated_by: "brewtools"
|
||||
last_updated: "2026-08-10"
|
||||
---
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env node
|
||||
// brewcode-meta: version=5.5.0 generated_by=brewtools:manager-setup
|
||||
// brewcode-meta: version=5.5.1 generated_by=brewtools:manager-setup
|
||||
// brewtools:manager-setup — HARD wall guard (PreToolUse, matcher "*").
|
||||
//
|
||||
// SELF-CONTAINED — copied into <project>/.claude/brewtools/manager/ by
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// brewcode-meta: version=5.5.0 generated_by=brewtools:manager-setup
|
||||
// brewcode-meta: version=5.5.1 generated_by=brewtools:manager-setup
|
||||
// brewtools:manager-setup — Manager mode state resolver/writer.
|
||||
// State shape: { hard:boolean, level:'strict'|'balanced', mode:'full' }
|
||||
// + artifact metadata written by writeState: version/generated_by/last_updated.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env node
|
||||
// brewcode-meta: version=5.5.0 generated_by=brewtools:agent-deadline-setup
|
||||
// brewcode-meta: version=5.5.1 generated_by=brewtools:agent-deadline-setup
|
||||
/**
|
||||
* agent-deadline — SubagentStop hook (self-contained, Node built-ins only).
|
||||
*
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env node
|
||||
// brewcode-meta: version=5.5.0 generated_by=brewtools:agent-deadline-setup
|
||||
// brewcode-meta: version=5.5.1 generated_by=brewtools:agent-deadline-setup
|
||||
/**
|
||||
* agent-deadline — PreToolUse hook (self-contained, Node built-ins only).
|
||||
*
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env node
|
||||
// brewcode-meta: version=5.5.0 generated_by=brewtools:agent-return-setup
|
||||
// brewcode-meta: version=5.5.1 generated_by=brewtools:agent-return-setup
|
||||
/**
|
||||
* agent-return-budget — shared config, thresholds and return contract
|
||||
* (Node built-ins only). Never invoked directly; imported by the pair.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env node
|
||||
// brewcode-meta: version=5.5.0 generated_by=brewtools:agent-return-setup
|
||||
// brewcode-meta: version=5.5.1 generated_by=brewtools:agent-return-setup
|
||||
/**
|
||||
* agent-return-contract — SubagentStart hook (Node built-ins only).
|
||||
*
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env node
|
||||
// brewcode-meta: version=5.5.0 generated_by=brewtools:agent-return-setup
|
||||
// brewcode-meta: version=5.5.1 generated_by=brewtools:agent-return-setup
|
||||
/**
|
||||
* agent-return-guard — SubagentStop hook (Node built-ins only, no I/O but stdin/stdout
|
||||
* plus the config read done by agent-return-budget.mjs).
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env node
|
||||
// brewcode-meta: version=5.5.0 generated_by=brewtools:agent-router-setup
|
||||
// brewcode-meta: version=5.5.1 generated_by=brewtools:agent-router-setup
|
||||
/**
|
||||
* agent-router - PreToolUse hook for the `Agent` tool (Node built-ins only, ESM).
|
||||
*
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
Substitute `{{LANG}}`, `{{CLOSE_MARKER_SHORT}}`. Spec-layer placeholders (gated by `{{SPEC_MODE}}`) -- LINE kind: `{{SPEC_INVARIANTS}}`, `{{SPEC_ADD_STEP}}`, `{{SPEC_MOVE_STEPS}}`, `{{SPEC_VIEW_FLOW}}`; INLINE kind: `{{SPEC_DESC_TRIGGERS}}`, `{{SPEC_ADD_ROW_COL}}`. Write the body below to `TARGET/.claude/skills/task-board/SKILL.md`.
|
||||
|
||||
> `disable-model-invocation` MUST NOT be set on the emitted skill: plain-prose invocation is a first-class path, alongside `/task-board [view|add|move|backlog|groom]`.
|
||||
|
||||
`{{CLOSE_MARKER_SHORT}}` map by RELEASE_STYLE:
|
||||
- `vtag` → `the closing version/commit (vX.Y.Z tag or SHA)`
|
||||
- `sha` → `the closing commit SHA`
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env node
|
||||
// brewcode-meta: version=5.5.0 generated_by=brewtools:think-short-setup
|
||||
// brewcode-meta: version=5.5.1 generated_by=brewtools:think-short-setup
|
||||
/**
|
||||
* think-short — UserPromptSubmit hook (self-contained, no plugin-root deps).
|
||||
*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<!-- think-short brewcode-meta: version=5.5.0 generated_by=brewtools:think-short-setup -->
|
||||
<!-- think-short brewcode-meta: version=5.5.1 generated_by=brewtools:think-short-setup -->
|
||||
Be terse. Results first, no preamble/filler/sycophancy. ASCII only.
|
||||
Think short: minimal internal reasoning, no exploring aloud.
|
||||
Grep before Read. Edit over Write. Parallel calls in one message.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env node
|
||||
// brewcode-meta: version=5.5.0 generated_by=brewtools:think-short-setup
|
||||
// brewcode-meta: version=5.5.1 generated_by=brewtools:think-short-setup
|
||||
/**
|
||||
* think-short — SessionStart hook (self-contained, no plugin-root deps).
|
||||
*
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env node
|
||||
// brewcode-meta: version=5.5.0 generated_by=brewtools:think-short-setup
|
||||
// brewcode-meta: version=5.5.1 generated_by=brewtools:think-short-setup
|
||||
/**
|
||||
* think-short — PreToolUse hook for Task|Agent (self-contained, no plugin-root deps).
|
||||
*
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "brewui",
|
||||
"version": "5.5.0",
|
||||
"version": "5.5.1",
|
||||
"description": "Brewui -- placeholder for future UI/visual/creative tools",
|
||||
"author": {
|
||||
"name": "Maksim Kochetkov",
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
|
||||
| Field | Value |
|
||||
|-------|-------|
|
||||
| Version | 5.5.0 |
|
||||
| Version | 5.5.1 |
|
||||
| Skills | 0 |
|
||||
|
||||
## Install
|
||||
|
||||
@@ -87,7 +87,7 @@ Run it: /memory-sync -> scope session (default), whole su
|
||||
<li><div><strong>Phase 1.5 — clarify</strong><p><code>AskUserQuestion</code> only for what cannot be reliably inferred: which convention files count as memory, whether the memory dir is in scope, VERIFY-ONLY list, default branch, intentional non-English trigger aliases, batch splits.</p></div></li>
|
||||
<li><div><strong>Phase 2 — emit</strong><p>Exports scalar placeholders and runs <code>generate.sh emit</code>: awk-substitutes them into the template, copies the reference files, then stamps provenance into the emitted skill's YAML frontmatter — <code>doc_type</code>, <code>version</code> (the brewdoc plugin version, read from <code>plugin.json</code> by script self-location, never hardcoded), <code>generated_by</code>, <code>last_updated</code>, plus <code>surface_files</code> as the drift input, which is what <code>status</code>, <code>validate</code> and <code>upgrade</code> read back. Refuses to overwrite an existing installation — that is what <code>upgrade</code> is for.</p></div></li>
|
||||
<li><div><strong>Phase 3 — fill block placeholders</strong><p>Multi-row tables and multi-line bash go through <code>Edit</code>, not sed — twelve blocks total: ten in the emitted <code>SKILL.md</code> (batch table, exclusions, invariants, fact catalogue, enumeration bash, agent checks, skill checks, roster, proposal precedents, verify-extra assertions) and two in the emitted <code>references/hard-sync.md</code> (paths-precision table, obvious-vs-domain table).</p></div></li>
|
||||
<li><div><strong>Phase 4 — validate</strong><p><code>generate.sh validate</code> fails on any surviving <code>{'{PLACEHOLDER}'}</code>, a missing emitted asset, or a cited reference that does not exist. Then every emitted <code>subagent_type</code> is asserted to resolve to a real project agent or a built-in.</p></div></li>
|
||||
<li><div><strong>Phase 4 — validate</strong><p><code>generate.sh validate</code> fails on any surviving <code>{'{PLACEHOLDER}'}</code>, a missing emitted asset, a cited reference that does not exist, or a <code>disable-model-invocation</code> key in the emitted frontmatter (check 5 — the emitted skill must stay model-invocable). Then every emitted <code>subagent_type</code> is asserted to resolve to a real project agent or a built-in.</p></div></li>
|
||||
<li><div><strong>Phase 5 — report</strong><p>Prints surface counts, batches, exclusions, fact/invariant counts, and how to run the emitted skill — plus how to check on it later with <code>status</code> or refresh it with <code>upgrade</code>.</p></div></li>
|
||||
</Steps>
|
||||
|
||||
@@ -99,7 +99,7 @@ Run it: /memory-sync -> scope session (default), whole su
|
||||
|------|-------|--------|------|
|
||||
| `status` (default when installed) | target + emitted skill | nothing | Runs `generate.sh status`, which prints a machine-greppable `KEY=value` block — `PLUGIN_VERSION`, `STAMP_FORMAT`, the `META_*` provenance rows, surface files stamped vs enumerated now, missing emitted files, unfilled placeholders — closed by a verdict: `IN SYNC` / `STALE (n drifts)` / `STALE-LEGACY (n drifts)` (a pre-5.0 install still carrying the old tail-comment stamp — run `upgrade` to migrate it) / `NOT INSTALLED`, each prefixed `PARKED - ` when disabled. The skill then enriches it with its own reads: dead batch paths, memory layers gained since install |
|
||||
| `install` (default when nothing is installed) | target | 4 emitted files | Full Phase 0-5 analysis and emit. Refuses if `.claude/skills/memory-sync/` already exists |
|
||||
| `upgrade` | target + emitted skill | edits the emitted skill | Reads the same `generate.sh status` drift list as its refresh worklist, then re-scans and refreshes surface/batch/fact/invariant tables, adds sections for new memory layers, preserves hand-edits — the emitted skill is expected to have self-modified via its own SELF-SYNC phase — and always finishes with `generate.sh restamp` |
|
||||
| `upgrade` | target + emitted skill | edits the emitted skill | Reads the same `generate.sh status` drift list as its refresh worklist, then re-scans and refreshes surface/batch/fact/invariant tables, adds sections for new memory layers, preserves hand-edits — the emitted skill is expected to have self-modified via its own SELF-SYNC phase — and always finishes with `generate.sh restamp` — which also DELETES a `disable-model-invocation` key left by a pre-5.5.1 install, printing a `REMOVED:` line, so an old emit becomes model-invocable without a re-emit |
|
||||
| `enable` | target | one rename | `SKILL.md.disabled` -> `SKILL.md`, so `/memory-sync` is offered again next session. Regenerates nothing — no provenance stamp, no hand-edit change |
|
||||
| `disable` | target | one rename | `SKILL.md` -> `SKILL.md.disabled`. Claude Code discovers a project skill only through `SKILL.md`, so this withdraws `/memory-sync` from the roster while the 3 references and every SELF-SYNC hand-edit stay byte-identical on disk. Reversible by `enable`; deletes nothing |
|
||||
| `uninstall` | target | deletes the emit manifest | Removes exactly what `emit` wrote — `SKILL.md` (or its parked form) plus the 3 references — after confirmation. Files a user added to that dir are kept and listed. Nothing installed -> reports "nothing to uninstall" instead of deleting on a guess |
|
||||
@@ -120,6 +120,7 @@ Run it: /memory-sync -> scope session (default), whole su
|
||||
| Phases | GATHER (parallel read-only) -> SYNC (one bounded agent per disjoint batch, one message) -> VERIFY (independent checker per batch, never the writer) -> SELF-SYNC (re-checks itself) -> PROPOSE (new agent/skill proposed, never auto-created) -> REPORT (chat only, no report file) |
|
||||
| Non-growth | Every file ends `<=` its original line count; total delta `<= 0` |
|
||||
| Agents | Re-audited against current best practice every sweep, not just fact-checked |
|
||||
| Invocation | **model-invocable** — the emitted `/memory-sync` carries no `disable-model-invocation`, so Claude can fire it mid-plan and prose triggers ("sync memory", "обнови память") work. That flag belongs only to the distributed `-setup` skills; a generated artifact is meant to be reachable by the model |
|
||||
|
||||
### Depth: NORMAL vs HARD
|
||||
|
||||
|
||||
Reference in New Issue
Block a user