Skip to content

pstack 0.15.9 → 0.15.25: what Lauren changed #2

Open

Description

@github-actions

Lauren added four typed-only skills: /poteto-help, /ketchup, /in-your-own-words and /sharpen. She dropped Sol from the model defaults, so pstack now defaults to Opus at xhigh plus Grok. She also fixed how /poteto-mode hands work to poteto-agent, because a nested subagent has no Task tool.

New skills

  • /poteto-help answers "how do I use pstack?" and "which skill fits this?", then hands back a prompt to send. It started as a skill that loaded from its description, and a follow-up made it typed-only so its description is not in every session's skill list. #502, #506
  • /poteto-help gained two reference files, references/prompting.md (rules for writing a prompt) and references/recipes.md (prompt templates per job type). The agent that answers had no dense rules to draft a prompt from. #507
  • /poteto-help now asks whether to run /setup-pstack when ~/.cursor/rules/pstack-models.mdc is missing. It asks only when the rule matters, at most once per chat. Before, it only mentioned the fact. #509
  • /ketchup recaps the current chat from your last message before /ketchup. It is read-only and checks the live state of each PR, CI run or agent the chat touched. It lists the decisions only you can make, and it says what it could not check. It turns a prompt people kept retyping into one command. #539
  • The /ketchup reply format changed four times, and the current shape is:
    • It uses the plain /bro voice and stays well under 150 words.
    • Screenshots and videos from the work are embedded first, then a diagram where a picture beats sentences.
    • Words inside visuals no longer count toward the limit. Tables still count.
    • The summary and the action items are plain bullets, with the action items stating a recommendation and what happens if you do not answer.
    • It never draws a screen nobody captured. A visible change with no screenshot is marked as such.
    • #570, #595, #609, #628
  • /in-your-own-words has the agent say what it thinks your goals are and what problem you are trying to solve. It first waited for confirmation, and a reword dropped that wait. #602, #606
  • /sharpen is manual-only. Before starting, it asks how a top expert would approach the task, what you are really after, and whether the task is over- or underspecified. It loosens constraints that do not serve the goal, leaves your choices open, then does the work. It never returns a rewritten prompt. #615

Changes to existing skills

  • Sol is out of the defaults. The defaults are now Opus (claude-opus-5-5-xhigh) and Grok (grok-4.7-xhigh-fast). Opus ran at max before.
    • /arena, /architect and /interrogate now start two default subagents, not three. /interrogate has two reviewers, one Opus and one Grok.
    • reflect tooling moved to Grok, since pstack already gives code and tooling work to Grok. /reflect still has three lenses.
    • In /setup-pstack, the unlimited budget now lifts each model to its highest effort. Opus goes to max, and Grok stays at xhigh because it has no max. large matches the defaults.
    • A pstack-models.mdc rule that names a Sol slug or claude-opus-5-5-max still runs that slug. To get the new defaults, delete those lines or the file and rerun /setup-pstack.
    • #511
  • Subagents now pick their effort per job. Each spawn starts from the role's configured slug and changes only the effort level and whether the slug is fast.
    • Hard work goes one step up, judgment one step down, routine work two or more steps down.
    • Fast mode is for urgent jobs only, meaning CI or trunk is red or a person is blocked.
    • Verification stays on the swarm workers model.
    • In /arena and /interrogate, slugs starting with cursor-grok- or composer- now count as the grok family, so a refused composer-* entry falls back to the grok default.
    • #613
  • Prompts were tightened to cut tokens. Every rule stays. #538 tightened 35 skill, reference and playbook files. #571 removed sections from seven skills where the agent does the same work without the text, such as restated rules, generic search steps, evidence checklists and return-format blocks. #538 also fixed /architect Phase A, which asked for the "traced model" that /how prescribes, when /how produces an architectural explanation.
  • /unslop lost "Must always apply." from its description. The skill is typed-only, and agents read that sentence as a command. This carries jhneves's change from #234, with a co-author credit. #572
  • /create-verification-skill now defines ready as usable, not "a port answering". Launch must reach a usable state from an empty data dir. A journey that the seed data cannot satisfy reports a failure and records why in Gotchas. Proof run in a stand-in lists the setup steps that stay unverified. In the original measurement, a database socket was up at 3 s but init finished at 19 s. Reworked from sidneyvanness's #501, with a co-author credit. #573

