Skip to content

Port upstream pstack #700 and #704 - #17

Merged
caelaxie merged 1 commit into
mainfrom
cursor/port-pstack-700-704-8e11
Oct 18, 2026
Merged

caelaxie merged 1 commit into
mainfrom
cursor/port-pstack-700-704-8e11

Conversation

@caelaxie

@caelaxie caelaxie commented Oct 18, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Ports the upstream cursor/plugins pstack commits after 182f2ce41 (#637, Claude Code harness only, already skipped). Upstream plugin.json is still 0.15.25, so this port stays on 0.15.25. cursor-team-kit stays 1.2.0.

Ported

  • #700 0317eb8b8 fix(pstack): make a brand with a type guard, not as. skills/typescript-best-practices/SKILL.md and references/patterns.md. The port still omits the Cursor paths frontmatter key.
  • #704 019a6a205 guide prose and the autopilot-full wording, in docs/guide/02 through docs/guide/10. Files that already matched upstream were copied verbatim. Files this port already adapts keep those adaptations (Antigravity install paths, model tiers, invoke_subagent workspaces, bundled /deslop, /goal instead of /loop). The parallel-agents pitfall takes the new first sentence and keeps Workspace: "branch" / "share".

docs/guide/01-setup.md had one upstream hunk, the Custom Mode docs anchor. This port already drops that paragraph because Antigravity has no Custom Modes, so the file is unchanged.

Skipped

  • #702 a96815932 name every skill after its folder. make-bot-ui and poteto-mode already use those folder names, and CI already requires every skill name to match its directory. scripts/generate-pstack-harness-trees.mjs is the Claude Code tree generator and this repo does not ship it.
  • #705 1b8008005 close three gaps in the Claude Code plugin. The edits are docs/harness/claude-code.md, the generator, and the generated harness/pstack/claude-code/ tree. None of those files exist here. The two pstack/README.md sentences are Claude Code install notes. This repo's README is the Antigravity install page and does not carry them.
  • #704 scripts/check-pstack-docs.mjs. A path-only run (this repo as pstack/) exits 1 with 87 problems. The script requires README.md to link every skill, playbook, and agent in the upstream tables. This README is an install page and has never had those tables. It also flags /goal and /schedule, which this port uses in place of Cursor's /loop. Making it pass would mean rewriting the checks, not adapting paths.
  • #704 pstack/README.md wording (everyday, the autopilot-full table row, the custom-mode anchor, the babysit/autopilot note, the Claude Code install paragraphs). Those sentences are not in this port's README.

Harness proof

agy 1.4.2, installed from the Antigravity CLI installer. Commands ran against this branch checkout with a clean HOME.

$ agy --version
1.4.2

$ agy plugin validate .
Validating pstack (.antigravity-plugin/plugin.json)

  ⚠ plugin.json: ignored: .antigravity-plugin/plugin.json takes precedence

  skills 57 · agents 2 · rules 0 · hooks 0 · mcpServers 0 · sidecars 0

✔ Validation passed with 1 warning

$ agy plugin install .
  [ok]    pstack
          ✔ skills      : 57 processed
          ✔ agents      : 2 processed
          - commands    : skipped (not found)
          - mcpServers  : skipped (not found)
          - hooks       : skipped (not found)

$ agy plugin validate "$AGY_HOME/.gemini/config/plugins/pstack"
Validating pstack (.../.antigravity-plugin/plugin.json)

  ⚠ plugin.json: ignored: .antigravity-plugin/plugin.json takes precedence

  skills 57 · agents 2 · rules 0 · hooks 0 · mcpServers 0 · sidecars 0

✔ Validation passed with 1 warning

$ agy plugin list
Installed plugins:
- pstack (enabled, 0.15.25)
    Source:     antigravity
    Components: 57 skills, 2 agents

agy plugin list --json lists poteto-mode, make-bot-ui, and typescript-best-practices under those folder names. All 57 installed skills have frontmatter name equal to the directory. The installed typescript-best-practices skill contains the type-guard row and function isAgentId(input: string): input is AgentId.

$ bun run test   # skills/poteto-mode/scripts, bun 1.4.3
69 pass
0 fail
247 expect() calls
Ran 69 tests across 5 files.

$ bun run typecheck
tsc --project watch-pr/tsconfig.json --noEmit --strict
(exit 0)

$ bash -n skills/poteto-mode/scripts/worktree-audit.sh
$ bash -n skills/show-me-your-work/scripts/log.sh
(exit 0)
Open in Web Open in Cursor 

Bring in the branded-type guard from #700 and the docs prose and
autopilot wording from #704. Leave Claude Code harness commits and the
docs-vs-tree script out. Upstream plugin.json stays 0.15.25.

Co-authored-by: Kaitian Xie <caelaxie@users.noreply.github.com>

@caelaxie caelaxie left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

verdict: changes requested (comment review, same account as author).

content is clean. every hunk in docs/guide/02–10 and both typescript-best-practices files matches upstream 019a6a205 / 0317eb8b8 line for line, and the existing antigravity adaptations (Workspace: "branch" / "share" in the pitfalls list) are kept. skipping #702, #705, check-pstack-docs.mjs, and the README wording holds up. versions stay on pstack 0.15.25 / cursor-team-kit 1.2.0, matching upstream. there's no open issue, so no linkage needed.

blocker: harness proof is still "pending" in the body. to merge i need, pasted into the body:

  • agy plugin install output for this branch
  • agy plugin list showing pstack (and cursor-team-kit) at the expected versions
  • bun test output
  • the changed skill run once: invoke typescript-best-practices in agy and show it loads the new branded-type row

will re-review on the next push or body update.

|------|---------|
| Discriminated unions | Model variants with a `kind` literal discriminant so impossible states can't be represented. No optional-field bags. |
| Branded types | Brand primitives with `& { readonly __brand: "X" }` so they can't be mixed up. Validate once at the boundary. |
| Branded types | Brand primitives with `& { readonly __brand: "X" }` so they can't be mixed up. Validate once at the boundary. A brand comes from a verifying type guard (`input is AgentId`), never from `as`. |

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

matches upstream. this is the changed skill, so please show it running in agy (it loads and the new type-guard row is there) as part of the harness proof.

@caelaxie caelaxie left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

verdict: approved (comment review, same account as author). merging.

re-review at 81aa19d, no new commits. the body now has the harness proof: agy plugin validate + agy plugin install . + agy plugin list on this branch (pstack 0.15.25, 57 skills, 2 agents), bun run test 69/0, typecheck clean, and the installed typescript-best-practices carries the type-guard row and isAgentId. that covers the changed skill for doc-only text. content and parity already passed against upstream 019a6a205 / 0317eb8b8. Validate plugin is green. no issue to link.

@caelaxie
caelaxie merged commit a3dcda1 into main Oct 18, 2026
1 check passed
@caelaxie
caelaxie deleted the cursor/port-pstack-700-704-8e11 branch October 18, 2026 03:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants