Open Pstack is one repository with one shared skill tree and catalog, and three installable plugins. The repo is gannonh/open-pstack. The marketplace name is open-pstack.
- Cursor plugin id:
open-pstack. Distinct from Lauren Tan's official Cursor pluginpstack. - Claude Code plugin id:
pstackvia marketplaceopen-pstack. - Codex plugin id:
pstackvia marketplaceopen-pstack.
The shared tree is plugins/pstack/skills/ plus plugins/pstack/catalog/.
Open Pstack brings Lauren Tan (@poteto)'s pstack to Cursor, Claude Code, and Codex. Its job is to stay as close to her original work as possible while translating the parts that depend on one app.
Lauren built pstack from the skills she uses to ship code at Cursor. In a 55-minute interview with Denis Labelle, she says that she shipped 1,000 pull requests in one month after steadily improving how her agents work and verify their results.
If you want to go fast, go deep first.
Open Pstack is an unofficial community project. If you want Lauren's Cursor-native experience with Cursor-only features, use her original pstack. If you want one skill tree and one model sheet format across Cursor, Claude Code, and Codex, use this repository.
Grok runs through Cursor's CLI. The external model runner includes a cursor provider, so the Grok family can run through cursor-agent on a Cursor subscription. The descriptor is cursor:cursor-grok-4.6@<effort>. The runner invokes cursor-agent -p --model cursor-grok-4.6-<effort>. It proves availability through the cursor-agent models listing before the model starts. It verifies the served model from the CLI's stream-json init event. Cursor serves no max tier for that stem, so selectable efforts stop at xhigh. The standalone grok provider still works when that CLI is installed and authenticated.
Model routing is catalog-driven. Offerings and first-run role assignments live in plugins/pstack/catalog/. Setup can assign any cataloged provider, model, and effort per role. That includes Cursor Fable 5.1 (cursor:claude-fable-5-1) alongside Claude's rolling fable selector. See docs/models.md.
Cursor is a supported parent. The open-pstack Cursor plugin loads the same skills from the same plugin root. In Cursor, cursor:* descriptors run as native subagents. Claude, Codex, and Grok descriptors run through the same external runner the other parents use. Setup writes ~/.cursor/rules/open-pstack-models.mdc and leaves the original plugin's pstack-models.mdc alone.
The Cursor provider change is recorded in CHANGES.md under 1.3.0 and 1.3.1. Catalog-driven routing is 1.4.0 and 1.5.0. The Cursor plugin is 1.6.0. The Why and Reflect role-map split is 1.6.1. Codex Terra and Luna are 1.6.2.
pstack is a plugin for coding agents. It gives your agent engineering rules, step-by-step workflows for different kinds of work, focused skills, and small local tools.
The normal entry point is poteto-mode. You give it a task in plain language. It then:
- reads the task and chooses a workflow that fits;
- learns how the current system works before changing it;
- compares designs when the choice matters;
- favors small, simple changes over extra machinery;
- asks several models to challenge important decisions when useful;
- runs the code and checks real behavior instead of stopping at "the tests pass"; and
- carries the work through review, continuous integration (CI), and a ready-to-merge pull request when asked.
pstack does not ask you to trust an agent on day one. It helps the agent leave evidence you can inspect. Start with supervised work. Let it run more work in parallel only after its checks have earned that trust in your own repositories.
You need a current Cursor, Claude Code, or Codex installation. For the full four-model review, install and sign in to the Claude Code, Codex, and cursor-agent command-line tools. Bun runs the small local tool that starts models outside the app you are using. You can still use the core workflows with fewer models.
The plugin id is open-pstack. Disable Lauren's original pstack plugin while Open Pstack is enabled.
Install:
cursor-agent plugin marketplace add https://github.com/gannonh/open-pstackThen install open-pstack from Settings > Plugins.
Update:
cursor-agent plugin marketplace update gannonh-open-pstackRun these commands inside Claude Code:
/plugin marketplace add gannonh/open-pstack
/plugin install pstack@open-pstack
/reload-plugins
Or from your shell:
claude plugin marketplace add gannonh/open-pstack
claude plugin install pstack@open-pstackThe shell path has no reload step. The plugin loads when the next Claude Code session starts.
Install:
codex plugin marketplace add gannonh/open-pstack
codex plugin add pstack@open-pstackUpdate:
codex plugin marketplace upgrade open-pstack
codex plugin add pstack@open-pstackTurn on Codex subagents in ~/.codex/config.toml so pstack can compare work in parallel:
[features]
multi_agent = trueStart a new Codex task after install or upgrade so it can discover the skills and setting.
Lauren's original setup has two steps. Open Pstack keeps the same flow.
In Cursor, run:
/setup-pstack
In Claude Code, run:
/pstack:setup-pstack
In Codex, ask:
Use pstack:setup-pstack to configure pstack.
Setup checks the models you can actually run. It shows cataloged offerings, including alternate providers for the same logical model. It asks before saving the choices. The current default group uses Fable, GPT-5.6 Sol, Grok 4.6 through Cursor, and Opus. You can assign Cursor Fable 5.1, or another cataloged offering, to any role. See docs/models.md.
An older model sheet starts using cataloged rolling aliases in memory as soon as this release is installed. Uncataloged predecessor version pins migrate without losing role assignments. A cataloged explicit version is left unchanged. Run setup once after updating if you want that migration written to disk.
Start any task that needs careful engineering with poteto-mode.
In Cursor:
/poteto-mode Add saved filters to search. Keep the design simple, verify it in the real app, and open a pull request.
In Claude Code:
/pstack:poteto-mode Add saved filters to search. Keep the design simple, verify it in the real app, and open a pull request.
In Codex:
Use pstack:poteto-mode. Add saved filters to search. Keep the design simple, verify it in the real app, and open a pull request.
For that feature, poteto-mode should first understand how search works today. It should decide how the data should be represented before writing code, implement the smallest complete version, run the feature the way a user would, review the result, and prepare the pull request.
That is the main workflow. The other skills are there when poteto-mode needs them or when you want to call one directly.
| Skill | Use it when |
|---|---|
how |
You want a clear explanation of how part of the system works. |
why |
You want evidence for why the system was built that way. |
architect |
A change crosses a function or module boundary and the design needs to be settled first. |
arena |
You want several complete attempts, followed by a comparison of their best parts. |
interrogate |
You want different models to try to break a design or diff. |
create-verification-skill |
Your project has no repeatable way for an agent to prove real behavior. |
maintain-verification-skill |
The project's verification instructions no longer match the product. |
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. |
In Cursor, skills carry no prefix: /architect. Plugin skills include pstack: in their name in Claude Code and Codex. In Claude Code, invoke a native skill such as /pstack:architect. In Codex, ask for the skill, such as Use pstack:architect for this design. See the technical reference for the full list.
Some pstack workflows use one model. Skills such as architect, arena, and interrogate can run several models in parallel. Each model run uses the subscription and token allowance of its own command-line tool.
setup-pstack lets you choose provider, model, and effort per role or panel lane from the catalog. A model from the app you are using runs inside that app. Other models run through their own command-line tools. Open Pstack does not quietly replace a failed model with a weaker one.
All three apps read the same pstack skills. Only the way they start those skills and models is different.
| Cursor | Claude Code | Codex | |
|---|---|---|---|
| Start poteto-mode | The installed plugin's always-applied rule routes non-trivial work into it. You can also run /poteto-mode yourself. |
Claude loads a small startup instruction that can route non-trivial work into it. You can also run /pstack:poteto-mode yourself. |
Ask for pstack:poteto-mode by name. Codex does not load the Claude startup instruction. |
| Runs inside the app | cursor:* models (Grok 4.6, Cursor Fable 5.1) run as Cursor subagents. |
Claude models stay inside Claude Code. | The Sol model stays inside Codex. |
| Other models | Claude and Codex run through their signed-in CLIs. | Codex runs through its signed-in CLI; Grok runs through the signed-in Cursor CLI. | Claude runs through its signed-in CLI; Grok runs through the signed-in Cursor CLI. |
| Model sheet | ~/.cursor/rules/open-pstack-models.mdc, an always-applied rule. |
~/.claude/pstack-models.md, included from CLAUDE.md. |
~/.codex/pstack-models.md, mirrored into AGENTS.md. |
| Skills and workflows | Shared. | Shared. | Shared. |
A cursor:* descriptor names a model Cursor serves. The cursor provider is a model lane, and Cursor the app is also a parent that can run pstack. Cursor may replace a subagent's configured model under team or plan restrictions; pstack checks the served model against the request and reports a mismatch as a failed lane rather than accepting the substitute. The standalone Grok Build CLI can still take part in a multi-model review, but you cannot use it as the main app running pstack.
Lauren's pstack guide walks through a real task, verification, and longer unattended runs. It uses Cursor's interface, and the ideas are the same everywhere. Use the translated skill invocations above in Cursor, Claude Code, or Codex.
This repository also keeps:
- the original README, unchanged;
- the technical reference for every skill, dependency, and Cursor, Claude Code, or Codex detail;
- the model catalog and routing guide;
- the upstream sync record and update process;
- the change record for every adaptation; and
- the attribution record for pstack and the imported Cursor Team Kit skills.
Open Pstack 1.6.3 tracks pstack 0.15.0 at Cursor commit 71ed0d1076fec562c1b74ee353121a8d00f75382.
The two projects have separate version numbers. The pstack version identifies Lauren's upstream content. The Open Pstack version identifies the Cursor, Claude Code, and Codex package built from it.
In this repository, "upstream" means Lauren's Cursor pstack. Open Pstack does not promise instant updates. It records the exact version it follows and reviews new changes in order. It changes only what Cursor, Claude Code, and Codex require. New pstack behavior belongs in Lauren's official Cursor plugin first whenever possible.
Open Pstack began as Michael Denyer's pstack-claude port of Lauren's pstack. ericlitman/open-pstack later became the canonical distribution. That event is recorded under 1.1.0 in CHANGES.md.
This repository is gannonh/open-pstack. Soft-fork tracking of ericlitman/open-pstack ended 2026-09-06. Cursor pstack is the only content-sync source. The optional ericlitman git remote is an archive. Never merge from it. Do not name a remote upstream that points at ericlitman.
Product work stays in Linear project Open Pstack and in this repository. GitHub Issues are inbound reports only. Do not use them for planning. Do not file product issues on ericlitman/open-pstack by default. If a change belongs in Lauren's official Cursor plugin pstack, send it there.
Read UPSTREAM.md before changing content brought over from Lauren's pstack. Pull requests must keep one shared skill tree for Cursor, Claude Code, and Codex. They must pass the repository's tests, type checks, plugin validation, and static checks.
MIT. pstack was created by Lauren Tan. Open Pstack includes history from Michael Denyer's pstack-claude port and attributed MIT-licensed work from Cursor Team Kit and Superpowers. See NOTICE.md and the preserved license files for details.
