pstack-harness
Skill9 starsChanged 37 days agoMITView on GitHub
Maps pstack's delegation and portable resource primitives to the current CLI (Claude Code, Codex, Hermes, Grok Build, or any other harness). Covers how to locate installed skills and fresh trunk resources, spawn a subagent, set a per-subagent model, parallelize arms, go read-only, ask a structured question (AskQuestion), track a worklist, loop, locate the transcript store, write shell commands, and inspect running processes. Read whenever a pstack skill says spawn, Task tool, subagent_type, per-subagent model, AskQuestion, or worklist, names a sibling skill you cannot find, or runs a path from a playbook. Every primitive is named differently per harness, so read this before concluding your harness has no such capability or resource.
In this repository64 other files it gives its agents.
- architectSkill
- arenaSkill
- automate-meSkill
- benchmark-checklistSkill
- blast-radiusSkill
- broSkill
- correctSkill
- create-formal-verification-skillSkill
- create-verification-skillSkill
- deslopSkill
- documentation-impactSkill
- figure-it-outSkill
- howSkill
- interrogateSkill
- in-your-own-wordsSkill
- ketchupSkill
- ketchup-videoSkill
- maintain-formal-verification-skillSkill
- maintain-verification-skillSkill
- make-bot-uiSkill
- no-commentsSkill
- poteto-helpSkill
- poteto-modeSkill
- poteto-tddSkill
- poteto-teachSkill
- principle-attack-the-premiseSkill
- principle-boundary-disciplineSkill
- principle-build-the-leverSkill
- principle-encode-lessons-in-structureSkill
- principle-exhaust-the-design-spaceSkill
- principle-experience-firstSkill
- principle-explain-the-numberSkill
- principle-fix-root-causesSkill
- principle-foundational-thinkingSkill
- principle-guard-the-context-windowSkill
- principle-laziness-protocolSkill
- principle-make-operations-idempotentSkill
- principle-migrate-callers-then-delete-legacy-apisSkill
- principle-minimize-reader-loadSkill
- principle-model-the-domainSkill
- principle-never-block-on-the-humanSkill
- principle-outcome-oriented-executionSkill
- principle-prove-it-worksSkill
- principle-redesign-from-first-principlesSkill
- principle-separate-before-serializing-shared-stateSkill
- principle-sequence-verifiable-unitsSkill
- principle-subtract-before-you-addSkill
- principle-test-behavior-not-implementationSkill
- principle-type-system-disciplineSkill
- pr-recapSkill
- recallSkill
- reflectSkill
- runtime-probesSkill
- setup-pstackSkill
- sharpenSkill
- show-me-your-workSkill
- spec-probesSkill
- statechartSkill
- swarmSkill
- technical-writingSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
7 rules. About 0 are common, 4 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 10
Use this skill when a pstack workflow names a delegation action, worklist, question, loop, transcript, portable resource, shell command, or …
- Distinctive: line 14
Before executing shell commands or answering what is running, read shell commands and running processes.
- Distinctive: line 18
Read each selected reference in full before its action.
- Distinctive: line 33
When context compaction, shortened skill content, or skill restoration affects the next action, read skill retention evidence.
- Distinctive: line 51
Read the role resolution and handoffs reference selected above before a role handoff or recovery.
- Very specific: line 55
Every pstack spawn runs a role from the models config, such as feature or how explorer, sometimes under a persona.
- Very specific: line 74
Never ask the user to type a skill that a pstack skill names.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Harness adapters
A cut-off read is no read. A return that is shortened, warns that it was cut, or that you capped with head, tail, or a line limit leaves the file or diff unread. Read the missing part before you act. This file too. On Codex, follow Read files.
Use this skill when a pstack workflow names a delegation action, worklist, question, loop, transcript, portable resource, shell command, or process inspection.
Your tool inventory and CLI help are authoritative. Never invent a tool. Report the mechanism when it affects execution or evidence. For worklists, report item state rather than the carrier.
Before executing shell commands or answering what is running, read shell commands and running processes. This applies to every action and runtime.
Select the action
Read each selected reference in full before its action. Select only the actions the next step needs. Read a link inside a reference only when its described operation applies. Do not read every reference.
| Action | Required references |
worklist | Worklist procedure |
question | Structured questions |
spawn | The Spawn a role recipe below, Delegation and isolation, and the current runtime adapter below. Read Role resolution and handoffs only for a handoff, a recovery, a trail reviewer, or a resolver that fails or prints a note, and Portable resource path contract only when PSTACK_SKILLS_ROOT is unset |
role-handoff | Role resolution and handoffs |
persona | Persona contract when the spawn names a persona |
loop | Loops and wake-ups |
transcript | Workspace transcripts and the current runtime adapter below |
portable-paths | Portable resource path contract when a command uses PSTACK_SKILLS_ROOT, PSTACK_SOURCE_ROOT, or PROJECT_ROOT |
Runtime adapters
When context compaction, shortened skill content, or skill restoration affects the next action, read skill retention evidence. Keep documented limits, runtime observations, and unknown behavior separate.
For spawn or transcript, read only the current runtime column for that action. Other actions need no runtime adapter.
| Runtime | Spawn adapter | Transcript location |
claude-code | Claude Code | Transcript location |
codex | Codex | Transcript location |
hermes | Hermes | Transcript location |
grok | Grok Build | Transcript location |
other | Other runtime | Transcript location |
Resolve portable resources
Resolve only the roots that the next command needs. Keep the exact command forms in generated plans and restore the recorded roots across owners, delegates, wake-ups, and later ticks.
Preserve roles across handoffs
Read the role resolution and handoffs reference selected above before a role handoff or recovery.
Spawn a role
Every pstack spawn runs a role from the models config, such as feature or how explorer, sometimes under a persona. Keep the caller's role and panel arm count.
- Take the role from the skill or playbook step. A step that names none uses
default. Asubagent_typeofpoteto-agentorcomment-sickonames a persona, andgeneral-purposenames none. Resolve it once per task, and again after the harness or config changes. Run the resolver from the project root, or pass
--project <root>, since it reads that directory's.agents/pstack-models.md. Do not read the config files to pick values.python3 "${PSTACK_SKILLS_ROOT:?}/setup-pstack/scripts/check-models-config.py" --resolve --harness <claude-code|codex|grok|hermes> <role>Failure signal: nonzero exit. It prints one JSON line per arm with
model,effort, andsource, plusnotesto relay in the reply. If it fails or prints a note, or the role istrail reviewer, follow Spawn a role in roles.md. Never drop a spawn because the resolver failed. Spawn with model and effort omitted and report it.- Build the call from the current runtime adapter.
inherit-parentin a field means omit that field. - For a persona, put its complete briefing at the top of the prompt, from
python3 "${PSTACK_SKILLS_ROOT:?}/pstack-harness/scripts/subagents.py" brief <persona>, unless the live agent catalog lists the persona's native name. - Report the model and effort each arm ran on, and label a review
same-modelwhen it matches the work's model.
Universal rules
- Use named sibling skills yourself. "Call the Skill tool with
architect" tells you to load the pstack skillarchitectand follow it. A following "follow its" or "use its" names the part of that skill the step needs, after the whole skill loads. The name is a sibling directory under the installed skills root, the directory that holds this skill's own directory. Any other pstack mention of a skill by name, such as "the leaf skill" or "the arena skill", names one the same way.- On Claude Code, call the Skill tool with the bare name, such as
architect. The call works when the listing shows the name only, with no description, and a name-only listing never means the skill is missing. - Codex, Grok Build, and any other harness have no tool named Skill for these skills. There, the same phrase means read
<installed skills root>/<name>/SKILL.mdin full, then read the files it references when its steps need them. On Hermes, useskill_view(name)instead when the index lists the name, because compression marks only that load for reload. On Codex, a$namemention in a user prompt injects that skill'sSKILL.md, so do not read that file again unless the injected copy was cut. - Never ask the user to type a skill that a pstack skill names. Never edit a skill's files or the listing settings to change how it loads.
- On Claude Code, call the Skill tool with the bare name, such as
- Load only skills that someone named. Never read or load a pstack skill that you found by listing or searching a skills directory, unless the user or a loaded skill named it. A skill that the harness lists with its description can still load from that description.
- Tool names in skill text describe intent, never a required tool.
Task,Glob,Grep,Read, a worklist, and Cursor-era parameters likereadonlyname capabilities: realize each with whatever your session provides (a search tool, a shell command, a read-only brief). Capability selection follows live descriptions, not recalled names. A missing optional tool never cancels the step and needs no announcement. Asubagent_typein skill text names a persona or none, and Spawn a role turns it into the concrete type.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