Principles

  • Four principles were rewritten to state the reasoning, not a rule. The other 20 were audited and kept. /correct step 3 uses the same test wording as principle-test-behavior-not-implementation. #633
    • principle-test-behavior-not-implementation judges a test by two imagined edits. If you break the behavior, the test must fail. If you change the internals, it must pass.
    • principle-fix-root-causes says a guard is a fix only when the state it handles is legitimate.
    • principle-attack-the-premise says to find an observation that would differ if the premise were false.
    • principle-make-operations-idempotent says to judge a stale lock by evidence that stays true wherever the previous run stopped, not by PID.
  • principle-fix-root-causes has a new Pattern bullet. When the deciding fact took a deep dig to find, propose a cheap, always-on signal that would have shown it at first look. #604

Playbooks and scripts

  • The shipping playbook went from nine steps to six, with a reason for each rule. After a parent merges, the child is retargeted to trunk. Its patch moves onto the merge result, and it is pushed with --force-with-lease. The patch-id rule then decides whether its verdict survives. #613
  • The autopilot playbooks keep their rules and drop the procedure around them. Autopilot-stack now states only where it differs from Autopilot-full. Three rules are new:
    • Pin --force-with-lease to the SHA you last pushed or took over.
    • Run the patch's checks on the merge result when trunk changed a caller or dependency of the patch.
    • Hold and report instead of taking a third rebase past merge prep.
    • #613
  • A multi-phase PR gets one full swarm, at the code-ready head. It runs again only for new behavior, a redesign or a large new diff. A rebase, conflict resolution or minor fix gets one verifier at the new head. #613
  • Orchestrate no longer needs Graphite. orch frontier set walks the pull request base chain down to trunk and up through open children, using gh by default. Workers and babysitters no longer run gt, and one stacker owns chain rebases, retargets and merges. #613
  • Both autopilot playbooks now report to the operator through /ketchup. In autopilot-full, each hourly tick that changes something ends with a catch-up, and a tick that changes nothing stays quiet. The final reply of both playbooks is a catch-up too. #616

Agents

  • The chat that receives /poteto-mode now runs the playbook, and poteto-agent is a delegate that chat spawns. The old text called poteto-agent the "Routing target", so a parent could spawn one to run the whole playbook. That subagent is nested and has no Task tool, so it could not spawn the how, why, Comment Sicko or code delegates. Issue #357 showed 5 failed todo_write calls and 0 Task calls. This is dev2o's #358, reworked and co-credited. #575
  • The parent now passes the absolute path of poteto-mode to every poteto-agent. The agent reads bundled leaf skills at ../<name>/SKILL.md from that file. Leaf skills are typed-only, so an agent never saw their paths. This cuts down sunxiuguo's #532 and uses the first sentence of darkhan-nace's #569, with co-author credits. #577
  • When the parent passes no path, poteto-agent searches ~/.cursor/plugins/ for a file ending in skills/poteto-mode/SKILL.md. With several matches it picks the one whose .cursor-plugin/plugin.json has the highest version. If nothing matches, it stops and tells its parent. The description says install locations outside ~/.cursor/plugins/ were not tested. #597
  • The Comment Sicko agent id is now comment-sicko. On Grok, the spaced id pstack:Comment Sicko was rejected by spawn_subagent. The README and /no-comments step 1 point at the new id. Community fix by lab1207. #486

