pstack-claude

michael-denyerMIT活跃维护

把 Poteto 的 pstack 严格 agent 工作流移植到 Claude Code、Codex、Copilot、Gemini 等多个编码 Agent 平台,让不同工具都能用上同一套规范化的智能体技能与代码审查流程。

Antigravity, Claude Code, Codex, Copilot, Gemini, Muse, OpenCode, Pi, and Prime Agent versions of Poteto's pstack. Rigorous agent workflows with Cursor primitives translated for other harnesses.

v0.9.133发布于 2026-11-07 21:18 UTC4,193star +62 / 7 天384fork同步于 2026-11-10 11:38 UTC

怎么上手

由 README 提炼,执行前请确认
/plugin marketplace add michael-denyer/pstack-claude
/plugin install pstack@pstack-claude
硬件要求按 README 说明

README 未说明

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

把 Cursor 的 pstack 技能栈移植到 Claude Code、Codex、Copilot 等 agent 平台,让 agent 按固定工作流把任务做完并验证

把 Poteto 的 pstack 严格 agent 工作流移植到 Claude Code、Codex、Copilot、Gemini 等多个编码 Agent 平台,让不同工具都能用上同一套规范化的智能体技能与代码审查流程。

核心能力

  • 用 poteto-mode 按目标自动路由到对应工作流
  • 复现失败用例后再修复并给出通过证据
  • 跨函数边界时先调用 architect 再实现
  • 用 create-formal-verification-skill 对关键不变量做形式化验证
  • 安装时预翻译 Cursor 技能名,省去运行时映射开销

容易踩的坑

