@jaggerxtrm/specialists 3.18.1 → 3.18.3

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 (29) hide show
  1. package/config/mandatory-rules/code-quality-defaults.md +58 -1
  2. package/config/skills/setup-specialists/SKILL.md +1 -1
  3. package/config/skills/using-script-specialists/SKILL.md +5 -5
  4. package/config/skills/using-specialists/SKILL.md +1135 -879
  5. package/config/skills/using-specialists-auto/SKILL.md +21 -21
  6. package/config/specialists/chain-coordinator.specialist.json +63 -0
  7. package/config/specialists/reviewer.specialist.json +1 -1
  8. package/config/specialists/seconder.specialist.json +1 -1
  9. package/dist/asset-contract.json +8 -13
  10. package/dist/index.js +151 -28
  11. package/dist/lib.js +8 -0
  12. package/dist/types/cli/clean.d.ts.map +1 -1
  13. package/dist/types/cli/init.d.ts.map +1 -1
  14. package/dist/types/cli/view.d.ts.map +1 -1
  15. package/dist/types/specialist/control.d.ts.map +1 -1
  16. package/dist/types/specialist/loader.d.ts +12 -0
  17. package/dist/types/specialist/loader.d.ts.map +1 -1
  18. package/dist/types/specialist/process-health.d.ts +16 -1
  19. package/dist/types/specialist/process-health.d.ts.map +1 -1
  20. package/dist/types/specialist/supervisor.d.ts.map +1 -1
  21. package/docs/design/roadmap/chain-templates/README.md +1 -1
  22. package/docs/design/roadmap/chains-prompt-evals.md +3054 -0
  23. package/docs/design/roadmap/enhanced-prd.md +4282 -0
  24. package/docs/design/roadmap/specialists-roadmap.md +7 -7
  25. package/docs/design/xt-pi-role-pi-flag-passthrough.md +174 -0
  26. package/docs/skills.md +4 -13
  27. package/package.json +1 -1
  28. package/config/skills/using-specialists-v2/SKILL.md +0 -766
  29. package/config/skills/using-specialists-v3/SKILL.md +0 -1327