Fixes

  • check-plan.mjs no longer treats headings inside tilde-fenced or longer backtick-fenced examples as plan sections. It tracks the opening fence's character and length and closes only on a matching fence. Community fix by Ehsan-hash, with regression tests added. #536
  • watch-pr now pages through all review threads. It read only the first 100, so an unresolved thread past that could not block readiness. Bugbot pass counts are computed once after all pages are loaded. Community fix by Yi-111-a. #484
  • watch-pr maps a completed Code Review Gate check run with an ACTION_REQUIRED conclusion to the owner-approval gate. Before, it counted as a failed check. #613
  • worktree-audit.sh checks MERGED against the default branch, not a literal origin/main. In a master repo, a merged branch showed MERGED=no. The base comes from origin/HEAD, then origin/main, then origin/master, or from the new -b|--base <ref>. -h and --help now print usage. Reworked from heliowap's #568, with a co-author credit. #574

Packaging

  • A root pstack/plugin.json for the Agent Plugins 1.0.0 schema sits next to the Cursor manifest. Codex now reads pstack's name, version, description and author from it. The skill set is the same, because both manifests point at skills/.
    • The repo validator does not read the root file or compare versions, so a version bump must change both by hand. #606 bumps both.
    • Codex ignores disable-model-invocation. 51 of pstack's 52 skills set it, so Codex can start slash-only skills such as poteto-mode, swarm and arena on its own. This was already true before this PR. Keeping them manual in Codex would take a per-skill agents/openai.yaml sidecar.
    • Original change by mantrakp04 in #257, reworked and co-credited.
    • #576

Docs

  • The guide was brought up to date with the skills that ship. It adds sections on /correct and /benchmark-checklist, notes on /poteto-help and /make-bot-ui, and prompting habits from the published pstack articles. Habits covered include what goes in a prompt, short follow-ups, never taking the first design, and cloud subagents for parallel work. It also has seven new recipes and six new pitfalls. #508

