fix(systems): sweeps are the discovery moment — zero-Systems hint, create_system dedup gate, prose inverted
CI & Build / Python lint (push) Successful in 3s
CI & Build / Plugin hooks (push) Successful in 7s
CI & Build / TypeScript typecheck (push) Successful in 11s
CI & Build / integration (push) Successful in 16s
CI & Build / Python tests (push) Failing after 29s
CI & Build / Build & push image (push) Skipped
CI & Build / Python lint (push) Successful in 3s
CI & Build / Plugin hooks (push) Successful in 7s
CI & Build / TypeScript typecheck (push) Successful in 11s
CI & Build / integration (push) Successful in 16s
CI & Build / Python tests (push) Failing after 29s
CI & Build / Build & push image (push) Skipped
First real-world test of the #2562 fixes (Scribe issue #2569): a Forge session ran a whole-codebase audit and created zero Systems — endorsed by the shipped guidance, whose "no particular area takes none" clause read as an exemption for exactly the record type that enumerates the subsystem vocabulary. And the systems_hint was silent for a zero-Systems project, the one state nothing else nudges out of. - systems_hint gains a zero-Systems branch: prompt the FIRST create_system instead of going quiet. - create_system is duplicate-gated like the other creates (normalized name, archived included, fail-open) — liberal creation becomes safe by construction, so the guidance can stop preaching restraint. - Prose inverted on every surface (hint text, create_system docstring, floor bullet, using-scribe step 7): audits/sweeps take several tags and mint the Systems they name; the gate is the guardrail against sprawl, not holding back; only a record genuinely about no particular area goes untagged. - Plugin 0.1.26 -> 0.1.27. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "scribe",
|
||||
"description": "Scribe system-of-record for Claude Code: MCP tools over your notes/tasks/projects/rules, a session-start push channel that surfaces your always-on rules + active-project context, process-skills (writing-plans, systematic-debugging, verification, brainstorming, reusing-code), and your saved Scribe Processes auto-surfaced as skills (/scribe:sync). Replaces superpowers + file-memory with one app-backed plugin.",
|
||||
"version": "0.1.26",
|
||||
"version": "0.1.27",
|
||||
"author": { "name": "Bryan Van Deusen" },
|
||||
"mcpServers": {
|
||||
"scribe": {
|
||||
|
||||
@@ -39,12 +39,16 @@ for the operator's work, and as your own working memory across sessions.
|
||||
unrelated open task.
|
||||
- **Tag to Systems as you write** — `enter_project` lists the project's
|
||||
Systems (its named subsystems/areas). When you create or meaningfully update
|
||||
a record, ask which area it is about and pass `system_ids`; if the area has
|
||||
a record, ask which areas it is about and pass `system_ids`; if an area has
|
||||
no System yet, create it with `create_system` (name + a one-paragraph
|
||||
charter) rather than leaving it unmodelled. A record about no particular
|
||||
area takes none — don't force it. Untagged writes in a project that has
|
||||
Systems come back with a `systems_hint` naming them — treat it as the tagging
|
||||
question asked at exactly the right moment, not as noise to skip past.
|
||||
charter) rather than leaving it unmodelled. Cross-cutting records — audits,
|
||||
sweeps, reviews — take SEVERAL tags, and are the best moment to DISCOVER
|
||||
missing Systems: a pass that walks the subsystems has just enumerated the
|
||||
vocabulary, so mint what it names. Create liberally; the duplicate gate on
|
||||
`create_system` (and reviewing the existing list) is the guardrail against
|
||||
sprawl, not restraint. Untagged writes come back with a `systems_hint` —
|
||||
treat it as the tagging question asked at exactly the right moment, not as
|
||||
noise to skip past.
|
||||
- **Reuse before rebuilding** — before writing a new helper/utility/component,
|
||||
search recorded **snippets** (reusable code recorded once for recall) and
|
||||
reuse the prior art instead of re-solving it; when you build something
|
||||
|
||||
@@ -88,7 +88,13 @@ Two constraints on *how* that's achieved:
|
||||
`list_system_records` returns? If the area has no System yet, create one
|
||||
(`create_system`: name + a one-paragraph charter) — an area that plainly
|
||||
exists deserves naming the moment two records would share it; don't wait to
|
||||
be asked. A record about no particular area takes none.
|
||||
be asked. Cross-cutting records — audits, sweeps, reviews — take *several*
|
||||
tags and are the prime discovery moment: a pass that walks the subsystems
|
||||
has just enumerated the vocabulary, so mint the Systems it names as it
|
||||
names them. Create liberally — `create_system` is duplicate-gated, and that
|
||||
gate (plus reviewing the existing list) is the guardrail against sprawl,
|
||||
not restraint. Only a record genuinely about no particular area goes
|
||||
untagged.
|
||||
|
||||
8. **State updates in place; chronicles don't.** A dev-log records what
|
||||
*happened* — write it once, never rewrite it. A durable finding (how a
|
||||
|
||||
Reference in New Issue
Block a user