@webpresso/agent-kit 3.1.26 → 3.1.28

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.
Files changed (62) hide show
  1. package/catalog/AGENTS.md.tpl +6 -10
  2. package/catalog/agent/commands/verify.md +2 -2
  3. package/catalog/agent/rules/changeset-release.md +4 -2
  4. package/catalog/agent/rules/workflow-skills-routing.md +6 -3
  5. package/catalog/agent/skills/autopilot/SKILL.md +48 -11
  6. package/catalog/agent/skills/claude/SKILL.md +7 -0
  7. package/catalog/agent/skills/codex/SKILL.md +7 -0
  8. package/catalog/agent/skills/fix/SKILL.md +33 -8
  9. package/catalog/agent/skills/grok/SKILL.md +7 -0
  10. package/catalog/agent/skills/investigate/SKILL.md +12 -1
  11. package/catalog/agent/skills/pll/SKILL.md +53 -48
  12. package/catalog/agent/skills/team/SKILL.md +26 -9
  13. package/catalog/agent/skills/ultragoal/SKILL.md +147 -19
  14. package/catalog/agent/skills/verify/SKILL.md +71 -51
  15. package/dist/esm/audit/blueprint-lifecycle-sql.d.ts +8 -0
  16. package/dist/esm/audit/blueprint-lifecycle-sql.js +25 -1
  17. package/dist/esm/ci/native-session-memory-cache.d.ts +9 -1
  18. package/dist/esm/ci/native-session-memory-cache.js +9 -1
  19. package/dist/esm/ci/vitest-ci-shards.d.ts +6 -4
  20. package/dist/esm/ci/vitest-ci-shards.js +6 -4
  21. package/dist/esm/cli/auto-update/guard-tombstone.d.ts +25 -0
  22. package/dist/esm/cli/auto-update/guard-tombstone.js +67 -0
  23. package/dist/esm/cli/auto-update/installer.d.ts +4 -17
  24. package/dist/esm/cli/auto-update/installer.js +6 -57
  25. package/dist/esm/cli/auto-update/self-invocation.d.ts +37 -0
  26. package/dist/esm/cli/auto-update/self-invocation.js +62 -0
  27. package/dist/esm/cli/commands/audit.js +1 -0
  28. package/dist/esm/cli/commands/dash/index.js +3 -3
  29. package/dist/esm/cli/commands/dash/plan-once-attention.d.ts +32 -0
  30. package/dist/esm/cli/commands/dash/plan-once-attention.js +50 -0
  31. package/dist/esm/cli/commands/dash/plan-once-schema.d.ts +73 -0
  32. package/dist/esm/cli/commands/dash/plan-once-schema.js +119 -0
  33. package/dist/esm/cli/commands/dash/plan-once.d.ts +122 -0
  34. package/dist/esm/cli/commands/dash/plan-once.js +224 -0
  35. package/dist/esm/cli/commands/dash/tui/ipc-protocol.d.ts +87 -0
  36. package/dist/esm/cli/commands/dash/tui/ipc-protocol.js +128 -0
  37. package/dist/esm/cli/commands/dash/tui/native-host.d.ts +34 -0
  38. package/dist/esm/cli/commands/dash/tui/native-host.js +256 -0
  39. package/dist/esm/cli/commands/dash/tui/native-path.d.ts +11 -0
  40. package/dist/esm/cli/commands/dash/tui/native-path.js +41 -0
  41. package/dist/esm/cli/commands/dash/tui/runtime.js +72 -0
  42. package/dist/esm/cli/commands/init/scaffolders/agent-kit-global/index.js +1 -1
  43. package/dist/esm/cli/commands/package-manager.js +2 -1
  44. package/dist/esm/cli/commands/self-install-guard.d.ts +14 -32
  45. package/dist/esm/cli/commands/self-install-guard.js +17 -63
  46. package/dist/esm/hooks/guard-switch/index.js +8 -4
  47. package/dist/esm/hooks/post-tool/lint-after-edit.js +6 -4
  48. package/dist/esm/hooks/precompact/index.js +5 -3
  49. package/dist/esm/hooks/sessionstart/index.d.ts +10 -0
  50. package/dist/esm/hooks/sessionstart/index.js +61 -4
  51. package/dist/esm/hooks/shared/types.d.ts +11 -0
  52. package/dist/esm/hooks/shared/types.js +21 -0
  53. package/dist/esm/paths/state-root.js +6 -0
  54. package/dist/esm/session-memory/current-session.js +2 -0
  55. package/dist/esm/session-memory/native-runtime.js +5 -3
  56. package/dist/esm/session-memory/native-warm-markers.d.ts +18 -0
  57. package/dist/esm/session-memory/native-warm-markers.js +22 -0
  58. package/dist/esm/session-memory/sync/types.d.ts +4 -0
  59. package/dist/esm/session-memory/types.d.ts +3 -1
  60. package/dist/esm/session-memory/types.js +2 -0
  61. package/dist/esm/ultragoal/runtime.js +44 -2
  62. package/package.json +15 -12