@@ -445,7 +445,7 @@ Both verbs surface counts (`stopped 7 waiting, skipped 3 terminal, refused 1 run
445
445
 
446
446
  **Opportunity 14 [shipped 2026-05-31] — Canonical-pipeline completion: `test-engineer` step + `test-runner` upgrade + chain_template wiring.** *(Beads: epic `unitAI-sfwe1`, design canon `docs/design/chain-templates.md` §2, formula integration `unitAI-f9kku`.)*
447
447
 
448
- **Problem today.** The current canonical pipeline (already in production via `using-specialists-v3`) runs `executor → code-sanity → obligations-scanner → reviewer` for production diffs. But there is a precise gap between the writer and `code-sanity`: nobody turns a production diff into the right behavioral tests, smoke/E2E checks, and telemetry assertions before the reviewer sees it. The executor is busy implementing; `test-runner` only executes. As a result, autonomous chains repeatedly ship code whose test/log/telemetry contract was never validated against the actual diff — the reviewer either gives a false PASS (no evidence to gate on) or a noisy PARTIAL (asking the operator to fill the gap manually).
448
+ **Problem today.** The current canonical pipeline (already in production via `using-specialists`) runs `executor → code-sanity → obligations-scanner → reviewer` for production diffs. But there is a precise gap between the writer and `code-sanity`: nobody turns a production diff into the right behavioral tests, smoke/E2E checks, and telemetry assertions before the reviewer sees it. The executor is busy implementing; `test-runner` only executes. As a result, autonomous chains repeatedly ship code whose test/log/telemetry contract was never validated against the actual diff — the reviewer either gives a false PASS (no evidence to gate on) or a noisy PARTIAL (asking the operator to fill the gap manually).
449
449
 
450
450
  **Patch.** Two specialist additions/upgrades plus a chain_template formula pass that completes the canonical pipeline:
451
451
 
@@ -503,7 +503,7 @@ The fusion is architecturally clean: `reviewer.specialist.json` already declared
503
503
  **Companion enforcement.**
504
504
 
505
505
  - **Reviewer Release Checklist** (canon §2.6 already updated): three seconder lines (`scope_verdict`, `quality_verdict`, `overall_verdict`). Reviewer cannot PASS without an established `seconder.overall_verdict: PASS` at medium+.
506
- - **`using-specialists-v3` + `v4` SKILL docs**: teach the canonical pipeline including `seconder` step; document dual-verdict semantics + failure routing per dimension; cross-reference canon §2.3.
506
+ - **`using-specialists` + `v4` SKILL docs**: teach the canonical pipeline including `seconder` step; document dual-verdict semantics + failure routing per dimension; cross-reference canon §2.3.
507
507
  - **Smoke/eval** (`unitAI-o7j1a` adapted): empirically prove that an off-scope writer dispatch produces `seconder.scope_verdict: FAIL` and blocks `test-engineer` from firing.
508
508
 
509
509
  **Cost: ~3 E-D-E (~half-day wall-clock auto-mode), parallelizable.** seconder spec authoring (inherit + extend code-sanity, 1 E-D-E) + reviewer prompt refactor (0.5 E-D-E) + formula integration (folds into f9kku, ~0 marginal since code-sanity → seconder is a string swap) + skill doc update (0.5 E-D-E) + eval (0.5 E-D-E) + optional mandatory rule (0.5 E-D-E).
@@ -720,7 +720,7 @@ PASS → `next: sp merge forge-eorh.48 — chain ready`. PARTIAL → `next: sp r
720
720
 
721
721
  **[adjusted: R5 dedup]** The last check IS the reviewer-specific R5 — it lives here, once. §7's R5 references this row rather than restating it. This is the data-loss class, hence hard-refuse not warn.
722
722
 
723
- **[2026-07-03 addition — draft-bead promotion gate, shipped as a doc-only bridge.]** The `contract:draft`/`contract:ready` HARD-REFUSE row above is **not yet implemented as an `sp run` check** — it exists today only as orchestrator discipline, taught in `using-specialists-v3` (rule #15 + "Draft Beads And The Promotion Gate"), `planning` ("Draft capture mode"), `using-xtrm` (two Trigger Patterns rows), and CLAUDE.md/AGENTS.md (new Dispatch gate row, marked explicitly "bridge — discipline only, not yet hook-enforced"). It reuses the existing `bd state`/`bd set-state` primitive (see the "Existing bd surface inventory" table above — the same row already flagged this primitive as under-used) rather than inventing a new schema field, per this document's own discipline. **What roadmap implementation must still build:** the real `run.ts` pre-dispatch check — `bd state <id> contract`, hard-refuse when `draft` or unset, same code path as the C1 cwd-mismatch check on the row above it. Until that lands, a session that skips the doc-taught discipline has no structural backstop; track this explicitly as unfinished work when Phase 3 (Naming, conventions, environment) or §5.3's implementation lands, not as something already closed by the doc changes.
723
+ **[2026-07-03 addition — draft-bead promotion gate, shipped as a doc-only bridge.]** The `contract:draft`/`contract:ready` HARD-REFUSE row above is **not yet implemented as an `sp run` check** — it exists today only as orchestrator discipline, taught in `using-specialists` (rule #15 + "Draft Beads And The Promotion Gate"), `planning` ("Draft capture mode"), `using-xtrm` (two Trigger Patterns rows), and CLAUDE.md/AGENTS.md (new Dispatch gate row, marked explicitly "bridge — discipline only, not yet hook-enforced"). It reuses the existing `bd state`/`bd set-state` primitive (see the "Existing bd surface inventory" table above — the same row already flagged this primitive as under-used) rather than inventing a new schema field, per this document's own discipline. **What roadmap implementation must still build:** the real `run.ts` pre-dispatch check — `bd state <id> contract`, hard-refuse when `draft` or unset, same code path as the C1 cwd-mismatch check on the row above it. Until that lands, a session that skips the doc-taught discipline has no structural backstop; track this explicitly as unfinished work when Phase 3 (Naming, conventions, environment) or §5.3's implementation lands, not as something already closed by the doc changes.
724
724
 
725
725
  ### 5.4 `sp chain <bead>` CLI dashboard view
726
726
 
@@ -893,7 +893,7 @@ Everything below this phase assumes Phase 0 has shipped. Without it, Phase 2 Pas
893
893
  | 0.b | Edit `config/specialists/planner.specialist.json` — extend `output_schema` with `recommended_template: enum(<15 formula names> \| 'on-the-run')`; validated at runtime against `bd formula list` (D26 a) | 0.3d | `jq` shows new enum; `sp validate planner` passes |
894
894
  | 0.c.1 | **Create canonical `config/skills/planning/SKILL.md` (does not exist today — only `.xtrm/skills/default/planning/SKILL.md` deployed mirror, 531 lines, Phases 1-6).** Add the **7 missing sections** identified by 2026-05-31 audit: (1) Pass-2 `recommended_template` annotation (D26 b core deliverable); (2) chain-template catalog enum with when-to-use briefs (15 templates, refs `chain-templates.md` §3.1-§3.15); (3) contract-creation discipline (D29 — CoT prefill in `<thinking>` tags, 2 worked + 1 anti-example per contract type, critique-before-commit premortem-style); (4) XML semantic structure (D30/Opp 12 — `<change-contract>` for root, `<step-contract>` for step; concrete shape with `<problem>`/`<scope>/<path>`/`<non-goals>`/`<validation>/<criterion>`/`<acceptance>`); (5) memory-recall integration (D27/Opp 11 — `bd memories <keyword>` BEFORE planning, `bd recall <key>` for payloads); (6) SCRUTINY-aware composition (Opp 16 — planner picks tier per scope/risk surface; canon §2.2 auto-escalation table; planner sets floor, reviewer can only escalate); (7) bd dep typed-edges navigation (D28 absorbed — full `--type` vocabulary: validates / informs / discovered-from / parent-child / related / supersedes; worked-template tables). | 1.0d | All 7 sections present + `sp validate planner` reads the new file via `skills.paths` |
895
895
  | 0.c.2 | **Cross-repo mirror to `~/dev/xtrm-tools`** — propagate canonical to xtrm-tools update pipeline so `xt update --apply` ships the new content to consumer projects. Requires `npm link` symlink + revendor + 2-pass `xt update --apply` per memory `xtrm-tools-skill-propagation-requires-npm-link-2026-05-23`. Verify identical SHA in ≥2 consumer repos. | 0.5d | `diff -q ~/projects/<repo>/.xtrm/skills/default/planning/SKILL.md ~/dev/specialists/config/skills/planning/SKILL.md` returns identical |
896
- | 0.d | Verify `/using-specialists-v3` still teaches the manual-chain-discipline + Iron pipeline + manual git per CLAUDE.md rule #9 that holds Phase 1 execution until Opp 4+10 land | 0.1d | Skim §"Orchestration Discipline" + §"Chain Management" sections |
896
+ | 0.d | Verify `/using-specialists` still teaches the manual-chain-discipline + Iron pipeline + manual git per CLAUDE.md rule #9 that holds Phase 1 execution until Opp 4+10 land | 0.1d | Skim §"Orchestration Discipline" + §"Chain Management" sections |
897
897
  | 0.e | Smoke: dispatch planner on a vacuum bead (just a title) → confirm `recommended_template` field appears in output_schema-validated output | 0.2d | `sp run planner --bead <test> --json` shows the field; resolved chain pour respects template-declared scrutiny floor |
898
898
 
899
899
  **Why Phase 0 is bootstrap, not Phase 3:** D26 was originally Phase 3 row 11b because the operator could in principle hand-edit it any time. But Phase 2 Pass-2 (planner annotation of `recommended_template`) **cannot run without D26 shipped**. Putting D26 inside Phase 3 created a circular dependency: planning Phase 2 produces the bd board that includes Phase 3 work that planning Phase 2 needs. The fix is sequencing, not redesign.
@@ -943,18 +943,18 @@ After Phase 0: the operator has the chain templates installed, the planner knows
943
943
  |---|---|---|---|
944
944
  | 17 | bd auto-stage + hooksPath cases + dep/migration verify | §6 / §0 #6 | **`xtrm-h9hqg`** ✓ done (CLOSED 2026-05-27 per D25) |
945
945
  | 18 | Orphan worktree cleanup (B-A4), test excludes (B-A5), osv wrapper (B-A6) | §6 | friction-audit-side (~1d) |
946
- | 19 | `sp merge` / `sp epic merge` / `sp finalize` rework | §5.5 | **NEW epic `unitAI-lyh1b` filed 2026-05-31 as kj651 child** — supersedes the original "dirty-index diagnostic" scope (D18 runway recalibration) with a fuller rework: structured failure envelopes, conflict-recovery paths, auto-rebase suggestion, soak across 3 repos to remove the `using-specialists-v3` rule #9 prohibition. Decomposition into child beads by planner Pass-1. |
946
+ | 19 | `sp merge` / `sp epic merge` / `sp finalize` rework | §5.5 | **NEW epic `unitAI-lyh1b` filed 2026-05-31 as kj651 child** — supersedes the original "dirty-index diagnostic" scope (D18 runway recalibration) with a fuller rework: structured failure envelopes, conflict-recovery paths, auto-rebase suggestion, soak across 3 repos to remove the `using-specialists` rule #9 prohibition. Decomposition into child beads by planner Pass-1. |
947
947
  | 20 | `xt init` auto-runs the bootstrap skill on new repos (per D19) | §6 | xtrm-tools (~0.5d) |
948
948
 
949
949
  ### Phase 6 — Skills revamp: `using-specialists-v4` as new canonical (~2 days)
950
950
 
951
- The operator-facing skills (`using-specialists-v3`, `using-specialists-auto`) currently teach the pre-roadmap discipline: `--bead` + `--worktree` / `--job` dispatch, manual chain stitching, Iron pipeline as convention, manual git per rule #9. After Phases 1–5 ship, the discipline has fundamentally changed — `--chain <molecule-id>` is the single dispatch verb, `sp chain review/approve/insert` is the composition gate, step-bead conventions are atomic with `kind:step` as truth, R-checks fire at dispatch, the new mandatory rule replaces auto-injection, the chain-template catalog is live. **This is a revamp, not a patch.** v3 was built for the pre-roadmap world; trying to patch it in-place produces contradictory text where every section disagrees with the next. v4 is the clean canonical successor.
951
+ The operator-facing skills (`using-specialists`, `using-specialists-auto`) currently teach the pre-roadmap discipline: `--bead` + `--worktree` / `--job` dispatch, manual chain stitching, Iron pipeline as convention, manual git per rule #9. After Phases 1–5 ship, the discipline has fundamentally changed — `--chain <molecule-id>` is the single dispatch verb, `sp chain review/approve/insert` is the composition gate, step-bead conventions are atomic with `kind:step` as truth, R-checks fire at dispatch, the new mandatory rule replaces auto-injection, the chain-template catalog is live. **This is a revamp, not a patch.** v3 was built for the pre-roadmap world; trying to patch it in-place produces contradictory text where every section disagrees with the next. v4 is the clean canonical successor.
952
952
 
953
953
  | # | Item | Source | Cost |
954
954
  |---|---|---|---|
955
955
  | 21 | **Create `config/skills/using-specialists-v4/SKILL.md`** as the new canonical operator-facing skill, taught from scratch around the shipped surfaces: `--chain <molecule-id>` as the only dispatch verb (Opp 10); `sp chain review/approve/insert` as composition gate (Opp 4); `bd mol pour` + 13 chain templates as the resolved-shape source (§13); `kind:step` label-as-truth for step beads (Opp 5/D20); atomic role→edge wiring via `sp chain wire-edges` post-pour helper; R-check behavior per §7 (R3/R6/R7 hard-refuse; R1/R2/R5 retired with `--job`); pull-not-push memory recall via the new mandatory rule (Opp 11/D27) — no more bd-prime / .xtrm/memory.md auto-dump; `sp epic` as decorated reader-only surface (§12); manual git per CLAUDE.md rule #9 remains canonical (sp merge / sp epic merge dropped). Mark frontmatter `status: canonical (post-roadmap)`. | §11.1 D28 | 1d |
956
956
  | 22 | **Refresh `config/skills/using-specialists-auto/SKILL.md`** to mirror v4 in the auto-orchestration mode; explicitly call out the new smoke-checkpoint cadence (each phase's checkpoint set is the auto-mode validation gate); teach the "eat-your-own-dogfood as it ships" discipline. | §11.1 D28 | 0.5d |
957
- | 23 | **Freeze `config/skills/using-specialists-v3/SKILL.md`** as legacy reference. Prepend a frontmatter banner: `status: legacy — superseded by using-specialists-v4 as of <commit>; preserved for historical reference and for any cold-start sessions that haven't migrated`. Do NOT rewrite v3 in place — patching v3 produces contradictory text where new and old surfaces collide. v3 stays as the pre-roadmap snapshot. Inside-v4 forward-looking section ("Future surfaces") notes channels v0 + substrate concepts as *coming, not active* — so operators know what to expect when those land, without v4 itself being gated on them. | §11.1 D28 | 0.5d |
957
+ | 23 | **Freeze `config/skills/using-specialists/SKILL.md`** as legacy reference. Prepend a frontmatter banner: `status: legacy — superseded by using-specialists-v4 as of <commit>; preserved for historical reference and for any cold-start sessions that haven't migrated`. Do NOT rewrite v3 in place — patching v3 produces contradictory text where new and old surfaces collide. v3 stays as the pre-roadmap snapshot. Inside-v4 forward-looking section ("Future surfaces") notes channels v0 + substrate concepts as *coming, not active* — so operators know what to expect when those land, without v4 itself being gated on them. | §11.1 D28 | 0.5d |
958
958
 
959
959
  **Why v4 is canonical-now, not channels-gated:** the 11 opportunities ship in ~16 days (Phases 0–5); channels v0 and substrate landing are months out and outside this roadmap. Gating v4 on channels would leave the operator with a stale v3 teaching dead surfaces (`--worktree`/`--job`/raw `--bead`) for months. v4 = canonical for what shipped. Channels/substrate-aware surfaces live as a clearly-marked "Future surfaces" section inside v4 (or as a future `using-specialists-v5` when channels v0 ships) — they do not block v4's release.
960
960
 
@@ -0,0 +1,174 @@
1
+ # `xt pi --role` ↔ `pi` runtime flag passthrough
2
+
3
+ **Context:** `xt pi --role <name>` (xtrm-tools/core PR #362, branch
4
+ `feature/xtrm-yd1p1-pi-role-launcher`) launches a `pi` interactive session in
5
+ a worktree. The current implementation forwards **zero flags** to the pi
6
+ subprocess (`cli/src/utils/worktree-session.ts:373`):
7
+
8
+ ```ts
9
+ const runtimeCmd = runtime === 'claude' ? 'claude' : 'pi';
10
+ const runtimeArgs = runtime === 'claude' ? ['--dangerously-skip-permissions'] : [];
11
+ const launchResult = spawnSync(runtimeCmd, runtimeArgs, { cwd: worktreePath, stdio: 'inherit' });
12
+ ```
13
+
14
+ xt pi's own flags today: `[name]`, `--role <name>`, `--bead <id>`, `--no-attach`.
15
+ Everything `pi` accepts (`pi --help`) is currently unreachable through xt.
16
+
17
+ This doc rules pi's ~30 CLI flags **passthrough / xt-owned / skip** for `xt pi --role`.
18
+
19
+ Coordinated with xt-design.3, epic `xtmux-2i5`.
20
+
21
+ ## Recommended shape
22
+
23
+ **Adopt the `--` passthrough convention.** Anything after `--` on the `xt pi`
24
+ command line is forwarded verbatim as pi argv:
25
+
26
+ ```bash
27
+ xt pi --role chain-coordinator --bead unitAI-2i5 -- --thinking high --no-extensions -e ./local-ext.js
28
+ ```
29
+
30
+ Rationale: pi's flag surface is large, changes independently, and includes
31
+ extension-registered flags xt can't enumerate ahead of time (`--gitnexus-cmd`,
32
+ `--mcp-config`, `--plan`, …). Enumerating each is a maintenance treadmill.
33
+ The `--` convention gives full parity with one code change, zero drift.
34
+
35
+ Individual xt flags (below) are reserved for pi flags xt itself needs to
36
+ *read or override* — e.g. session naming, which xt derives from the branch.
37
+
38
+ ## Passthrough table
39
+
40
+ Legend:
41
+ - **passthrough** — forward as-is after `--` (no xt interpretation)
42
+ - **xt-owned** — xt sets or overrides these; user cannot pass them
43
+ - **surface** — worth a first-class xt flag (short-form convenience or
44
+ interpretation needed before pi launches)
45
+ - **skip** — not meaningful under `xt pi --role`
46
+
47
+ ### Runtime shape
48
+
49
+ | pi flag | Verdict | Rationale |
50
+ |---|---|---|
51
+ | `--provider <name>` | passthrough | Runtime shape. `pi --model provider/id` also handles this, but explicit form works. |
52
+ | `--model <pattern>` | **surface** as `--model` | High-value parity flag. Also match `sp run --model`. Support `:thinking` shorthand pi already parses. |
53
+ | `--api-key <key>` | passthrough | Rare; env vars usually suffice. Don't surface (secret on cmdline). |
54
+ | `--thinking <level>` | **surface** as `--thinking` | Runtime shape and highest-frequency override. Match pi's levels: off/minimal/low/medium/high/xhigh. |
55
+ | `--models <patterns>` | passthrough | Ctrl+P cycling config. Not critical to surface. |
56
+
57
+ ### Session lifecycle
58
+
59
+ | pi flag | Verdict | Rationale |
60
+ |---|---|---|
61
+ | `--continue, -c` | passthrough | Meaningful when re-entering an existing xt worktree; user knows the intent. |
62
+ | `--resume, -r` | passthrough | Same. |
63
+ | `--session <path\|id>` | passthrough | Advanced use. Passthrough sufficient. |
64
+ | `--session-id <id>` | passthrough | Same. |
65
+ | `--fork <path\|id>` | passthrough | Same. |
66
+ | `--session-dir <dir>` | **xt-owned** | xt sets `PI_CODING_AGENT_SESSION_DIR` (or equivalent) to a worktree-scoped path if desired. Don't let users override — breaks session locality. |
67
+ | `--no-session` | passthrough | Ephemeral run inside a persistent worktree is a valid user choice. |
68
+ | `--name, -n <name>` | **xt-owned** | xt derives the display name from `[name]` positional / branch slug. Overriding here fragments observability. |
69
+
70
+ ### Tools / extensions / skills
71
+
72
+ | pi flag | Verdict | Rationale |
73
+ |---|---|---|
74
+ | `--no-tools, -nt` | passthrough | Read-only mode; user choice. |
75
+ | `--no-builtin-tools, -nbt` | passthrough | Same. |
76
+ | `--tools, -t <list>` | passthrough | Allowlist. Same. |
77
+ | `--exclude-tools, -xt <list>` | passthrough | Denylist. Same. |
78
+ | `--extension, -e <path>` | passthrough | Load explicit extension file. Multi-use. Passthrough. |
79
+ | `--no-extensions, -ne` | passthrough | Disable discovery. Passthrough. |
80
+ | `--skill <path>` | passthrough | Same as `-e` for skills. |
81
+ | `--no-skills, -ns` | passthrough | Same. |
82
+ | `--prompt-template <path>` | passthrough | Same. |
83
+ | `--no-prompt-templates, -np` | passthrough | Same. |
84
+ | `--theme <path>` | passthrough | Cosmetic. |
85
+ | `--no-themes` | passthrough | Same. |
86
+ | `--no-context-files, -nc` | passthrough | Disable AGENTS.md/CLAUDE.md load. Legitimate override. |
87
+
88
+ ### System prompt
89
+
90
+ | pi flag | Verdict | Rationale |
91
+ |---|---|---|
92
+ | `--system-prompt <text>` | **xt-owned when `--role` set** | The role's `specialist.prompt.system` is already the system prompt (see `resolveRole` in worktree-session.ts). Passing this again would clobber the role. Reject with an error when `--role` is present; passthrough when it isn't. |
93
+ | `--append-system-prompt <text>` | passthrough | Additive, not clobbering. Safe alongside `--role`. Multi-use. |
94
+
95
+ ### Startup / mode
96
+
97
+ | pi flag | Verdict | Rationale |
98
+ |---|---|---|
99
+ | `--mode <mode>` | passthrough | text/json/rpc — user knows intent. |
100
+ | `--print, -p` | **skip / warn** | Non-interactive mode contradicts `xt pi`'s interactive-tmux design. Warn and refuse (use `sp run` for one-shot). |
101
+ | `--approve, -a` | passthrough | Trust project files this run. |
102
+ | `--no-approve, -na` | passthrough | Same. |
103
+ | `--offline` | passthrough | `PI_OFFLINE=1` alternative. |
104
+ | `--verbose` | passthrough | Debug aid. |
105
+
106
+ ### Introspection / one-shot commands
107
+
108
+ | pi flag | Verdict | Rationale |
109
+ |---|---|---|
110
+ | `--list-models [search]` | **skip** | Not a session — no worktree needed. User runs `pi --list-models` directly. |
111
+ | `--export <file>` | **skip** | One-shot session-to-HTML. Not an xt workflow. |
112
+ | `--help, -h` | **skip** | xt owns its own `--help`. |
113
+ | `--version, -v` | **skip** | Use `xt pi status` (already exists per pi.ts). |
114
+
115
+ ### Subcommands (`pi install`, `pi update`, `pi list`, `pi config`)
116
+
117
+ | Subcommand | Verdict | Rationale |
118
+ |---|---|---|
119
+ | `pi install / remove / uninstall / update / list / config` | **skip** | Not launch flows. User runs `pi <cmd>` directly outside a worktree. |
120
+
121
+ ### Extension-registered flags
122
+
123
+ | Flag | Verdict | Rationale |
124
+ |---|---|---|
125
+ | `--gitnexus-cmd <value>` | passthrough | Registered by extension. Cannot enumerate ahead of time. |
126
+ | `--mcp-config <value>` | passthrough | Same. |
127
+ | Any future extension flag | passthrough | Same. Justifies the `--` convention as primary path. |
128
+
129
+ ## Summary
130
+
131
+ **Primary path — do this first:**
132
+ Implement `--` passthrough in `launchWorktreeSession`. Every flag pi supports
133
+ (current or future, first-party or extension-registered) becomes reachable
134
+ with zero per-flag maintenance.
135
+
136
+ **Surface as first-class xt flags** (short-form convenience for the two most
137
+ common overrides):
138
+ - `--model <pattern>` — passes to pi as `--model`
139
+ - `--thinking <level>` — passes to pi as `--thinking`
140
+
141
+ **xt-owned (reject or override user attempts):**
142
+ - `--session-dir` — xt controls session locality
143
+ - `--name` — xt derives from branch slug
144
+ - `--system-prompt` — clobbers `--role`'s specialist prompt when both set (error)
145
+
146
+ **Skip / warn:**
147
+ - `--print, -p` — non-interactive contradicts xt pi's design
148
+ - `--list-models`, `--export`, `--help`, `--version`, subcommands — not launch flows
149
+
150
+ **Everything else** — passthrough via `--`.
151
+
152
+ ## Implementation sketch (~10 lines)
153
+
154
+ ```ts
155
+ // worktree-session.ts, near line 373
156
+ const passthroughIdx = process.argv.indexOf('--');
157
+ const passthroughArgs = passthroughIdx >= 0 ? process.argv.slice(passthroughIdx + 1) : [];
158
+
159
+ // commander already strips xt-owned flags; combine with surfaced overrides
160
+ const piArgs: string[] = [];
161
+ if (opts.model) piArgs.push('--model', opts.model);
162
+ if (opts.thinking) piArgs.push('--thinking', opts.thinking);
163
+ piArgs.push(...passthroughArgs);
164
+
165
+ // Guard: reject conflicts before spawn
166
+ if (roleName && passthroughArgs.includes('--system-prompt')) {
167
+ console.error(kleur.red('\n ✗ --system-prompt conflicts with --role (role owns the system prompt). Use --append-system-prompt instead.\n'));
168
+ process.exit(1);
169
+ }
170
+
171
+ const runtimeArgs = runtime === 'claude' ? ['--dangerously-skip-permissions'] : piArgs;
172
+ ```
173
+
174
+ Decision doc only — no implementation in this PR.
package/docs/skills.md CHANGED
@@ -36,26 +36,17 @@ User-authored skills belong in the user/active layer used by the local agent set
36
36
 
37
37
  The package ships the source copies under `config/skills/`. The active `.xtrm/skills/...` files in a project may be refreshed by xtrm-tools.
38
38
 
39
- ### `using-specialists-v3`
39
+ ### `using-specialists`
40
40
 
41
- Location: `config/skills/using-specialists-v3/SKILL.md`
41
+ Location: `config/skills/using-specialists/SKILL.md`
42
42
 
43
- Canonical orchestration doctrine for substantial tracked work. It covers bead contracts, dependency graph shape, conflict-cluster mapping, advisory passes, reviewer rebuttal, debugger-restitch, E2E smoke phases, monitoring cadence, `sp merge` / `sp epic merge`, and session-end handoff. Use this for multi-step implementation, debugging, reviews, docs sync planning, and specialist orchestration.
43
+ Canonical orchestration doctrine for substantial tracked work. It covers bead contracts, dependency graph shape, conflict-cluster mapping, advisory passes, reviewer rebuttal, debugger-restitch, E2E smoke phases, monitoring cadence, manual publication, and session-end handoff. Use this for multi-step implementation, debugging, reviews, docs sync planning, and specialist orchestration.
44
44
 
45
45
  ### `using-specialists-auto`
46
46
 
47
47
  Location: `config/skills/using-specialists-auto/SKILL.md`
48
48
 
49
- Autonomous/offline orchestration overlay. It delegates shared mechanics to `using-specialists-v3` and adds auto-mode pacing, per-item loop shape, escalation triggers, and unattended-run discipline.
50
-
51
- ### `using-specialists-v2` / `using-specialists`
52
-
53
- Locations:
54
-
55
- - `config/skills/using-specialists-v2/SKILL.md`
56
- - `config/skills/using-specialists/SKILL.md`
57
-
58
- Older orchestration references retained for compatibility and migration context. Prefer `using-specialists-v3` for current guidance.
49
+ Autonomous/offline orchestration overlay. It delegates shared mechanics to `using-specialists` and adds auto-mode pacing, per-item loop shape, escalation triggers, and unattended-run discipline.
59
50
 
60
51
  ### `sync-docs`
61
52
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jaggerxtrm/specialists",
3
- "version": "3.18.1",
3
+ "version": "3.18.3",
4
4
  "description": "OmniSpecialist — 7-tool MCP orchestration layer powered by the Specialist System. Discover and execute .specialist.yaml files across project/user/system scopes via pi.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/types/lib.d.ts",