The pstack Collection

Table of Contents

1. Summary

pstack is an upstream collection of 52 skills, installed as a Claude Code plugin. This page states how the compass framework relates to it: the collection is referenced, not copied, and each skill we adopt is classified by the regulatory function it supplies.

The classification is the framework's model of pstack. It is what makes the relationship checkable, and it is deliberately the only artefact we maintain. No upstream skill is forked.

2. Detail

2.1. Why Reference Rather Than Fork

Forking severs a feedback path. The Cybernetic Skills Framework requires a second loop that changes the regulator when it fails; a forked copy stops tracking the moment upstream improves, so the framework would hold regulation it could not update. A stale fork also fails silently, where a broken reference fails loudly.

The good regulator theorem does not require ownership. A regulator must model what it regulates, not author it. The classification below is that model.

MASD gives the same answer from the other side. A forked skill is a hand-maintained copy that varies predictably from its original, and the prescribed response to that shape is never to copy it but to expose the variability. Where an upstream skill is right in shape and wrong in local detail, we write a thin local skill holding only the difference.

2.2. The Adoption Criterion

The boundary rule governs which upstream skills we adopt at all. The framework regulates where the unaided agent would act wrongly for this project, and treats the rest as a black box. An upstream principle stating something a competent agent already does adds variety the agent has absorbed, and importing it is what the rule forbids.

Four dispositions follow.

Disposition Meaning
Adopt Reference upstream unchanged and cite it from our catalogue
Bind Write a thin local skill citing upstream, supplying only the project detail
Conflict Overlaps a skill we already hold; resolve before adopting either
Skip Variety the agent already commands, or not applicable here

2.3. Principles

All 21 supply citation: each is cited at a judgement call and never run. The adoption column records whether the unaided agent fails at that point in this project.

Skill Disposition Reason
build-the-lever Adopt Scripts the work instead of hand-editing it; observed failure here
fix-root-causes Adopt Patches symptoms unless constrained
guard-the-context-window Adopt Carries our attenuation argument into a session
laziness-protocol Adopt Over-builds; observed failure here
prove-it-works Adopt Declares done without checking; observed failure here
redesign-from-first-principles Adopt Bolts on rather than redesigning
sequence-verifiable-units Adopt Matches our task sizing rule
subtract-before-you-add Adopt Adds without removing overlap
separate-before-serializing-shared-state Adopt Worktrees share a stash stack and a build lock here
model-the-domain Adopt We already require domain grounding; this states the code side
type-system-discipline Adopt C++ project; illegal states are representable by default
encode-lessons-in-structure Adopt Sharpens the memory contract; see below
never-block-on-the-human Adopt Sound, and paired with recording; see below
boundary-discipline Skip General practice the agent already applies
exhaust-the-design-space Skip Cost exceeds the failure rate observed here
experience-first Skip Product judgement; ours is held by S5
foundational-thinking Skip Subsumed by model-the-domain for our purposes
make-operations-idempotent Skip Compass commands already are
migrate-callers-then-delete-legacy-apis Skip Already our practice
minimize-reader-load Skip Already absorbed
outcome-oriented-execution Skip Already our practice

Thirteen of 21 are adopted. The skipped ones are not judged wrong; they are judged already absorbed, which is the same verdict the rule reaches for a compiler.

Principles groups the thirteen for citation, records the two that needed a local binding, and lists the ones a check carries instead of prose.

2.4. Playbooks and Workflow Skills

Skill Function Disposition Reason
reflect recording Adopt Runs our second loop; we have no equivalent
show-me-your-work recording Adopt Decision trail for unattended runs; we have none
arena convening Adopt Design bakeoff; council does not do base-and-graft
interrogate convening Adopt Stronger variety than coun
swarm convening Adopt Parallel coverage; we have no fan-out primitive
blast-radius execution Adopt Proves a change is safe by running code
architect sequencing Adopt Design before code; we have no equivalent
figure-it-out sequencing Adopt Bespoke playbook when none fits
poteto-mode mode Adopt A mode in our exact sense
recall loading Bind Nearest thing pstack has to loading; must cite compass bearings
babysit sequencing Bind Generic PR flow; ours needs compass pr and the @claude comment
fix-ci execution Bind Must read our CI targets
get-pr-comments execution Bind compass review list already does this
make-pr-easy-to-review execution Bind Must respect our commit conventions
fix-merge-conflicts execution Bind Worktree rules apply here
how execution Bind Must consult knowledge and recipes first
why execution Bind Our rationale lives in decisions and tasks
teach execution Skip Wraps how and why
technical-writing execution Adopt Subsumes compass-doc-review-ste100; ours become
unslop execution Adopt Same surface as technical-
deslop execution Adopt Enforces the rule code-review
no-comments execution Adopt Enforces the rule code-review
thermo-nuclear-code-quality-review execution Bind Ours files stories against com
tdd sequencing Skip compass-code-add-tests binds Catch2 and our convent
create-verification-skill declaration Adopt Builds the driver; our ladder st
maintain-verification-skill recording Adopt Keep
typescript-best-practices execution Skip No TypeScript here
automate-me execution Skip Authors a personal mode; not a project concern
setup-pstack execution Skip Plugin configuration
bro execution Skip Restates a reply
what-did-i-get-done recording Skip compass journal and timeline cover it