@@ -54,6 +54,8 @@ Catalog-owned surfaces:
54
54
  - Reuse nearby utilities and patterns before adding new abstractions.
55
55
  - Apply DRY, SOLID, YAGNI, and KISS.
56
56
  - No hardcoded relative paths in executable code or config; derive from an explicit absolute anchor.
57
+ - Efficiency: MCP `wp_*` over shell; `ultragoal`/`/pll`; `/verify` local vs
58
+ `--merge-ready` (1 outside voice); `fix_budget`=1.
57
59
 
58
60
  Hook invariant: global hooks use the canonical contract; skill hooks never
59
61
  project into host settings. Bound hot paths; do not raise timeouts or hide work
@@ -62,16 +64,9 @@ asynchronously.
62
64
  ## Verify
63
65
 
64
66
  Before claiming completion, run the narrowest checks that prove the change:
65
-
66
- - agent-kit MCP tools first when available; otherwise the repo wrapper
67
- - typecheck
68
- - lint / format check
69
- - affected tests
70
- - repo policy checks such as `verify:paths` / `verify:secrets`
71
- - docs or blueprint validation when docs/plans changed
72
- - `wp sync --check` after template/catalog changes
73
-
74
- If a gate fails, fix root cause or record the blocker with evidence.
67
+ MCP/`wp` quality tools, typecheck, lint/format, affected tests, policy checks,
68
+ docs/blueprint validation when those changed, and `wp sync --check` after
69
+ template/catalog changes. On failure, fix root cause or record the blocker.
75
70
 
76
71
  ## Communicate
77
72
 
@@ -149,6 +144,7 @@ Full details: `.agent/rules/package-conventions.md`
149
144
  ## Tech stack
150
145
 
151
146
  {{TECH_STACK}}
147
+
152
148
  <!-- <<< managed by webpresso (planning-and-release) -->
153
149
 
154
150
  <!-- >>> user-owned (escalation-map) -->
@@ -1,6 +1,6 @@
1
1
  ---
2
- description: "Post-implementation quality gate that verifies work is actually done, runs the folded TPH/test-quality audit, cleans up legacy/backward-compat/dead-code garbage left behind, refreshes affected docs, and requires outside-model approval evidence before merge-ready claims. Use after implementing a feature or fix, before claiming done, or when finalizing a blueprint."
3
- argument-hint: "<target> [--full] where target is: package|file|plan-slug|all"
2
+ description: "Post-implementation quality gate: local checks by default; --merge-ready requires exactly one outside-voice approval. Runs TPH/test-quality audit, dead-code sweep, and docs refresh. Use after implementing a feature or fix, before claiming done, or when finalizing a blueprint."
3
+ argument-hint: "<target> [--full|--merge-ready] where target is: package|file|plan-slug|all"
4
4
  allowed-tools: Bash, Read, Write, Edit, Glob, Grep, Task, TodoWrite
5
5
  ---
6
6
 
@@ -180,8 +180,10 @@ for the current repository and package configuration contract.
180
180
  `npm view <package> version`. For consumer setup smoke, use
181
181
  `vp install -g @webpresso/agent-kit@latest`, `wp setup`, and
182
182
  `wp sync --check`.
183
- 6. If the Version Packages PR has no WP check / CI is `action_required` with
184
- zero jobs, follow
183
+ 6. Version Packages PRs are authored via the **webpresso-dev** App installation
184
+ token in `release.yml` (not bare `GITHUB_TOKEN`). If a PR still has no WP
185
+ check / CI is `action_required` with zero jobs (legacy bot author or App
186
+ mint failure), follow
185
187
  [`docs/runbooks/version-packages-bot-ci.md`](../../../docs/runbooks/version-packages-bot-ci.md)
186
188
  (`gh run rerun` or Approve workflows). Do not admin-merge without WP check.
187
189
  7. After the OIDC publish path succeeds, set npm package publishing access to
@@ -73,7 +73,10 @@ Map routing intent like this:
73
73
  `deep-research`
74
74
  - debugging and regressions → `investigate` then `fix`
75
75
  - bounded cleanup after behavior is green → `ai-deslop`
76
+ - multi-task / parallel execute → `ultragoal` + `/pll` (ready-queue, worktrees)
77
+ - local completeness → `/verify`; merge-ready outside voice → `/verify --merge-ready`
78
+ (exactly one sequential outside reviewer unless user sets N)
76
79
 
77
- Use `wp_*` tools for tests, lint, typecheck, audits, blueprint execution, and
78
- quality gates. Use the curated review skills for plan critique, outside voice,
79
- and pre-landing review when explicitly requested or clearly useful.
80
+ Use the full `wp_*` MCP surface for tests, lint, typecheck, audits, session memory,
81
+ ultragoal, worktrees, PRs, and quality gates not shell reimplementations. Use
82
+ curated outside-voice skills only within `review_budget` (default 0 local / 1 merge-ready).
@@ -5,9 +5,9 @@ title: Autopilot
5
5
  status: active
6
6
  scope: repo
7
7
  applies_to: [agents]
8
- related: [goal, plan-refine, verify, testing-philosophy]
8
+ related: [goal, plan-refine, verify, testing-philosophy, ultragoal, pll, fix]
9
9
  created: "2026-07-10"
10
- last_reviewed: "2026-07-10"
10
+ last_reviewed: "2026-07-21"
11
11
  name: autopilot
12
12
  description: "Drive a brief through the bounded native goal pipeline."
13
13
  argument-hint: "<brief|force: brief>"
@@ -15,25 +15,62 @@ argument-hint: "<brief|force: brief>"
15
15
 
16
16
  # Autopilot
17
17
 
18
- Drive an approved brief through `plan -> execute -> qa -> validate -> land -> complete` using `wp ultragoal run` and the current handoff.
18
+ Drive an approved brief through `plan -> execute -> qa -> validate -> land -> complete`
19
+ using `wp_ultragoal_run` / `wp ultragoal run` and the current handoff.
20
+
21
+ ## Outside-voice (required)
22
+
23
+ After each ultragoal **phase or plan-gate milestone**, run an **OpenCode Go** outside-voice review and pick the model by purpose (plan critique → DeepSeek Pro; coding quality → Kimi Code first; cheap recheck → DeepSeek Flash). Resolve IDs from live `opencode models opencode-go`. Lifecycle authority only via converged `wp review gate` — never self-approve. Full protocol: the `ultragoal` skill. Respect `review_budget` (default one sequential path; no multi-host stampede).
19
24
 
20
25
  ## Vague gate
21
26
 
22
- A brief is anchored when it includes a file path, symbol, issue number, test name, or numbered steps. Route any unanchored brief through `plan-refine` before execution. A leading `force:` is the only explicit bypass; strip it before creating the goal and record the bypass in the blueprint.
27
+ A brief is anchored when it includes a file path, symbol, issue number, test name, or numbered steps
28
+ (blueprint slug and explicit budgets also count). Route any unanchored brief through
29
+ `plan-refine` before execution.
30
+
31
+ **Reject** (unless rewritten with scope + budgets): “complete all”, “full autopilot”,
32
+ “go to sleep”, “elegantly merge everything” without a named blueprint/PR set.
33
+
34
+ A leading `force:` is the only explicit bypass; strip it before creating the goal and
35
+ record the bypass in the blueprint.
36
+
37
+ Default budgets if the user omits them: `concurrency=4`, `fix_budget=1`,
38
+ `review_budget=1`, no `/loop`. See `ultragoal` skill.
39
+
40
+ ## Tooling map
41
+
42
+ | Pipeline step | Tools |
43
+ | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
44
+ | Plan | `plan-refine`, `wp_blueprint_*`, `wp_session_capture` for decisions |
45
+ | Create controller | `wp_ultragoal_new`, `wp_worktree` |
46
+ | Execute | ready-set via blueprint tools; `/pll` or parallel subagents; `wp_session_context` for delegates; `wp_blueprint_task_verify` only to complete tasks |
47
+ | Opportunistic repair | `/fix` up to `fix_budget`; else handoff backlog |
48
+ | QA | `wp_qa` / `wp_lint` / `wp_typecheck` / `wp_test`; PR checks via `wp_pr_status` / `wp_pr_wait` |
49
+ | Validate | one outside voice if merge-bound (OpenCode Go by purpose, or claude/codex/grok); `wp review gate` for authority |
50
+ | Land | `wp_pr_upsert`, green required checks, merge + owner cleanup |
51
+ | Blocked / stop | `wp_ultragoal_handoff` ≤40 lines; `wp_ultragoal_cancel` if abandoned |
23
52
 
24
53
  ## Pipeline
25
54
 
26
- 1. Plan: refine blueprints and satisfy provenance-backed promotion approvals.
27
- 2. Execute: implement current ready tasks; use only `wp_blueprint_task_verify` to mark them done.
28
- 3. QA: run affected checks and `wp qa`; preserve normalized failure evidence.
29
- 4. Validate: obtain distinct verification and code-review evidence and resolve findings. Each lane appends a tracked `reviews.md` record in one of these exact forms:
55
+ 1. **Plan:** refine blueprints and satisfy provenance-backed promotion approvals.
56
+ 2. **Execute:** implement current **ready** tasks in parallel up to `concurrency`; use only
57
+ `wp_blueprint_task_verify` to mark them done.
58
+ 3. **QA:** run affected checks and `wp_qa`; preserve normalized failure evidence. Prefer
59
+ PR-bound CI when a PR exists.
60
+ 4. **Validate:** obtain verification + code-review evidence within `review_budget`. Each
61
+ lane appends a tracked `reviews.md` record in one of these exact forms:
30
62
 
31
63
  ```text
32
64
  <!-- wp:goal-validation {"kind":"verify","reviewer":"<identity>","artifact":"<tracked-path>"} -->
33
65
  <!-- wp:goal-validation {"kind":"code-review","reviewer":"<different-identity>","artifact":"<tracked-path>"} -->
34
66
  ```
35
67
 
36
- 5. Land: require green PR checks, complete the blueprint in the same PR, merge, and run owner cleanup.
37
- 6. Complete: stop only when `wp ultragoal run` records terminal evidence.
68
+ 5. **Land:** require green PR checks, complete the blueprint in the same PR, merge, and
69
+ run owner cleanup.
70
+ 6. **Complete:** stop only when `wp_ultragoal_run` records terminal evidence.
38
71
 
39
- Resume from durable state after interruption. Obey `WP_ULTRAGOAL_DISABLE=1`, iteration/error/validation caps, and repository ownership. The pipeline must never self-approve, directly mark tasks done, bypass evidence, or push to main. Keep every loop bounded and never increase timeouts.
72
+ Resume from durable state after interruption. Obey `WP_ULTRAGOAL_DISABLE=1`,
73
+ iteration/error/validation caps, and repository ownership. Never self-approve, directly
74
+ mark tasks done, bypass evidence, push to main, or increase timeouts (keep every loop bounded and never increase timeouts). After every phase
75
+ transition recorded by `wp ultragoal run`, obtain a fresh OpenCode Go outside review
76
+ before treating the milestone as closed (see Outside-voice above and the `ultragoal` skill).
@@ -8,6 +8,13 @@ license: MIT
8
8
 
9
9
  Use when a non-Claude host needs Claude to review a diff, challenge a plan, or answer a focused repo question. Keep it bounded/read-only unless asked otherwise, and report Claude output as advice, not verified fact.
10
10
 
11
+ ## Single-shot budget (anti-stampede)
12
+
13
+ - Default: **one** review invocation per request.
14
+ - Do **not** spawn parallel Claude + Codex + Grok + OpenCode reviews unless the user set `review_budget`/`N` > 1.
15
+ - Prefer `wp review run` / `wp review gate` over hand-rolled multi-agent loops.
16
+ - Bounded payload only (see below). Split large diffs across sequential calls, never unbounded whole-PR dumps.
17
+
11
18
  ## Auth check
12
19
 
13
20
  Use local Claude CLI login directly; do not route through Anthropic API-key env vars.
@@ -8,6 +8,13 @@ license: MIT
8
8
 
9
9
  Use this skill from Claude or another non-Codex host when the user wants Codex to independently review a diff, challenge a plan, or answer a repo question. Keep Codex read-only by default and treat its answer as external advice until independently verified.
10
10
 
11
+ ## Single-shot budget (anti-stampede)
12
+
13
+ - Default: **one** review invocation per request.
14
+ - Do **not** fan out parallel multi-host review matrices unless the user set `review_budget`/`N` > 1.
15
+ - Prefer `wp review run` / `wp review gate` over spawn/wait agent loops for review.
16
+ - Keep prompts bounded; no whole-repo paste.
17
+
11
18
  ## Auth check
12
19
 
