@jiroamato/pstack 0.16.0 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/pstack/.claude-plugin/plugin.json +1 -1
- package/pstack/.codex-plugin/plugin.json +1 -1
- package/pstack/LICENSE-cursor-team-kit +21 -21
- package/pstack/docs/guide/01-setup.md +1 -1
- package/pstack/skills/how/SKILL.md +2 -2
- package/pstack/skills/pstack-harness/SKILL.md +1 -1
- package/pstack/skills/setup-pstack/SKILL.md +32 -32
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pstack",
|
|
3
3
|
"displayName": "pstack",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.17.0",
|
|
5
5
|
"description": "if you want to go fast, go deep first. pstack helps you write less, but higher quality code. rigorous agent workflows you can parallelize with confidence.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Lauren Tan"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
|
|
3
3
|
"name": "pstack",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.17.0",
|
|
5
5
|
"description": "if you want to go fast, go deep first. pstack helps you write less, but higher quality code. rigorous agent workflows you can parallelize with confidence.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Lauren Tan"
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 Cursor
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Cursor
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -40,7 +40,7 @@ Run:
|
|
|
40
40
|
|
|
41
41
|
[`/setup-pstack`](../../skills/setup-pstack/SKILL.md) detects the models you have access to, asks for a reasoning budget, shows you each role (code delegates, judgment, the review panels), and asks what you want. Answer the questions. It writes `~/.pstack/models.md`, a small file every pstack skill reads. It has one section per harness.
|
|
42
42
|
|
|
43
|
-
On Codex the defaults run at `
|
|
43
|
+
On Codex the defaults run at `high` reasoning, the same as the `medium` budget. `unlimited` and `large` lift each model to `max` and `xhigh`. `small` lowers the reasoning and spends fewer tokens. On Claude Code effort is a session setting, so the budget tells you which `/effort` level to set instead of rewriting the roles.
|
|
44
44
|
|
|
45
45
|
You only override what you care about. A role with no line in the file keeps the skill's default. To restore a default, delete that role's line. A rerun of `/setup-pstack` keeps any role whose model differs from the default. When a default changes, a file written before the change still pins the old default, so delete those role lines, or delete the file, then run `/setup-pstack` again.
|
|
46
46
|
|
|
@@ -34,7 +34,7 @@ Each explorer gets the prompt in `references/explorer-prompt.md` with its angle
|
|
|
34
34
|
Spawn one subagent that explores and explains in one pass:
|
|
35
35
|
|
|
36
36
|
- `subagent_type`: `general-purpose` (harness **default agent** row)
|
|
37
|
-
- `model`: the `how explainer` line, default the
|
|
37
|
+
- `model`: the `how explainer` line, default the code tier
|
|
38
38
|
- `readonly`: `true` (harness **read-only** row)
|
|
39
39
|
|
|
40
40
|
Build its prompt from `references/explainer-prompt.md` without the explorer-findings section. Go to Step 4.
|
|
@@ -44,7 +44,7 @@ Build its prompt from `references/explainer-prompt.md` without the explorer-find
|
|
|
44
44
|
Once all explorers have returned, spawn one subagent to synthesize their findings into one explanation:
|
|
45
45
|
|
|
46
46
|
- `subagent_type`: `general-purpose` (harness **default agent** row)
|
|
47
|
-
- `model`: the `how explainer` line, default the
|
|
47
|
+
- `model`: the `how explainer` line, default the code tier
|
|
48
48
|
- `readonly`: `true` (harness **read-only** row)
|
|
49
49
|
|
|
50
50
|
Build its prompt from `references/explainer-prompt.md` with every explorer's findings filled in.
|
|
@@ -37,7 +37,7 @@ Wherever a row below writes `pstack:name`, drop the `pstack:` prefix in a copied
|
|
|
37
37
|
| **models file** | `~/.cursor/rules/pstack-models.mdc`, "the rule" | `~/.pstack/models.md`, section `## claude-code` | `~/.pstack/models.md`, section `## codex` |
|
|
38
38
|
| **model** | `model: <slug>` | `model` takes `opus`, `sonnet`, `haiku`, `fable`, or a full model id. Effort is session-wide on Claude Code (`/effort`, `effortLevel` in settings, or `CLAUDE_CODE_EFFORT_LEVEL`), so a role value carries no effort | A role value is `<model>@<effort>`. Pass `model` and `reasoning_effort` separately. Effort is one of `low`, `medium`, `high`, `xhigh`, `max`. If the build rejects `model` or `reasoning_effort`, omit them and say so |
|
|
39
39
|
| **inherit** | `inherit-parent`, `auto` | Omit `model` | Omit `model` and `reasoning_effort` |
|
|
40
|
-
| **tiers** | "the code tier default", "the judgment tier default" | code tier `
|
|
40
|
+
| **tiers** | "the code tier default", "the judgment tier default" | code tier `opus`, judgment tier `fable` | code tier `gpt-6.1-sol@high`, judgment tier `gpt-6-astra@high` |
|
|
41
41
|
| **families** | "a different model family" | Every model is Claude. Treat `opus`, `sonnet`, `haiku`, and `fable` as the families | Every model is GPT. Treat `gpt-6-astra`, `gpt-6.1-sol`, and `gpt-6-luna` as the families |
|
|
42
42
|
| **background** | `run_in_background: true` | Pass it as written | Nothing to pass. Every spawn runs in the background |
|
|
43
43
|
| **isolation** | `environment: "cloud"`, `cloud_base_branch` | `isolation: "worktree"` on the `Agent` call. Name the base branch in the prompt | Create a `git worktree` per worker under the repo's worktree directory and name its path and base branch in the message. The Codex app's worktree option does the same for a whole thread |
|
|
@@ -22,7 +22,7 @@ The default role-to-model mapping is the file shape shown in step 5. If `~/.psta
|
|
|
22
22
|
|
|
23
23
|
### 3. Budget, map, and confirm
|
|
24
24
|
|
|
25
|
-
**(a) Ask for a budget.** Prefer the harness **ask** tool over free text. Offer these four options with these exact labels, and name the current budget when the file records one. With no file, say that `
|
|
25
|
+
**(a) Ask for a budget.** Prefer the harness **ask** tool over free text. Offer these four options with these exact labels, and name the current budget when the file records one. With no file, say that `medium` matches the skill defaults.
|
|
26
26
|
|
|
27
27
|
- `unlimited — max reasoning`
|
|
28
28
|
- `large — xhigh reasoning`
|
|
@@ -31,7 +31,7 @@ The default role-to-model mapping is the file shape shown in step 5. If `~/.psta
|
|
|
31
31
|
|
|
32
32
|
**(b) Apply it.** Build the working table from the skill defaults, and on a re-run keep any role you changed by model, list, or alias (`inherit-parent`, `auto`).
|
|
33
33
|
|
|
34
|
-
- **Codex.** A role value is `<model>@<effort>`. `unlimited`, `large`, `medium`, and `small` set the effort of every real value, panel entries included, to `max`, `xhigh`, `high`, or `medium`. Every current Codex model accepts those four levels. `inherit-parent` and `auto` do not change. So `unlimited` turns `gpt-6-astra@
|
|
34
|
+
- **Codex.** A role value is `<model>@<effort>`. `unlimited`, `large`, `medium`, and `small` set the effort of every real value, panel entries included, to `max`, `xhigh`, `high`, or `medium`. Every current Codex model accepts those four levels. `inherit-parent` and `auto` do not change. So `unlimited` turns `gpt-6-astra@high` into `gpt-6-astra@max`, and `small` turns `gpt-6.1-sol@high` into `gpt-6.1-sol@medium`.
|
|
35
35
|
- **Claude Code.** Effort is session-wide, not per spawn, so a role value is a bare model alias and the budget does not rewrite the roles. Instead, record the budget and tell the user the matching session setting: `/effort max`, `/effort xhigh`, `/effort high`, or `/effort medium` in an interactive session, or `"effortLevel"` in `~/.claude/settings.json` to make it stick. Do not write settings.json yourself.
|
|
36
36
|
|
|
37
37
|
**(c) Show the roles and confirm.** Show every role with its model, marking any real model not in the detected set as needing a choice. Also list each line step 2 dropped. Ask whether to accept as-is or change specific roles, offering the detected models plus `inherit-parent` and `auto` (both mean: this role runs on the parent chat model) as the options. Prefer the harness **ask** tool over free text. For panel roles (arena runners, architect runners, interrogate reviewers) the value is a list, and one subagent runs per entry, alias entries included, so the list length sets the count. `arena cross-judge pool` is also a list, but Arena selects one value from it whose model differs from the parent's when possible. `swarm workers` is the default model for every worker unless a race or comparison assigns another model per arm.
|
|
@@ -47,47 +47,47 @@ Write `~/.pstack/models.md`. Create the directory when it is missing. Rewrite th
|
|
|
47
47
|
```
|
|
48
48
|
# pstack model configuration. One line per role under each harness section. Delete a line to fall back to the skill default.
|
|
49
49
|
# `inherit-parent` or `auto` as a value: the role runs on the parent chat model (omit `model`). Alias entries in a panel list still count toward its fan-out.
|
|
50
|
-
# budget:
|
|
50
|
+
# budget: medium (high)
|
|
51
51
|
|
|
52
52
|
## claude-code
|
|
53
53
|
# Values: opus, sonnet, haiku, fable, a full model id, or inherit-parent. Effort is session-wide on Claude Code (/effort).
|
|
54
|
-
feature, refactoring:
|
|
55
|
-
bug-fix:
|
|
56
|
-
perf-issue:
|
|
57
|
-
hillclimb:
|
|
58
|
-
judgment and prose:
|
|
59
|
-
hardest tasks:
|
|
60
|
-
how explorer:
|
|
54
|
+
feature, refactoring: opus
|
|
55
|
+
bug-fix: opus
|
|
56
|
+
perf-issue: opus
|
|
57
|
+
hillclimb: opus
|
|
58
|
+
judgment and prose: fable
|
|
59
|
+
hardest tasks: fable
|
|
60
|
+
how explorer: opus
|
|
61
61
|
how explainer: opus
|
|
62
|
-
why investigators:
|
|
62
|
+
why investigators: opus
|
|
63
63
|
why synthesizer: opus
|
|
64
|
-
reflect tooling:
|
|
65
|
-
reflect judgment, divergent, synthesizer:
|
|
64
|
+
reflect tooling: opus
|
|
65
|
+
reflect judgment, divergent, synthesizer: fable
|
|
66
66
|
arena runners: opus, sonnet
|
|
67
|
-
arena cross-judge pool: opus, sonnet
|
|
67
|
+
arena cross-judge pool: opus, sonnet, fable
|
|
68
68
|
swarm workers: sonnet
|
|
69
|
-
architect runners: opus
|
|
69
|
+
architect runners: opus
|
|
70
70
|
interrogate reviewers: opus, sonnet
|
|
71
71
|
|
|
72
72
|
## codex
|
|
73
73
|
# Values: <model>@<effort> or inherit-parent. Effort is low, medium, high, xhigh, or max.
|
|
74
|
-
feature, refactoring: gpt-6-
|
|
75
|
-
bug-fix: gpt-6-
|
|
76
|
-
perf-issue: gpt-6-
|
|
77
|
-
hillclimb: gpt-6-
|
|
78
|
-
judgment and prose: gpt-6-astra@
|
|
79
|
-
hardest tasks: gpt-6-astra@
|
|
80
|
-
how explorer: gpt-6-
|
|
81
|
-
how explainer: gpt-6-
|
|
82
|
-
why investigators: gpt-6-
|
|
83
|
-
why synthesizer: gpt-6-astra@
|
|
84
|
-
reflect tooling: gpt-6-
|
|
85
|
-
reflect judgment, divergent, synthesizer: gpt-6-astra@
|
|
86
|
-
arena runners: gpt-6-astra@
|
|
87
|
-
arena cross-judge pool: gpt-6-astra@
|
|
88
|
-
swarm workers: gpt-6-
|
|
89
|
-
architect runners: gpt-6-astra@
|
|
90
|
-
interrogate reviewers: gpt-6-astra@
|
|
74
|
+
feature, refactoring: gpt-6.1-sol@high
|
|
75
|
+
bug-fix: gpt-6.1-sol@high
|
|
76
|
+
perf-issue: gpt-6.1-sol@high
|
|
77
|
+
hillclimb: gpt-6.1-sol@high
|
|
78
|
+
judgment and prose: gpt-6-astra@high
|
|
79
|
+
hardest tasks: gpt-6-astra@high
|
|
80
|
+
how explorer: gpt-6.1-sol@high
|
|
81
|
+
how explainer: gpt-6.1-sol@high
|
|
82
|
+
why investigators: gpt-6.1-sol@high
|
|
83
|
+
why synthesizer: gpt-6-astra@high
|
|
84
|
+
reflect tooling: gpt-6.1-sol@high
|
|
85
|
+
reflect judgment, divergent, synthesizer: gpt-6-astra@high
|
|
86
|
+
arena runners: gpt-6-astra@high, gpt-6.1-sol@high
|
|
87
|
+
arena cross-judge pool: gpt-6-astra@high, gpt-6.1-sol@high
|
|
88
|
+
swarm workers: gpt-6.1-sol@high
|
|
89
|
+
architect runners: gpt-6-astra@high, gpt-6.1-sol@high
|
|
90
|
+
interrogate reviewers: gpt-6-astra@high, gpt-6.1-sol@high
|
|
91
91
|
```
|
|
92
92
|
|
|
93
93
|
### 6. Install the Codex agents (Codex only)
|