Claude Code 需 2.1.292 或更高版本;第三方市场默认关闭自动更新,需在 /plugin 的 Marketplaces 标签手动开启;Copilot 不自带默认模型,首次使用会运行 setup-pstack 让你选模型;Muse 安装后需 approve 才会执行 SessionStart hook 和 agent 定义

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v0.9.133
  1. v0.9.1330.9.133最新正式版2026-11-07 · 2026-11-07 21:18 UTC

    worktree-audit.mjs now checks a worktree's ancestry against refs/remotes/origin/<trunk>. git resolves the shorthand origin/<trunk> to a tag or local branch of that name before the remote-tracking ref. Such a ref pointing at unmerged work made the audit report the worktree merged and safe. The REMOTE column's ahead count reads refs/remotes/origin/<branch> for the same reason. @EthanYoQ found and fixed the trunk case in #423.

    When a branch has several PRs, the audit now holds its worktree for an open one even when gh lists a newer closed or merged PR first. The first record listed used to decide, so a merged record at the worktree's head marked it safe while another PR from the branch was still open. @EthanYoQ fixed this in #424.

    setup-pstack's SKILL.md now covers the Claude Code path only, at 8,978 bytes instead of 17,690. The sheet-path table and each other runtime's step changes are in references/runtimes.md, which SKILL.md tells every other runtime to read first. Step 3 lets a role value carry an @<level> effort suffix on any runtime whose dispatch takes an effort; OpenCode 2 and Antigravity skip the effort questions, because their subagent calls have no effort field. copilot.md lists step 10 among the steps that still apply on GitHub Copilot. @younes-io made the split in #422.

  2. v0.9.1320.9.1322026-11-06 · 2026-11-06 13:29 UTC
    查看更新说明

    resume.mjs now ignores links inside the fenced code blocks of a note saved with CRLF line endings, as its link rule says. The fence pattern's opening line ends in .*\n, and . does not match a carriage return. In a CRLF note the pattern missed each tilde fence, so publish read the links inside it and failed with does not resolve (ENOENT). A leading byte order mark did the same to a fence on the note's first line. verifyLinks now strips the mark and folds CRLF to LF before it removes code, as check-playbooks.mjs does. The recorded sha256 does not change, because fileInfo hashes the file's bytes. @wattanartongtipsukon-create found and fixed the CRLF case in #416, and a follow-up commit on that PR added the byte order mark case.

    The generator now writes the Platform Adaptation sentence in poteto-mode/SKILL.md from the rows of RUNTIMES in tools/runtimes.mjs (#413). It also writes each runtime mapping's list of diverse-model panel skills from the panel roles in models.json (#412). A new runtime or a role change no longer needs a hand edit to either. The one shipped text change drops "CLI or app," after "GitHub Copilot" in the Platform Adaptation sentence. A test in tests/runtime-packaging.test.mjs fails when a Build's copy of the routing mandate in plugins/pstack/hooks/ stops matching session-start-context.md (#415).

  3. v0.9.1310.9.1312026-11-06 · 2026-11-06 10:07 UTC
    查看更新说明

    The Model names section of every runtime mapping (codex-tools.md, pi-tools.md, copilot-tools.md, muse-tools.md, minimax-tools.md, agy-tools.md, and grok.md) named how critics and reflect as diverse-model panels. Only arena, architect, and interrogate have a role on the panel tier in models.json. The sync to upstream e8d856f (#67) retired the how critics role, and reflect never had a panel role. The mappings now name the three. tests/models.test.mjs compares each mapping's panel list with the skills that have a panel role, so a role change that leaves the list stale fails the test.

    Three grok.md rows now match Grok Build's subagent guide (#410). spawn_subagent takes run_in_background, which defaults to true. send_subagent_message exists behind GROK_ACTIVE_AGENT_MESSAGES or [features] active_agent_messages. A dispatch for general-purpose or pstack:poteto-agent omits subagent_type, because Grok cannot select general-purpose by name and runs an omitted type as general-purpose.

  4. v0.9.1300.9.1302026-11-05 · 2026-11-05 12:36 UTC
    查看更新说明

    pstack now installs as a native Kimi Code CLI plugin. The root kimi.plugin.json points Kimi at the shared skills tree and adds the routing instruction in kimi-instructions.md to the system prompt while the plugin is enabled. This is the first release that carries the manifest, which the README's Kimi install waits for. In a fresh session, run /plugins install https://github.com/michael-denyer/pstack-claude and /reload, and invoke a skill as /skill:pstack:poteto-mode. The new kimi-tools.md maps Claude tools to Kimi's, with Agent and its built-in coder, explore, and plan agents, and CronCreate for a one-time wake-up. Kimi reads no session hook line, so /plugins disable pstack is how to turn routing off, and setup-pstack writes no effort or hook lines there. On Kimi Code CLI 2.4.1 for macOS, installation and delivery of routing and skill content to a synthetic provider were verified; model compliance is untested. @donbeave added Kimi support in #394.

    pstack now loads as a native Grok Build plugin from a local checkout, with grok plugin install "$PWD/plugins/pstack" --trust and grok plugin enable pstack. .grok-plugin/plugin.json lists the shared skills and a Grok-only pstack-routing skill. Grok discards SessionStart hook output, so that skill's description carries the poteto-mode hint instead. The model may not follow it, and session hook: off does not turn it off; disabling the plugin does. The new grok.md maps Claude tools to Grok's, with spawn_subagent for Agent. grok plugin update does not refresh a local install, so the README gives the update steps. On Grok Build 1.0.70 for macOS, tests/grok-smoke.py checked that a synthetic provider received the routing skill description and explicit skill content. @donbeave added Grok support in #398.

    pstack now installs as a native OMP plugin through the marketplace, with omp plugin marketplace add michael-denyer/pstack-claude and omp plugin install --scope user pstack@pstack-claude. The new plugins/pstack/package.json declares the extension in omp/index.mjs, which adds the poteto-mode mandate before each main-agent turn and points main and subagent turns at the new omp-tools.md. It has the agent read each pstack:<name> skill from the installed plugin's files, so the agent never picks a same-named skill from another source. session hook: off in ~/.omp/pstack-models.md turns routing off for every OMP profile, and setup-pstack on OMP sets only that line, leaving models to OMP's own modelRoles. OMP 18.16.0 shares one plugin cache across scopes, so an upgrade or removal can affect other installations (OMP issue 16827). On OMP 18.16.0, installation from a local marketplace, skill access, and the routing toggle were verified with a synthetic provider; model compliance is untested. @donbeave added OMP support in #396.

    OpenCode 2 now has a native plugin in place of the ~/.agents/skills install. Add the checkout's plugins/pstack/opencode directory to the plugins array in ~/.config/opencode/opencode.jsonc, or install the Git package with opencode plugin add 'github:michael-denyer/pstack-claude#main'; the root package.json now exports the plugin as ./server. The plugin in opencode/index.js registers each skill as pstack-<name> and adds the routing instruction in [session-start-opencode.md](plugins/pst

  5. v0.9.1290.9.1292026-11-04 · 2026-11-04 15:24 UTC
    查看更新说明

    pstack now runs on Antigravity. agy plugin install ./plugins/pstack installs all 67 skills, the 4 agents, and the SessionStart routing hook from the new .antigravity-plugin/plugin.json and a root hooks.json. Antigravity reads hooks only from that root file and ignores Claude Code's hooks/hooks.json. The hook runs ./hooks/session-start.sh agy. Antigravity starts hooks in the installed plugin directory and sets no plugin-root variable, so the agy arm of the shared script uses paths relative to that directory. It emits the poteto-mode mandate as an injectSteps system message, and session hook: off in ~/.gemini/config/pstack-models.md turns it off. The new agy-tools.md maps Claude tools to Antigravity's, with invoke_subagent and its Model values inherit, flash_lite, flash, and pro. Antigravity's native skill loader keeps only the first 24,000 bytes of a skill body, which drops the end of poteto-mode, so the mandate and the mapping tell the agent to read poteto-mode's SKILL.md in full with read_file.

    The generator checks the Antigravity manifest, the hook declaration in hooks.json, and the hook script's execute bit. tests/agy.test.mjs, new rows in tests/session-hook.test.mjs, and new cases in tests/runtime-packaging.test.mjs cover the mapping, the manifest, and the hook. Runs of agy 1.4.12 and 1.5.0 against a local model stub, with no Google account, showed the mandate in the model request and no mandate with session hook: off. A signed-in agy 1.5.0 session on macOS read the whole poteto-mode skill and got a reply from a poteto-agent dispatch. The hook uses sh, and Windows is untested. @minatoaquaMK2 added Antigravity support in #390.

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    pstack

    Buy Me A Coffee Mentioned in Awesome Claude Code

    Lauren Tan's pstack is an opinionated Cursor skill stack that improves agent outcomes. This is a port for Claude Code, Codex, Pi, GitHub Copilot, Muse, and other agent harnesses. It tracks upstream and also carries named policy forks, each declared in tools/forks.json.

    Tell poteto-mode your goal and it will invoke the correct workflow for the task. It keeps your code concise, simple and verified.

    For concurrency bugs and invariants that tests cannot reach, /create-formal-verification-skill picks the riskiest property in your code, verifies it with a tool that fits, and leaves a project skill the next agent reruns. The separate agent-formal-verify plugin goes deeper on the method, with guided TLA+ model checking, Lean proofs, and Kani for Rust.

    Built for Claude Code

    This port translates upstream's Cursor skills for Claude Code before installation. Upstream's Claude Code install asks agents to translate Cursor names at runtime, using extra tokens and relying on them to apply the mapping correctly. This port also adds a SessionStart hook that routes tasks to poteto-mode.

    Install

    Run in Claude Code 2.1.292 or later:

    /plugin marketplace add michael-denyer/pstack-claude
    /plugin install pstack@pstack-claude
    

    Claude Code leaves auto-update off for third-party marketplaces, so pstack stays on the version you installed. To turn it on, run /plugin, open the Marketplaces tab, select pstack-claude, and choose Enable auto-update. To update once by hand, run claude plugin update pstack@pstack-claude.

    Run in your terminal:

    codex plugin marketplace add michael-denyer/pstack-claude
    codex plugin add pstack@pstack-claude
    

    Invoke a skill by typing $ and its name, such as $poteto-mode or $babysit, then choosing its entry, which inserts $pstack:<name>. /skills lists every skill.

    Run in your terminal:

    pi install git:github.com/michael-denyer/pstack-claude
    

    The package loads the skills and the pstack Pi extension, which adds the subagent, question, and wake-up tools the skills use, plus /loop and the routing instruction. Invoke a skill with /skill:<name>.

    Run in your terminal:

    copilot plugin marketplace add michael-denyer/pstack-claude
    copilot plugin install pstack@pstack-claude
    

    This installs pstack for the Copilot CLI and the GitHub Copilot app, which share ~/.copilot. Start a new session afterwards. Copilot ships no default pstack models, so the first skill that needs one runs setup-pstack to pick from the models your account lists, and later sessions reuse that choice.

    The Copilot build is tested on Copilot CLI 1.0.87 through 1.0.92. On those versions the routing hook's context reaches the session alongside other plugins' session-start context. If a later version keeps only one plugin's context, setup-pstack offers a standing instruction for ~/.copilot/copilot-instructions.md instead. On 1.0.92, once the CLI caches its computer-use experiment assignment, copilot -p sessions list no plugin skills and a skill call returns "Skill not found". Interactive sessions, the hooks, and the agents are unaffected.

    Run in your terminal:

    git clone https://github.com/michael-denyer/pstack-claude
    cd pstack-claude
    muse plugins install ./plugins/pstack
    muse plugins approve pstack
    

    The first command installs the native Muse plugin bundle. The second approves its SessionStart hook and agent definitions, which Muse runs only after approval. Start a new session afterwards. Invoke a skill with /<name> (for example /poteto-mode), which Muse lists for each user-invocable skill.

    Run in your terminal:

    omp plugin marketplace add michael-denyer/pstack-claude
    omp plugin install --scope user pstack@pstack-claude
    

    Restart OMP after installing, disabling, or uninstalling pstack. OMP 18.16.0 shares one plugin cache across scopes, so an upgrade or removal can affect other installations; inspect their source and scope before changing them. See OMP issue 16827.

    After a release containing kimi.plugin.json is published, close other Kimi sessions and install it in a fresh Kimi Code CLI session:

    /plugins install https://github.com/michael-denyer/pstack-claude
    /reload
    

    To test an unreleased checkout, use /plugins install /absolute/path/to/pstack-claude instead, followed by /reload; Kimi copies the whole checkout, including Git metadata and local files, so use a clean, reviewed copy. To update, close other Kimi sessions, reinstall from the same source in a fresh session, and run /reload. Invoke a skill as /skill:pstack:poteto-mode; see the Kimi mapping for tool guidance.

    git clone https://github.com/michael-denyer/pstack-claude
    cd pstack-claude
    grok plugin install "$PWD/plugins/pstack" --trust
    grok plugin enable pstack
    

    Start a new session and use /poteto-mode to load the skill explicitly. To update a local install, quit Grok sessions, inspect grok plugin details pstack and back up any edits in the installed copy, pull the checkout, run grok plugin uninstall pstack --keep-data, and repeat the last two commands. If pstack was disabled, disable it again before restarting. grok plugin update does not refresh a local install.

    For a first install, check that ${MINIMAX_DATA_DIR:-$HOME/.minimax}/plugins/pstack does not already exist. Then run in your terminal:

    git clone https://github.com/michael-denyer/pstack-claude
    cd pstack-claude
    mkdir -p "${MINIMAX_DATA_DIR:-$HOME/.minimax}/plugins"
    cp -R plugins/pstack "${MINIMAX_DATA_DIR:-$HOME/.minimax}/plugins/pstack"
    

    MiniMax Code loads each directory under plugins/ in its data directory as a local plugin, and reads pstack through its Claude Code reader with the skills, agents, and routing hook. mcode plugin list shows it as pstack@local. To update, record its enabled state, quit every mcode process, and move plugins/pstack to an unused path outside plugins/. Run git pull and the cp line again. Check mcode plugin list and restore the previous enabled state if needed.

    Clone the repository, then add the absolute path to plugins/pstack/opencode to the existing plugins array in ~/.config/opencode/opencode.jsonc. On Windows, use a path such as C:/Users/name/pstack-claude/plugins/pstack/opencode. Restart OpenCode after checkout updates.

    Alternatively, install, check, or update the native Git package:

    opencode plugin add 'github:michael-denyer/pstack-claude#main'
    opencode plugin check 'github:michael-denyer/pstack-claude#main'
    opencode plugin update 'github:michael-denyer/pstack-claude#main'
    

    A commit-pinned reference does not advance. If a check immediately after installation reports no package plugins, wait for the server to load it and check again.

    If you previously installed pstack skills into ~/.agents/skills, inspect the links and remove only those pointing to your pstack checkout before using the plugin.

    The plugin registers pstack- skill IDs and adds routing in root sessions. If routing is missing, run opencode api get /api/skill and check that each pstack- path belongs to this plugin. Resolve any conflicting skill before manually invoking that ID. Use session hook: off in the OpenCode model sheet to disable routing. To remove the plugin, remove its configured path and restart the service, or use opencode plugin remove with the exact Git specifier. OpenCode 1 is unsupported. See the OpenCode mapping.

    Run in your terminal:

    git clone https://github.com/michael-denyer/pstack-claude
    cd pstack-claude
    agy plugin install ./plugins/pstack
    

    This installs the native Antigravity plugin bundle (skills, agents, and SessionStart routing hook) into ~/.gemini/config/plugins/pstack.

    Gemini CLI, Prime Agent, and skills-only Codex installs read skills from ~/.agents/skills/. Run in your terminal:

    git clone https://github.com/michael-denyer/pstack-claude
    cd pstack-claude
    mkdir -p ~/.agents/skills
    for s in plugins/pstack/skills/*/; do
      target=~/.agents/skills/"$(basename "$s")"
      test -e "$target" || test -L "$target" || ln -s "$(pwd)/$s" "$target"
    done
    

    To update, run git pull in the clone, then run the for loop again to link skills added since the last run. These installs have no routing hook, so ask for poteto-mode by name or add a standing instruction to the harness's instruction file. See shared installation for per-harness notes and uninstalling.

    Configure

    pstack provides automatic routing on Claude Code, Codex, GitHub Copilot, Muse, MiniMax Code, Antigravity, Pi, Kimi Code CLI, OMP, and OpenCode 2. The runtimes deliver the instruction at different points: Kimi adds it while the plugin is enabled, OMP adds it before each main-agent turn, and OpenCode adds it at each model step in root sessions. Grok Build exposes a routing hint through a skill description; the model may not follow it. Codex requires hook trust through /hooks, and Muse requires muse plugins approve pstack. Other harnesses have no automatic routing.

    Run setup-pstack to turn automatic routing on or off, change model defaults, or set a reasoning effort per role (arena runners: opus @xhigh, fable @max). On OMP, the session hook setting applies globally across profiles; on Kimi, enable or disable the plugin to control routing. See the routing reference.

    Getting started

    Use poteto-mode to fix the search filter resetting when I change pages.
    

    For a bug, it reproduces the failure, uses how and why to investigate, delegates the fix, then reruns the failing case. If the fix crosses a function boundary, it brings in architect before implementation. You receive the fix and the failing and passing evidence.

    Other playbooks cover planning, features, refactoring, performance issues, investigations, prototypes, PR maintenance, shipping, and longer projects.

    poteto-mode on Claude Code, Codex, and Pi turns a request into verified work. Choose a playbook, plan and delegate with architect, arena, or swarm, then review and verify with interrogate, tests, and measurements. Project playbooks customize the workflow, and setup-pstack configures the model and reasoning effort per role. Supporting skills include how, why, and unslop.

    Details

    Data handling

    pstack has no server or telemetry. Anything its skills ask your agent to read, including session transcripts, goes to your model provider. Scripts run locally, and PR tools use your GitHub CLI login.

    Contributing

    Thanks for helping make this port better. Bug reports, documentation fixes, and runtime improvements are welcome. See CONTRIBUTING.md for the checks and where your change belongs. Report vulnerabilities privately as described in SECURITY.md.

    To support maintenance of this port, buy the maintainer a coffee.

    License

    This port, including its modifications and additions, is also MIT-licensed, © 2026 Michael Denyer. Original pstack © 2026 Lauren Tan; imported cursor-team-kit and thermos skills © 2026 Cursor. See LICENSE-cursor-team-kit, LICENSE-thermos, and NOTICE.md.