How she did it

  • /poteto-help evals.
    • A trigger eval of 33 queries, 2 runs each, on a real plugin install through the Cursor CLI. All 22 help questions that name pstack loaded the skill, and none of the 34 coding, work or near-miss turns did.
    • An answer-quality eval, frozen before any run, used 40 questions, 10 of them held out. Opus 5.5 answered each 3 times with the branch and with main. GPT-5.6 Sol and Odango EAP graded blind. Correctness was 0.87 with the skill and 0.55 without (gain 0.32, 95% CI 0.20 to 0.45).
    • A grade audit moved the gain to 0.31. Fixes for the errors it found raised correctness on the touched questions from 0.88 to 0.91 and cut wrong claims per answer from 0.36 to 0.15.
    • A hillclimb kept two changes, linking the source file and cutting the closing next-topic line. On the 10 weakest questions, correctness went from 0.86 to 0.94 and wrong claims per answer fell from 0.45 to 0.23. On 9 new held-out questions, scores did not change significantly.
    • Reviewers on Opus 5.5, GPT-5.6 Sol and Grok 4.7 all flagged the same two overbroad claims, and both were fixed.
    • #502
  • Typed-only switch. In the Cursor CLI, the old skill loaded on 5 of 7 pstack help questions and the new one on 0 of 7. A typed /poteto-help still loaded it. #506
  • The setup ask. Fresh subagents ran typed /poteto-help messages with no model rule. The branch asked about /setup-pstack on setup, cost and models questions, and main never asked. It did not ask when the rule existed, when the question was about keeping /poteto-mode on, or after the user had already picked Later. #509
  • /ketchup blind evals.
    • #570 used 12 runs on 3 invented chats with Opus 5.5 and Grok 4.7. Decisions shown side by side went from 0/10 to 10/10, and changes with a before column from 0/8 to 8/8. Invented links stayed at 0. Average replies grew from 617 to 756 words.
    • #595 was a preregistered eval on 5 invented chats, with the skill, grader and gates frozen by hash. Median Opus text went from 736 to 213 words. Replies with a real visual went from 8/15 to 15/15, and must-cover recall was 0.950 against 0.956. A separate two-catch check showed the first version dropped two catches the old skill made, and the final text restored both.
    • #628 compared versions blind on invented chats. The runs showed the 150-word limit, which counted diagram words, crowded out the expected diagrams. Excluding visual words fixed it. The description says the busiest chat's replies now sit right at the limit.
  • Principles eval. 10 held-out decision cases, 3 candidate models and 3 arms (old text, new text, no principle), 180 runs in total. A blinded Grok 4.7 judge graded each run against a hidden rubric. The new text kept the stored-status-code test in 6 of 6 order-test runs, against 0 of 6 before. A PID liveness check decided stale locks in 1 of 6 runs, against 4 of 6 before. The new text scored one run lower on two attack-the-premise criteria, and the transcripts showed both runs tested the premise but did not say so in the final message. The /correct change was not part of the eval. #633
  • Size cuts. Touched Markdown went from 169,348 to 153,004 bytes (-9.7%) and from 26,177 to 23,829 words (-9.0%) in #538. In #571 it went from 32,508 to 18,711 bytes (-42.4%) and from 5,028 to 2,902 words (-42.3%). #538, #571
  • Spawn and path tests.
    • A spawned subagent was asked to list its own tools and had no Task tool, while its parent did. #575
    • A plugin-cache copy showed that passing the hub path in the spawn prompt is what lets poteto-agent find leaf skills. A control with main's text and a hand-passed path also worked, so main's gap was that it never tells the parent to pass the path. #577
    • For the ~/.cursor/plugins/ search, poteto-agent with no path read poteto-mode in 2 of 2 runs on both models after one search. On main, the default model read it in 1 of 2 runs, and Grok 4.7 found it only after four searches each. With two copies on disk, both runs chose the higher version. Windows was not tested. #597
  • Script tests.
    • #613 has 67 passing tests. The orchestrate tests build a real git stack and run the frontier through fake gh and origin CLIs.
    • #484 shows its new pagination tests are not vacuous by reverting to the old single read, where the page-2 and multi-page cases fail.
    • #574 compared main, the original PR and the rework across 12 cases in throwaway repos with a local bare remote.
    • #576 validated the root manifest with Ajv, with 0 errors. It also installed pstack in Codex CLI 0.162.1 with and without the root file. Both installs offered the same 52 skills.
  • Credited community PRs she reworked. Each states its differences from the original.
    • #572 from jhneves's #234
    • #573 from sidneyvanness's #501
    • #574 from heliowap's #568
    • #575 from dev2o's #358
    • #576 from mantrakp04's #257
    • #577 from sunxiuguo's #532 and darkhan-nace's #569

Cursor-only

  • The README and guide pages 1 and 2 said /poteto-mode stays on by itself. In Cursor, Enter attaches a skill to one message, and Option+Enter or Alt+Enter starts a Custom Mode that stays on. Guide page 5 also wrongly said typescript-best-practices loads by itself. Its paths glob has no effect while disable-model-invocation is set. #502
  • /poteto-mode lost the mode: true and reminder: frontmatter keys, because Cursor ignores them. The README now tells users to pick /poteto-mode from the / menu before typing the task, so Cursor attaches the skill. The README line was not verified. #597
  • #597 also lists open questions for the pstack owner. They cover whether poteto-mode should become model-invocable and whether /how, /why, /recall and /ketchup should trigger from plain requests. They also ask whether Grok Bot drops slash-only skills before its 24-skill catalog limit. No descriptions were shortened until these have answers. #597
  • On the Origin forge, orch frontier set takes --forge origin, and the orchestrate playbook resolves the forge once. It uses origin pr when the Origin CLI can resolve the repository, and gh otherwise. worktree-audit.sh reads origin pr list when the Origin CLI can read the repository, because gh pr list cannot see Origin pull requests and the PR column was always empty. It falls back to gh, and a draft pull request also holds the worktree. #613

Cursor diff e43c7ee...e5136d8 · 30 PRs · summarised by claude-sonnet-5-5

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions