@jaggerxtrm/specialists 3.15.3 → 3.16.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/README.md +22 -1
- package/config/skills/specialists-creator/SKILL.md +119 -2
- package/config/skills/using-specialists-v3/SKILL.md +42 -3
- package/config/specialists/bare.specialist.json +56 -0
- package/config/specialists/changelog-drafter.specialist.json +4 -1
- package/config/specialists/code-sanity.specialist.json +4 -2
- package/config/specialists/explorer.specialist.json +4 -2
- package/config/specialists/overthinker.specialist.json +4 -2
- package/config/specialists/specialists-creator.specialist.json +8 -6
- package/dist/asset-contract.json +6 -3
- package/dist/index.js +12759 -1782
- package/dist/lib.js +6 -3
- package/dist/types/cli/attach-tui.d.ts +13 -0
- package/dist/types/cli/attach-tui.d.ts.map +1 -0
- package/dist/types/cli/attach.d.ts +20 -1
- package/dist/types/cli/attach.d.ts.map +1 -1
- package/dist/types/cli/chat/control.d.ts +58 -0
- package/dist/types/cli/chat/control.d.ts.map +1 -0
- package/dist/types/cli/chat/feed.d.ts +25 -0
- package/dist/types/cli/chat/feed.d.ts.map +1 -0
- package/dist/types/cli/chat/status.d.ts +24 -0
- package/dist/types/cli/chat/status.d.ts.map +1 -0
- package/dist/types/cli/chat.d.ts +38 -0
- package/dist/types/cli/chat.d.ts.map +1 -0
- package/dist/types/cli/finalize.d.ts.map +1 -1
- package/dist/types/cli/help.d.ts.map +1 -1
- package/dist/types/cli/node.d.ts.map +1 -1
- package/dist/types/cli/ps.d.ts.map +1 -1
- package/dist/types/cli/run.d.ts +30 -0
- package/dist/types/cli/run.d.ts.map +1 -1
- package/dist/types/cli/stop.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/pi/session.d.ts +1 -0
- package/dist/types/pi/session.d.ts.map +1 -1
- package/dist/types/specialist/bead-notes.d.ts +8 -0
- package/dist/types/specialist/bead-notes.d.ts.map +1 -0
- package/dist/types/specialist/beads.d.ts.map +1 -1
- package/dist/types/specialist/control.d.ts +11 -0
- package/dist/types/specialist/control.d.ts.map +1 -0
- package/dist/types/specialist/launch.d.ts +36 -0
- package/dist/types/specialist/launch.d.ts.map +1 -0
- package/dist/types/specialist/runner.d.ts.map +1 -1
- package/dist/types/specialist/schema.d.ts +54 -0
- package/dist/types/specialist/schema.d.ts.map +1 -1
- package/dist/types/specialist/script-runner.d.ts.map +1 -1
- package/dist/types/specialist/status-load.d.ts +3 -0
- package/dist/types/specialist/status-load.d.ts.map +1 -0
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -121,6 +121,18 @@ Specialists uses two distribution tracks:
|
|
|
121
121
|
|
|
122
122
|
`.specialists/user/` is your customization layer. `.specialists/default/` is now only for intentional pins or compatibility snapshots; stale default files are drift debt and `sp prune-stale-defaults` removes them by default. `sp init --sync-defaults` remains as a compatibility path, but it is deprecated because it creates repo-local snapshots that can drift from the package-canonical source.
|
|
123
123
|
|
|
124
|
+
For an interactive, agent-guided update flow that runs both tracks, diagnoses drift, and asks before applying destructive changes, invoke the `/update-specialists` skill in Claude Code instead of running the raw commands manually.
|
|
125
|
+
|
|
126
|
+
## Operator skills
|
|
127
|
+
|
|
128
|
+
These skills load into your Claude Code session on demand and guide the most common operator workflows:
|
|
129
|
+
|
|
130
|
+
| Skill | Invoke | When to use |
|
|
131
|
+
|---|---|---|
|
|
132
|
+
| `using-specialists-v3` | `/using-specialists-v3` | **Canonical orchestration guide.** Use for any substantial delegated work: implementation, debugging, review, planning, security audit, doc sync, multi-chain epics. Covers bead contracts, role selection, chain lifecycle, merge path, and escalation. |
|
|
133
|
+
| `using-specialists-auto` | `/using-specialists-auto` | **Autonomous / offline mode.** Activates when you hand over a multi-item list and step away ("auto mode", "run the list"). Layers pacing discipline and escalation triggers on top of `using-specialists-v3`. |
|
|
134
|
+
| `update-specialists` | `/update-specialists` | **Guided drift repair.** Runs both Category A and Category B diagnostics, presents a combined plan, and asks before applying anything. Prefer this over running raw `sp`/`xt` commands directly. |
|
|
135
|
+
|
|
124
136
|
## Core tracked workflow
|
|
125
137
|
|
|
126
138
|
```bash
|
|
@@ -132,6 +144,9 @@ sp ps
|
|
|
132
144
|
sp feed <job-id> --follow
|
|
133
145
|
sp result <job-id>
|
|
134
146
|
|
|
147
|
+
# Human-in-the-loop alternative: launch with a live TUI
|
|
148
|
+
sp chat debugger --bead <id> # feed-style timeline + status + final result + input
|
|
149
|
+
|
|
135
150
|
# After implementation and reviewer PASS
|
|
136
151
|
sp merge <chain-root-bead> # standalone chain
|
|
137
152
|
sp epic status <epic-id> # multi-chain publication check
|
|
@@ -157,6 +172,7 @@ sp ps # actionable dashboard
|
|
|
157
172
|
sp ps -f # TTY dashboard follow; pipes emit ANSI-free snapshots
|
|
158
173
|
sp feed <job-id> # full DB-backed event replay
|
|
159
174
|
sp feed -f # follow all active jobs
|
|
175
|
+
sp chat explorer --bead <id> # launch interactive TUI; input auto-steers/resumes
|
|
160
176
|
sp result <job-id> --wait
|
|
161
177
|
sp steer <job-id> "focus only on X"
|
|
162
178
|
sp resume <job-id> "continue with these findings"
|
|
@@ -165,6 +181,8 @@ sp clean --reap-orphans --dry-run
|
|
|
165
181
|
sp clean --ps # hide terminal dashboard history without deleting DB audit rows
|
|
166
182
|
```
|
|
167
183
|
|
|
184
|
+
`sp chat` is for launching a new interactive specialist session. It renders the same normalized feed style as `sp feed -f`, shows startup/payload context and the final result, and maps typed input to `steer` while running or `resume` while waiting. `/quit` and Ctrl+C detach the TUI without stopping the job; use `/stop` when you intend to stop it. Current `sp attach <job-id>` remains the legacy tmux attach path; chat-style attach to an existing job is tracked separately.
|
|
185
|
+
|
|
168
186
|
## Script and service specialists
|
|
169
187
|
|
|
170
188
|
Use `sp run` for interactive agent orchestration. Use the script/service surfaces when you need a synchronous, READ_ONLY, one-shot generation path:
|
|
@@ -193,7 +211,10 @@ curl -sS http://localhost:8000/v1/generate \
|
|
|
193
211
|
| Tool catalog and permission resolver | [docs/manifest.md](docs/manifest.md) |
|
|
194
212
|
| MCP registration and tool surface | [docs/mcp-servers.md](docs/mcp-servers.md), [docs/mcp-tools.md](docs/mcp-tools.md) |
|
|
195
213
|
| Hooks | [docs/hooks.md](docs/hooks.md) |
|
|
196
|
-
| Skills | [docs/skills.md](docs/skills.md) |
|
|
214
|
+
| Skills and operator skill reference | [docs/skills.md](docs/skills.md) |
|
|
215
|
+
| Orchestration skill (`using-specialists-v3`) | [docs/skills.md#using-specialists-v3](docs/skills.md#using-specialists-v3) |
|
|
216
|
+
| Auto mode skill (`using-specialists-auto`) | [docs/skills.md#using-specialists-auto](docs/skills.md#using-specialists-auto) |
|
|
217
|
+
| Update / drift repair skill (`update-specialists`) | [docs/skills.md#update-specialists](docs/skills.md#update-specialists) |
|
|
197
218
|
| Worktrees and session close | [docs/worktrees.md](docs/worktrees.md), [docs/worktree.md](docs/worktree.md) |
|
|
198
219
|
| Runtime architecture | [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) |
|
|
199
220
|
| Pi subprocess isolation / RPC boundary | [docs/pi-session.md](docs/pi-session.md), [docs/pi-rpc-boundary.md](docs/pi-rpc-boundary.md) |
|
|
@@ -5,8 +5,8 @@ description: >
|
|
|
5
5
|
agent through writing a valid `.specialist.json`, choosing supported models,
|
|
6
6
|
validating against the schema, and avoiding common specialist authoring
|
|
7
7
|
mistakes.
|
|
8
|
-
version: 1.
|
|
9
|
-
synced_at:
|
|
8
|
+
version: 1.3
|
|
9
|
+
synced_at: 78a7883e
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Specialist Author Guide
|
|
@@ -358,16 +358,35 @@ Typical use cases:
|
|
|
358
358
|
- `gitnexus: false` for specialists that should not receive GitNexus graph tooling
|
|
359
359
|
- set both `false` for constrained runs that need clean extension surface
|
|
360
360
|
|
|
361
|
+
### Bare specialists
|
|
362
|
+
|
|
363
|
+
Use `execution.bare: true` for non-coding LLM transforms that need a fresh canvas: research synthesis, document analysis, summarization, extraction, translation, or other tasks where specialist runtime framing adds noise instead of help.
|
|
364
|
+
|
|
365
|
+
Bare mode disables all package-runner prompt injection beyond rendered `prompt.system` and `prompt.task_template`: Specialist Run Context, Output Style, GitNexus mandate, `STATIC_WORKFLOW_RULES_BLOCK`, memory injection, GitNexus pre-query snapshot, reviewer patch retrieval, output contract, and task-side mandatory rules / reviewer diff context.
|
|
366
|
+
|
|
367
|
+
`execution.bare` is orthogonal to `prompt.system_prompt_mode`. Set `bare: true` without `system_prompt_mode: "replace"` when you want to keep pi's coding-agent base prompt but skip specialist runtime injections.
|
|
368
|
+
|
|
369
|
+
Copy bare template from installed npm package, not repo clone:
|
|
370
|
+
|
|
371
|
+
```bash
|
|
372
|
+
cp "$(node -p \"require.resolve('@jaggerxtrm/specialists/package.json').replace(/package\\.json$/, '')\")config/specialists/bare.specialist.json" ".specialists/user/<your-name>.specialist.json"
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
Warning: bare mode bypasses `mandatory_rules` completely — template sets, inline rules, and global disables all skip runtime injection in bare runs.
|
|
376
|
+
|
|
361
377
|
### `specialist.prompt` (required)
|
|
362
378
|
|
|
363
379
|
| Field | Type | Required | Notes |
|
|
364
380
|
|-------|------|----------|-------|
|
|
365
381
|
| `task_template` | string | yes | Template string with `$variable` substitution |
|
|
366
382
|
| `system` | string | no | System prompt / agents.md content |
|
|
383
|
+
| `system_prompt_mode` | enum | no | `append` \| `replace` — see [System Prompt Mode](#system-prompt-mode) |
|
|
367
384
|
| `skill_inherit` | string | no | Single skill folder/file injected via `pi --skill` (Agent Forge compat) |
|
|
368
385
|
| `output_schema` | object | no | JSON schema for structured output — injected into system prompt by runner; post-run validation is warn-only |
|
|
369
386
|
| `examples` | array | no | Few-shot examples |
|
|
370
387
|
|
|
388
|
+
> **Replace mode warning:** `replace` removes pi's coding-agent base prompt. Teach every command, tool, convention, output format, and behavior explicitly in `prompt.system`; nothing implicit remains.
|
|
389
|
+
|
|
371
390
|
**Output contract precedence (runner-injected):** `response_format` → `output_type` → `output_schema`.
|
|
372
391
|
|
|
373
392
|
**`response_format` behavior**
|
|
@@ -397,6 +416,24 @@ Typical use cases:
|
|
|
397
416
|
|
|
398
417
|
**Mandatory markdown+schema rule:** if `response_format: markdown` and `output_schema` is present, the output must include `## Machine-readable block` containing exactly one JSON object in a single ` ```json ` fenced block. That JSON object is canonical and must match the schema.
|
|
399
418
|
|
|
419
|
+
### System Prompt Mode
|
|
420
|
+
|
|
421
|
+
`prompt.system_prompt_mode` controls whether `prompt.system` replaces or appends to pi's base prompt.
|
|
422
|
+
|
|
423
|
+
| Runner | Default when field absent | `append` sees | `replace` sees |
|
|
424
|
+
|--------|---------------------------|---------------|----------------|
|
|
425
|
+
| Package-class (`sp run` → `runner.ts` → `session.ts`) | `append` | pi coding-agent base prompt + specialist `agentsMd` | only specialist `agentsMd` |
|
|
426
|
+
| Script-class (`sp script` / `sp serve` → `script-runner.ts`) | `replace` | only specialist `prompt.system` | only specialist `prompt.system` |
|
|
427
|
+
|
|
428
|
+
| Combination | Agent sees |
|
|
429
|
+
|-------------|------------|
|
|
430
|
+
| Package × append | pi coding-agent base prompt + specialist `agentsMd` |
|
|
431
|
+
| Package × replace | only specialist `agentsMd` |
|
|
432
|
+
| Script × append | pi coding-agent base prompt + specialist `prompt.system` |
|
|
433
|
+
| Script × replace | only specialist `prompt.system` |
|
|
434
|
+
|
|
435
|
+
> **Replace mode warning:** use `replace` only when you intend to author full prompt surface yourself. No coding-agent defaults survive; teach commands, tools, conventions, output contract, and behavior explicitly. Best fit: non-coding transforms where base prompt adds noise.
|
|
436
|
+
|
|
400
437
|
Standard schemas by specialist type (shown as the `output_schema` object value):
|
|
401
438
|
|
|
402
439
|
executor — change manifest:
|
|
@@ -441,6 +478,48 @@ planner — epic result:
|
|
|
441
478
|
}
|
|
442
479
|
```
|
|
443
480
|
|
|
481
|
+
### `specialist.mandatory_rules` (optional)
|
|
482
|
+
|
|
483
|
+
| Field | Type | Default | Notes |
|
|
484
|
+
|-------|------|---------|-------|
|
|
485
|
+
| `template_sets` | string[] | `[]` | Adds rule-set ids from `config/mandatory-rules/index.json` and local overlays |
|
|
486
|
+
| `disable_default_globals` | boolean | `false` | Suppresses only inline `STATIC_WORKFLOW_RULES_BLOCK` (`Beads Workflow Quick Rules`) |
|
|
487
|
+
| `inline_rules` | `MandatoryRule[]` | `[]` | Inline rules appended without file lookup |
|
|
488
|
+
|
|
489
|
+
Runtime layering:
|
|
490
|
+
|
|
491
|
+
1. `config/mandatory-rules/index.json.required_template_sets` — always loaded
|
|
492
|
+
2. `config/mandatory-rules/index.json.default_template_sets` — also always loaded today; current quirk, not suppressed by `disable_default_globals`
|
|
493
|
+
3. `specialist.mandatory_rules.template_sets`
|
|
494
|
+
4. `specialist.mandatory_rules.inline_rules`
|
|
495
|
+
|
|
496
|
+
`disable_default_globals` only removes the inline `STATIC_WORKFLOW_RULES_BLOCK`. It does **not** suppress index-driven sets. True user-rules-only runs need both `disable_default_globals: true` and a user overlay index in `.specialists/user/mandatory-rules/index.json` that clears required/default sets.
|
|
497
|
+
|
|
498
|
+
Canonical set ids in `config/mandatory-rules/*.md`:
|
|
499
|
+
`bead-id-verbatim`, `changelog-conventions`, `changelog-keeper-scope`, `code-quality-defaults`, `core-session-boundary`, `diagnose-loop`, `executor-delivery`, `explorer-readonly`, `git-workflow-safe`, `gitnexus-required`, `overthinker-4phase`, `per-turn-handoff-schema`, `research-tool-routing`, `researcher-source-discipline`, `reviewer-verdict-format`, `security-review-defaults`, `serena-cheatsheet`, `sync-docs-scope-discipline`, `test-runner-execution-scope`.
|
|
500
|
+
|
|
501
|
+
Minimal user-rules-only spec:
|
|
502
|
+
|
|
503
|
+
```json
|
|
504
|
+
{
|
|
505
|
+
"specialist": {
|
|
506
|
+
"mandatory_rules": {
|
|
507
|
+
"disable_default_globals": true,
|
|
508
|
+
"inline_rules": [
|
|
509
|
+
{ "id": "user-rule-1", "level": "error", "text": "Use local policy only." },
|
|
510
|
+
{ "id": "user-rule-2", "level": "warn", "text": "Prefer repo overlay index.", "when": "overlay exists" }
|
|
511
|
+
]
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
```
|
|
516
|
+
|
|
517
|
+
Inline rule shape:
|
|
518
|
+
|
|
519
|
+
```json
|
|
520
|
+
{ "id": "rule-id", "level": "error", "text": "Rule text", "when": "optional condition" }
|
|
521
|
+
```
|
|
522
|
+
|
|
444
523
|
### `specialist.skills` (optional)
|
|
445
524
|
|
|
446
525
|
```json
|
|
@@ -794,3 +873,41 @@ specialists run my-specialist --prompt "ping" --no-beads
|
|
|
794
873
|
```
|
|
795
874
|
|
|
796
875
|
If you need the underlying implementation, read `config/skills/specialists-creator/scripts/validate-specialist.ts`. It is a thin Bun/TypeScript wrapper over `parseSpecialist()` from `src/specialist/schema.ts`, which keeps the helper cross-platform for Windows, macOS, and Linux.
|
|
876
|
+
|
|
877
|
+
---
|
|
878
|
+
|
|
879
|
+
## Script-Class vs Package-Class Runtime
|
|
880
|
+
|
|
881
|
+
Two runtime classes exist:
|
|
882
|
+
|
|
883
|
+
- **Package-class**: `sp run` → `runner.ts` → `session.ts`
|
|
884
|
+
- **Script-class**: `sp script` / `sp serve` → `script-runner.ts`
|
|
885
|
+
|
|
886
|
+
| Runner | Injected into system prompt |
|
|
887
|
+
|--------|----------------------------|
|
|
888
|
+
| Package-class | `prompt.system` + Specialist Run Context + caveman output style + GitNexus mandate (if `.gitnexus` exists) + `STATIC_WORKFLOW_RULES_BLOCK` + memory injection + mandatory rules + skills inheritance + output contract + reviewer patch retrieval (reviewer reuse only) |
|
|
889
|
+
| Script-class | `prompt.system` only |
|
|
890
|
+
|
|
891
|
+
Pi flags:
|
|
892
|
+
|
|
893
|
+
| Runner | Pi flags |
|
|
894
|
+
|--------|----------|
|
|
895
|
+
| Package-class | `--no-extensions`, then re-enable quality-gates/service-skills/caveman/gitnexus/serena |
|
|
896
|
+
| Script-class | `--no-extensions --no-tools --offline --no-context-files --no-prompt-templates --no-themes` and `--no-skills` when `skills.paths` is empty |
|
|
897
|
+
|
|
898
|
+
Settings that silently do nothing on script-class:
|
|
899
|
+
|
|
900
|
+
- `mandatory_rules` (all fields)
|
|
901
|
+
- beads injection
|
|
902
|
+
- GitNexus mandate
|
|
903
|
+
- memory injection
|
|
904
|
+
- output contract auto-generation
|
|
905
|
+
|
|
906
|
+
Per-runner default for `prompt.system_prompt_mode`:
|
|
907
|
+
|
|
908
|
+
- Package-class: `append`
|
|
909
|
+
- Script-class: `replace`
|
|
910
|
+
|
|
911
|
+
> **Script-class warning:** `mandatory_rules` never reaches script-class. If spec must rely on rule sets, it must run package-class.
|
|
912
|
+
|
|
913
|
+
---
|
|
@@ -292,7 +292,7 @@ Core commands:
|
|
|
292
292
|
- `bd create --parent <epic-id>`: epic-child edge; auto-names child `.1`, `.2`, … and adds parent ownership. Use for chain members that must live under an epic. [source: bd create --help]
|
|
293
293
|
- `bd create --deps discovered-from:<id>` or `bd dep add <new> <source> --type discovered-from`: follow-up work discovered from a source bead.
|
|
294
294
|
- `bd duplicate <new> --of <canonical>`: close duplicate issue and point at canonical. Use when two beads describe the same required work.
|
|
295
|
-
- `bd duplicates` / `bd find-duplicates --status open --method
|
|
295
|
+
- `bd duplicates` / `bd find-duplicates --status open --method mechanical --json`: cheap duplicate prefilter before dispatching parallel chains. For semantic clustering, use the `issue-triage` skill path (mechanical prefilter + bv graph signals + explorer/GitNexus overlap + overthinker recommendations), not `bd --method ai`.
|
|
296
296
|
- `bd supersede <old> --with <new>` or `bd dep add <new> <old> --type supersedes`: mark a replacement when a better-scoped fix bead replaces an obsolete/abandoned one.
|
|
297
297
|
- `bd dep cycles`, `bd dep tree <id>`, and `bd graph <id>`: sanity-check the execution graph before merge/publication.
|
|
298
298
|
|
|
@@ -345,10 +345,49 @@ Use each form for a different reason:
|
|
|
345
345
|
- `parent-child` / `--parent` for epic ownership and child naming.
|
|
346
346
|
- `supersedes` / `bd supersede` for replacement work; `duplicate` for same-work issues.
|
|
347
347
|
|
|
348
|
-
Cross-repo consistency: keep this vocabulary aligned with the xtrm-tools
|
|
348
|
+
Cross-repo consistency: keep this vocabulary aligned with the xtrm-tools `issue-triage` and `planning` skills; all three should use the same relationship names when creating or rewiring issue graphs.
|
|
349
349
|
|
|
350
350
|
What differs: orchestrator chooses edge type deliberately, so graph stays correct for chain execution, epic publish, duplicate cleanup, root-cause navigation, verification evidence, and follow-up traceability.
|
|
351
351
|
|
|
352
|
+
## Swarm Validation For Epic Readiness
|
|
353
|
+
|
|
354
|
+
Use `bd swarm` as graph-level readiness instrumentation for multi-chain epics. It does **not** replace specialists jobs, `sp epic status`, or `sp epic merge`; it validates and summarizes the bead DAG so you know whether the epic is shaped for parallel execution before spending specialist tokens.
|
|
355
|
+
|
|
356
|
+
Command surface:
|
|
357
|
+
|
|
358
|
+
```bash
|
|
359
|
+
bd swarm validate <epic-id> [--verbose] [--json]
|
|
360
|
+
bd swarm status <epic-or-swarm-id> [--json]
|
|
361
|
+
bd swarm list [--json]
|
|
362
|
+
bd swarm create <epic-id> [--coordinator=<addr>] [--force]
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
What each command is for:
|
|
366
|
+
|
|
367
|
+
| Command | Use it when | Output / decision |
|
|
368
|
+
| --- | --- | --- |
|
|
369
|
+
| `bd swarm validate <epic>` | Before launching a multi-chain epic, after graph rewrites, and before `sp epic merge` | Finds dependency-direction mistakes, orphan/disconnected children, cycles, ready fronts, estimated worker sessions, and max parallelism |
|
|
370
|
+
| `bd swarm status <epic-or-swarm>` | During orchestration | Shows computed completed / active / ready / blocked groups from live bead state |
|
|
371
|
+
| `bd swarm list` | Operator wants all active swarm molecules | Inventory of swarm molecules with epic/progress summary |
|
|
372
|
+
| `bd swarm create <epic>` | Operator explicitly wants a swarm molecule/coordinator handoff | Mutates board state; confirm first. If passed a task, bd may auto-wrap it in an epic. |
|
|
373
|
+
|
|
374
|
+
Where it fits in orchestration:
|
|
375
|
+
|
|
376
|
+
1. **After planning / before dispatch**: run `bd swarm validate <epic-id> --json` for epics with 3+ children or intended parallel execution. Treat warnings as graph-shaping feedback; fix relationship types or split/merge beads before launching specialists.
|
|
377
|
+
2. **During execution**: use `bd swarm status <epic-id> --json` alongside `sp ps`. `sp ps` tells you job/runtime state; swarm status tells you issue-graph state (ready vs blocked fronts).
|
|
378
|
+
3. **Before publication**: run `bd swarm validate <epic-id>` plus `bd dep cycles` and `sp epic status <epic-id>`. Do not `sp epic merge` if swarm validation reports cycles, disconnected graph, or suspicious dependency direction.
|
|
379
|
+
4. **Optional coordinator handoff**: run `bd swarm create <epic-id> --coordinator=<addr>` only after operator confirmation. Creating a swarm molecule is a tracked mutation, not a default read-only check.
|
|
380
|
+
|
|
381
|
+
Example gate before parallel dispatch:
|
|
382
|
+
|
|
383
|
+
```bash
|
|
384
|
+
bd dep cycles
|
|
385
|
+
bd swarm validate <epic-id> --json > .triage/swarm-<epic-id>.json
|
|
386
|
+
sp epic status <epic-id>
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
If validation says max parallelism is 1, do not pretend the epic is parallel; dispatch serially or fix the graph. If it reports multiple ready fronts, use that as the wave plan for specialist launches.
|
|
390
|
+
|
|
352
391
|
## Bead Contract By Bead Type
|
|
353
392
|
|
|
354
393
|
Use shape that fits specialist.
|
|
@@ -606,7 +645,7 @@ bd supersede <old-chain-a> --with <unified-chain>
|
|
|
606
645
|
bd supersede <old-chain-b> --with <unified-chain>
|
|
607
646
|
```
|
|
608
647
|
|
|
609
|
-
Default heuristic: if 3+ chains touch the same file, **serial-dispatch them**. Conflict-resolution time at integration usually exceeds the time saved by parallel dispatch.
|
|
648
|
+
Default heuristic: if 3+ chains touch the same file, **serial-dispatch them**. Conflict-resolution time at integration usually exceeds the time saved by parallel dispatch. Before launching a large wave, run mechanical duplicate prefiltering and semantic clustering through `issue-triage` (or its core path: `bd find-duplicates --method mechanical` + `bv --robot-triage/alerts` + explorer/GitNexus overlap + overthinker recommendations); merge or supersede duplicate work before specialists spend tokens on it.
|
|
610
649
|
|
|
611
650
|
## Pre-Epic: Test-Failure-Map Pattern
|
|
612
651
|
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"specialist": {
|
|
3
|
+
"metadata": {
|
|
4
|
+
"name": "bare",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"description": "TEMPLATE — do not dispatch. Copy from the installed @jaggerxtrm/specialists package to .specialists/user/<your-name>.specialist.json and customize for your own task. Fresh-canvas specialist template for non-coding transforms that need zero runtime prompt injection.",
|
|
7
|
+
"category": "template",
|
|
8
|
+
"tags": [
|
|
9
|
+
"template",
|
|
10
|
+
"bare-mode",
|
|
11
|
+
"copy-me"
|
|
12
|
+
]
|
|
13
|
+
},
|
|
14
|
+
"execution": {
|
|
15
|
+
"bare": true,
|
|
16
|
+
"mode": "tool",
|
|
17
|
+
"model": "openai/codex-5",
|
|
18
|
+
"fallback_model": "google-gemini-cli/gemini-3.1-pro-preview",
|
|
19
|
+
"timeout_ms": 120000,
|
|
20
|
+
"max_retries": 0,
|
|
21
|
+
"interactive": false,
|
|
22
|
+
"response_format": "markdown",
|
|
23
|
+
"output_type": "synthesis",
|
|
24
|
+
"permission_required": "READ_ONLY",
|
|
25
|
+
"extensions": {
|
|
26
|
+
"serena": false,
|
|
27
|
+
"gitnexus": false
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"prompt": {
|
|
31
|
+
"system": "You are a fresh-canvas specialist for one narrow transform. No hidden rules assumed.\n\nYour job: read the supplied input carefully, decide what transformation is needed, and produce only the requested result. Use no commands unless the task explicitly authorizes them. If commands are allowed, list each command before running it, explain why it is needed, and stop if the command output does not match the task.\n\nAvailable tools in this run are only those granted by the specialist configuration. Treat them as the complete tool list. If you need a tool that is not present, state the limitation and continue with a best-effort answer instead of inventing capabilities.\n\nOutput format: return a short heading, then the transformed result, then a brief note listing assumptions or blockers. If the task requires structured output, emit exactly that structure and nothing extra.\n\nTermination condition: finish once the requested transform is complete and self-consistent. Do not add policy reminders, runtime framing, or extra commentary. If the input is ambiguous, ask one precise clarification question and stop.",
|
|
32
|
+
"system_prompt_mode": "replace",
|
|
33
|
+
"task_template": "Transform the following input using the brief above. Preserve meaning, keep only requested content, and return the final answer in the format you chose.\n\n$prompt"
|
|
34
|
+
},
|
|
35
|
+
"skills": {
|
|
36
|
+
"paths": [],
|
|
37
|
+
"scripts": []
|
|
38
|
+
},
|
|
39
|
+
"capabilities": {
|
|
40
|
+
"required_tools": [],
|
|
41
|
+
"external_commands": []
|
|
42
|
+
},
|
|
43
|
+
"validation": {
|
|
44
|
+
"files_to_watch": [
|
|
45
|
+
"config/specialists/bare.specialist.json"
|
|
46
|
+
],
|
|
47
|
+
"stale_threshold_days": 30
|
|
48
|
+
},
|
|
49
|
+
"stall_detection": {},
|
|
50
|
+
"mandatory_rules": {
|
|
51
|
+
"template_sets": []
|
|
52
|
+
},
|
|
53
|
+
"beads_integration": "auto",
|
|
54
|
+
"beads_write_notes": true
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -26,14 +26,16 @@
|
|
|
26
26
|
"permission_required": "READ_ONLY",
|
|
27
27
|
"interactive": true,
|
|
28
28
|
"thinking_level": "low",
|
|
29
|
-
"max_retries": 0
|
|
29
|
+
"max_retries": 0,
|
|
30
|
+
"extensions": {
|
|
31
|
+
"serena": false
|
|
32
|
+
}
|
|
30
33
|
},
|
|
31
34
|
"mandatory_rules": {
|
|
32
35
|
"template_sets": [
|
|
33
36
|
"explorer-readonly",
|
|
34
37
|
"gitnexus-required",
|
|
35
38
|
"code-quality-defaults",
|
|
36
|
-
"serena-cheatsheet",
|
|
37
39
|
"per-turn-handoff-schema",
|
|
38
40
|
"bead-id-verbatim"
|
|
39
41
|
]
|
|
@@ -23,13 +23,15 @@
|
|
|
23
23
|
"output_type": "analysis",
|
|
24
24
|
"permission_required": "READ_ONLY",
|
|
25
25
|
"max_retries": 0,
|
|
26
|
-
"interactive": true
|
|
26
|
+
"interactive": true,
|
|
27
|
+
"extensions": {
|
|
28
|
+
"serena": false
|
|
29
|
+
}
|
|
27
30
|
},
|
|
28
31
|
"mandatory_rules": {
|
|
29
32
|
"template_sets": [
|
|
30
33
|
"explorer-readonly",
|
|
31
34
|
"gitnexus-required",
|
|
32
|
-
"serena-cheatsheet",
|
|
33
35
|
"per-turn-handoff-schema",
|
|
34
36
|
"bead-id-verbatim"
|
|
35
37
|
]
|
|
@@ -24,13 +24,15 @@
|
|
|
24
24
|
"output_type": "synthesis",
|
|
25
25
|
"permission_required": "READ_ONLY",
|
|
26
26
|
"interactive": true,
|
|
27
|
-
"max_retries": 0
|
|
27
|
+
"max_retries": 0,
|
|
28
|
+
"extensions": {
|
|
29
|
+
"serena": false
|
|
30
|
+
}
|
|
28
31
|
},
|
|
29
32
|
"mandatory_rules": {
|
|
30
33
|
"template_sets": [
|
|
31
34
|
"overthinker-4phase",
|
|
32
35
|
"research-tool-routing",
|
|
33
|
-
"serena-cheatsheet",
|
|
34
36
|
"per-turn-handoff-schema",
|
|
35
37
|
"bead-id-verbatim"
|
|
36
38
|
]
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
"specialist": {
|
|
3
3
|
"metadata": {
|
|
4
4
|
"name": "specialists-creator",
|
|
5
|
-
"version": "1.
|
|
5
|
+
"version": "1.4.0",
|
|
6
6
|
"description": "Specialist-definition author. Use for creating or fixing .specialist.json files, choosing valid models, schema fields, permissions, rules, and config validation. HIGH; not for ordinary app code.",
|
|
7
7
|
"category": "authoring",
|
|
8
|
-
"updated": "2026-05-
|
|
8
|
+
"updated": "2026-05-23",
|
|
9
9
|
"tags": [
|
|
10
10
|
"authoring",
|
|
11
11
|
"json",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"interactive": false
|
|
28
28
|
},
|
|
29
29
|
"prompt": {
|
|
30
|
-
"system": "You are a specialist authoring assistant. Your job is to help agents and developers\nwrite valid .specialist.json files that pass schema validation on the first attempt.\n\nYou have deep knowledge of the SpecialistSchema (Zod) and the runtime behavior of\nSpecialistRunner. You know every required field, every valid enum value, and every\ncommon pitfall.\n\nMANDATORY — model selection protocol (enforced every run):\nThe available models are injected into $pre_script_output by the pre-script.\nYou MUST:\n 1. Read $pre_script_output to see the real available models.\n 2. Select a primary and fallback from DIFFERENT providers.\n 3. Ping both before writing any JSON:\n pi --model <primary> --print \"ping\" # must return \"pong\"\n pi --model <fallback> --print \"ping\" # must return \"pong\"\n 4. If a ping fails, pick the next best in that tier and ping again.\n 5. Only write the JSON after both return \"pong\".\n\nNever hardcode a model string from memory. Never skip pinging.\n\nABSOLUTE RULES — violation terminates the task:\n - DO NOT delete, move, or rename any existing file or directory.\n - DO NOT modify any file that was not explicitly requested by the user.\n - You may only CREATE new files and WRITE to files you have been asked to create.\n\nCONTEXT WINDOW AWARENESS — apply to every specialist you create:\n - Context rot degrades quality before the hard limit is hit. Design for bounded runs.\n - Always set stall_timeout_ms for interactive/keep-alive specialists.\n - Use thinking_level: low for orchestration specialists that emit structured JSON.\n - If the specialist is multi-turn or a Node member: add handoff_summary to output_schema.\n - Never inject large static context blobs in task_template that could be fetched on demand.\n - context_pct = cumulative_input_tokens / model_context_window * 100\n Windows: anthropic claude-* = 200k, gemini-3.1-pro = 1M, qwen3.5/glm-5 = 128k\n\nWhen asked to create a specialist, you:\n1. Run the model selection protocol above (steps 1-5).\n2. Run scaffold-specialist.ts first to materialize all schema fields.\n3. Use `sp edit <name> <dot.path> <value>` as the primary mutation tool.\n4. Use `sp edit <name> --preset <preset>` for common model/thinking baselines.\n5. Use raw file-based writes (`--file`) only for multiline `specialist.prompt.system` and `specialist.prompt.task_template`.\n6. When extension surface matters, set `specialist.execution.extensions.serena` and/or `specialist.execution.extensions.gitnexus` to `false` instead of inventing ad-hoc flags.\n7. After setting `permission_required`, run `sp config show <name> --resolved` and inspect the `--tools` line. The catalog tier defaults are correct for nearly every specialist — do NOT add a `specialist.permissions[<TIER>]` override block unless the policy genuinely diverges. Today only explorer declares one (hard-deny on native grep/find/ls). See docs/manifest.md for full semantics.\n8. When user wants canonical mandatory rules or canonical skills, reference them by name (for example mandatory_rules.template_sets=[\"serena-cheatsheet\"] or skills.paths=[\"releasing\"]) — runtime resolves package-canonical assets when no project-local override exists.\n9. Write specialist.metadata.description as a routing summary for `specialists list`: choose-when, do-not-choose-when, distinctive capability, and permission/workflow note.\n10. Run `sp view <name>`, `specialists list`, and schema validation to confirm final output and list readability.\n11. Highlight any fields the user should customize.\n\nWhen asked to fix a specialist, you:\n1. Identify the exact Zod error and map it to the fix table in the skill.\n2. Apply focused fixes via `sp edit` (or `--file` for prompt.system/task_template only).\n3. Explain why the original was invalid.\n",
|
|
30
|
+
"system": "You are a specialist authoring assistant. Your job is to help agents and developers\nwrite valid .specialist.json files that pass schema validation on the first attempt.\n\nYou have deep knowledge of the SpecialistSchema (Zod) and the runtime behavior of\nSpecialistRunner. You know every required field, every valid enum value, and every\ncommon pitfall.\n\nMANDATORY — model selection protocol (enforced every run):\nThe available models are injected into $pre_script_output by the pre-script.\nYou MUST:\n 1. Read $pre_script_output to see the real available models.\n 2. Select a primary and fallback from DIFFERENT providers.\n 3. Ping both before writing any JSON:\n pi --model <primary> --print \"ping\" # must return \"pong\"\n pi --model <fallback> --print \"ping\" # must return \"pong\"\n 4. If a ping fails, pick the next best in that tier and ping again.\n 5. Only write the JSON after both return \"pong\".\n\nNever hardcode a model string from memory. Never skip pinging.\n\nABSOLUTE RULES — violation terminates the task:\n - DO NOT delete, move, or rename any existing file or directory.\n - DO NOT modify any file that was not explicitly requested by the user.\n - You may only CREATE new files and WRITE to files you have been asked to create.\n\nCONTEXT WINDOW AWARENESS — apply to every specialist you create:\n - Context rot degrades quality before the hard limit is hit. Design for bounded runs.\n - Always set stall_timeout_ms for interactive/keep-alive specialists.\n - Use thinking_level: low for orchestration specialists that emit structured JSON.\n - If the specialist is multi-turn or a Node member: add handoff_summary to output_schema.\n - Never inject large static context blobs in task_template that could be fetched on demand.\n - context_pct = cumulative_input_tokens / model_context_window * 100\n Windows: anthropic claude-* = 200k, gemini-3.1-pro = 1M, qwen3.5/glm-5 = 128k\n\nWhen asked to create a specialist, you:\n1. Run the model selection protocol above (steps 1-5).\n2. Run scaffold-specialist.ts first to materialize all schema fields.\n3. Use `sp edit <name> <dot.path> <value>` as the primary mutation tool.\n4. Use `sp edit <name> --preset <preset>` for common model/thinking baselines.\n5. Use raw file-based writes (`--file`) only for multiline `specialist.prompt.system` and `specialist.prompt.task_template`.\n6. When extension surface matters, set `specialist.execution.extensions.serena` and/or `specialist.execution.extensions.gitnexus` to `false` instead of inventing ad-hoc flags.\n7. After setting `permission_required`, run `sp config show <name> --resolved` and inspect the `--tools` line. The catalog tier defaults are correct for nearly every specialist — do NOT add a `specialist.permissions[<TIER>]` override block unless the policy genuinely diverges. Today only explorer declares one (hard-deny on native grep/find/ls). See docs/manifest.md for full semantics.\n8. When user wants canonical mandatory rules or canonical skills, reference them by name (for example mandatory_rules.template_sets=[\"serena-cheatsheet\"] or skills.paths=[\"releasing\"]) — runtime resolves package-canonical assets when no project-local override exists.\n9. Write specialist.metadata.description as a routing summary for `specialists list`: choose-when, do-not-choose-when, distinctive capability, and permission/workflow note.\n10. Run `sp view <name>`, `specialists list`, and schema validation to confirm final output and list readability.\n11. Highlight any fields the user should customize.\n\nWhen asked to create a specialist, also decide whether `prompt.system_prompt_mode` should stay `append` or switch to `replace`. Use `replace` only when the specialist must own every command, tool, and output convention explicitly; once replaced, nothing implicit remains.\n\nSet `execution.bare: true` for fresh-canvas non-coding specialists like research, summarization, extraction, document analysis, or translation. Bare mode skips mandatory_rules entirely, so use inline rules in `prompt.system` when you still need constraints.\n\nIf you do use `mandatory_rules`, keep the opt-in pattern explicit: `template_sets`, `disable_default_globals`, and `inline_rules` are separate controls. `disable_default_globals` only removes the inline `STATIC_WORKFLOW_RULES_BLOCK`; it does not disable index-driven template sets.\n\nFor bare specs, use `config/specialists/bare.specialist.json` as the copy-and-edit starter template.\n\nWhen asked to fix a specialist, you:\n1. Identify the exact Zod error and map it to the fix table in the skill.\n2. Apply focused fixes via `sp edit` (or `--file` for prompt.system/task_template only).\n3. Explain why the original was invalid.\n",
|
|
31
31
|
"task_template": "$prompt\n\nWorking directory: $cwd\n\nAvailable models (from pi --list-models — use this, do not guess):\n$pre_script_output\n\nInstructions:\n 1. Read the model list above. Select primary + fallback from different providers.\n 2. Ping both: pi --model <primary> --print \"ping\" and pi --model <fallback> --print \"ping\"\n 3. Only proceed after both return \"pong\".\n 4. Run scaffold-specialist.ts first, then mutate fields with `sp edit` (dot.path + preset).\n 5. Use `--file` only for prompt.system and prompt.task_template.\n 6. If user asks to disable Serena or GitNexus for specialist, set `specialist.execution.extensions.serena false` and/or `specialist.execution.extensions.gitnexus false`.\n 7. After tier is set, run `sp config show <name> --resolved` and verify the `--tools` line matches expectations. Only add a top-level `specialist.permissions[<TIER>]` override (sibling to `execution`) if policy genuinely diverges from the catalog tier default — see docs/manifest.md.\n 7a. For canonical shared guidance, reference package assets by name instead of copying files: `mandatory_rules.template_sets` for rules and `skills.paths` for canonical skills.\n 8. Write metadata.description for `specialists list` routing: choose-when, do-not-choose-when, distinctive capability, permission/workflow note.\n 9. Run `sp view <name>`, `specialists list`, and schema validation before outputting the final result.\n"
|
|
32
32
|
},
|
|
33
33
|
"skills": {
|
|
@@ -55,10 +55,12 @@
|
|
|
55
55
|
},
|
|
56
56
|
"validation": {
|
|
57
57
|
"files_to_watch": [
|
|
58
|
-
"
|
|
59
|
-
"
|
|
58
|
+
".xtrm/skills/default/specialists-creator/SKILL.md",
|
|
59
|
+
"config/specialists/bare.specialist.json",
|
|
60
|
+
"src/specialist/mandatory-rules.ts",
|
|
60
61
|
"src/specialist/manifest-resolver.ts",
|
|
61
|
-
"
|
|
62
|
+
"src/specialist/runner.ts",
|
|
63
|
+
"src/specialist/schema.ts"
|
|
62
64
|
],
|
|
63
65
|
"stale_threshold_days": 30
|
|
64
66
|
},
|
package/dist/asset-contract.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema_version": "1.0.0",
|
|
3
|
-
"package_version": "3.
|
|
3
|
+
"package_version": "3.16.0",
|
|
4
4
|
"shipped_skills": [
|
|
5
5
|
{
|
|
6
6
|
"path": "config/skills/memory-audit-transaction/SKILL.md",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
},
|
|
13
13
|
{
|
|
14
14
|
"path": "config/skills/specialists-creator/SKILL.md",
|
|
15
|
-
"sha256": "
|
|
15
|
+
"sha256": "f8951e41b20d03a1a5cb71cd79fc7a17f525aba7005cce893d2a4524fc5a169e"
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
18
|
"path": "config/skills/update-specialists/SKILL.md",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
},
|
|
41
41
|
{
|
|
42
42
|
"path": "config/skills/using-specialists-v3/SKILL.md",
|
|
43
|
-
"sha256": "
|
|
43
|
+
"sha256": "034692ee7ce97984a587a9ac4a612c3b71e37e03fea6a4d23bf37e388ace6cca"
|
|
44
44
|
},
|
|
45
45
|
{
|
|
46
46
|
"path": "config/skills/using-specialists/SKILL.md",
|
|
@@ -48,6 +48,9 @@
|
|
|
48
48
|
}
|
|
49
49
|
],
|
|
50
50
|
"shipped_specialists": [
|
|
51
|
+
{
|
|
52
|
+
"path": "config/specialists/bare.specialist.json"
|
|
53
|
+
},
|
|
51
54
|
{
|
|
52
55
|
"path": "config/specialists/changelog-drafter.specialist.json"
|
|
53
56
|
},
|