Skip to content
v0.4.0MIT

pstack's rigorous agent workflows, ported to Claude Code and Codex. Write less, but higher quality code.

xstack

xstack is a plugin for Claude Code and Codex. It gives the agent a set of working habits: understand the code before editing it, design before building, prove the change on the real app, and ship small reviewable pull requests. You describe a goal in plain words. The agent picks a playbook for it, runs the steps, and reports back with evidence.

xstack is a port of pstack, a Cursor plugin by Lauren Tan. pstack runs only inside Cursor. xstack carries the same skills, playbooks, and principles to Claude Code and Codex.

What you get

  • /poteto-mode, the front door. Give it a task and it matches one of 23 playbooks, such as bug fix, feature, refactoring, investigation, or opening a PR. It then runs the other skills as the steps need them. The name comes from Lauren Tan's GitHub handle, poteto. The skill captures her working style, and you can generate your own.
  • Skills you call directly. /how and /why explain code and its history. /architect, /arena, and /interrogate design and stress-test a change. /tdd, /unslop, and /no-comments build and clean it. /benchmark-checklist vets a measured speedup or regression before you report it. There are 54 skills in total.
  • Skills that help you steer. /poteto-help finds the skill, playbook, or principle that fits what you're trying to do and hands you a prompt to type. /in-your-own-words has the agent play back your goal and the problem before it starts. /sharpen aims a task at what you're really after, the way a top expert would approach it. /ketchup sums up what changed in a long chat since your last message. /correct mines your history for mistakes you keep correcting and fixes each one where it can be enforced, such as types, lint, CI, or tests, before falling back to docs.
  • 24 named principles. Rules such as Prove It Works, Subtract Before You Add, and Explain the Number. The agent applies them on its own and you can steer it by naming one.
  • Benny, an optional Slack bot. It triages issue reports and tries to reproduce them. It is dormant until you set it up. Installing xstack turns on no automation.

Install

Claude Code

/plugin marketplace add justinramos101/xstack
/plugin install xstack@xstack

The plugin is the recommended install. It includes the helper agent definitions the workflows use and a hook that tells each session where the skill files live. Most xstack skills are meant to be run by you, not chosen by the model on its own, and Claude Code hides those from the model unless the hook is present.

You can instead copy individual skill folders into .claude/skills/ for one project or ~/.claude/skills/ for your account. That works for single skills, but the model cannot find the hidden skills without the hook.

Codex

codex plugin marketplace add justinramos101/xstack

Then run codex plugin add xstack@xstack, or install xstack from the Plugins interface.

For a skill-only install, copy skill folders into .agents/skills/ or ~/.agents/skills/. Create those directories if they do not exist. If you already have a skill with the same name, keep your copy. A skill-only install has no bundled agent prompts, so workflows that need them run inline and say so.

First task

  1. Run setup-xstack. It detects the models your host offers, asks for a reasoning budget, and writes ~/.agents/xstack-models.md.
  2. Run poteto-mode with a concrete task and a way to tell when it's done:
/poteto-mode the export writes duplicate rows when a retry lands mid-run. repro first, then fix and verify.

Invoke poteto-mode by name with your task in the same message, so the skill is attached to it. Claude Code invokes skills as slash commands. Codex also accepts $poteto-mode, or any $skill-name. Stuck, or unsure which skill fits? Run /poteto-help. The guide walks through a first task, verification, and overnight runs, and has a glossary for the terms the workflows use.

What each workflow needs

Most of xstack needs nothing beyond git and your host. A few workflows lean on other tools.

You want toYou need
Open pull requestsGitHub CLI (gh), logged in. If the Origin CLI is installed and can resolve the repository, the PR workflows use it instead of gh.
Babysit or ship pull requests on GitHubgh plus Bun, which runs the bundled PR watcher. On Origin the workflows call the origin CLI directly and need no Bun.
Run the Orchestrate playbook, a multi-day program with many stacked PRsgh, or the origin CLI on Origin, plus Bun. Orchestrate reads the order of a PR stack by walking the PR base chain through the forge, and keeps its bookkeeping with a bundled Bun script. No workflow needs Graphite.
Leave a task running overnightA scheduler or watcher that survives the session. Claude Code has /loop. Without a persistent runner, the loop stops when the session ends.
Verify a change in a UIA way to drive the app: a browser, a native-app driver, or a CLI. /create-verification-skill writes one for your project.
Run BennyA Slack app, an event runner, credentials, and your explicit authorization. See the Benny README.

When a bundled helper agent or model is missing, the workflow says so and uses what the host has instead. A missing app driver is different. UI verification then reports blocked, never a pass.

Contributing

xstack tracks pstack release by release. The pinned upstream revision is in docs/upstream.json. Run the tests before opening a PR:

node --test scripts/*.test.mjs
cd skills/poteto-mode/scripts && bun install --frozen-lockfile && bun run test && bun run typecheck

A release is a version bump in all three plugin manifests: plugin.json, .claude-plugin/plugin.json, and .codex-plugin/plugin.json.

License

xstack is MIT licensed. The original pstack work is by Lauren Tan. See LICENSE.