pstack-claude: Poteto's pstack Ported from Cursor to Claude Code, Codex, opencode and Gemini CLI
Claude Code, Codex, OpenCode, Gemini, and Prime Agent versions of Poteto's pstack. Rigorous agent workflows with Cursor primitives translated to other agents.
At a glance
- What is it?
- pstack-claude packages 31 public agent workflows plus 23 principle skills, synced against upstream e8d856f, and installs either as a Claude Code plugin or through a shared ~/.agents/skills directory. The port is real, but only Claude Code gets the startup hook, and delegation on Prime Agent, opencode and Gemini CLI is unverified.
- Who is it for?
- Adopt pstack-claude if you already run Claude Code and want a structured path from understanding a codebase to a reviewable pull request, or if you run Codex and are willing to merge the documented multi_agent setting and add a standing poteto-mode instruction to AGENTS.md.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The problem pstack-claude solves: Cursor workflows that only ran in Cursor
Lauren Tan's pstack is a set of agent workflows for reading a codebase, designing a change, testing a fix and preparing a pull request. It was built against Cursor primitives. This repository ports it, and the port is the entire point: the skill bodies are shared, while the runtime glue around them is written per agent.
The intended audience is an engineer who already drives a coding agent and wants repeatable procedure instead of ad hoc prompting. The README's entry point is `poteto-mode`, which picks a workflow for a task; if you already know the shape of the work, you name the skill directly. The examples given are explaining a request path from API handler to database, reproducing a failing case with `tdd` before fixing it, reviewing a diff with `interrogate`, and tidying history and description with `make-pr-easy-to-review`.
The repository also carries seven skills from cursor-team-kit and a standalone `babysit` skill, so it is not a pure mirror of upstream. The skill tree is synced against upstream `e8d856f`, which is the commit you would compare against if you want to know how far the port has drifted.
How the port works: one skill tree, per-runtime glue
The architecture is a shared skills directory plus runtime-specific packaging. On Claude Code, pstack ships as a plugin with a `SessionStart` hook. That hook loads a short instruction on startup, on `/clear`, and after compaction, directing non-trivial engineering tasks to `poteto-mode`; the full skill loads only when invoked. Two boundaries are documented: explicit user instructions take precedence, and dispatched subagents ignore the startup instruction.
On Codex, Prime Agent, opencode and Gemini CLI, the same skills are reached through `~/.agents/skills/`. The README states the shared installation links 54 skill directories, of which 31 are public workflows and 23 are `principle-*` directories that `poteto-mode` reads. It explicitly says to keep all of them installed even if your runtime lists the principles in its skill picker.
The honest part of the README is its verification table. Discovery and reading a linked skill were verified on opencode 1.18.25. For Prime Agent and Gemini CLI, discovery follows published documentation with no live session recorded. Delegation and multi-model workflows remain unverified on Prime Agent, opencode and Gemini CLI, and those runtimes must translate Claude-specific tool, model and configuration names themselves. A Codex mapping document at `plugins/pstack/skills/poteto-mode/references/codex-tools.md` covers agent dispatch, model selection and project verification.
That split is the design trade-off. You get one place to edit workflow prose, and you pay for it in translation work that no one has finished for three of the five runtimes.
Installing pstack-claude on Claude Code and running a first skill
Claude Code users install through the plugin marketplace. Two commands, run inside a session, add the marketplace and install the plugin:
/plugin marketplace add michael-denyer/pstack-claude
/plugin install pstack@pstack-claudeAfter that, the `SessionStart` hook is active and `/pstack:<skill>` commands resolve. The README's canonical first task is a concrete one, not a tour of the skill list:
Use poteto-mode to add pagination to the search results.If automatic routing gets in the way, the README gives an exact removal path: delete `hooks/hooks.json` from the installed plugin at `~/.claude/plugins/cache/pstack-claude/pstack/<version>/`. The same paragraph warns that a plugin update restores the file, so this is a setting you reapply, not a one-time switch.
Before running workflows that compare independent designs or reviews, configure models with `setup-pstack`. Defaults live in `plugins/pstack/models.json`. The Claude Code override sheet is `~/.claude/pstack-models.md`. The README advises using distinct available models for panels, which matters because a panel of one model is not a panel.
Installing the shared skills for Codex, Prime Agent, opencode and Gemini CLI
The non-Claude path links each skill directory into `~/.agents/skills/`. Clone the repository and loop over the skill folders:
mkdir -p ~/.agents/skills
for s in plugins/pstack/skills/*/; do
ln -s "$PWD/$s" ~/.agents/skills/"$(basename "$s")"
doneTwo constraints come with this. The commands leave existing destinations intact, so if a name already exists you inspect it before replacing it. And the clone must stay in place while its links are installed, which means updating linked skills means pulling changes in that clone. Uninstalling a linked skill means removing its link at `~/.agents/skills/<name>`, and the README notes that removes it from every runtime using the shared directory.
If you would rather not maintain a clone, the repository supports the `skills` CLI:
npx skills add https://github.com/michael-denyer/pstack-claude/tree/main/plugins/pstack/skills --skill "*" --agent "*" --yesThat path is skills-only: skills, their scripts, reference copies of the agents and license notices. Runtime-specific plugin files are separate, namely Claude Code's startup hook and native agent registration, and Codex's command shortcuts.
Codex needs two extra steps. First, parallel subagents require a feature flag merged into `~/.codex/config.toml`:
[features]
multi_agent = trueSkills including `arena`, `interrogate` and `architect` use parallel agents, and the port provides a sequential fallback when subagents are unavailable. Second, optional slash shortcuts are created by symlinking the prompt files:
mkdir -p ~/.codex/prompts
for c in plugins/pstack/.codex-plugin/prompts/*.md; do
ln -s "$PWD/$c" ~/.codex/prompts/"$(basename "$c")"
doneEach shortcut invokes its corresponding skill, and removing one means deleting its link at `~/.codex/prompts/<name>.md`. For automatic routing on Codex, the README says to add a standing instruction to use `poteto-mode` in your `AGENTS.md`. The model override sheet is `~/.codex/pstack-models.md`, whose contents belong in `~/.codex/AGENTS.md`.
Where pstack-claude is the wrong tool
The clearest limitation is runtime coverage. The startup hook ships with the Claude Code plugin only, so on Codex, Prime Agent, opencode and Gemini CLI you request `poteto-mode` explicitly every time or you arrange your own routing. The README states this plainly rather than implying parity.
Delegation is the second gap. On Prime Agent, opencode and Gemini CLI, multi-model and delegation workflows are unverified, and those runtimes must translate Claude-specific tool, model and configuration names themselves. If your work depends on a panel of independent reviewers or on subagent dispatch, the port does not currently promise that on those three runtimes.
There are dependency costs too. PR monitoring and shipping need the GitHub CLI, authenticated with `gh auth login`. The bundled `watch-pr` and `orch` scripts need Bun, and their bootstrap installs script dependencies on first run. The Orchestrate playbook and the `orch` stack frontier need the Graphite CLI, `gt`; shipping and autopilot playbooks fall back to plain `gh` or Origin's CLI when available. Complete PR and transcript columns in `worktree-audit.sh` need `jq` and `rg`.
Finally, the shared skill bodies retain Claude tool and model names. That is a deliberate choice, and it means anyone on a non-Claude runtime is reading instructions written for a different agent and translating as they go.
pstack-claude versus the original Cursor pstack
The real alternative is upstream pstack in Cursor, which is where these workflows were authored. The difference is not the workflow prose, since this repository syncs its skill tree against upstream `e8d856f`. The difference is the execution surface.
In Cursor, the skills run against Cursor's primitives directly. Here, the primitives are translated: Claude Code gets a plugin with a `SessionStart` hook and native agent registration, Codex gets a mapping document and symlinked prompt shortcuts, and the remaining runtimes get the shared skills directory plus whatever translation they do themselves. Cursor users also lose the extra material this port adds, namely the seven cursor-team-kit skills and the standalone `babysit` skill.
So the choice is between staying on the original runtime with the original primitives, or moving to a runtime where the workflows are shared but the glue is thinner and, on three runtimes, unverified. If you are on Claude Code, this port is the only way to get these workflows at all. If you are on Cursor, switching runtimes to use a port of your own tooling is hard to justify.
Maintenance, licensing and upgrade cost
The repository is not archived, and the last push was on 2026-09-14, so it is being changed. The release cadence in the recent notes is quick and specific: v0.9.30 on 2026-09-13 moved the Fable roles to Fable 5.1, v0.9.29 on 2026-09-11 fixed the verify driver and the todolist resolving on Claude Code, and v0.9.27 on 2026-09-09 made the sync tool run the three-way merge itself.
That last item is the upgrade story. The skill tree is synced against upstream `e8d856f`, and the sync tool performing its own three-way merge means upstream changes and local port changes are reconciled rather than overwritten. If you fork the skills, that merge is what you will be resolving.
Upgrade cost differs by install method. Claude Code plugin users get updates through the plugin, but note that a plugin update restores `hooks/hooks.json` if you deleted it to disable routing. Shared-directory users update by pulling in the clone that holds their links, and must keep that clone in place for the links to resolve. The `npx skills` installation avoids maintaining a clone but is skills-only, so it will not bring the Claude Code startup hook or the Codex command shortcuts.
The licence is MIT. The repository also carries `LICENSE-cursor-team-kit` and `NOTICE-skills.md`, which is consistent with a port that bundles skills from more than one source. If you redistribute the skills, read those files rather than assuming the top-level MIT licence covers everything. That is a description of what is in the tree, not legal advice.
Editorial conclusion
Adopt pstack-claude if you already run Claude Code and want a structured path from understanding a codebase to a reviewable pull request, or if you run Codex and are willing to merge the documented multi_agent setting and add a standing poteto-mode instruction to AGENTS.md. Do not adopt it expecting the same experience on Prime Agent, opencode or Gemini CLI: the README states delegation and multi-model workflows remain unverified there, and those runtimes must translate Claude-specific tool and model names themselves. Before committing, verify three things in your own checkout: that /plugin marketplace add michael-denyer/pstack-claude resolves, that all 54 skill directories link into ~/.agents/skills, and that setup-pstack writes a model sheet you are willing to keep at ~/.claude/pstack-models.md or ~/.codex/pstack-models.md. If you disable automatic routing by deleting hooks/hooks.json, note that a plugin update restores it.
Frequently asked questions
What is pstack-claude and how does it relate to Poteto's pstack?
It is a port of Lauren Tan's pstack from Cursor to Claude Code, with the same skills shared with Codex, Prime Agent, opencode and Gemini CLI. The skill tree is synced against upstream e8d856f, and the repository adds seven skills from cursor-team-kit plus a standalone babysit skill.
How do I install pstack-claude on Claude Code?
Run /plugin marketplace add michael-denyer/pstack-claude and then /plugin install pstack@pstack-claude inside a Claude Code session. The plugin's SessionStart hook then loads a short instruction on startup, /clear, and after compaction.
Do the pstack-claude skills work on Codex, opencode and Gemini CLI?
The shared installation links 54 skill directories into ~/.agents/skills, and discovery was verified on opencode 1.18.25. For Prime Agent and Gemini CLI, discovery follows published documentation with no live session recorded, and delegation and multi-model workflows remain unverified on Prime Agent, opencode and Gemini CLI.
How do I turn off automatic routing to poteto-mode in pstack-claude?
Delete hooks/hooks.json from the installed plugin at ~/.claude/plugins/cache/pstack-claude/pstack/<version>/. The README notes that a plugin update restores that file, so the change has to be reapplied.
Community notes