From 74b8cf78a302fa6f8585100b8acff55518ca8764 Mon Sep 17 00:00:00 2001 From: Christian Bager Bach Houmann Date: Mon, 19 Oct 2026 00:52:29 +0200 Subject: [PATCH 1/4] Sync Lauren's pstack to f9be7aa (#715) All three components move from 0148b78 to f9be7aa. Upstream changed only pstack (#715). setup-pstack gains step 8, which offers once to generate a formal verification skill with /create-formal-verification-skill, worded like step 7's verification offer. poteto-help gains a state check for a missing formal verification skill, says setup step 2 makes both offers, and splits its "pstack is built for Cursor" paragraph in two: a Claude Code install through Lauren's marketplace and adapter, then what other tools can read. recipes.md gains a formal verification recipe and a /ketchup recipe. The poteto-help rule in tools/substitutions.json now matches the two new paragraphs. Its replacement keeps the T3 sentence about delegate_task as the second paragraph and makes the first say t3-pstack installs in Claude Code and Codex with npx -y github:chhoumann/t3-pstack install. The port's copy took the new replacement text before the sync, so the three-way merge saw the same change on both sides. --bootstrap was not used, since it keeps a declared fork as the port's copy and setup-pstack would have missed step 8. bun tools/sync.mjs merged setup-pstack, a declared fork, cleanly and updated poteto-help and recipes.md. The other 14 forks were left alone, and cursor-team-kit and thermos synced with no file changes. --- plugins/pstack/skills/poteto-help/SKILL.md | 7 +++++-- plugins/pstack/skills/poteto-help/references/recipes.md | 2 ++ plugins/pstack/skills/setup-pstack/SKILL.md | 4 ++++ tools/substitutions.json | 6 +++--- tools/upstream.json | 6 +++--- 5 files changed, 17 insertions(+), 8 deletions(-) diff --git a/plugins/pstack/skills/poteto-help/SKILL.md b/plugins/pstack/skills/poteto-help/SKILL.md index 1b5fca19..58e8a49b 100644 --- a/plugins/pstack/skills/poteto-help/SKILL.md +++ b/plugins/pstack/skills/poteto-help/SKILL.md @@ -26,6 +26,7 @@ Check the state that changes the answer, and mention it only when it does: - No model sheet (`~/.config/t3-pstack/models.md`, see `/setup-pstack`) means `/setup-pstack` hasn't run for this user, so every role uses its default model. - No `verify-*` skill or other app harness in the project means agents have no scripted way to drive the app. Mention `/create-verification-skill` when the question is about proving a change works. +- No formal verification skill in the project means no property is checked past what tests reach. Mention `/create-formal-verification-skill` when the question is about a race, an invariant, or another case tests rarely hit. When the model sheet is missing and it matters, ask whether the user wants to pick a model for each role and a reasoning budget now. It matters when the user is new, the question is about setup or cost, or the answer depends on which models run. Ask at most once per chat. If the need is also unclear, ask both questions together. Offer two choices: @@ -35,14 +36,16 @@ When the model sheet is missing and it matters, ask whether the user wants to pi ## Get set up 1. Install t3-pstack per its [README](https://github.com/chhoumann/t3-pstack#readme), once per harness that T3 runs. -2. Run [`/setup-pstack`](../setup-pstack/SKILL.md). It asks for a reasoning budget, maps a T3 provider and model to each role, and writes the model sheet. The sheet applies to new chats. +2. Run [`/setup-pstack`](../setup-pstack/SKILL.md). It asks for a reasoning budget, maps a T3 provider and model to each role, and writes the model sheet. The sheet applies to new chats. Then it offers once each to generate a verification skill and a formal verification skill for the project, unless the project already has one. 3. Start a real task with `/poteto-mode`, a goal, and a check that can pass or fail. Installing changes nothing until the user invokes a skill. Only `/setup-pstack` loads from the user's words. The [README](https://github.com/chhoumann/t3-pstack/blob/main/README.md) and [guide page 1](https://github.com/cursor/plugins/blob/main/pstack/docs/guide/01-setup.md) have the details. Offer to word their first prompt with them, per [`references/prompting.md`](references/prompting.md). If cost is the worry, say where the tokens go and how to spend fewer. pstack spends extra tokens on subagents and review panels. Rerun `/setup-pstack` and pick a smaller budget or cheaper models. A role set to `auto` or `inherit-parent` runs on the chat's model, which saves tokens when the chat runs on a cheaper model. A shorter panel list runs fewer subagents, one for each entry. Save `/poteto-mode` for work that needs rigor. -t3-pstack is pstack rewritten for T3 Code. Its workflow skills, including `/poteto-mode`, `/how`, `/why`, and `/teach`, dispatch subagents through T3's `delegate_task` with per-role models, so those parts need a T3 thread. +t3-pstack is pstack rewritten for T3 Code, and it installs in Claude Code and Codex with `npx -y github:chhoumann/t3-pstack install`. + +Its workflow skills, including `/poteto-mode`, `/how`, `/why`, and `/teach`, dispatch subagents through T3's `delegate_task` with per-role models, so those parts need a T3 thread. ## Start a task with `/poteto-mode` diff --git a/plugins/pstack/skills/poteto-help/references/recipes.md b/plugins/pstack/skills/poteto-help/references/recipes.md index d13da3a0..2d785761 100644 --- a/plugins/pstack/skills/poteto-help/references/recipes.md +++ b/plugins/pstack/skills/poteto-help/references/recipes.md @@ -34,6 +34,7 @@ Swap in the real paths, skills, and done checks. Informal wording works. ## Review and ship - `/interrogate the whole branch, but skeptically. don't change anything yet. no nitpicks unless it's a real bug or regression.` Read the dismissals too. +- `/create-formal-verification-skill prove holds in , even when interleave or retry.` - `/swarm check every package under against its check script. one worker per package. one report.` - `/poteto-mode open the pr. small ordered commits, evidence in the description.` - `/poteto-mode babysit this pr. get it green.` For status only: `/poteto-mode check on pr . anything outstanding?` @@ -43,6 +44,7 @@ Swap in the real paths, skills, and done checks. Informal wording works. - `/poteto-mode im going to bed. in a fresh worktree off . done means . keep a decision log. don't ask me before committing. /loop until done. if you're truly stuck after a few hours, stop and write up why.` - `/show-me-your-work catch me up on what you did last night.` Read its Attention section first. +- `/ketchup` catches you up on this chat since your last message and lists every call that waits on you. - `/poteto-mode full autopilot on this queue. each item is independent.` - `/poteto-mode autopilot these changes but stack them, don't ship. i'll land the stack.` - `/reflect capture what we learned so the next run doesn't repeat it.` Approve only edits that change a future decision. diff --git a/plugins/pstack/skills/setup-pstack/SKILL.md b/plugins/pstack/skills/setup-pstack/SKILL.md index 548a458d..279dd767 100644 --- a/plugins/pstack/skills/setup-pstack/SKILL.md +++ b/plugins/pstack/skills/setup-pstack/SKILL.md @@ -71,3 +71,7 @@ Tell the user the sheet was written and that it applies to new sessions. Re-runn ### 7. Offer a verification skill (optional) Check whether the project has a way to drive the real app for proof (a `verify-*` skill, or an existing harness). If not, offer once: "want a project-local verification skill, so agents can drive the app the way a user does and prove changes work? I can generate one with /create-verification-skill." On yes, invoke `/create-verification-skill` (resolves wherever pstack is installed: workspace, user, or plugin). On no, move on without pushing. + +### 8. Offer a formal verification skill (optional) + +Check whether the project already has a formal verification skill (a project skill that runs a model checker, a proof, or another verifier against the code). If not, offer once: "want a formal verification skill, so agents can prove a key property of your code holds in every case in scope, not only the cases tests reach? I can generate one with /create-formal-verification-skill." On yes, invoke `/create-formal-verification-skill` (resolves wherever pstack is installed: workspace, user, or plugin). On no, move on without pushing. diff --git a/tools/substitutions.json b/tools/substitutions.json index 754ca254..e815b44a 100644 --- a/tools/substitutions.json +++ b/tools/substitutions.json @@ -55,9 +55,9 @@ "files": "^skills/poteto-help/SKILL\\.md$" }, { - "pattern": "pstack is built for Cursor. Its skills use the Agent Skills format, so other tools can read them. But most workflow skills, including `/poteto-mode`, `/how`, `/why`, and `/teach`, spawn Cursor subagents with per-role models, and Custom Modes and `/loop` are Cursor features, so those parts may not work there.", - "replacement": "t3-pstack is pstack rewritten for T3 Code. Its workflow skills, including `/poteto-mode`, `/how`, `/why`, and `/teach`, dispatch subagents through T3's `delegate_task` with per-role models, so those parts need a T3 thread.", - "rationale": "states where the port runs (Precedence)", + "pattern": "pstack is built for Cursor, and it also installs in Claude Code with `/plugin marketplace add cursor/plugins`, then `/plugin install pstack@cursor-plugins`. There, each command takes a `pstack:` prefix, such as `/pstack:poteto-mode`. The [Claude Code adapter](../../docs/harness/claude-code.md) maps the Cursor names, and a step that needs a Cursor-only feature, such as Bugbot or Automations, is skipped with a one-line note.\n\nOther tools can read the skills, because they use the Agent Skills format. But most workflow skills, including `/poteto-mode`, `/how`, `/why`, and `/teach`, spawn Cursor subagents with per-role models, and Custom Modes and `/loop` are Cursor features, so those parts may not work there.", + "replacement": "t3-pstack is pstack rewritten for T3 Code, and it installs in Claude Code and Codex with `npx -y github:chhoumann/t3-pstack install`.\n\nIts workflow skills, including `/poteto-mode`, `/how`, `/why`, and `/teach`, dispatch subagents through T3's `delegate_task` with per-role models, so those parts need a T3 thread.", + "rationale": "states where the port runs and how it installs (Precedence)", "files": "^skills/poteto-help/SKILL\\.md$" }, { diff --git a/tools/upstream.json b/tools/upstream.json index 89d5633d..3d250d14 100644 --- a/tools/upstream.json +++ b/tools/upstream.json @@ -4,7 +4,7 @@ "pstack": { "upstreamPath": "pstack", "localPath": "plugins/pstack", - "sha": "0148b78c56c72a1b8412055913c79f767095b217", + "sha": "f9be7aa00c2b2bf4b13562143a6918445e06b99d", "exclude": [ ".cursor-plugin/", ".gitignore", @@ -20,7 +20,7 @@ "cursor-team-kit": { "upstreamPath": "cursor-team-kit/skills", "localPath": "plugins/pstack/skills", - "sha": "0148b78c56c72a1b8412055913c79f767095b217", + "sha": "f9be7aa00c2b2bf4b13562143a6918445e06b99d", "exclude": [ "check-compiler-errors/", "control-cli/", @@ -39,7 +39,7 @@ "thermos": { "upstreamPath": "thermos", "localPath": "plugins/pstack", - "sha": "0148b78c56c72a1b8412055913c79f767095b217", + "sha": "f9be7aa00c2b2bf4b13562143a6918445e06b99d", "exclude": [ ".cursor-plugin/", "CHANGELOG.md", From 2fa36487688e281a9ca3e7784156ccca8c7cc1dc Mon Sep 17 00:00:00 2001 From: Christian Bager Bach Houmann Date: Mon, 19 Oct 2026 00:53:13 +0200 Subject: [PATCH 2/4] Release 2.0.0-rc.12: docs, notices, and manifests VERSION, the manifests, and package.json move to 2.0.0-rc.12. CHANGES.md gets the entry with its behavior-delta table. NOTICE.md, NOTICE-skills.md, and the README point at upstream f9be7aa, and the README's pinned installer command names the new tag. The skill count stays 63. --- .claude-plugin/marketplace.json | 2 +- CHANGES.md | 11 +++++++++++ NOTICE-skills.md | 6 +++--- NOTICE.md | 6 +++--- README.md | 4 ++-- VERSION | 2 +- package.json | 2 +- plugins/pstack/.claude-plugin/plugin.json | 2 +- plugins/pstack/.codex-plugin/plugin.json | 2 +- .../skills/poteto-mode/references/licenses/NOTICE.md | 6 +++--- 10 files changed, 27 insertions(+), 16 deletions(-) diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 06950c38..25146ed9 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -10,7 +10,7 @@ "name": "t3-pstack", "source": "./plugins/pstack", "description": "pstack for T3 Code: rigorous agent workflows whose panels and fan-outs run across model families through T3. Original pstack by Lauren Tan (poteto).", - "version": "2.0.0-rc.11" + "version": "2.0.0-rc.12" } ] } diff --git a/CHANGES.md b/CHANGES.md index ffe29781..3f1c9745 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -2,6 +2,17 @@ This file is the release changelog, with one `## - ` entry per release, newest first. The Cursor-to-T3 rewrite rules live in [`tools/substitutions.json`](tools/substitutions.json), and the [sync boundary](CONTRIBUTING.md#the-sync-boundary) in `CONTRIBUTING.md` defines how a change to upstream's skill content is declared. +## 2.0.0-rc.12 - Lauren's `f9be7aa`: setup offers a formal verification skill + +t3-pstack moves to Lauren Tan's pstack at cursor/plugins `f9be7aa` for all three components. Only pstack changed upstream, and its version stays 0.15.27. `/setup-pstack` gains step 8, which offers once to generate a formal verification skill with `/create-formal-verification-skill` unless the project already has one, worded like step 7's verification offer ([pstack #715](https://github.com/cursor/plugins/pull/715)). poteto-help now mentions `/create-formal-verification-skill` when the project has no formal verification skill and the question is about a race, an invariant, or another case tests rarely hit, and its setup step 2 names both offers. Its recipes gain one for formal verification and one for `/ketchup`. Lauren also split poteto-help's "pstack is built for Cursor" paragraph in two: a Claude Code install through her marketplace and Claude Code adapter, then what other tools can read. The poteto-help rule in `tools/substitutions.json` now matches both paragraphs. Its replacement keeps the sentence that the workflow skills dispatch subagents through `delegate_task` and need a T3 thread, and adds that t3-pstack installs in Claude Code and Codex with `npx -y github:chhoumann/t3-pstack install`. It points at neither Lauren's marketplace nor her adapter, since t3-pstack rewrites the Cursor names in place. The port's copy of poteto-help took the new replacement before the sync, so the three-way merge saw the same change on both sides. `bun tools/sync.mjs` merged step 8 into setup-pstack, a declared fork, cleanly, and the other 14 forks are untouched. #715's guide pages under `docs/guide/` and upstream's copies under `harness/pstack/claude-code/` sit outside every synced component. At `f9be7aa` each component's dry run reports no undeclared fork, no denylist hit, and no substitution that matches nothing. Neither hooks file changes. + +| Change | 2.0.0-rc.11 | 2.0.0-rc.12 | Source | +| --- | --- | --- | --- | +| `/setup-pstack` after the model sheet | Offers a verification skill. | Offers a verification skill, then a formal verification skill. | pstack #715 | +| poteto-help on a project with no formal verification skill | Says nothing about it. | Mentions `/create-formal-verification-skill` for a race, an invariant, or another case tests rarely hit. | pstack #715 | +| poteto-help on where t3-pstack runs | Its workflow skills need a T3 thread. | It installs in Claude Code and Codex with `npx`, and its workflow skills need a T3 thread. | pstack #715, `tools/substitutions.json` | +| poteto-help recipes | No formal verification or `/ketchup` recipe. | One of each. | pstack #715 | + ## 2.0.0-rc.11 - Lauren's `0148b78`: sharpen no longer forbids handing back a rewritten prompt t3-pstack moves to Lauren Tan's pstack at cursor/plugins `0148b78` for all three components. Only pstack changed upstream. Sharpen drops its final sentence, "Don't hand back a rewritten prompt.", so the skill now ends on "without narrating the framing, then do the work." ([pstack #712](https://github.com/cursor/plugins/pull/712)). [pstack #710](https://github.com/cursor/plugins/pull/710) and [#713](https://github.com/cursor/plugins/pull/713) bump Lauren's version to 0.15.26 and then 0.15.27 in her manifests, and upstream's copy under `harness/pstack/claude-code/` follows #712. Both sit outside every synced component. `bun tools/sync.mjs` updated `sharpen/SKILL.md` cleanly. The port's copy matched upstream byte for byte, and no substitution matches its old or new text, since the sentence names no Cursor mechanism. No rule was added, and the 15 declared forks are untouched. At `0148b78` each component's dry run reports no undeclared fork, no denylist hit, and no substitution that matches nothing. Neither hooks file changes. diff --git a/NOTICE-skills.md b/NOTICE-skills.md index cf71be5c..4bcfadc4 100644 --- a/NOTICE-skills.md +++ b/NOTICE-skills.md @@ -4,9 +4,9 @@ This plugin contains MIT-licensed work from six sources. The copyright notices a | Included work | Upstream | Copyright | License | | --- | --- | --- | --- | -| The pstack skills, principles, scripts, and the `poteto-agent` and `comment-sicko` definitions | [cursor/plugins/pstack](https://github.com/cursor/plugins/tree/0148b78c56c72a1b8412055913c79f767095b217/pstack) | (c) 2026 Lauren Tan | [MIT](LICENSE) | -| `deslop`, `make-pr-easy-to-review`, `fix-ci`, `fix-merge-conflicts`, `get-pr-comments`, and `what-did-i-get-done` | [cursor/plugins/cursor-team-kit](https://github.com/cursor/plugins/tree/0148b78c56c72a1b8412055913c79f767095b217/cursor-team-kit) | (c) 2026 Cursor | [MIT](LICENSE-cursor-team-kit) | -| `thermos`, `thermo-nuclear-review`, `thermo-nuclear-code-quality-review`, and the `thermo-nuclear-review-subagent` and `thermo-nuclear-code-quality-review-subagent` definitions | [cursor/plugins/thermos](https://github.com/cursor/plugins/tree/0148b78c56c72a1b8412055913c79f767095b217/thermos) | (c) 2026 Cursor | [MIT](LICENSE-thermos) | +| The pstack skills, principles, scripts, and the `poteto-agent` and `comment-sicko` definitions | [cursor/plugins/pstack](https://github.com/cursor/plugins/tree/f9be7aa00c2b2bf4b13562143a6918445e06b99d/pstack) | (c) 2026 Lauren Tan | [MIT](LICENSE) | +| `deslop`, `make-pr-easy-to-review`, `fix-ci`, `fix-merge-conflicts`, `get-pr-comments`, and `what-did-i-get-done` | [cursor/plugins/cursor-team-kit](https://github.com/cursor/plugins/tree/f9be7aa00c2b2bf4b13562143a6918445e06b99d/cursor-team-kit) | (c) 2026 Cursor | [MIT](LICENSE-cursor-team-kit) | +| `thermos`, `thermo-nuclear-review`, `thermo-nuclear-code-quality-review`, and the `thermo-nuclear-review-subagent` and `thermo-nuclear-code-quality-review-subagent` definitions | [cursor/plugins/thermos](https://github.com/cursor/plugins/tree/f9be7aa00c2b2bf4b13562143a6918445e06b99d/thermos) | (c) 2026 Cursor | [MIT](LICENSE-thermos) | | The session-start hook scripts, `read-sheet.sh`, and `reflect/scripts/find-transcript.mjs`, which t3-pstack modified, and four `poteto-mode` rules, the worktree and head-guard rules in the Feature, Opening a PR, and Shipping playbooks, three `watch-pr` fixes, and the ignored-file and reflog-only-commit holds in `poteto-mode/scripts/worktree-audit.sh`, which t3-pstack reworded or adapted for T3, and the plugin icon | [michael-denyer/pstack-claude](https://github.com/michael-denyer/pstack-claude) | (c) 2026 Michael Denyer | [MIT](LICENSE) | | The plain-remove prune step in the worktree-cleanup playbook, which t3-pstack adapted | [sergchil/jutsu](https://github.com/sergchil/jutsu/commit/da9442422c72cc99442c1ce3500d2f2485234a31) | (c) 2026 Sergey Chilingaryan | [MIT](LICENSE) | | `poteto-mode/scripts/resolve-codex-transcript` and `resolve-codex-transcript.ts`, which t3-pstack modified | [ericlitman/open-pstack](https://github.com/ericlitman/open-pstack/tree/c5c8e237c324359a3d1929037da78fe66da3d1ed/plugins/pstack/skills/poteto-mode/scripts), [PR #151](https://github.com/ericlitman/open-pstack/pull/151) | (c) 2026 Eric A. Litman and Donncha O'Toole | [MIT](LICENSE) | diff --git a/NOTICE.md b/NOTICE.md index 09bfa968..c133f6fe 100644 --- a/NOTICE.md +++ b/NOTICE.md @@ -6,9 +6,9 @@ t3-pstack is a port of [pstack](https://github.com/cursor/plugins/tree/main/psta | Component | Upstream | Copyright | License | License file | | --- | --- | --- | --- | --- | -| Every skill under `plugins/pstack/skills/` except those named in the next two rows, `plugins/pstack/agents/poteto-agent.md`, `plugins/pstack/agents/comment-sicko.md`, and the vendored scripts under `plugins/pstack/skills/poteto-mode/scripts/` | [cursor/plugins/pstack @ 0148b78](https://github.com/cursor/plugins/tree/0148b78c56c72a1b8412055913c79f767095b217/pstack) | (c) 2026 Lauren Tan | MIT | [LICENSE](LICENSE) | -| `plugins/pstack/skills/{deslop,fix-ci,fix-merge-conflicts,get-pr-comments,make-pr-easy-to-review,what-did-i-get-done}/` | [cursor/plugins/cursor-team-kit @ 0148b78](https://github.com/cursor/plugins/tree/0148b78c56c72a1b8412055913c79f767095b217/cursor-team-kit) | (c) 2026 Cursor | MIT | [LICENSE-cursor-team-kit](LICENSE-cursor-team-kit) | -| `plugins/pstack/skills/{thermos,thermo-nuclear-review,thermo-nuclear-code-quality-review}/`, `plugins/pstack/agents/thermo-nuclear-review-subagent.md`, `plugins/pstack/agents/thermo-nuclear-code-quality-review-subagent.md` | [cursor/plugins/thermos @ 0148b78](https://github.com/cursor/plugins/tree/0148b78c56c72a1b8412055913c79f767095b217/thermos) | (c) 2026 Cursor | MIT | [LICENSE-thermos](LICENSE-thermos) | +| Every skill under `plugins/pstack/skills/` except those named in the next two rows, `plugins/pstack/agents/poteto-agent.md`, `plugins/pstack/agents/comment-sicko.md`, and the vendored scripts under `plugins/pstack/skills/poteto-mode/scripts/` | [cursor/plugins/pstack @ f9be7aa](https://github.com/cursor/plugins/tree/f9be7aa00c2b2bf4b13562143a6918445e06b99d/pstack) | (c) 2026 Lauren Tan | MIT | [LICENSE](LICENSE) | +| `plugins/pstack/skills/{deslop,fix-ci,fix-merge-conflicts,get-pr-comments,make-pr-easy-to-review,what-did-i-get-done}/` | [cursor/plugins/cursor-team-kit @ f9be7aa](https://github.com/cursor/plugins/tree/f9be7aa00c2b2bf4b13562143a6918445e06b99d/cursor-team-kit) | (c) 2026 Cursor | MIT | [LICENSE-cursor-team-kit](LICENSE-cursor-team-kit) | +| `plugins/pstack/skills/{thermos,thermo-nuclear-review,thermo-nuclear-code-quality-review}/`, `plugins/pstack/agents/thermo-nuclear-review-subagent.md`, `plugins/pstack/agents/thermo-nuclear-code-quality-review-subagent.md` | [cursor/plugins/thermos @ f9be7aa](https://github.com/cursor/plugins/tree/f9be7aa00c2b2bf4b13562143a6918445e06b99d/thermos) | (c) 2026 Cursor | MIT | [LICENSE-thermos](LICENSE-thermos) | | `tools/sync.mjs`, `tools/generate.mjs`, `tools/validate-skills.mjs`, `tools/plugin.mjs`, `plugins/pstack/skills/reflect/scripts/find-transcript.mjs`, `plugins/pstack/hooks/session-start.sh`, `plugins/pstack/hooks/session-start.ps1`, `plugins/pstack/skills/setup-pstack/scripts/read-sheet.sh`, and the tests that cover them, each modified by t3-pstack | [michael-denyer/pstack-claude](https://github.com/michael-denyer/pstack-claude), as merged into t3-pstack through 1.0.14 | (c) 2026 Michael Denyer | MIT | [LICENSE](LICENSE) | | Four rules in `plugins/pstack/skills/poteto-mode/SKILL.md` (load a platform's skill before deploying, stop an abandoned agent and confirm it stopped, keep a review gate closed with no independent reviewer, the `todo.md` fallback), the per-delegate worktree rule in `playbooks/feature.md`, the stop-live-agents rule in `playbooks/opening-a-pr.md`, the `--match-head-commit` guard in `playbooks/shipping.md`, and the review-gate, stale-check, and no-checks fixes in `plugins/pstack/skills/poteto-mode/scripts/watch-pr/` with their tests in `verdicts.test.ts`, each reworded or adapted for T3 by t3-pstack | [michael-denyer/pstack-claude](https://github.com/michael-denyer/pstack-claude), pull requests [#95](https://github.com/michael-denyer/pstack-claude/pull/95), [#97](https://github.com/michael-denyer/pstack-claude/pull/97), and [#153](https://github.com/michael-denyer/pstack-claude/pull/153) for watch-pr | (c) 2026 Michael Denyer | MIT | [LICENSE](LICENSE) | | The ignored-file and reflog-only-commit holds in `plugins/pstack/skills/poteto-mode/scripts/worktree-audit.sh`, ported from JavaScript to bash, and their wording in `playbooks/worktree-cleanup.md`, with the test cases in `tests/worktree-audit.test.mjs`; the plugin icon with its C2PA manifest removed (`plugins/pstack/.claude-plugin/icon.png`, `plugins/pstack/assets/pstack-icon.png`) and `tests/image-metadata.test.mjs` | [michael-denyer/pstack-claude](https://github.com/michael-denyer/pstack-claude), pull requests [#277](https://github.com/michael-denyer/pstack-claude/pull/277) and [#271](https://github.com/michael-denyer/pstack-claude/pull/271) | (c) 2026 Michael Denyer | MIT | [LICENSE](LICENSE) | diff --git a/README.md b/README.md index 247d3642..a4132319 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ npx -y github:chhoumann/t3-pstack update npx -y github:chhoumann/t3-pstack doctor ``` -`npx -y github:chhoumann/t3-pstack` runs the installer from the latest commit on `main`. That is the rolling channel, the same one each home's marketplace auto-updates from. To run one release's installer, name its tag, as in `npx -y github:chhoumann/t3-pstack#v2.0.0-rc.11 doctor`. +`npx -y github:chhoumann/t3-pstack` runs the installer from the latest commit on `main`. That is the rolling channel, the same one each home's marketplace auto-updates from. To run one release's installer, name its tag, as in `npx -y github:chhoumann/t3-pstack#v2.0.0-rc.12 doctor`. `install` and `update` are the same command, and a second run changes nothing. With Node 20 or later, it installs or updates the `t3-pstack@t3-pstack` plugin in every Claude Code and Codex config home T3 can run: `~/.claude` and `~/.codex`, `$CLAUDE_CONFIG_DIR` and `$CODEX_HOME`, and the home of each `claudeAgent` and `codex` instance in T3's settings, disabled ones included. Name any other home with `--claude-home <dir>` or `--codex-home <dir>`. Each home's `t3-pstack` marketplace must come from `chhoumann/t3-pstack`, or from `--source <owner/repo|git URL|dir>` on the same run, and a home whose marketplace has another source is left as it is. A local directory needs a path such as `./t3-pstack`, since `owner/repo` always means GitHub. On Codex it also trusts t3-pstack's session-start hook, once its hooks file is the one this release pins. Codex runs a plugin's hook only once it is trusted, and T3's Codex sessions never ask, so without this step the hook never runs. Run `update` after each release. @@ -34,7 +34,7 @@ The plugin carries 63 skill directories, 24 of them `principle-*` leaves, and 4 ## Staying current -This repository syncs from Lauren's tree directly, synced against upstream `0148b78`. `tools/upstream.json` pins each component, `tools/substitutions.json` holds the rewrite rules and a denylist of Cursor terms, and `tools/forks.json` declares every file the port keeps in its own form and why. `bun tools/sync.mjs <component> <sha>` derives each upstream file through the rules, merges it three ways with the port's copy, and fails on an undeclared fork, a denylist hit, or a rule that no longer matches upstream. [CONTRIBUTING.md](CONTRIBUTING.md#the-sync-boundary) has the details. +This repository syncs from Lauren's tree directly, synced against upstream `f9be7aa`. `tools/upstream.json` pins each component, `tools/substitutions.json` holds the rewrite rules and a denylist of Cursor terms, and `tools/forks.json` declares every file the port keeps in its own form and why. `bun tools/sync.mjs <component> <sha>` derives each upstream file through the rules, merges it three ways with the port's copy, and fails on an undeclared fork, a denylist hit, or a rule that no longer matches upstream. [CONTRIBUTING.md](CONTRIBUTING.md#the-sync-boundary) has the details. ## Data handling diff --git a/VERSION b/VERSION index 716297bc..3e6ffc5c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.0.0-rc.11 +2.0.0-rc.12 diff --git a/package.json b/package.json index 0f676bfb..b3de9356 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "t3-pstack", "private": true, - "version": "2.0.0-rc.11", + "version": "2.0.0-rc.12", "description": "The installer and development tooling for t3-pstack, Lauren Tan's pstack rewritten in place for T3 Code. The plugin itself lives in plugins/pstack.", "author": { "name": "Christian Bager Bach Houmann", diff --git a/plugins/pstack/.claude-plugin/plugin.json b/plugins/pstack/.claude-plugin/plugin.json index 9eaae578..896ba644 100644 --- a/plugins/pstack/.claude-plugin/plugin.json +++ b/plugins/pstack/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "t3-pstack", "displayName": "t3-pstack (pstack for T3 Code)", - "version": "2.0.0-rc.11", + "version": "2.0.0-rc.12", "description": "pstack for T3 Code: Lauren Tan's pstack with its Cursor mechanics rewritten in place for T3, so subagents, panels, schedules, and PR watches dispatch through T3's orchestration and panels mix Claude, GPT, and Grok.", "author": { "name": "Christian Bager Bach Houmann", diff --git a/plugins/pstack/.codex-plugin/plugin.json b/plugins/pstack/.codex-plugin/plugin.json index 0ee900a6..a4c910dc 100644 --- a/plugins/pstack/.codex-plugin/plugin.json +++ b/plugins/pstack/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "t3-pstack", - "version": "2.0.0-rc.11", + "version": "2.0.0-rc.12", "description": "pstack for T3 Code on a Codex host: Lauren Tan's pstack with its Cursor mechanics rewritten in place for T3, so subagents, panels, schedules, and PR watches dispatch through T3's orchestration.", "author": { "name": "Christian Bager Bach Houmann", diff --git a/plugins/pstack/skills/poteto-mode/references/licenses/NOTICE.md b/plugins/pstack/skills/poteto-mode/references/licenses/NOTICE.md index cf71be5c..4bcfadc4 100644 --- a/plugins/pstack/skills/poteto-mode/references/licenses/NOTICE.md +++ b/plugins/pstack/skills/poteto-mode/references/licenses/NOTICE.md @@ -4,9 +4,9 @@ This plugin contains MIT-licensed work from six sources. The copyright notices a | Included work | Upstream | Copyright | License | | --- | --- | --- | --- | -| The pstack skills, principles, scripts, and the `poteto-agent` and `comment-sicko` definitions | [cursor/plugins/pstack](https://github.com/cursor/plugins/tree/0148b78c56c72a1b8412055913c79f767095b217/pstack) | (c) 2026 Lauren Tan | [MIT](LICENSE) | -| `deslop`, `make-pr-easy-to-review`, `fix-ci`, `fix-merge-conflicts`, `get-pr-comments`, and `what-did-i-get-done` | [cursor/plugins/cursor-team-kit](https://github.com/cursor/plugins/tree/0148b78c56c72a1b8412055913c79f767095b217/cursor-team-kit) | (c) 2026 Cursor | [MIT](LICENSE-cursor-team-kit) | -| `thermos`, `thermo-nuclear-review`, `thermo-nuclear-code-quality-review`, and the `thermo-nuclear-review-subagent` and `thermo-nuclear-code-quality-review-subagent` definitions | [cursor/plugins/thermos](https://github.com/cursor/plugins/tree/0148b78c56c72a1b8412055913c79f767095b217/thermos) | (c) 2026 Cursor | [MIT](LICENSE-thermos) | +| The pstack skills, principles, scripts, and the `poteto-agent` and `comment-sicko` definitions | [cursor/plugins/pstack](https://github.com/cursor/plugins/tree/f9be7aa00c2b2bf4b13562143a6918445e06b99d/pstack) | (c) 2026 Lauren Tan | [MIT](LICENSE) | +| `deslop`, `make-pr-easy-to-review`, `fix-ci`, `fix-merge-conflicts`, `get-pr-comments`, and `what-did-i-get-done` | [cursor/plugins/cursor-team-kit](https://github.com/cursor/plugins/tree/f9be7aa00c2b2bf4b13562143a6918445e06b99d/cursor-team-kit) | (c) 2026 Cursor | [MIT](LICENSE-cursor-team-kit) | +| `thermos`, `thermo-nuclear-review`, `thermo-nuclear-code-quality-review`, and the `thermo-nuclear-review-subagent` and `thermo-nuclear-code-quality-review-subagent` definitions | [cursor/plugins/thermos](https://github.com/cursor/plugins/tree/f9be7aa00c2b2bf4b13562143a6918445e06b99d/thermos) | (c) 2026 Cursor | [MIT](LICENSE-thermos) | | The session-start hook scripts, `read-sheet.sh`, and `reflect/scripts/find-transcript.mjs`, which t3-pstack modified, and four `poteto-mode` rules, the worktree and head-guard rules in the Feature, Opening a PR, and Shipping playbooks, three `watch-pr` fixes, and the ignored-file and reflog-only-commit holds in `poteto-mode/scripts/worktree-audit.sh`, which t3-pstack reworded or adapted for T3, and the plugin icon | [michael-denyer/pstack-claude](https://github.com/michael-denyer/pstack-claude) | (c) 2026 Michael Denyer | [MIT](LICENSE) | | The plain-remove prune step in the worktree-cleanup playbook, which t3-pstack adapted | [sergchil/jutsu](https://github.com/sergchil/jutsu/commit/da9442422c72cc99442c1ce3500d2f2485234a31) | (c) 2026 Sergey Chilingaryan | [MIT](LICENSE) | | `poteto-mode/scripts/resolve-codex-transcript` and `resolve-codex-transcript.ts`, which t3-pstack modified | [ericlitman/open-pstack](https://github.com/ericlitman/open-pstack/tree/c5c8e237c324359a3d1929037da78fe66da3d1ed/plugins/pstack/skills/poteto-mode/scripts), [PR #151](https://github.com/ericlitman/open-pstack/pull/151) | (c) 2026 Eric A. Litman and Donncha O'Toole | [MIT](LICENSE) | From efa89488eee054729d1673eaacc3e7ecd71ee694 Mon Sep 17 00:00:00 2001 From: Christian Bager Bach Houmann <christian@bagerbach.com> Date: Mon, 19 Oct 2026 04:48:11 +0200 Subject: [PATCH 3/4] Sync Lauren's pstack to 6b78e9f (#721) All three components move from f9be7aa to 6b78e9f. Upstream changed only pstack. create-formal-verification-skill rewrites one paragraph in "Let the question choose the tool": TLA+ is now the default for whether events can happen in a bad order, in any language, and the sentence "For concurrent and distributed designs, TLA+ is often the most useful place to start." is gone. When no verifier runs on the language, the agent says so and tests the real code with generated inputs, not a hand model of the function (pstack #721). #717 and #720 touch only third_party/ plugins, and upstream's copy under harness/pstack/claude-code/ follows #721. All of these sit outside every synced component. bun tools/sync.mjs updated create-formal-verification-skill cleanly. The port's copy matched upstream byte for byte, and no substitution or fork touches the skill. The 15 declared forks were left alone, and cursor-team-kit and thermos synced with no file changes. --- .../pstack/skills/create-formal-verification-skill/SKILL.md | 2 +- tools/upstream.json | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/pstack/skills/create-formal-verification-skill/SKILL.md b/plugins/pstack/skills/create-formal-verification-skill/SKILL.md index 21fd1691..893f6042 100644 --- a/plugins/pstack/skills/create-formal-verification-skill/SKILL.md +++ b/plugins/pstack/skills/create-formal-verification-skill/SKILL.md @@ -16,7 +16,7 @@ A good target is a promise the code makes, where a break harms users and tests r ## Let the question choose the tool -Pick the tool that answers the question at the lowest cost: a model checker, a proof assistant, an SMT-backed verifier, or another tool. Whether events can happen in a bad order usually suits a model checker over a small model of the design. Whether the code itself behaves for every input, as with memory safety, overflow, or a data-structure invariant, usually suits a verifier that runs on the code. A property that must hold at every size, where a bound is not enough, can need a proof. For concurrent and distributed designs, TLA+ is often the most useful place to start. Prefer a tool that the repo's developers can install and run, and tell the user why you chose it. +Pick the tool that answers the question at the lowest cost: a model checker, a proof assistant, an SMT-backed verifier, or another tool. Whether events can happen in a bad order usually suits a model checker over a small model of the design, and TLA+ is the default for that in any language. Whether the code itself behaves for every input, as with memory safety, overflow, or a data-structure invariant, usually suits a verifier that runs on the code. If no verifier runs on this language, say so, and test the real code with generated inputs, not a hand model of the function. A property that must hold at every size, where a bound is not enough, can need a proof. Prefer a tool that the repo's developers can install and run, and tell the user why you chose it. ## What makes it good diff --git a/tools/upstream.json b/tools/upstream.json index 3d250d14..ca984c99 100644 --- a/tools/upstream.json +++ b/tools/upstream.json @@ -4,7 +4,7 @@ "pstack": { "upstreamPath": "pstack", "localPath": "plugins/pstack", - "sha": "f9be7aa00c2b2bf4b13562143a6918445e06b99d", + "sha": "6b78e9f4e46c75d1697d837e51f07c2692e60b24", "exclude": [ ".cursor-plugin/", ".gitignore", @@ -20,7 +20,7 @@ "cursor-team-kit": { "upstreamPath": "cursor-team-kit/skills", "localPath": "plugins/pstack/skills", - "sha": "f9be7aa00c2b2bf4b13562143a6918445e06b99d", + "sha": "6b78e9f4e46c75d1697d837e51f07c2692e60b24", "exclude": [ "check-compiler-errors/", "control-cli/", @@ -39,7 +39,7 @@ "thermos": { "upstreamPath": "thermos", "localPath": "plugins/pstack", - "sha": "f9be7aa00c2b2bf4b13562143a6918445e06b99d", + "sha": "6b78e9f4e46c75d1697d837e51f07c2692e60b24", "exclude": [ ".cursor-plugin/", "CHANGELOG.md", From 7054977e98fb5daf087e29499e2d74f572de8399 Mon Sep 17 00:00:00 2001 From: Christian Bager Bach Houmann <christian@bagerbach.com> Date: Mon, 19 Oct 2026 04:49:12 +0200 Subject: [PATCH 4/4] Release 2.0.0-rc.12: point docs and notices at 6b78e9f rc.12 now syncs to upstream 6b78e9f instead of f9be7aa. NOTICE.md, NOTICE-skills.md, poteto-mode's copy of the notice, and the README name the new pin. The CHANGES.md entry's heading and text name 6b78e9f, add #721's create-formal-verification-skill change, and gain a behavior-delta row for it. VERSION and the manifests already read 2.0.0-rc.12, and the skill count stays 63. --- CHANGES.md | 5 +++-- NOTICE-skills.md | 6 +++--- NOTICE.md | 6 +++--- README.md | 2 +- .../pstack/skills/poteto-mode/references/licenses/NOTICE.md | 6 +++--- 5 files changed, 13 insertions(+), 12 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 3f1c9745..c72375e1 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -2,9 +2,9 @@ This file is the release changelog, with one `## <version> - <title>` entry per release, newest first. The Cursor-to-T3 rewrite rules live in [`tools/substitutions.json`](tools/substitutions.json), and the [sync boundary](CONTRIBUTING.md#the-sync-boundary) in `CONTRIBUTING.md` defines how a change to upstream's skill content is declared. -## 2.0.0-rc.12 - Lauren's `f9be7aa`: setup offers a formal verification skill +## 2.0.0-rc.12 - Lauren's `6b78e9f`: setup offers a formal verification skill, with TLA+ as its default for event order -t3-pstack moves to Lauren Tan's pstack at cursor/plugins `f9be7aa` for all three components. Only pstack changed upstream, and its version stays 0.15.27. `/setup-pstack` gains step 8, which offers once to generate a formal verification skill with `/create-formal-verification-skill` unless the project already has one, worded like step 7's verification offer ([pstack #715](https://github.com/cursor/plugins/pull/715)). poteto-help now mentions `/create-formal-verification-skill` when the project has no formal verification skill and the question is about a race, an invariant, or another case tests rarely hit, and its setup step 2 names both offers. Its recipes gain one for formal verification and one for `/ketchup`. Lauren also split poteto-help's "pstack is built for Cursor" paragraph in two: a Claude Code install through her marketplace and Claude Code adapter, then what other tools can read. The poteto-help rule in `tools/substitutions.json` now matches both paragraphs. Its replacement keeps the sentence that the workflow skills dispatch subagents through `delegate_task` and need a T3 thread, and adds that t3-pstack installs in Claude Code and Codex with `npx -y github:chhoumann/t3-pstack install`. It points at neither Lauren's marketplace nor her adapter, since t3-pstack rewrites the Cursor names in place. The port's copy of poteto-help took the new replacement before the sync, so the three-way merge saw the same change on both sides. `bun tools/sync.mjs` merged step 8 into setup-pstack, a declared fork, cleanly, and the other 14 forks are untouched. #715's guide pages under `docs/guide/` and upstream's copies under `harness/pstack/claude-code/` sit outside every synced component. At `f9be7aa` each component's dry run reports no undeclared fork, no denylist hit, and no substitution that matches nothing. Neither hooks file changes. +t3-pstack moves to Lauren Tan's pstack at cursor/plugins `6b78e9f` for all three components. Only pstack changed upstream, and its version stays 0.15.27. `/setup-pstack` gains step 8, which offers once to generate a formal verification skill with `/create-formal-verification-skill` unless the project already has one, worded like step 7's verification offer ([pstack #715](https://github.com/cursor/plugins/pull/715)). poteto-help now mentions `/create-formal-verification-skill` when the project has no formal verification skill and the question is about a race, an invariant, or another case tests rarely hit, and its setup step 2 names both offers. Its recipes gain one for formal verification and one for `/ketchup`. In `/create-formal-verification-skill`, TLA+ is now the default for whether events can happen in a bad order, in any language, and the sentence that called TLA+ often the most useful place to start for concurrent and distributed designs is gone. When no verifier runs on the language, the agent says so and tests the real code with generated inputs, not a hand model of the function ([pstack #721](https://github.com/cursor/plugins/pull/721)). Lauren also split poteto-help's "pstack is built for Cursor" paragraph in two: a Claude Code install through her marketplace and Claude Code adapter, then what other tools can read. The poteto-help rule in `tools/substitutions.json` now matches both paragraphs. Its replacement keeps the sentence that the workflow skills dispatch subagents through `delegate_task` and need a T3 thread, and adds that t3-pstack installs in Claude Code and Codex with `npx -y github:chhoumann/t3-pstack install`. It points at neither Lauren's marketplace nor her adapter, since t3-pstack rewrites the Cursor names in place. The port's copy of poteto-help took the new replacement before the sync, so the three-way merge saw the same change on both sides. `bun tools/sync.mjs` merged step 8 into setup-pstack, a declared fork, cleanly, and the other 14 forks are untouched. It updated `/create-formal-verification-skill` cleanly too, since the port's copy matched upstream byte for byte and no substitution or fork touches it. #715's guide pages under `docs/guide/`, the `third_party/` plugins that #717 and #720 change, and upstream's copies under `harness/pstack/claude-code/` sit outside every synced component. At `6b78e9f` each component's dry run reports no undeclared fork, no denylist hit, and no substitution that matches nothing. Neither hooks file changes. | Change | 2.0.0-rc.11 | 2.0.0-rc.12 | Source | | --- | --- | --- | --- | @@ -12,6 +12,7 @@ t3-pstack moves to Lauren Tan's pstack at cursor/plugins `f9be7aa` for all three | poteto-help on a project with no formal verification skill | Says nothing about it. | Mentions `/create-formal-verification-skill` for a race, an invariant, or another case tests rarely hit. | pstack #715 | | poteto-help on where t3-pstack runs | Its workflow skills need a T3 thread. | It installs in Claude Code and Codex with `npx`, and its workflow skills need a T3 thread. | pstack #715, `tools/substitutions.json` | | poteto-help recipes | No formal verification or `/ketchup` recipe. | One of each. | pstack #715 | +| `/create-formal-verification-skill` choosing a tool | Calls TLA+ often the most useful place to start for concurrent and distributed designs. | Makes TLA+ the default for event order in any language. With no verifier for the language, the agent says so and tests the real code with generated inputs. | pstack #721 | ## 2.0.0-rc.11 - Lauren's `0148b78`: sharpen no longer forbids handing back a rewritten prompt diff --git a/NOTICE-skills.md b/NOTICE-skills.md index 4bcfadc4..7b429863 100644 --- a/NOTICE-skills.md +++ b/NOTICE-skills.md @@ -4,9 +4,9 @@ This plugin contains MIT-licensed work from six sources. The copyright notices a | Included work | Upstream | Copyright | License | | --- | --- | --- | --- | -| The pstack skills, principles, scripts, and the `poteto-agent` and `comment-sicko` definitions | [cursor/plugins/pstack](https://github.com/cursor/plugins/tree/f9be7aa00c2b2bf4b13562143a6918445e06b99d/pstack) | (c) 2026 Lauren Tan | [MIT](LICENSE) | -| `deslop`, `make-pr-easy-to-review`, `fix-ci`, `fix-merge-conflicts`, `get-pr-comments`, and `what-did-i-get-done` | [cursor/plugins/cursor-team-kit](https://github.com/cursor/plugins/tree/f9be7aa00c2b2bf4b13562143a6918445e06b99d/cursor-team-kit) | (c) 2026 Cursor | [MIT](LICENSE-cursor-team-kit) | -| `thermos`, `thermo-nuclear-review`, `thermo-nuclear-code-quality-review`, and the `thermo-nuclear-review-subagent` and `thermo-nuclear-code-quality-review-subagent` definitions | [cursor/plugins/thermos](https://github.com/cursor/plugins/tree/f9be7aa00c2b2bf4b13562143a6918445e06b99d/thermos) | (c) 2026 Cursor | [MIT](LICENSE-thermos) | +| The pstack skills, principles, scripts, and the `poteto-agent` and `comment-sicko` definitions | [cursor/plugins/pstack](https://github.com/cursor/plugins/tree/6b78e9f4e46c75d1697d837e51f07c2692e60b24/pstack) | (c) 2026 Lauren Tan | [MIT](LICENSE) | +| `deslop`, `make-pr-easy-to-review`, `fix-ci`, `fix-merge-conflicts`, `get-pr-comments`, and `what-did-i-get-done` | [cursor/plugins/cursor-team-kit](https://github.com/cursor/plugins/tree/6b78e9f4e46c75d1697d837e51f07c2692e60b24/cursor-team-kit) | (c) 2026 Cursor | [MIT](LICENSE-cursor-team-kit) | +| `thermos`, `thermo-nuclear-review`, `thermo-nuclear-code-quality-review`, and the `thermo-nuclear-review-subagent` and `thermo-nuclear-code-quality-review-subagent` definitions | [cursor/plugins/thermos](https://github.com/cursor/plugins/tree/6b78e9f4e46c75d1697d837e51f07c2692e60b24/thermos) | (c) 2026 Cursor | [MIT](LICENSE-thermos) | | The session-start hook scripts, `read-sheet.sh`, and `reflect/scripts/find-transcript.mjs`, which t3-pstack modified, and four `poteto-mode` rules, the worktree and head-guard rules in the Feature, Opening a PR, and Shipping playbooks, three `watch-pr` fixes, and the ignored-file and reflog-only-commit holds in `poteto-mode/scripts/worktree-audit.sh`, which t3-pstack reworded or adapted for T3, and the plugin icon | [michael-denyer/pstack-claude](https://github.com/michael-denyer/pstack-claude) | (c) 2026 Michael Denyer | [MIT](LICENSE) | | The plain-remove prune step in the worktree-cleanup playbook, which t3-pstack adapted | [sergchil/jutsu](https://github.com/sergchil/jutsu/commit/da9442422c72cc99442c1ce3500d2f2485234a31) | (c) 2026 Sergey Chilingaryan | [MIT](LICENSE) | | `poteto-mode/scripts/resolve-codex-transcript` and `resolve-codex-transcript.ts`, which t3-pstack modified | [ericlitman/open-pstack](https://github.com/ericlitman/open-pstack/tree/c5c8e237c324359a3d1929037da78fe66da3d1ed/plugins/pstack/skills/poteto-mode/scripts), [PR #151](https://github.com/ericlitman/open-pstack/pull/151) | (c) 2026 Eric A. Litman and Donncha O'Toole | [MIT](LICENSE) | diff --git a/NOTICE.md b/NOTICE.md index c133f6fe..b501e0d2 100644 --- a/NOTICE.md +++ b/NOTICE.md @@ -6,9 +6,9 @@ t3-pstack is a port of [pstack](https://github.com/cursor/plugins/tree/main/psta | Component | Upstream | Copyright | License | License file | | --- | --- | --- | --- | --- | -| Every skill under `plugins/pstack/skills/` except those named in the next two rows, `plugins/pstack/agents/poteto-agent.md`, `plugins/pstack/agents/comment-sicko.md`, and the vendored scripts under `plugins/pstack/skills/poteto-mode/scripts/` | [cursor/plugins/pstack @ f9be7aa](https://github.com/cursor/plugins/tree/f9be7aa00c2b2bf4b13562143a6918445e06b99d/pstack) | (c) 2026 Lauren Tan | MIT | [LICENSE](LICENSE) | -| `plugins/pstack/skills/{deslop,fix-ci,fix-merge-conflicts,get-pr-comments,make-pr-easy-to-review,what-did-i-get-done}/` | [cursor/plugins/cursor-team-kit @ f9be7aa](https://github.com/cursor/plugins/tree/f9be7aa00c2b2bf4b13562143a6918445e06b99d/cursor-team-kit) | (c) 2026 Cursor | MIT | [LICENSE-cursor-team-kit](LICENSE-cursor-team-kit) | -| `plugins/pstack/skills/{thermos,thermo-nuclear-review,thermo-nuclear-code-quality-review}/`, `plugins/pstack/agents/thermo-nuclear-review-subagent.md`, `plugins/pstack/agents/thermo-nuclear-code-quality-review-subagent.md` | [cursor/plugins/thermos @ f9be7aa](https://github.com/cursor/plugins/tree/f9be7aa00c2b2bf4b13562143a6918445e06b99d/thermos) | (c) 2026 Cursor | MIT | [LICENSE-thermos](LICENSE-thermos) | +| Every skill under `plugins/pstack/skills/` except those named in the next two rows, `plugins/pstack/agents/poteto-agent.md`, `plugins/pstack/agents/comment-sicko.md`, and the vendored scripts under `plugins/pstack/skills/poteto-mode/scripts/` | [cursor/plugins/pstack @ 6b78e9f](https://github.com/cursor/plugins/tree/6b78e9f4e46c75d1697d837e51f07c2692e60b24/pstack) | (c) 2026 Lauren Tan | MIT | [LICENSE](LICENSE) | +| `plugins/pstack/skills/{deslop,fix-ci,fix-merge-conflicts,get-pr-comments,make-pr-easy-to-review,what-did-i-get-done}/` | [cursor/plugins/cursor-team-kit @ 6b78e9f](https://github.com/cursor/plugins/tree/6b78e9f4e46c75d1697d837e51f07c2692e60b24/cursor-team-kit) | (c) 2026 Cursor | MIT | [LICENSE-cursor-team-kit](LICENSE-cursor-team-kit) | +| `plugins/pstack/skills/{thermos,thermo-nuclear-review,thermo-nuclear-code-quality-review}/`, `plugins/pstack/agents/thermo-nuclear-review-subagent.md`, `plugins/pstack/agents/thermo-nuclear-code-quality-review-subagent.md` | [cursor/plugins/thermos @ 6b78e9f](https://github.com/cursor/plugins/tree/6b78e9f4e46c75d1697d837e51f07c2692e60b24/thermos) | (c) 2026 Cursor | MIT | [LICENSE-thermos](LICENSE-thermos) | | `tools/sync.mjs`, `tools/generate.mjs`, `tools/validate-skills.mjs`, `tools/plugin.mjs`, `plugins/pstack/skills/reflect/scripts/find-transcript.mjs`, `plugins/pstack/hooks/session-start.sh`, `plugins/pstack/hooks/session-start.ps1`, `plugins/pstack/skills/setup-pstack/scripts/read-sheet.sh`, and the tests that cover them, each modified by t3-pstack | [michael-denyer/pstack-claude](https://github.com/michael-denyer/pstack-claude), as merged into t3-pstack through 1.0.14 | (c) 2026 Michael Denyer | MIT | [LICENSE](LICENSE) | | Four rules in `plugins/pstack/skills/poteto-mode/SKILL.md` (load a platform's skill before deploying, stop an abandoned agent and confirm it stopped, keep a review gate closed with no independent reviewer, the `todo.md` fallback), the per-delegate worktree rule in `playbooks/feature.md`, the stop-live-agents rule in `playbooks/opening-a-pr.md`, the `--match-head-commit` guard in `playbooks/shipping.md`, and the review-gate, stale-check, and no-checks fixes in `plugins/pstack/skills/poteto-mode/scripts/watch-pr/` with their tests in `verdicts.test.ts`, each reworded or adapted for T3 by t3-pstack | [michael-denyer/pstack-claude](https://github.com/michael-denyer/pstack-claude), pull requests [#95](https://github.com/michael-denyer/pstack-claude/pull/95), [#97](https://github.com/michael-denyer/pstack-claude/pull/97), and [#153](https://github.com/michael-denyer/pstack-claude/pull/153) for watch-pr | (c) 2026 Michael Denyer | MIT | [LICENSE](LICENSE) | | The ignored-file and reflog-only-commit holds in `plugins/pstack/skills/poteto-mode/scripts/worktree-audit.sh`, ported from JavaScript to bash, and their wording in `playbooks/worktree-cleanup.md`, with the test cases in `tests/worktree-audit.test.mjs`; the plugin icon with its C2PA manifest removed (`plugins/pstack/.claude-plugin/icon.png`, `plugins/pstack/assets/pstack-icon.png`) and `tests/image-metadata.test.mjs` | [michael-denyer/pstack-claude](https://github.com/michael-denyer/pstack-claude), pull requests [#277](https://github.com/michael-denyer/pstack-claude/pull/277) and [#271](https://github.com/michael-denyer/pstack-claude/pull/271) | (c) 2026 Michael Denyer | MIT | [LICENSE](LICENSE) | diff --git a/README.md b/README.md index a4132319..8c2f0276 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ The plugin carries 63 skill directories, 24 of them `principle-*` leaves, and 4 ## Staying current -This repository syncs from Lauren's tree directly, synced against upstream `f9be7aa`. `tools/upstream.json` pins each component, `tools/substitutions.json` holds the rewrite rules and a denylist of Cursor terms, and `tools/forks.json` declares every file the port keeps in its own form and why. `bun tools/sync.mjs <component> <sha>` derives each upstream file through the rules, merges it three ways with the port's copy, and fails on an undeclared fork, a denylist hit, or a rule that no longer matches upstream. [CONTRIBUTING.md](CONTRIBUTING.md#the-sync-boundary) has the details. +This repository syncs from Lauren's tree directly, synced against upstream `6b78e9f`. `tools/upstream.json` pins each component, `tools/substitutions.json` holds the rewrite rules and a denylist of Cursor terms, and `tools/forks.json` declares every file the port keeps in its own form and why. `bun tools/sync.mjs <component> <sha>` derives each upstream file through the rules, merges it three ways with the port's copy, and fails on an undeclared fork, a denylist hit, or a rule that no longer matches upstream. [CONTRIBUTING.md](CONTRIBUTING.md#the-sync-boundary) has the details. ## Data handling diff --git a/plugins/pstack/skills/poteto-mode/references/licenses/NOTICE.md b/plugins/pstack/skills/poteto-mode/references/licenses/NOTICE.md index 4bcfadc4..7b429863 100644 --- a/plugins/pstack/skills/poteto-mode/references/licenses/NOTICE.md +++ b/plugins/pstack/skills/poteto-mode/references/licenses/NOTICE.md @@ -4,9 +4,9 @@ This plugin contains MIT-licensed work from six sources. The copyright notices a | Included work | Upstream | Copyright | License | | --- | --- | --- | --- | -| The pstack skills, principles, scripts, and the `poteto-agent` and `comment-sicko` definitions | [cursor/plugins/pstack](https://github.com/cursor/plugins/tree/f9be7aa00c2b2bf4b13562143a6918445e06b99d/pstack) | (c) 2026 Lauren Tan | [MIT](LICENSE) | -| `deslop`, `make-pr-easy-to-review`, `fix-ci`, `fix-merge-conflicts`, `get-pr-comments`, and `what-did-i-get-done` | [cursor/plugins/cursor-team-kit](https://github.com/cursor/plugins/tree/f9be7aa00c2b2bf4b13562143a6918445e06b99d/cursor-team-kit) | (c) 2026 Cursor | [MIT](LICENSE-cursor-team-kit) | -| `thermos`, `thermo-nuclear-review`, `thermo-nuclear-code-quality-review`, and the `thermo-nuclear-review-subagent` and `thermo-nuclear-code-quality-review-subagent` definitions | [cursor/plugins/thermos](https://github.com/cursor/plugins/tree/f9be7aa00c2b2bf4b13562143a6918445e06b99d/thermos) | (c) 2026 Cursor | [MIT](LICENSE-thermos) | +| The pstack skills, principles, scripts, and the `poteto-agent` and `comment-sicko` definitions | [cursor/plugins/pstack](https://github.com/cursor/plugins/tree/6b78e9f4e46c75d1697d837e51f07c2692e60b24/pstack) | (c) 2026 Lauren Tan | [MIT](LICENSE) | +| `deslop`, `make-pr-easy-to-review`, `fix-ci`, `fix-merge-conflicts`, `get-pr-comments`, and `what-did-i-get-done` | [cursor/plugins/cursor-team-kit](https://github.com/cursor/plugins/tree/6b78e9f4e46c75d1697d837e51f07c2692e60b24/cursor-team-kit) | (c) 2026 Cursor | [MIT](LICENSE-cursor-team-kit) | +| `thermos`, `thermo-nuclear-review`, `thermo-nuclear-code-quality-review`, and the `thermo-nuclear-review-subagent` and `thermo-nuclear-code-quality-review-subagent` definitions | [cursor/plugins/thermos](https://github.com/cursor/plugins/tree/6b78e9f4e46c75d1697d837e51f07c2692e60b24/thermos) | (c) 2026 Cursor | [MIT](LICENSE-thermos) | | The session-start hook scripts, `read-sheet.sh`, and `reflect/scripts/find-transcript.mjs`, which t3-pstack modified, and four `poteto-mode` rules, the worktree and head-guard rules in the Feature, Opening a PR, and Shipping playbooks, three `watch-pr` fixes, and the ignored-file and reflog-only-commit holds in `poteto-mode/scripts/worktree-audit.sh`, which t3-pstack reworded or adapted for T3, and the plugin icon | [michael-denyer/pstack-claude](https://github.com/michael-denyer/pstack-claude) | (c) 2026 Michael Denyer | [MIT](LICENSE) | | The plain-remove prune step in the worktree-cleanup playbook, which t3-pstack adapted | [sergchil/jutsu](https://github.com/sergchil/jutsu/commit/da9442422c72cc99442c1ce3500d2f2485234a31) | (c) 2026 Sergey Chilingaryan | [MIT](LICENSE) | | `poteto-mode/scripts/resolve-codex-transcript` and `resolve-codex-transcript.ts`, which t3-pstack modified | [ericlitman/open-pstack](https://github.com/ericlitman/open-pstack/tree/c5c8e237c324359a3d1929037da78fe66da3d1ed/plugins/pstack/skills/poteto-mode/scripts), [PR #151](https://github.com/ericlitman/open-pstack/pull/151) | (c) 2026 Eric A. Litman and Donncha O'Toole | [MIT](LICENSE) |