diff --git a/.agents/skills/verify-open-pstack/features/workflows.md b/.agents/skills/verify-open-pstack/features/workflows.md index 2af8e99..0ece801 100644 --- a/.agents/skills/verify-open-pstack/features/workflows.md +++ b/.agents/skills/verify-open-pstack/features/workflows.md @@ -14,10 +14,11 @@ Users invoke poteto-mode for an engineering task or call a focused skill directl - `workflow-correct`: the `correct` skill mines a fixture's real git history for a repeated mistake class and fixes it at the highest enforcing level, proven against a past mistake. - `workflow-architect-screen`: architect screens design candidates against agent-shaped red flags before synthesis. - `workflow-perf-order`: perf-issue tries the ordered performance mantras cheapest-first and stops at the first that meets the target; hillclimb borrows only their order, never that step's stop rule. +- `workflow-help`: poteto-help answers setup, usage, and routing questions without starting the work, and does not swallow work requests as help. ## How to get to it (user POV) -Claude Code: `/pstack:poteto-mode` or `/pstack:how`. Codex: select the same names in the skill picker, or mention `$pstack:poteto-mode` and `$pstack:how`. +Claude Code: `/pstack:poteto-mode`, `/pstack:how`, or `/pstack:poteto-help`. Codex: select the same names in the skill picker, or mention `$pstack:poteto-mode`, `$pstack:how`, or `$pstack:poteto-help`. ## Driving it with the parent apps @@ -33,6 +34,7 @@ Preconditions: installed candidate identity established, authenticated selected - **Repeat-mistake correction:** build a scratch repository with a genuine two-commit history — commit 1 adds a small module plus one call site carrying a recognizable mistake (a second hand-maintained list, an inline normalization copied instead of shared), and commit 2 repeats the same mistake at another call site. Invoke the skill through its manual entry point: `/pstack:correct` in Claude Code, or `pstack:correct` in the Codex skill picker or a `$pstack:correct` mention. Expect the run to group both commits into one mistake class, fix it at the highest level that works (structure, types, or a lint or CI check whose error names the fix — not a docs-only fix when a higher level applies), and prove the new check fails when the second commit's mistake is reintroduced. Expect a rule-table entry pairing the rule with its enforcement and a reply naming each class, its evidence, and why a higher level did not work. - **Agent-shaped screening:** in a fresh parent session submit `Use pstack:architect. Sketch the design for and stop before implementation.` on a fixture whose shortest-path candidate would add a second writer to shared state or duplicate a list of items. Expect the candidate screen to reject or revise shapes with split ownership, two ways to do one task, importable internals, or a hand-synced list, and to prefer the design where a change that looks right from one file is right for the whole repo. - **Perf ordering and stop semantics:** in a fresh parent session run a perf task through `pstack:poteto-mode` where the traced slowdown is work whose result nothing uses, so the cheapest mantra applies. Expect hypotheses ordered cheapest-first through the seven mantras and the run to stop once an earlier mantra meets the agreed target rather than escalating to caching, batching, or concurrency. In a separate sustained-metric task, expect hypotheses ordered by the same mantras while hillclimb keeps its own stop predicate — the target paired with an attempts floor — because it borrows only the order, not the perf-issue stop rule. +- **Help boundary:** in a fresh parent session submit `Use pstack:poteto-help. How do I set up pstack, and which skill should I use to get a PR reviewed?` Expect a help-only answer: no implementation and no configuration changes. The reply leads with the answer, gives at most one example prompt, and links the owning file's public copy. Check the grounded distinctions against the actual parent: the model sheet path (`~/.claude/pstack-models.md` on Claude Code, `~/.codex/pstack-models.md` mirrored into `~/.codex/AGENTS.md` on Codex) with every role on its documented default when no sheet exists, native versus external worker routing for the named providers, persistence through session-start routing rather than a mode toggle (automatic on Claude Code, opt-in `SessionStart` hook trust on Codex), and recovery only through the sheet's saved fallback chains. Confirm `git status --short` and the host's model sheet and integration bytes are unchanged. Then, in a separate fresh session, submit a work request that names pstack, such as `Use pstack to fix `, and expect the work to proceed under `pstack:poteto-mode` rather than being answered as help. - **Evidence:** retain parent input, skill loads, native events or external receipts, and `git status --short` plus `git diff` before and after. Verify referenced source locations and the stated persistence behavior against the orchestration recipe. ## Gotchas @@ -40,5 +42,6 @@ Preconditions: installed candidate identity established, authenticated selected - The general and direct entry prompts prove read-only workflow entry; they do not cover implementation, architect, arena, or review panels. - The benchmark, fresh-worker, schema-cast, and PR-heading fixtures prove the loaded skill's guidance in the reply or diff; they do not prove a completed benchmark, a merged PR, or an armed loop. - The correction fixture proves mistake-class mining and enforcement on a synthetic two-commit history, not prevention across an arbitrary real codebase. The screening and perf-ordering recipes prove the loaded guidance in the reply or plan, not a finished design or a measured win. +- The help recipe proves the help-versus-work boundary and grounded routing pointers in the reply. It does not prove installation, setup writes, or that session-start routing later fires. - Reading a skill manually or launching an external worker directly does not prove the parent selected it. - Do not add a timeout, weaker model, or unsaved backup to finish a verification run. diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 8e9ee7e..8a83366 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -9,7 +9,7 @@ "name": "pstack", "source": "./plugins/pstack", "description": "if you want to go fast, go deep first. pstack helps you write less, but higher quality code. rigorous agent workflows you can parallelize with confidence.", - "version": "1.11.0", + "version": "1.12.0", "author": { "name": "Lauren Tan (original)" }, diff --git a/CHANGELOG.md b/CHANGELOG.md index 36d03ce..00b4ce3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ This file records what each version of the Open Pstack package changed. Versions Entries describe package versions. Published release checkpoints have tag links; installation follows `main` unless pinned. Validation belongs to the linked pull requests. Older reports remain available through immutable links. +## 1.12.0 adds help for setup and workflows + +Cursor baseline: [0.15.10](https://github.com/cursor/plugins/tree/4e5b1cf2ccb0ea3716f08c8ee0a5856b5ab93536/pstack). [Issue #113](https://github.com/arjitj2/open-pstack/issues/113). [PR #114](https://github.com/arjitj2/open-pstack/pull/114). Tag [v1.12.0](https://github.com/arjitj2/open-pstack/releases/tag/v1.12.0). + +Adds `poteto-help` for setup, skill selection, and troubleshooting. Help questions receive grounded guidance without starting the work; action requests proceed through `poteto-mode`. The shared skill reflects this distribution’s Codex/Claude invocation, providers, model policy, and startup controls. + ## 1.11.0 strengthens engineering evidence Cursor baseline: [0.15.9](https://github.com/cursor/plugins/tree/e43c7ee26e0038c6c1fa8380dd34ce86ff94cb2a/pstack). [Issue #110](https://github.com/arjitj2/open-pstack/issues/110). [PR #111](https://github.com/arjitj2/open-pstack/pull/111). Tag [v1.11.0](https://github.com/arjitj2/open-pstack/releases/tag/v1.11.0). diff --git a/README.md b/README.md index 13b268e..8121c0f 100644 --- a/README.md +++ b/README.md @@ -163,6 +163,7 @@ Use the verification skill for each change. If you add or change a feature, upda | `babysit` | A pull request needs CI failures and review comments handled until it is ready. | | `reflect` | A hard task is finished and its lessons should improve the next run. | | [correct](plugins/pstack/skills/correct/SKILL.md) | You keep correcting agents for the same mistakes and want the repo changed so the next agent cannot repeat them. | +| [poteto-help](plugins/pstack/skills/poteto-help/SKILL.md) | You want help installing, setting up, or picking the right pstack skill. | Plugin skills include `pstack:` in their name. In Claude Code, invoke `/pstack:architect`. In Codex, select `pstack:architect` from the skill picker or mention `$pstack:architect`. Browse the [packaged skills](plugins/pstack/skills/) for each skill's description and instructions. diff --git a/UPSTREAM.md b/UPSTREAM.md index 36e8b1e..4743667 100644 --- a/UPSTREAM.md +++ b/UPSTREAM.md @@ -10,13 +10,13 @@ This page records the current Cursor baseline and the maintainer procedure for r | --- | --- | | Repository | `https://github.com/cursor/plugins.git` | | Path | `pstack/` | -| Commit | `e43c7ee26e0038c6c1fa8380dd34ce86ff94cb2a` | -| Upstream version | `0.15.9` | -| open-pstack version | `1.11.0` | +| Commit | `4e5b1cf2ccb0ea3716f08c8ee0a5856b5ab93536` | +| Upstream version | `0.15.10` | +| open-pstack version | `1.12.0` | The table records the packaged version on `main` and the Cursor content it incorporates, minus the exclusions below. Detecting or reviewing a newer Cursor commit does not advance this baseline. Cursor's version identifies the imported content. The open-pstack version identifies the cross-harness package, and its numbers are independent of Cursor and Eric's port. -The upstream README at this baseline is [cursor/plugins `pstack/README.md` @ e43c7ee2](https://github.com/cursor/plugins/blob/e43c7ee26e0038c6c1fa8380dd34ce86ff94cb2a/pstack/README.md). [CHANGELOG.md](CHANGELOG.md) records the baseline of each release, and [NOTICE.md](NOTICE.md) records provenance. +The upstream README at this baseline is [cursor/plugins `pstack/README.md` @ 4e5b1cf2](https://github.com/cursor/plugins/blob/4e5b1cf2ccb0ea3716f08c8ee0a5856b5ab93536/pstack/README.md). [CHANGELOG.md](CHANGELOG.md) records the baseline of each release, and [NOTICE.md](NOTICE.md) records provenance. ## Upstream-only exclusions @@ -25,6 +25,7 @@ The upstream README at this baseline is [cursor/plugins `pstack/README.md` @ e43 - The `23a56e2` default-model hunks for `bug-fix`, `perf-issue`, and `hillclimb` are not applied, and the equivalent hunks in `889ec4b` and `70b2dc8` carry the same exclusion. The first-run defaults for those roles stay on `codex:gpt-5.6-sol@max` for cost. Existing user assignments take precedence. - The `23e4138` invocation flags for `benchmark-checklist` and the numerical-evidence principle are adapted to preserve automatic workflow use. The new `correct` skill keeps its manual invocation flag. Cursor-only guide content remains excluded. - The `9511e60` test-deletion instruction preserves meaningful absence and relational-contract tests, matching this port’s test-behavior principle. +- The `4e5b1cf` help workflow uses this distribution’s owning documents, namespaced invocation, native/external routes, and host startup controls. Cursor Custom Modes, excluded `make-bot-ui`, and Cursor-only guide edits are not applied. - The Claude manifest does not take the logo field from `efa2a53` because Claude Code has no schema for it. The Codex manifest exposes the shared asset instead. Earlier exclusions include Cursor's Benny automation, tutorial and sticky-mode UI, Cursor-only agent metadata, and Team Kit tools covered by host built-ins or bundled skills. The [historical port record](https://github.com/arjitj2/open-pstack/blob/5f0bb42dea46344c2f1961ebeebaeee135b49778/docs/reference.md#whats-deliberately-not-ported) records those source revisions. diff --git a/maintenance/upstream-ledger.json b/maintenance/upstream-ledger.json index 0a144f6..02edd57 100644 --- a/maintenance/upstream-ledger.json +++ b/maintenance/upstream-ledger.json @@ -87,9 +87,17 @@ "subject": "refactor(pstack): use bare performance mantras in perf-issue step 2 (#496)", "reason": "Adapt ordered performance mantras into the provider-aware playbooks. Both hosts stop perf investigation at its verified target while retaining the hillclimb target AND iteration-floor predicate.", "evidence": "https://github.com/arjitj2/open-pstack/pull/111" + }, + { + "commit": "4e5b1cf2ccb0ea3716f08c8ee0a5856b5ab93536", + "date": "2026-10-04", + "status": "adapted", + "subject": "feat(pstack): add /poteto-help skill (#502)", + "reason": "Adapt poteto-help to Codex/Claude invocation, local model sheets, approved provider recovery, startup routing, bundled skills, and distribution documentation. Preserve help-versus-action intent. Cursor Custom Modes and Cursor-only guide edits remain excluded.", + "evidence": "https://github.com/arjitj2/open-pstack/pull/114" } ], - "reviewed_through": "e43c7ee26e0038c6c1fa8380dd34ce86ff94cb2a", + "reviewed_through": "4e5b1cf2ccb0ea3716f08c8ee0a5856b5ab93536", "schema": 1, "source": { "path": "pstack/", diff --git a/plugins/pstack/.claude-plugin/plugin.json b/plugins/pstack/.claude-plugin/plugin.json index 448a38b..a2ac21a 100644 --- a/plugins/pstack/.claude-plugin/plugin.json +++ b/plugins/pstack/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "pstack", "displayName": "pstack", - "version": "1.11.0", + "version": "1.12.0", "description": "if you want to go fast, go deep first. pstack helps you write less, but higher quality code. rigorous agent workflows you can parallelize with confidence. Ported from cursor/plugins/pstack for Claude Code and Codex.", "author": { "name": "Lauren Tan" diff --git a/plugins/pstack/.codex-plugin/plugin.json b/plugins/pstack/.codex-plugin/plugin.json index a74ec95..5cac8d8 100644 --- a/plugins/pstack/.codex-plugin/plugin.json +++ b/plugins/pstack/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "pstack", - "version": "1.11.0", + "version": "1.12.0", "description": "if you want to go fast, go deep first. pstack helps you write less, but higher quality code. rigorous agent workflows you can parallelize with confidence. Codex port of the Claude Code plugin; skills are shared, tool names resolve via skills/poteto-mode/references/codex-tools.md.", "author": { "name": "Lauren Tan" diff --git a/plugins/pstack/skills/poteto-help/SKILL.md b/plugins/pstack/skills/poteto-help/SKILL.md new file mode 100644 index 0000000..80bd1ee --- /dev/null +++ b/plugins/pstack/skills/poteto-help/SKILL.md @@ -0,0 +1,160 @@ +--- +name: poteto-help +description: Guides users through pstack setup, poteto-mode, and picking the skill, playbook, or principle for a task. Use for poteto-help, or when the user asks how to install, set up, or use pstack, or which pstack skill fits. Not for requests to do work, even ones that name pstack. +--- + +# Poteto help + +Answer the user's question about pstack, hand them a prompt they can send, and link the file the answer came from. For a help question, don't start the work. The user asked how, and a pstack run spends real tokens, so let them send the prompt. + +A message that asks for work, such as "use pstack to fix this bug", is not a help question. Read [`poteto-mode`](../poteto-mode/SKILL.md), do the work under it, and mention once that session-start routing can keep it coming back for later tasks. + +This file maps questions to the skills and docs that hold the answers. Those files own the details. Read the file you route to before you quote it, and trust it when it disagrees with this map. The links here point into the installed plugin, which the user may not be able to open, so give the user the file's public copy: `https://github.com/arjitj2/open-pstack/blob/main/plugins/pstack/` followed by its path. Install and update steps live in the README, which isn't packaged; its public copy is `https://github.com/arjitj2/open-pstack/blob/main/README.md`. + +## Find out what they need + +Infer the need from the message and the conversation. A named situation, such as "which skill reviews a PR?", goes straight to its section. If the need is still unclear, ask one multiple-choice question with these options, then answer only the section they pick: + +- Get set up +- Start a task with `poteto-mode` +- Pick a skill for a situation +- Fix a run that went wrong +- Make pstack my own + +Check the state that changes the answer, and mention it only when it does: + +- Read the active parent's model sheet: `~/.claude/pstack-models.md` on Claude Code or `~/.codex/pstack-models.md` on Codex. A missing sheet uses documented role defaults. A missing role in a policy-enabled sheet is an error, not permission to use a default; unreadable or malformed sheets also fail. See [provider dispatch](../poteto-mode/references/provider-dispatch.md) for the legacy-sheet distinction. +- No `verify-*` skill or other app harness in the project means agents have no scripted way to drive the app. Mention `create-verification-skill` when the question is about proving a change works. + +Skill names are namespaced under `pstack:`. In Claude Code, invoke `/pstack:poteto-mode`. In Codex, select `pstack:poteto-mode` in the skill picker or mention `$pstack:poteto-mode`. The rest of this file writes the bare names. + +## Get set up + +1. Install from the README's Install section (`https://github.com/arjitj2/open-pstack/blob/main/README.md#install`). In Claude Code, run `/plugin marketplace add arjitj2/open-pstack` then `/plugin install pstack@open-pstack` inside the app. In Codex, run `codex plugin marketplace add arjitj2/open-pstack` then `codex plugin add pstack@open-pstack` in the shell. +2. Run `setup-pstack`. It asks for a reasoning budget, checks the providers you pick, maps a model to each role, and writes the model sheet: `~/.claude/pstack-models.md` on Claude Code, `~/.codex/pstack-models.md` mirrored into `~/.codex/AGENTS.md` on Codex. The saved sheet loads at the start of a session or task. +3. Start a real task with `poteto-mode`, a goal, and a check that can pass or fail. + +Claude Code loads pstack's session-start routing at session start, clear, and compaction, so non-trivial engineering work enters `poteto-mode` without naming it. Codex ships the same routing as an opt-in `SessionStart` hook covering startup, resume, clear, and compaction: it stays inactive until the user reviews and trusts the pstack entry in `/hooks`. The README's Get started section has the details. Offer to word their first prompt with them. + +If cost is the worry, say where the tokens go and how to spend fewer. pstack spends extra tokens on subagents and review panels. Rerun `setup-pstack` and pick a smaller budget or cheaper models. A role set to `auto` or `inherit-parent` runs on the parent's current model. The sheet's access facts guide recommendations but do not prove entitlement; the saved API-spend setting controls whether metered access is authorized. The [provider dispatch contract](../poteto-mode/references/provider-dispatch.md) owns native versus external routes, access checks, and approved recovery chains. A shorter panel list runs fewer subagents, one for each entry. Save `poteto-mode` for work that needs rigor. + +This distribution runs in Claude Code and Codex. Its skills use the Agent Skills format, so other tools can read them, but workflow skills spawn subagents through the parent's delegation surface and the shipped runner, so they may not work elsewhere. For Cursor itself, use the original Pstack. [Lauren's guide](https://github.com/cursor/plugins/tree/main/pstack/docs/guide) walks a real task in Cursor's interface; the ideas carry over. + +## Start a task with `poteto-mode` + +`poteto-mode` matches the task to a playbook, copies the playbook's steps into the todo list, and runs the other skills as the steps need them. A step it skips stays in the list as `skip: `. A good prompt states the goal and how to tell it's done. It doesn't list skills, because a hand-written sequence tends to drop or reorder steps the playbook would keep. The Playbooks section of [`poteto-mode`](../poteto-mode/SKILL.md) has the list. + +How `poteto-mode` stays in effect depends on the parent: + +- Selecting the skill loads it for the task. It fades as the chat moves on. +- Claude Code reloads pstack's session-start routing at session start, clear, and compaction, so the next non-trivial engineering task enters `poteto-mode` again without naming it. +- On Codex the routing is opt-in. Once the user trusts the plugin's `SessionStart` entry in `/hooks`, new tasks route the same way. Untrusted or disabled, nothing routes: select the skill for each task. +- There is no mode to toggle on. Routing and explicit selection are the persistence. Mid-chat, "new task" makes the mode match a fresh playbook. + +For ad-hoc native helpers, Claude Code can use `poteto-agent`; Codex has no such agent type and instead passes instructions to read `poteto-mode`. Configured roles must use [provider dispatch](../poteto-mode/references/provider-dispatch.md), preserving their selected models and effort. See the [Codex tool mapping](../poteto-mode/references/codex-tools.md#subagent-policy) for host details. + +## Pick a skill + +The default answer is `poteto-mode`, which runs most of the others when its steps need them. Name a skill directly when the user wants more or less of something than the playbook gives. Read the skill before you recommend it, and give one example prompt. + +| The user wants to | Skill | +|---|---| +| Do any non-trivial task with rigor | [`poteto-mode`](../poteto-mode/SKILL.md) | +| Know how code works now, or where new code should live | [`how`](../how/SKILL.md) | +| Know why code is shaped this way, or where a number came from | [`why`](../why/SKILL.md) | +| Understand a change or subsystem, explained plainly | [`teach`](../teach/SKILL.md) | +| Catch up on their own recent work on a topic | [`recall`](../recall/SKILL.md) | +| Know what a small diff could break outside itself | [`blast-radius`](../blast-radius/SKILL.md) | +| Settle types and module shape before code that crosses a function boundary | [`architect`](../architect/SKILL.md) | +| Get several attempts at one brief, merged into the best one | [`arena`](../arena/SKILL.md) | +| Run parallel checks over slices, or race workers | [`swarm`](../swarm/SKILL.md) | +| Have several models review a diff and try to break it | [`interrogate`](../interrogate/SKILL.md) | +| Fix a bug test-first when a cheap local test exists | [`tdd`](../tdd/SKILL.md) | +| Apply TypeScript rules to `.ts` or `.tsx` work | [`typescript-best-practices`](../typescript-best-practices/SKILL.md) | +| Strip comments before review, using a reviewer that didn't write them | [`no-comments`](../no-comments/SKILL.md) | +| Clean AI tells out of prose | [`unslop`](../unslop/SKILL.md) | +| Clean AI slop and style noise out of code | [`deslop`](../deslop/SKILL.md) | +| Write docs, an RFC, a README, a PR description, or a commit message to a standard | [`technical-writing`](../technical-writing/SKILL.md) | +| Hear the last reply again in plain words | [`bro`](../bro/SKILL.md) | +| Give agents a scripted way to drive the app and prove behavior | [`create-verification-skill`](../create-verification-skill/SKILL.md) | +| Bring a verification skill and its feature map back in line with the app | [`maintain-verification-skill`](../maintain-verification-skill/SKILL.md) | +| Vet a performance number before reporting or acting on it | [`benchmark-checklist`](../benchmark-checklist/SKILL.md) | +| Run a large or cross-cutting change, or one to review after stepping away | [`figure-it-out`](../figure-it-out/SKILL.md) | +| Keep a decision log during a run, and review it afterward | [`show-me-your-work`](../show-me-your-work/SKILL.md) | +| Shepherd an open PR to merge-ready without re-prompting | [`babysit`](../babysit/SKILL.md) | +| Find and fix a PR's failing checks | [`fix-ci`](../fix-ci/SKILL.md) | +| Resolve a merge conflict non-interactively | [`fix-merge-conflicts`](../fix-merge-conflicts/SKILL.md) | +| Fetch and summarize review comments on the active PR | [`get-pr-comments`](../get-pr-comments/SKILL.md) | +| Tidy a PR's history, description, and reviewer guidance | [`make-pr-easy-to-review`](../make-pr-easy-to-review/SKILL.md) | +| Get an especially harsh maintainability review | [`thermo-nuclear-code-quality-review`](../thermo-nuclear-code-quality-review/SKILL.md) | +| Summarize their commits over a period | [`what-did-i-get-done`](../what-did-i-get-done/SKILL.md) | +| Pick a model for each role and a reasoning budget | [`setup-pstack`](../setup-pstack/SKILL.md) | +| Turn their own working habits into a personal mode skill | [`automate-me`](../automate-me/SKILL.md) | +| Turn what a finished task taught into skill edits | [`reflect`](../reflect/SKILL.md) | +| Stop agents from repeating the same mistakes in this repo | [`correct`](../correct/SKILL.md) | +| Find their way around pstack | `poteto-help` | + +If a skill directory next to this one is missing from the table, read its frontmatter and route by its description. The `principle-*` directories are covered under principles below. + +Close calls: + +- `how` explains what the code does. `why` explains the reasons. `teach` runs one or both and explains the result plainly. +- `arena` gives every worker the same brief and merges the best parts. `swarm` splits work into slices or a race and returns one report. +- `architect` implements right after it settles the design. Add "with checkpoint" to review the design before it writes code. +- `interrogate` reviews the diff. `blast-radius` looks for breakage outside the diff and proves the one fact that makes the change safe. +- `recall` rebuilds context across recent sessions. Resuming one specific task or branch is the Session pickup playbook. +- A PR-status request under `poteto-mode` runs the Babysit playbook. The bundled `babysit` skill is the standalone form of the same job outside a run. +- `figure-it-out` designs one rigorous run. The Orchestrate playbook runs a program that spans days and many PRs. The Autonomous run playbook drives one task to a finish condition. + +Not in pstack: + +- `control-cli` and `control-ui` are Cursor Team Kit tools. The equivalents here are Claude Code's built-in `run` and `verify`; [`codex-tools.md`](../poteto-mode/references/codex-tools.md) maps them on Codex. +- `/create-skill` is a Cursor built-in. Authoring guidance here lives in `plugin-dev:skill-development`. +- `/loop`-style scheduling is a host built-in, not a pstack skill. +- pstack has no `/orchestrate` skill. Orchestrate is a `poteto-mode` playbook backed by the shipped `orch` bookkeeping CLI. If a slash menu shows `/orchestrate`, another plugin provides it. +- Cursor's Custom Mode is not part of this port. Persistence comes from session-start routing and explicit selection, described under Start a task. + +`deslop` and `babysit` are bundled in this distribution. `deslop` comes from Cursor Team Kit; `babysit` is port-authored. + +## Playbooks and principles + +Playbooks are step lists inside `poteto-mode`, not skills, so they have no slash command. Inside `poteto-mode`, describing the task picks one, and these phrases name one directly: + +- "babysit this pr" or "check on pr 123" runs Babysit. It drives the PR to merge-ready and stops there. It doesn't merge unless the user asks to merge, land, or ship. +- "land the stack" runs Shipping. +- "take over this branch" runs Session pickup. +- "pause safely" runs Pause safely. +- "full autopilot on this queue" runs Autopilot-full. "stack them, don't ship" runs Autopilot-stack. +- "run the eval playbook" runs Eval. + +Without `poteto-mode`, a phrase such as "babysit this pr" can start the bundled `babysit` skill for the same job instead. The Playbooks section of [`poteto-mode`](../poteto-mode/SKILL.md) lists every playbook and when it applies. + +pstack has no planning skill. The host's plan feature works alongside it. For work that spans phases or stacked PRs, asking `poteto-mode` for a plan runs the [Multi-phase plan playbook](../poteto-mode/playbooks/multi-phase-plan.md), which writes the plan and doesn't implement it. For a design question, the Prototype playbook or `architect` settles it in code first. + +Principles are one-rule skills that `poteto-mode` reads and cites in its replies. They don't appear in the skill picker. The user steers with the names instead, as in "apply prove it works. show me the real output." The Principles section of [`poteto-mode`](../poteto-mode/SKILL.md) lists them. + +## Fix a run that went wrong + +| Symptom | Fix | +|---|---| +| The mode stopped applying after a few turns | The skill was selected for one task. Persistence is session-start routing (always on Claude Code; on Codex once the `SessionStart` hook is trusted in `/hooks`) or selecting `poteto-mode` per task. | +| Codex tasks never enter `poteto-mode` on their own | The `SessionStart` hook is untrusted or disabled. Trust it in `/hooks`, or select the skill by name. | +| A question got treated as the next step of the last task | Say "new task", or say the turn doesn't need the mode. | +| A new model choice had no effect | The saved sheet loads at the start of a session or task. Start a new one. | +| Runs cost more than expected | See the cost paragraph under Get set up. | +| A skill didn't load on its own | Skills load when named, when a description matches, or when `poteto-mode` runs them, and it doesn't run every skill. Session-start routing only steers non-trivial engineering work into `poteto-mode`. | +| Parallel agents overwrote each other | Give each writer its own worktree or unique output directory. | +| A worker stopped instead of switching models | By design. Only the sheet's saved `primary -> fallback` chain, under its [`# fallback` policy](../poteto-mode/references/provider-dispatch.md#saved-fallback-and-backend-recovery), may take over. Anything else is a dropout; repair the route or change assignments through `setup-pstack`. | +| An overnight run moved but finished nothing | A scheduled loop needs a check that can pass or fail, not a duration. | +| The reply claims success from a green build | Ask for the real command, flow, stored value, or profile. That's the prove-it-works principle. | + +## Make pstack my own + +- [`automate-me`](../automate-me/SKILL.md) drafts a personal mode skill from the user's own history, to use alongside `poteto-mode`. +- [`reflect`](../reflect/SKILL.md) after a session turns its lessons into skill edits the user approves. +- `poteto-mode write a skill for ` runs the authoring playbook. The eval playbook tests a skill change blind. +- Fix a misbehaving skill in its own PR, not inside the feature work where it went wrong. + +## Reply + +Lead with the answer. Give at most one example prompt in a code block, then the link to that file. Keep it short unless the user asked for the whole map.