2.5. Coverage

pstack implements five of the seven regulatory functions. It carries no loading and no declaration: nothing in the 52 supplies a knowledge base, a domain model, or a durable statement of intended behaviour. recall comes closest to loading and reconstructs session context rather than domain fact.

Those two absences are where this framework is strongest, with knowledge documents, recipes, memories and Allium specifications. The two functions where our catalogue is thinnest, sequencing and convening, are where pstack is richest. The collections are complementary over the same seven functions, which is why one classification serves both.

2.6. Overlaps with Our Catalogue

Ten upstream skills cover ground our catalogue already holds. Eight of the ten are not competitors.

2.6.1. Most Overlaps Are a Rule and Its Enforcer

Classifying both sides by regulatory function dissolves them. Ours state rules and standards, which is citation and declaration. The upstream ones run checks, which is execution. compass-code-review-comments states where a comment belongs; no-comments spawns a reviewer that finds violations of exactly that. A rule and the instrument that enforces it are not competitors, and holding both is the normal case rather than duplication.

The same reading resolves deslop, create-verification-skill and maintain-verification-skill. Our verification ladder states what must be verified at each rung; theirs builds and maintains the driver that does the verifying.

encode-lessons-in-structure is a third case. It does not duplicate the memory contract, it constrains it: when the same correction is written twice, prefer a lint or a check to more prose. Our memories are prose, so the principle supplies a test our contract lacked, and a memory earns its place only where no structure can carry the rule.

Two conflicts were real.

2.6.2. never-block-on-the-human and grounding

The principle directs an agent to proceed on reversible work rather than ask. The grounding obligation directs it to stop when a concept resolves to no document. The two look opposed and are not. The principle's condition is reversibility, and the obligation's subject is one of the things that decides whether a choice is reversible.

Both are adopted, and the recording function reconciles them. An agent that proceeds on an unresolved concept states the assumption it proceeded on, and that record is what makes the choice reversible rather than merely undeclared. show-me-your-work supplies the mechanism, which is why it and the principle are adopted together.

Blocking is then reserved for what a record cannot repair. That is the irreversible: a destructive command, a message sent outside the project, a decision whose cost is paid before anyone reads the trail.

2.6.3. The prose standards

technical-writing carries Diataxis structure, Google style, STE instruction rules and Global English. That subsumes compass-doc-review-ste100, whose content is one of those four layers.

Ours is retired as a standard and kept as a binding. What survives is the part upstream cannot know: which of the three writing standards this project applies where. STE governs an agent's replies to a person, thesis prose governs the org-roam documentation, and writing for agents governs skills, memories and specifications (Skills in the Compass Skill Framework). The binding names the standard and cites technical-writing and unslop for how to meet it.

2.6.4. Convening: interrogate and council

Both amplify variety, and they do not amplify the same amount.

interrogate runs a claim past several models. council runs it past several personas within one model. Personas share the base model's priors, so the variety a council adds is bounded by what one model already commands, while independent models are not so bounded.

Under the convening function that is a difference in kind, and interrogate is the stronger instrument wherever model diversity is available. Council is retained for deliberation that wants a reasoned verdict rather than a defect list, which is the use it has served in this project. The weaker amplification is recorded here so the choice is made knowingly.

2.7. Tracking Upstream

Pinned at pstack 0.9.18. This table states what we adopted and why; it does not mirror upstream content, so an upstream change invalidates a row only when it changes what that skill supplies or whether the agent still fails without it.

A new upstream release is a disturbance in the sense the framework gives the word, and the response is to re-run the adoption criterion over the diff rather than to re-import.

3. See also

Emacs 29.3 (Org mode 9.6.15)