13
20
  ```bash
@@ -7,7 +7,7 @@ scope: repo
7
7
  applies_to: [agents]
8
8
  related: [verify, testing-philosophy]
9
9
  created: "2026-05-13"
10
- last_reviewed: "2026-05-22"
10
+ last_reviewed: "2026-07-21"
11
11
  name: fix
12
12
  description: "Root-cause fix workflow that runs investigate first when diagnosis or failing proof is still missing."
13
13
  argument-hint: '<target> where target is: file|symptom|error|test|"free-text description"'
@@ -23,18 +23,43 @@ This command turns "please fix it well" into an enforceable workflow: diagnose
23
23
  first, repair at the owner, prove the repair, and escalate to `/verify` when
24
24
  the blast radius is broader than a local fix.
25
25
 
26
+ ## Tooling map
27
+
28
+ | Need | Prefer |
29
+ | ---------------------- | --------------------------------------------------------------------------- |
30
+ | Reproduce / large logs | `wp_session_execute`, `wp_session_batch_execute`, `wp_session_execute_file` |
31
+ | Recall prior evidence | `wp_session_search`, `wp_session_restore`, `wp_session_retrieve` |
32
+ | Capture decisions | `wp_session_capture` (do not paste full reports back as user text) |
33
+ | Scoped proof | `wp_test`, `wp_lint`, `wp_typecheck`, or `wp_qa` |
34
+ | Audits | `wp_audit` / `wp_audits` |
35
+ | Worktree isolation | `wp_worktree` / `wp blueprint start` — never thrash primary checkout |
36
+ | PR follow-up | `wp_pr_status`, `wp_pr_upsert` when landing the fix |
37
+
26
38
  ## Non-negotiable invariants
27
39
 
28
40
  1. **Root cause, not symptom.** Trace the failure to the invariant that actually broke. Do not patch callers when the owner is fixable.
29
41
  2. **Loud failures, no silent fallbacks.** No default shims, sentinel returns, or catch-and-continue behavior that hides missing config, bad state, or broken boundaries.
30
- 3. **Use the repo's real execution surface.** Prefer repo-owned wrappers and injected routing guidance over host-specific tool assumptions. If the repo exposes quality wrappers, use them. Use bounded inspection paths for large-output investigation.
42
+ 3. **Use the repo's real execution surface.** Prefer MCP `wp_*` tools and repo wrappers over host Bash for search/test/lint. Use bounded session-memory paths for large output.
31
43
  4. **Regression proof is mandatory.** Add or strengthen a test or other reliable proof that would fail against the old behavior.
32
44
  5. **Raising timeouts is not a fix.** If a timeout fires, investigate the bottleneck. Only raise a bound when the repo already documents that workload and you can cite measurement.
33
45
  6. **Zero suppressions, zero papering over.** No lint disables, ts-ignore, compat aliases, or "temporary" branches to sneak the fix through.
34
46
  7. **Minimal correct diff.** Update every consumer of a changed contract in the same change, but do not bundle unrelated cleanup.
47
+ 8. **Primary checkout is sacred.** If HEAD is detached, primary is dirty with unrelated work, or you are not on a managed worktree for non-trivial edits → **stop** and move to `wp_worktree` / blueprint owner. Never leave the primary checkout broken.
48
+
49
+ ## Opportunistic fix budget (when called from ultragoal / autopilot / pll)
50
+
51
+ - At most **`fix_budget` (default 1)** pre-existing issues per controller phase.
52
+ - Each must have: named invariant, failing proof, owning path.
53
+ - If the repair needs its own blueprint or expands epic scope → **handoff backlog**, do not inline.
54
+ - Additional discoveries: list in the final report; do not thrash.
35
55
 
36
56
  ## Protocol
37
57
 
58
+ ### Step 0a — Worktree preflight
59
+
60
+ Before editing: confirm you are on a managed worktree or an explicitly allowed branch.
61
+ If the primary checkout is dirty/detached with unrelated state, stop and isolate first.
62
+
38
63
  ### Step 0 — Run the investigate phase when evidence is missing
39
64
 
40
65
  Before editing, check whether the current context already contains all of the
@@ -94,17 +119,17 @@ Do not keep production code written before the test as "reference". If you wrote
94
119
 
95
120
  Run the narrowest checks that prove the repaired behavior on the real repo surface:
96
121
 
97
- - targeted test(s) for the repaired path
98
- - targeted lint/typecheck/build checks for changed files or packages
99
- - any boundary-specific verification the repo requires for the touched surface
122
+ - `wp_test` / targeted tests for the repaired path
123
+ - `wp_lint` / `wp_typecheck` for changed surfaces
124
+ - `wp_qa` only when the blast radius needs the bookend
100
125
 
101
126
  Rules:
102
127
 
103
- - Prefer repo-owned wrappers or routed quality tools over raw host-specific commands.
104
- - Reuse fresh logs if the repo auto-saves them; do not re-run long commands just to re-read output.
128
+ - Prefer MCP `wp_*` over raw host Bash.
129
+ - Reuse fresh logs / session-memory indexed output; do not re-run long commands just to re-read.
105
130
  - Read the exit code and summary before making a claim.
106
131
 
107
- Escalate to `/verify <target>` when any of these are true:
132
+ Escalate to `/verify <target>` (local) or `/verify <target> --merge-ready` when any of these are true:
108
133
 
109
134
  - the fix crosses packages
110
135
  - the fix changes a public or shared contract
@@ -8,6 +8,13 @@ license: MIT
8
8
 
9
9
  Use when a non-Grok host needs Grok Build to review a diff, challenge a plan, or answer a focused repo question. Keep it read-only by default. A provenance-backed Grok approval is first-class and satisfies the blueprint strong-reviewer gate alone, with the same rejection authority as Claude or Codex.
10
10
 
11
+ ## Single-shot budget (anti-stampede)
12
+
13
+ - Default: **one** review invocation per request.
14
+ - Do **not** run parallel multi-host review swarms unless the user set `review_budget`/`N` > 1.
15
+ - Prefer `wp review run` / `wp review gate --provider grok` for lifecycle authority.
16
+ - Bounded prompts only.
17
+
11
18
  ## Auth / binary
12
19
 
13
20
  ```bash
