Yellow potatopstack
Harness

pstack in Claude Code

pstack skills use Cursor names. In Claude Code, read this file once per session, then map each Cursor name in a skill with the tables below. <pstack> means the folder that holds skills/ and docs/. If a Cursor field has no row, drop it and say so. Never pass a field or value the tool schema rejects.

Tools

CursorClaude Code
TaskAgent
AskQuestionAskUserQuestion. In -p mode it is absent, so ask in plain text.
Open a todolistUse TodoWrite if the session offers it. Otherwise keep the list in your reply and update it at each phase.
Run another pstack skill (/name or "the name skill")Read <pstack>/skills/<name>/SKILL.md and follow it. The Skill tool refuses most pstack skills. When you tell the user to type it, write /pstack:<name>.
Grep, GlobBash with rg when the session has no Grep or Glob.

Subagent fields

CursorClaude Code
subagent_type: generalPurposesubagent_type: "general-purpose"
poteto-agent, comment-sickopstack:poteto-agent, pstack:comment-sicko
readonly: truesubagent_type: "Explore". It keeps Bash, so the brief also says "do not edit files", and you check git status afterward.
readonly: falsegeneral-purpose. It keeps the session's MCP servers.
environment: "cloud"isolation: "worktree". Name the branch or commit the worker checks out.
environment: "local"Omit.
cloud_base_branch: <b>Tell the worker to check out <b> first.
run_in_background: trueOmit. Subagents run in the background by default and notify you when they finish.
resumeSpawn a new agent and paste the earlier result into its brief.
file_attachmentsList the paths in the brief.

Models

CursorClaude Code
claude-<family>-<version>-<effort>[-fast], such as claude-opus-5-5-xhighmodel: "opus" and effort: "xhigh". model takes only opus, sonnet, haiku, fable. Drop -fast.
A grok-*, gpt-*, or other non-Claude slugOmit model so the agent runs on the session model, and say so.
auto or inherit-parentOmit model.
The pstack-models.mdc rule, ~/.cursor/rules/pstack-models.mdc~/.claude/rules/pstack-models.md. Claude Code loads it into every new session, so its role lines are already in context. If they are not, read the file. If the file or the role's line is missing, use the skill's default slug.
A role value <model> <effort>, such as opus highmodel: "opus" and effort: "high".

setup-pstack

Claude Code loads every .md file in ~/.claude/rules/ into each new session, so setup-pstack writes its rule there. Follow its steps with these changes:

  • Detect. The detected models are the model values that the Agent tool schema lists, each with an effort from its effort values. Write a real model as <model> <effort>, such as opus xhigh. The effort is the last token, so the budget step works as written.
  • Defaults. Map each default slug with the rows above: claude-opus-5-5-xhigh is opus xhigh, and grok-4.7-xhigh-fast is inherit-parent.
  • Write. Write ~/.claude/rules/pstack-models.md with no frontmatter, then the comment lines, the # budget line, and one line per role from step 5. Overwrite the whole file. Never put the role lines in CLAUDE.md or AGENTS.md.

Paths

CursorClaude Code
.cursor/skills/, ~/.cursor/skills/.claude/skills/, ~/.claude/skills/
~/.cursor/plugins/, .cursor-plugin/plugin.json~/.claude/plugins/, .claude-plugin/plugin.json
.cursor/rules/*.mdc, always-applied rulesCLAUDE.md, or AGENTS.md when no CLAUDE.md exists. Claude Code never reads .mdc files. The model rule is the exception. See Models.
https://github.com/cursor/plugins/blob/main/pstack/<path><pstack>/<path> when that file exists. The plugin ships the skills, docs/guide/, and README.md. Read the local copy and never fetch it. Give the user the URL when they need a link.
Transcripts in ~/.cursor/projects/<slug>/agent-transcripts/~/.claude/projects/<slug>/<session>.jsonl. The slug is the workspace path with each / and . changed to -, so /Users/you/proj is -Users-you-proj. The newest .jsonl directly in that folder is the current session. Its <session>/subagents/ folder holds subagent transcripts. Read only this workspace's folder.

Cursor-only features

Claude Code has no Cursor Automations, Bugbot, Cursor cloud agents, or built-in PR tool. When a step needs one, put one line in your reply, Skipped in Claude Code: <step>. <reason>., then go on to the next step. Do not stop, ask, or retry. When a later step needs what the skipped step made, such as a URL or a key, leave a placeholder and name it in the line.

CursorClaude Code
Cursor Automations: routines, update_state routine calls, api2.cursor.sh/automations webhooks, routine wakes, and SendToUser secret requestsSkip with the line.
BugbotBugbot comments on a GitHub PR are ordinary review threads, so triage them with the forge command that the step gives. Skip a step that starts, waits for, or configures Bugbot when the PR has no Bugbot check or comment.
Cursor cloud agentsenvironment: "cloud" maps to a worktree, as in Subagent fields. Skip a step that needs the cloud agent itself, such as its dashboard status or its own machine.
A built-in PR toolUse the forge command that the step gives, such as gh pr create. That is not a skip, so write no line.
An unofficial reader for poteto's pstack plugin. All content comes from the cursor/plugins GitHub repo. Not affiliated with poteto or Cursor.

On this page