Repository navigation
pstack 0.15.25 → 0.15.28: what Lauren changed #4
Copy link
Copy link
Open
Description
This update makes pstack installable in Claude Code from a generated tree, with an adapter that maps Cursor names to Claude Code names. It also adds two formal verification skills, /create-formal-verification-skill and /maintain-formal-verification-skill, and trims about a third of the tokens from four skills.
New skills
/create-formal-verification-skillchecks a property across every case in a stated scope, not only the cases someone wrote as tests. It picks a tool, shows the property fail on a broken variant of the code, and writes a project-local skill that reruns the check with one command. It runs only when called by name. #709/maintain-formal-verification-skillkeeps that project-local skill in line with the code after merges, refactors, and edits made without it. It ends each check asin sync,updated,bug, orblocked. It does not edit product code or weaken a property to get a pass. #716- The same PR changes
/create-formal-verification-skill. The skill it generates now records which files and functions each check covers, and the commit where the verification last matched them.
- The same PR changes
Changes to existing skills
/create-formal-verification-skillnow makes TLA+ the default for event-order questions in any language. When no verifier runs on the language, it says so and tests the real code with generated inputs, not a hand model of the function. #721/setup-pstackhas a new step 8. If the project has no formal verification skill, setup offers once to run/create-formal-verification-skill. A no moves on. #715/ketchupnow lists every waiting item, so each call can be decided from the reply. #692, #708- Only the story is capped, at 100 words. Each waiting item gets about 30 words, so the reply grows with the item count.
- It never folds items into a count or moves them to a linked file.
- Each item gets its own bullet with link, user effect, evidence, and risk.
- Drawings of action items and status lists are banned. Stack, flow, and before-and-after diagrams stay.
- #708 states outright that items are never cut to stay under a word count. It matches the internal copy of the skill.
/sharpenno longer says "Don't hand back a rewritten prompt." The description gives no reason beyond mirroring an internal change. #712- Four skills lost sections that agents follow just as well without. This is a text-only deletion. #634
/interrogate: parts ofreferences/lead-judgment.md.principle-type-system-discipline: five of its eight bullets. Its description and README row drop "refuse to lie to the compiler" because the bullet that backed it is gone.principle-migrate-callers-then-delete-legacy-apis: the intro, three of four "Rule" bullets, and the closing paragraph./swarm: the intro, Phase A item 3, and the Phase C result-table paragraph.
Claude Code install
- Claude Code users can now run
claude plugin install pstack@cursor-plugins. #637scripts/generate-pstack-harness-trees.mjsbuilds a committed copy atharness/pstack/claude-code. A Claude Code install copies the plugin folder and runs no build.- An adapter at
pstack/docs/harness/claude-code.mdmaps Cursor tool names, subagent fields, and model slugs to Claude Code's. The generator adds a line linking to it under the title of the 21 skills that use Cursor names. - CI runs the generator with
--check. It fails on a stale tree, a relative link that does not resolve, or a Cursor name with no adapter row.scripts/validate-plugins.mjsnow checks the Claude Code marketplace entries too. - After any edit to pstack skills, agents, the adapter, or
pstack/plugin.json, maintainers must run the generator and commit the result. - Cursor loads the same skills and agents as before.
- Codex is not blocked. It reads
.claude-plugin/marketplace.jsonwhen a repo has no.agents/plugins/marketplace.json, so a Codex user who adds this marketplace can install the Claude Code tree.
- Three gaps in the Claude Code plugin are closed. #705
- Model choices.
/setup-pstacknow writes~/.claude/rules/pstack-models.md, with roles likeopus highand no frontmatter. Before, it wrote nothing. The file loads into every Claude Code session, about 250 extra tokens each, and only at session start. - Cursor-only steps. When a step needs Automations, Bugbot, Cursor cloud agents, or a built-in PR tool, the model prints one line,
Skipped in Claude Code: <step>. <reason>., and moves on.environment: "cloud"maps to a worktree. Bugbot comments on a GitHub PR are triaged as ordinary review threads. - Guide and README. The tree now bundles
pstack/docs/guide/andpstack/README.md, so/poteto-helpreads local pages and makes no WebFetch call. The tree grows by about 2.2 MB, mostly six JPGs.
- Model choices.
Fixes
- Two skills had display names in frontmatter,
Make Bot UIandPoteto Mode. Claude Code listed them as/pstack:Make Bot UIand/pstack:Poteto Mode, which parse as unknown commands./make-bot-uiand/poteto-modenow use their folder names. The generator fails when a skill'snameis not its folder name. #702- Cursor commands stay the same. Only their slash-menu label changes.
- The two X skills under
third_party/have the same problem and are left out.
- The branded-type example in
/typescript-best-practicesusedreturn input as AgentId, which the skill's own "Noascasts" row forbids. It now narrows through anisAgentIdtype guard, and the "Branded types" row says a brand comes from a verifying type guard, never fromas. #700
Docs
- The README and guide were brought in line with the current tree, and a new script,
scripts/check-pstack-docs.mjs, finds the next drift. #704- Fixed claims: Cursor ships
/autopilot, not/babysit. The full verifier swarm runs on the code-ready head, and later pushes get one fresh verifier unless the change is new behavior or a large diff. Custom Mode links now go to the Custom Mode section of the skills docs. Autopilot also runs a stack, not only a PR queue. - The script compares skills, slash commands, playbooks, agents, relative links, anchors, counts, and model names with the docs. On
mainit found one problem, the/babysitclaim. CI does not run it yet. - A prose pass made sentence-level edits only and changed no claims.
- Fixed claims: Cursor ships
/poteto-helpanddocs/guide/now cover the skills pstack ships today. #715/create-formal-verification-skillis added across the guide and help./ketchup,/sharpen, and/in-your-own-wordsare added to the guide.- The Claude Code install is added, with the commands, the
pstack:prefix, and the model rule path. - Page 2 now lists the Opening a PR playbook, and page 6 covers the Helpers section for verification skills and the check that evidence survives cleanup.
- Page 6 now says the bundled Babysit watcher is for GitHub. On Origin, Babysit uses the Origin CLI.
/maintain-formal-verification-skillgets a README row, a/poteto-helprouting row, and paragraphs on guide pages 6 and 9. #716
How she did it
- Token cuts (#634). The four skills went from 3,802 to 2,427 tokens (1,375 saved), 11,354 to 7,242 bytes, and 1,799 to 1,124 words.
- Claude Code install (#637).
- She measured thin pointer files against full copies with the o200k tokenizer. Pointers make the first request about 480 tokens smaller, but each load then costs 104 to 186 more tokens, so she shipped full copies.
- She put the tree at the repo root, not under
pstack/, because apstack/tree would add 138 files and 643,022 bytes to every Cursor install. - Claude Code 2.1.301 installed a copy matching the tree under
diff -rand listed 54 skills and 2 agents. - The run used a local LiteLLM proxy to gpt-5.5 because the machine had no Anthropic API key. Earlier runs on Claude Sonnet 5.5 read the same files.
- Three gaps (#705).
- Paired runs of
mainagainst the PR on real Claude Code 2.1.302. Setup wrote a rules file on the PR and nothing onmain. A new session then ran/howwithmodel: "opus", effort: "high", againstxhighwith no file. - WebFetch calls for
/poteto-helpwent from 1 to 0. - All 235 relative links in the bundled guide and README resolve.
- Six kinds of drift each made
--checkexit 1.
- Paired runs of
- Skill names (#702). The Claude Agent SDK's
supportedCommands()showed 2 broken names of 54 onmainand 0 on the branch. Cursor's name check went from 2 warnings to 0. She chose to fix the names in the source, not in the generated tree as #696 does, so every harness reads the same name. /typescript-best-practices(#700). A strict TypeScript compile of the new example has noas, no errors, and still rejects a raw string where anAgentIdis expected./ketchupeval (#692). She used three fixture chats, a frozen grader, and 50 runs on two models.- Waiting items decidable from the reply on the batch chat went from 0.00 to 0.93 on both models.
- Blinded judges from a third vendor ranked all six final-text replies above all five old-text replies on the two-call chat.
- On a small chat, replies run about 20% longer.
/create-formal-verification-skilleval (#709). She ran it on six repos it had not seen, against an earlier draft that prescribed TLA+. Blinded judges scored out of 30.- On the four concurrency or distribution repos, the means were 29.0 against 26.5.
- On cJSON and arrayvec, they were 26.0 against 22.0. The skill picked CBMC and Kani in 4 of 4 runs, while the draft picked TLA+.
- The skill scored lower on the checks criterion for those two repos, 3.75 against 4.5.
- The sample is small, and she says to treat a one-run gap as a lead.
- TLA+ default and fallback (#721). A preregistered eval on a JavaScript library with no verifier found 6 of 9 old-paragraph runs proved the claim on a hand-written copy. All 9 new-paragraph runs checked the shipped code.
- The eval tested the two changes together.
- GPT is near a tie, and the two scoring views disagree on its direction.
- There was no regression on a Java connection pool or a C parser.
/maintain-formal-verification-skilleval (#716). A preregistered 54-run offline eval with a blind judge: 3 cases, 3 arms, 3 models, 2 replicates.- Correctness showed no real gain. With two corrections, all three arms score 18 of 18.
- Every
/maintain-formal-verification-skillreport showed a deliberate break and the check that caught it (11 of 11). Without the skill, runs did this in 5 of 10 (no coverage record) and 4 of 10 (record only). - Sync commits were updated in 18 of 18 runs with the record, against 4 of 18 without it.
- Bugbot found that step 6 moved the sync commit for a blocked check. A second 18-run test of the fix gave 9 of 9 correct runs with the new text and 0 of 9 with the old.
- Docs check (#704). The new script found one stale claim on
mainand none on the branch. After #715 it reports 0 problems, with 31 of 31 commands named in the guide.
Cursor diff e5136d8...d457567 · 13 PRs · summarised by claude-sonnet-5-5
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Activity