@@ -17,10 +17,21 @@ flaky behavior, or confusing symptom before editing code.
17
17
  - Stop once you can name the broken invariant, show the failing proof, and
18
18
  point at the owner that should be repaired.
19
19
 
20
+ ## Tooling map
21
+
22
+ | Need | Prefer |
23
+ | ---------------------- | ---------------------------------------------------------------- |
24
+ | Reproduce / large logs | `wp_session_execute`, `wp_session_batch_execute` |
25
+ | Large files | `wp_session_execute_file` |
26
+ | Prior continuity | `wp_session_search`, `wp_session_restore`, `wp_session_retrieve` |
27
+ | Capture findings | `wp_session_capture` (short pointer, not full paste-back) |
28
+ | Proof runs | `wp_test`, `wp_qa`, `wp_lint`, `wp_typecheck` |
29
+ | Code search/read | host Grep/Read first; avoid shell-as-IDE |
30
+
20
31
  ## Workflow
21
32
 
22
33
  1. Reproduce or capture the failure.
23
- - Run the exact failing command or trace the exact user path.
34
+ - Run the exact failing command or trace the exact user path (prefer `wp_session_execute`).
24
35
  - Keep the evidence that matters: error text, failing assertion, exit code,
25
36
  log path, or boundary mismatch.
26
37
  2. Read the whole boundary.
@@ -5,78 +5,83 @@ title: PLL Skill — Blueprint-Aware Parallel Execution
5
5
  status: active
6
6
  scope: repo
7
7
  applies_to: [agents]
8
- related: []
8
+ related: [ultragoal, autopilot, team]
9
9
  created: "2026-05-07"
10
- last_reviewed: "2026-05-07"
10
+ last_reviewed: "2026-07-21"
11
11
  name: pll
12
+ description: "Blueprint-aware parallel execution: ready-queue, max-parallel lanes, cascade-skip."
12
13
  ---
13
14
 
14
15
  # PLL Skill — Blueprint-Aware Parallel Execution
15
16
 
16
- Use this skill when the user invokes `/pll` or asks for Blueprint-aware parallel execution.
17
+ Use when the user invokes `/pll` or asks for Blueprint-aware parallel execution.
17
18
 
18
- `/pll` is not a standalone runner. It is the operator-facing adapter over the same shared execution model used by `wp blueprint exec`: both surfaces consume the same Blueprint-backed launch spec, backend vocabulary, and runtime-state bridge, but `/pll` stays manual and operator-facing.
19
-
20
- `/pll`:
21
-
22
- 1. understands Blueprint/task dependencies
23
- 2. updates `wp blueprint` lifecycle state honestly
24
- 3. delegates generic parallel fan-out to the engine layer such as `$ultrawork` or host-native subagents
19
+ `/pll` is the operator-facing adapter over the same shared execution model as
20
+ `wp blueprint exec`: Blueprint-backed launch specs, backend vocabulary, and
21
+ runtime-state bridge. `/pll` stays manual and operator-facing; `ultragoal` is the
22
+ durable multi-phase controller that should call the same ready-queue rules.
25
23
 
26
24
  ## Responsibilities
27
25
 
