A correction or standing ruling from the user — a rebuke of a working habit, "make this a rule", "always do X", "never do Y again". Mint the statute BEFORE giving the substantive reply. Also to review or amend standing law. Skip for one-off task instructions that don't outlive the turn.
Installs into .claude/skills of the current project.
Are you the author of Superstack Doctrine?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/debabsah-superstack-doctrine)
---
name: superstack-doctrine
description: A correction or standing ruling from the user — a rebuke of a working habit, "make this a rule", "always do X", "never do Y again". Mint the statute BEFORE giving the substantive reply. Also to review or amend standing law. Skip for one-off task instructions that don't outlive the turn.
---
# superstack-doctrine
Corrections become standing law, and the law gets surfaced where habits can't be trusted to remember it. Statutes live in two books, both surfaced by the session-start hook every session: the project's (`.superstack/doctrine.md`) and the owner's personal rule book (`${CLAUDE_CONFIG_DIR:-~/.claude}/superstack-doctrine.md`), which binds in every workspace (D-49).
**Scope at minting — this project, or everywhere?** A correction about how the owner is spoken to or how their preferences are honored is personal; one about this codebase's conduct is the project's. When the correction's own words don't settle it, ask, one line. Personal statutes append to the personal book, same grammar, same `# doctrine` header on first use. Where the two books collide inside a project, the project's statute outranks the personal one.
## Minting (write-ahead)
The moment a correction or ruling lands, **write the statute before composing your substantive reply** — the reply comes second. Append to `.superstack/doctrine.md`:
```
## <YYYY-MM-DD> — <short imperative title>
> verbatim: "<the user's own words, quoted exactly>"
scope: <when this binds — the action class, not "always">
supersedes: <#none, or the dated title it replaces>
reopens-if: <the condition that would re-open this, or "none foreseen">
```
Announce the mint in one line ("statute added: <title>"). Create the file with a `# doctrine` header on first use.
## The rules of the law
- **Append-only.** Never edit or delete a statute. To change one, add a new statute citing what it supersedes — the history is the point.
- **Scope is an action class** (publishing, option menus, commit style), never "always" — an unscoped law can't be checked and won't fire.
- **A ruling without a reopen condition drifts toward dogma.** Every statute carries `reopens-if` — the observation that would make it worth re-examining; "none foreseen" is legal and honest, a blank is neither.
- **Statutes bind until the owner lifts them.** When acting inside a statute's scope, comply or escalate to the user — never silently override. A user instruction that contradicts a statute is an escalation moment: name the conflict, let them rule (that ruling is usually the next statute).
- **Mint on corrections, not preferences you infer.** A statute needs the user's words; if you only suspect a standing preference, ask — the answer is the quote.
- **Prune what never fires.** If a statute's scope hasn't occurred for months, propose retiring it at a `superstack-ship` overlay compaction — with the user, not unilaterally.
## Boundary with the overlay
Gotchas (trap → cause → rule, discovered by work) go to `.superstack/project.md` per the method's overlay protocol. Doctrine holds *the user's rulings* — the things a future session must not relitigate. When one event yields both, write both and cross-reference.