28
- 1. **Input parsing**
29
- - Accept inline task lists, comma-separated strings, or file paths.
30
- - Treat blueprint paths under `blueprints/` as lifecycle-backed execution.
31
- 2. **Blueprint lifecycle**
32
- - Use `wp blueprint start`, `wp blueprint task ...`, and `wp blueprint finalize` for durable state.
33
- - Never use `wp blueprint move` as the normal execution primitive.
34
- - Keep the lifecycle semantics aligned with `wp blueprint exec`; do not invent a separate `/pll`-only plan model.
35
- 3. **Dependency-aware batching**
36
- - Compute ready work from explicit dependencies and obvious blocking relationships.
37
- - Prioritize critical-path or high-fan-out work when choosing the next batch.
38
- 4. **Engine delegation**
39
- - Hand independent work to the current engine layer (`$ultrawork`, subagents, or equivalent runtime-native parallel lanes).
40
- - Do not promise a fixed active-agent count across runtimes.
41
- 5. **Verification discipline**
42
- - Require repo verification before marking blueprint tasks complete.
43
- 6. **Shared execution model**
44
- - Treat `/pll` as the interactive/manual front door for the same control-plane contract that `wp blueprint exec` uses.
45
- - Reuse the same backend names, progress bridge semantics, and truthfulness rules.
46
-
47
- ## Roadmap-Aware Lane Picking
48
-
49
- When no explicit task list is supplied, ground lane selection in `wp blueprint list` before inventing work:
26
+ 1. **Input parsing** — inline task lists, files, or blueprint paths under `blueprints/`.
27
+ 2. **Blueprint lifecycle** — `wp blueprint start`, task tools, finalize; never `wp blueprint move`
28
+ as the normal primitive. Prefer MCP: `wp_blueprint_list` / `get` / `context` /
29
+ `put` / `transition` / `task_verify`.
30
+ 3. **Ready-queue (max parallel)** compute tasks with satisfied deps; print the ready-set
31
+ before launching; fill up to `concurrency` (default 4, max 8; user can set `--max`).
32
+ 4. **Engine delegation** independent work host subagents / `$ultrawork` / worktrees via
33
+ `wp_worktree`. Before each delegate: `wp_session_context` (no full-history paste).
34
+ 5. **Verification** complete tasks only with `wp_blueprint_task_verify` + repo proof
35
+ (`wp_qa` / `wp_test` / targeted tools). Large commands `wp_session_execute` /
36
+ `wp_session_batch_execute`.
37
+ 6. **Shared model** same control-plane contract as `wp blueprint exec` and ultragoal execute.
38
+
39
+ ## Ready-queue algorithm
40
+
41
+ ```text
42
+ ready = tasks where status=todo and all Depends are done
43
+ while ready or in_progress:
44
+ launch min(len(ready), concurrency - in_progress) implementers in worktrees
45
+ on success verify with evidence → unlock dependents into ready
46
+ on hard fail → block task, cascade-skip dependents that require it, continue others
47
+ ```
50
48
 
51
- 1. Prefer active `ROADMAP` rows and pick the next `planned` `CHILD` row whose `depends_on:` chain is satisfied.
52
- 2. Treat `ORPHANS` as fallback work only when no roadmap child is actionable.
53
- 3. Keep the heuristic discoverable and auditable: `wp audit roadmap-links` checks bidirectional roadmap/child links, while `wp audit blueprint-lifecycle` checks lifecycle placement.
54
- 4. If command output changes, update `/pll` guidance and the shared blueprint output contract together.
49
+ Prioritize critical-path / high-fan-out tasks when choosing the next batch.
55
50
 
56
51
  ## Concurrency Limits
57
52
 
58
- | Scope | Guidance |
59
- | ------------------ | ------------------------------------------------------------------------- |
60
- | Default batches | Use the smallest parallelism that still keeps safe independent lanes busy |
61
- | Test-heavy tasks | Keep concurrency conservative |
62
- | Build/deploy tasks | Keep concurrency conservative |
53
+ | Scope | Guidance |
54
+ | --------------------------- | -------------------------------------------- |
55
+ | Default | Keep safe independent lanes busy (default 4) |
56
+ | Hard max | 8 unless the user explicitly raises |
57
+ | Test-heavy / build / deploy | Conservative (often 1–2) |
58
+ | Shared file ownership | Serialize or merge tasks — never two writers |
63
59
 
64
60
  ## Deadlock and Failure Handling
65
61
 
66
- - If no tasks remain ready but some are blocked, report the blocking tasks and their dependencies.
67
- - Failed tasks stay blocked with reasons; downstream work remains blocked unless explicitly safe to continue.
68
- - If lifecycle mutation fails, stop instead of continuing with stale plan state.
62
+ - No ready work but blocked tasks remain report blockers + deps; stop or handoff.
63
+ - Failed tasks stay blocked with reasons; dependents cascade-skipped unless safe alone.
64
+ - Lifecycle mutation failure stop (no stale plan execution).
65
+ - Capture decisions with `wp_session_capture`; resume via `wp_session_search` / `restore`.
66
+
67
+ ## Roadmap-Aware Lane Picking
68
+
69
+ When no explicit task list is supplied, ground selection in `wp blueprint list`:
70
+
71
+ 1. Prefer active `ROADMAP` rows; next `planned` `CHILD` with satisfied `depends_on:`.
72
+ 2. `ORPHANS` only when no roadmap child is actionable.
73
+ 3. Audits: `wp audit roadmap-links`, `wp audit blueprint-lifecycle`.
69
74
 
70
75
  ## When **NOT** to use
71
76
 
72
- - Small, strictly serial work where `/plan` or direct execution is simpler.
73
- - Situations where you only need generic parallel fan-out and do not need Blueprint lifecycle/state awareness; use `$ultrawork` directly there.
77
+ - Small strictly serial work direct execution or `/fix`.
78
+ - Generic fan-out without blueprint lifecycle host-native parallel only.
79
+ - Overnight multi-phase goals → `ultragoal` / `autopilot` (which should still use these rules).
74
80
 
75
- ## Quick Start Examples
81
+ ## Quick Start
76
82
 
77
83
  ```bash
78
84
  /pll "lint auth, lint utils, typecheck api [depends: lint auth], test api [depends: typecheck api]"
79
85
  /pll tasks.md --max=6
80
- /pll blueprints/in-progress/new-launch.md
81
86
  /pll blueprints/in-progress/new-launch/_overview.md
82
87
  ```
@@ -7,7 +7,7 @@ scope: repo
7
7
  applies_to: [agents]
8
8
  related: [autopilot, goal, plan-refine, verify]
9
9
  created: "2026-07-13"
10
- last_reviewed: "2026-07-13"
10
+ last_reviewed: "2026-07-21"
11
11
  name: team
12
12
  description: "Coordinate multiple dashboard-backed agent sessions on one task."
13
13
  argument-hint: "<brief|role plan>"
@@ -18,32 +18,49 @@ argument-hint: "<brief|role plan>"
18
18
  Use `team` when the work needs coordinated parallel lanes with a leader-owned
19
19
  task list, explicit handoffs, and independent verification. Prefer native
20
20
  subagents for small bounded lookups; use `team` when the parallel work should be
21
- visible, durable, and operator-controllable from `wp dash`.
21
+ visible, durable, and operator-controllable from `wp dash`. Prefer `ultragoal` +
22
+ `/pll` when the work is blueprint-owned and does not need multi-provider dashboard
23
+ lanes.
24
+
25
+ ## Tooling map
26
+
27
+ | Need | Prefer |
28
+ | --------------------- | --------------------------------------------------------------- |
29
+ | Dashboard / sessions | `wp dash`, `wp_fleet_status`, `wp_worker_tail` |
30
+ | Worktrees | `wp_worktree` per lane |
31
+ | Context-light handoff | `wp_session_context` (required before spawn — no history paste) |
32
+ | Continuity | `wp_session_capture` / `search` / `restore` |
33
+ | Blueprint tasks | `wp_blueprint_task_verify` only for completion |
34
+ | QA | `wp_qa` / targeted `wp_test` / `wp_lint` / `wp_typecheck` |
35
+ | PR | `wp_pr_upsert` / `wp_pr_status` / `wp_pr_wait` |
22
36
 
23
37
  ## Protocol
24
38
 
25
39
  1. Start from a grounded brief or an approved blueprint. If scope is vague, run
26
- `plan-refine` first and define task lanes, shared files, and verification.
40
+ `plan-refine` first and define task lanes, shared files, budgets, and verification.
27
41
  2. Open or reuse `wp dash` and launch the provider sessions needed for the
28
42
  lanes. Direct `wp claude`, `wp codex`, and `wp opencode` commands are
29
43
  expected to enter the dashboard in interactive terminals.
30
44
  3. Assign one owner per lane. Include the task, allowed files or surfaces,
31
45
  expected output, verification command, and blocker-report rule.
32
- 4. Keep one lane or leader pass responsible for integration and evidence.
46
+ 4. Before each worker spawn, build a bounded manifest with `wp_session_context`
47
+ (objective, constraints, evidence refs, remaining steps). Never copy parent transcripts.
48
+ 5. Keep one lane or leader pass responsible for integration and evidence.
33
49
  Workers report findings, patches, tests, and unresolved risks; they do not
34
50
  self-approve or mark blueprint tasks complete.
35
- 5. Integrate only after checking shared-file conflicts, updated assumptions,
51
+ 6. Integrate only after checking shared-file conflicts, updated assumptions,
36
52
  and verification evidence. Use `wp_blueprint_task_verify` for task completion
37
53
  when a blueprint owns the work.
38
- 6. Stop when every lane is complete, cancelled, or explicitly blocked and the
39
- leader has recorded verification evidence.
54
+ 7. Stop when every lane is complete, cancelled, or explicitly blocked and the
55
+ leader has recorded verification evidence (≤40-line handoff if blocked).
40
56
 
41
57
  ## Coordination Rules
42
58
 
43
59
  - Use a single source of truth for assignments: the blueprint, goal handoff, or
44
60
  leader-maintained task list.
45
- - Require ACK-style lane starts for shared files, dependency boundaries, or
46
- handoffs.
61
+ - Cap concurrency (default 4). Cascade-skip dependents of hard failures.
62
+ - Opportunistic `/fix` uses `fix_budget` (default 1) total across the team, not per lane.
63
+ - Require ACK-style lane starts for shared files, dependency boundaries, or handoffs.
47
64
  - Reassign or narrow blocked lanes instead of letting work drift.
48
65
  - Escalate changed assumptions before widening scope.
49
66
  - Never bypass review provenance, push to main, self-approve, or increase