@openrig/cli 0.1.8 → 0.1.9

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 (39) hide show
  1. package/daemon/dist/adapters/claude-code-adapter.d.ts +1 -0
  2. package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
  3. package/daemon/dist/adapters/claude-code-adapter.js +10 -0
  4. package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
  5. package/daemon/dist/adapters/cmux.d.ts.map +1 -1
  6. package/daemon/dist/adapters/cmux.js +1 -0
  7. package/daemon/dist/adapters/cmux.js.map +1 -1
  8. package/daemon/dist/domain/native-resume-probe.d.ts.map +1 -1
  9. package/daemon/dist/domain/native-resume-probe.js +11 -0
  10. package/daemon/dist/domain/native-resume-probe.js.map +1 -1
  11. package/daemon/dist/startup.d.ts.map +1 -1
  12. package/daemon/dist/startup.js +14 -0
  13. package/daemon/dist/startup.js.map +1 -1
  14. package/daemon/docs/reference/agent-spec.md +411 -0
  15. package/daemon/docs/reference/agent-startup-guide.md +339 -0
  16. package/daemon/docs/reference/edge-types.md +126 -0
  17. package/daemon/docs/reference/rig-spec.md +474 -0
  18. package/daemon/specs/agents/shared/agent.yaml +2 -0
  19. package/daemon/specs/agents/shared/skills/rig-architect/SKILL.md +332 -0
  20. package/dist/commands/docs.d.ts +3 -0
  21. package/dist/commands/docs.d.ts.map +1 -0
  22. package/dist/commands/docs.js +55 -0
  23. package/dist/commands/docs.js.map +1 -0
  24. package/dist/commands/doctor.d.ts +6 -1
  25. package/dist/commands/doctor.d.ts.map +1 -1
  26. package/dist/commands/doctor.js +53 -10
  27. package/dist/commands/doctor.js.map +1 -1
  28. package/dist/commands/setup.d.ts +39 -0
  29. package/dist/commands/setup.d.ts.map +1 -0
  30. package/dist/commands/setup.js +345 -0
  31. package/dist/commands/setup.js.map +1 -0
  32. package/dist/daemon-lifecycle.d.ts +7 -0
  33. package/dist/daemon-lifecycle.d.ts.map +1 -1
  34. package/dist/daemon-lifecycle.js +45 -8
  35. package/dist/daemon-lifecycle.js.map +1 -1
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +2 -0
  38. package/dist/index.js.map +1 -1
  39. package/package.json +1 -1
@@ -0,0 +1,474 @@
1
+ # RigSpec Reference
2
+
3
+ Version: 0.2 (pod-aware)
4
+ Last validated against code: 2026-04-11
5
+ Source of truth: `packages/daemon/src/domain/rigspec-schema.ts`, `packages/daemon/src/domain/types.ts`
6
+
7
+ This is the canonical reference for the pod-aware RigSpec YAML format. Every field, validation rule, and default documented here was traced from the actual parser and validator code, not from prior documentation.
8
+
9
+ ---
10
+
11
+ ## Minimal Valid Example
12
+
13
+ ```yaml
14
+ version: "0.2"
15
+ name: my-rig
16
+
17
+ pods:
18
+ - id: dev
19
+ label: Development
20
+ members:
21
+ - id: impl
22
+ agent_ref: "local:agents/impl"
23
+ profile: default
24
+ runtime: claude-code
25
+ cwd: "."
26
+ edges: []
27
+
28
+ edges: []
29
+ ```
30
+
31
+ ## Complete Example (all features)
32
+
33
+ ```yaml
34
+ version: "0.2"
35
+ name: my-product-team
36
+ summary: A full product squad with orchestration, development, and review pods.
37
+
38
+ culture_file: culture/CULTURE.md
39
+
40
+ startup:
41
+ files:
42
+ - path: guidance/team-norms.md
43
+ delivery_hint: guidance_merge
44
+ required: true
45
+ actions: []
46
+
47
+ services:
48
+ kind: compose
49
+ compose_file: docker-compose.yaml
50
+ project_name: my-product
51
+ profiles: [core]
52
+ down_policy: down
53
+ wait_for:
54
+ - url: http://127.0.0.1:5432/health
55
+ - service: redis
56
+ condition: healthy
57
+ surfaces:
58
+ urls:
59
+ - name: App
60
+ url: http://127.0.0.1:3000
61
+ commands:
62
+ - name: psql
63
+ command: "psql postgresql://app:dev@127.0.0.1:5432/app"
64
+ checkpoints:
65
+ - id: postgres
66
+ export: "docker compose exec -T postgres pg_dump -U app > {{artifacts_dir}}/postgres.sql"
67
+ import: "cat {{artifacts_dir}}/postgres.sql | docker compose exec -T postgres psql -U app"
68
+
69
+ pods:
70
+ - id: orch
71
+ label: Orchestration
72
+ members:
73
+ - id: lead
74
+ agent_ref: "local:agents/orchestrator"
75
+ profile: default
76
+ runtime: claude-code
77
+ cwd: "."
78
+ - id: peer
79
+ agent_ref: "local:agents/orchestrator"
80
+ profile: default
81
+ runtime: codex
82
+ cwd: "."
83
+ edges: []
84
+
85
+ - id: dev
86
+ label: Development
87
+ summary: Implementation and quality assurance pair.
88
+ continuity_policy:
89
+ enabled: true
90
+ sync_triggers: [pre_compaction, pre_shutdown]
91
+ artifacts:
92
+ session_log: true
93
+ restore_brief: true
94
+ restore_protocol:
95
+ peer_driven: true
96
+ verify_via_quiz: false
97
+ startup:
98
+ files:
99
+ - path: guidance/dev-sop.md
100
+ delivery_hint: guidance_merge
101
+ required: true
102
+ actions: []
103
+ members:
104
+ - id: impl
105
+ agent_ref: "local:agents/impl"
106
+ profile: default
107
+ runtime: claude-code
108
+ cwd: "."
109
+ label: "Implementation Lead"
110
+ model: claude-opus-4-6
111
+ restore_policy: resume_if_possible
112
+ startup:
113
+ files:
114
+ - path: guidance/impl-specific.md
115
+ delivery_hint: send_text
116
+ required: false
117
+ applies_on: [fresh_start]
118
+ actions:
119
+ - type: send_text
120
+ value: "Load the implementation-pair skill and begin."
121
+ phase: after_ready
122
+ idempotent: true
123
+ - id: qa
124
+ agent_ref: "local:agents/qa"
125
+ profile: default
126
+ runtime: codex
127
+ cwd: "."
128
+ edges:
129
+ - kind: delegates_to
130
+ from: impl
131
+ to: qa
132
+
133
+ - id: rev
134
+ label: Review
135
+ members:
136
+ - id: r1
137
+ agent_ref: "local:agents/reviewer"
138
+ profile: default
139
+ runtime: claude-code
140
+ cwd: "."
141
+ - id: r2
142
+ agent_ref: "local:agents/reviewer"
143
+ profile: default
144
+ runtime: codex
145
+ cwd: "."
146
+ edges: []
147
+
148
+ edges:
149
+ - kind: delegates_to
150
+ from: orch.lead
151
+ to: dev.impl
152
+ - kind: delegates_to
153
+ from: orch.peer
154
+ to: dev.qa
155
+ - kind: can_observe
156
+ from: rev.r1
157
+ to: dev.impl
158
+ - kind: can_observe
159
+ from: rev.r2
160
+ to: dev.qa
161
+ ```
162
+
163
+ ---
164
+
165
+ ## Top-Level Fields
166
+
167
+ | Field | Type | Required | Default | Description |
168
+ |-------|------|----------|---------|-------------|
169
+ | `version` | string | yes | — | Must be `"0.2"` for pod-aware specs. |
170
+ | `name` | string | yes | — | Rig name. Used in session naming (`{pod}-{member}@{name}`), snapshot identification, and spec library lookup. |
171
+ | `summary` | string | no | — | Human-readable description. Shown in spec library, review surfaces, and `rig specs show`. |
172
+ | `culture_file` | string | no | — | Relative path to a rig-wide culture/constitution file. Must be a safe relative path (no `..`, no absolute). |
173
+ | `startup` | StartupBlock | no | — | Rig-level startup files and actions. Applied to all members via the startup layering model. |
174
+ | `services` | ServicesBlock | no | — | Optional managed services (Docker Compose). When present, services boot before any agent launches. |
175
+ | `pods` | Pod[] | yes | — | At least one pod required. Each pod is a bounded context containing members and pod-local edges. |
176
+ | `edges` | CrossPodEdge[] | no | `[]` | Cross-pod edges connecting members in different pods. Must use fully-qualified `pod.member` IDs. |
177
+
178
+ ---
179
+
180
+ ## Pod
181
+
182
+ | Field | Type | Required | Default | Description |
183
+ |-------|------|----------|---------|-------------|
184
+ | `id` | string | yes | — | Pod identifier. Must not contain dots. Must be unique within the rig. Used as the first segment of session names and logical IDs. |
185
+ | `label` | string | yes | — | Human-readable pod name. Shown in UI explorer, graph groupings, and detail surfaces. |
186
+ | `summary` | string | no | — | Pod description. |
187
+ | `continuity_policy` | ContinuityPolicy | no | — | Pod-level continuity/restore policy. Controls compaction recovery, artifact management, and peer-driven restoration. |
188
+ | `startup` | StartupBlock | no | — | Pod-level startup files and actions. Applied to all members in this pod via the startup layering model. |
189
+ | `members` | Member[] | yes | — | At least one member required (enforced by pods needing content). |
190
+ | `edges` | PodLocalEdge[] | no | `[]` | Edges between members within this pod. Must use unqualified member IDs (not `pod.member`). |
191
+
192
+ ### Pod ID Rules
193
+
194
+ - Must not contain dots (`.`)
195
+ - Must be unique across all pods in the rig
196
+ - Becomes the first segment of the qualified logical ID: `{podId}.{memberId}`
197
+ - Becomes the first segment of the canonical session name: `{podId}-{memberId}@{rigName}`
198
+
199
+ ---
200
+
201
+ ## Member
202
+
203
+ | Field | Type | Required | Default | Description |
204
+ |-------|------|----------|---------|-------------|
205
+ | `id` | string | yes | — | Member identifier. Must not contain dots. Must be unique within the pod. |
206
+ | `agent_ref` | string | yes | — | Reference to an AgentSpec. Must start with `local:` (relative) or `path:` (absolute). Exception: `builtin:terminal` for infrastructure nodes. |
207
+ | `profile` | string | yes | — | Profile name from the referenced AgentSpec. Use `default` for the default profile. Exception: `none` for terminal nodes. |
208
+ | `runtime` | string | yes | — | Agent runtime. Current supported values: `claude-code`, `codex`, `terminal`. |
209
+ | `cwd` | string | yes | — | Working directory for the agent. Resolved relative to the rig root (the directory containing the rig spec). Use `"."` for the rig root itself. Can be overridden at launch time with `rig up --cwd`. |
210
+ | `label` | string | no | — | Human-readable member name. Shown in UI when present. |
211
+ | `model` | string | no | — | Model override. Runtime-specific (e.g., `claude-opus-4-6` for Claude Code). |
212
+ | `restore_policy` | string | no | `resume_if_possible` | Restore behavior. One of: `resume_if_possible`, `relaunch_fresh`, `checkpoint_only`. |
213
+ | `startup` | StartupBlock | no | — | Member-level startup files and actions. Applied only to this member. |
214
+
215
+ ### Terminal Nodes
216
+
217
+ Terminal nodes are infrastructure processes (servers, log tails, build watchers) that are not agent runtimes. They require an exact triple:
218
+
219
+ ```yaml
220
+ runtime: terminal
221
+ agent_ref: "builtin:terminal"
222
+ profile: none
223
+ ```
224
+
225
+ All three must be present together. Any partial combination is a validation error.
226
+
227
+ ### agent_ref Rules
228
+
229
+ - Must start with `local:` or `path:`
230
+ - `local:` paths are relative to the rig spec file's directory (the rig root)
231
+ - `path:` paths are absolute filesystem paths
232
+ - The referenced path must contain an `agent.yaml` file
233
+ - Exception: `builtin:terminal` for terminal nodes
234
+
235
+ ### Session Naming
236
+
237
+ The canonical session name is derived from the pod ID, member ID, and rig name:
238
+
239
+ ```
240
+ {podId}-{memberId}@{rigName}
241
+ ```
242
+
243
+ Example: pod `dev`, member `impl`, rig `my-team` → session `dev-impl@my-team`
244
+
245
+ This is human-authored (you choose the pod/member IDs) and system-validated (the system enforces the format).
246
+
247
+ ---
248
+
249
+ ## Edges
250
+
251
+ ### Edge Kinds
252
+
253
+ | Kind | Meaning | Use When |
254
+ |------|---------|----------|
255
+ | `delegates_to` | Source delegates work to target. Constrains launch order. | Orchestrator → implementer, lead → worker |
256
+ | `spawned_by` | Target was spawned by source. Constrains launch order. | Parent → child in hierarchical topologies |
257
+ | `can_observe` | Source can observe target's output. Does NOT constrain launch order. | Reviewer → implementer, monitor → worker |
258
+ | `collaborates_with` | Peer collaboration relationship. Does NOT constrain launch order. | Co-equal peers working together |
259
+ | `escalates_to` | Source escalates to target for decisions. Does NOT constrain launch order. | Worker → lead for escalation |
260
+
261
+ ### Pod-Local Edges
262
+
263
+ Edges within a pod use **unqualified member IDs** (just the member `id`, not `pod.member`):
264
+
265
+ ```yaml
266
+ pods:
267
+ - id: dev
268
+ members:
269
+ - id: impl
270
+ # ...
271
+ - id: qa
272
+ # ...
273
+ edges:
274
+ - kind: delegates_to
275
+ from: impl # NOT dev.impl
276
+ to: qa # NOT dev.qa
277
+ ```
278
+
279
+ Both `from` and `to` must reference members that exist in the same pod.
280
+
281
+ ### Cross-Pod Edges
282
+
283
+ Edges between pods use **fully-qualified `pod.member` IDs**:
284
+
285
+ ```yaml
286
+ edges:
287
+ - kind: delegates_to
288
+ from: orch.lead # pod.member format
289
+ to: dev.impl # pod.member format
290
+ ```
291
+
292
+ Cross-pod edges must reference different pods. An edge where both `from` and `to` are in the same pod is a validation error — use pod-local edges instead.
293
+
294
+ ---
295
+
296
+ ## Startup Block
297
+
298
+ Startup blocks can appear at three levels: rig, pod, and member. They are merged additively via the startup layering model (see `docs/reference/startup-layering.md`).
299
+
300
+ ### Files
301
+
302
+ | Field | Type | Required | Default | Description |
303
+ |-------|------|----------|---------|-------------|
304
+ | `path` | string | yes | — | Relative path to the file. Must be a safe relative path. |
305
+ | `delivery_hint` | string | no | `auto` | How the file is delivered. One of: `auto`, `guidance_merge`, `skill_install`, `send_text`. |
306
+ | `required` | boolean | no | `true` | Whether startup fails if this file cannot be delivered. |
307
+ | `applies_on` | string[] | no | `[fresh_start, restore]` | When this file is delivered. Subset of: `fresh_start`, `restore`. |
308
+
309
+ #### Delivery Hints
310
+
311
+ | Hint | Behavior |
312
+ |------|----------|
313
+ | `auto` | System chooses based on file type and context. |
314
+ | `guidance_merge` | Merged into the runtime's guidance file (`CLAUDE.md` or `AGENTS.md`) as a managed block. Delivered before harness boot. |
315
+ | `skill_install` | Installed as a skill in the runtime's skill directory. Delivered before harness boot. |
316
+ | `send_text` | Sent as text to the agent's terminal after the harness is ready. Requires the agent TUI to be active. |
317
+
318
+ ### Actions
319
+
320
+ | Field | Type | Required | Default | Description |
321
+ |-------|------|----------|---------|-------------|
322
+ | `type` | string | yes | — | Action type. One of: `slash_command`, `send_text`. Note: `shell` is explicitly NOT supported in v1. |
323
+ | `value` | string | yes | — | The command or text to send. |
324
+ | `phase` | string | no | `after_files` | When to execute. One of: `after_files` (after startup files are delivered), `after_ready` (after harness readiness check passes). |
325
+ | `idempotent` | boolean | yes | — | Whether this action is safe to replay on restore. **Required field.** Non-idempotent actions must NOT include `restore` in `applies_on`. |
326
+ | `applies_on` | string[] | no | `[fresh_start, restore]` | When this action runs. Subset of: `fresh_start`, `restore`. |
327
+
328
+ ---
329
+
330
+ ## Services Block
331
+
332
+ The services block is optional. When present, services boot before any agent node launches. If service health checks fail, agent launch is blocked.
333
+
334
+ | Field | Type | Required | Default | Description |
335
+ |-------|------|----------|---------|-------------|
336
+ | `kind` | string | yes | — | Service backend. Only `compose` is supported in v1. |
337
+ | `compose_file` | string | yes | — | Relative path to the Docker Compose file. Must be a safe relative path. Resolved relative to rig root. |
338
+ | `project_name` | string | no | derived from rig name | Docker Compose project name. Must match `[a-z0-9][a-z0-9_-]*`. If omitted, derived by sanitizing the rig name. |
339
+ | `profiles` | string[] | no | — | Compose profiles to activate. |
340
+ | `down_policy` | string | no | `down` | What happens on `rig down`. One of: `leave_running`, `down`, `down_and_volumes`. |
341
+ | `wait_for` | WaitTarget[] | no | — | Health targets that must pass before agent launch. |
342
+ | `surfaces` | Surfaces | no | — | Metadata about accessible URLs and commands. Not executed — informational only. |
343
+ | `checkpoints` | CheckpointHook[] | no | — | Shell commands for checkpoint export/import during snapshot/restore. |
344
+
345
+ ### Wait Targets
346
+
347
+ Each target must define exactly one of `service`, `url`, or `tcp`:
348
+
349
+ ```yaml
350
+ wait_for:
351
+ # HTTP probe — hits the URL, expects 2xx
352
+ - url: http://127.0.0.1:8200/v1/sys/health
353
+
354
+ # TCP probe — connects to host:port
355
+ - tcp: "127.0.0.1:5432"
356
+
357
+ # Compose health check — requires Docker health to report "healthy"
358
+ - service: postgres
359
+ condition: healthy
360
+ ```
361
+
362
+ | Field | Type | Required | Description |
363
+ |-------|------|----------|-------------|
364
+ | `url` | string | one of three | HTTP URL to probe. |
365
+ | `tcp` | string | one of three | `host:port` for TCP probe. |
366
+ | `service` | string | one of three | Compose service name. Requires `condition: healthy`. |
367
+ | `condition` | string | only with `service` | Must be `healthy`. Only valid with `service` targets. |
368
+
369
+ ### Surfaces
370
+
371
+ ```yaml
372
+ surfaces:
373
+ urls:
374
+ - name: Vault UI
375
+ url: http://127.0.0.1:8200/ui
376
+ commands:
377
+ - name: Vault status
378
+ command: "vault status -address=http://127.0.0.1:8200"
379
+ ```
380
+
381
+ Surfaces are metadata only. They are displayed in the UI and in `rig env status` output but are NOT executed by OpenRig.
382
+
383
+ ### Checkpoint Hooks
384
+
385
+ ```yaml
386
+ checkpoints:
387
+ - id: postgres
388
+ export: "docker compose exec -T postgres pg_dump -U app > {{artifacts_dir}}/postgres.sql"
389
+ import: "cat {{artifacts_dir}}/postgres.sql | docker compose exec -T postgres psql -U app"
390
+ ```
391
+
392
+ | Field | Type | Required | Description |
393
+ |-------|------|----------|-------------|
394
+ | `id` | string | yes | Unique identifier for this checkpoint. |
395
+ | `export` | string | yes | Shell command to export state. `{{artifacts_dir}}` is replaced with a daemon-managed path. |
396
+ | `import` | string | no | Shell command to import state on restore. |
397
+
398
+ Checkpoint hooks are shell commands run by the daemon. They are best-effort — a failed export does not block snapshot, but continuity is classified as `receipt_only` instead of `checkpointed`.
399
+
400
+ ---
401
+
402
+ ## Continuity Policy
403
+
404
+ Optional pod-level configuration for compaction recovery behavior.
405
+
406
+ ```yaml
407
+ continuity_policy:
408
+ enabled: true
409
+ sync_triggers: [pre_compaction, pre_shutdown, manual, milestone]
410
+ artifacts:
411
+ session_log: true
412
+ restore_brief: true
413
+ quiz: false
414
+ restore_protocol:
415
+ peer_driven: true
416
+ verify_via_quiz: false
417
+ ```
418
+
419
+ | Field | Type | Required | Default | Description |
420
+ |-------|------|----------|---------|-------------|
421
+ | `enabled` | boolean | yes | — | Whether continuity is active for this pod. |
422
+ | `sync_triggers` | string[] | no | — | When to sync. Values: `pre_compaction`, `pre_shutdown`, `manual`, `milestone`. |
423
+ | `artifacts.session_log` | boolean | no | — | Whether to maintain a session log. |
424
+ | `artifacts.restore_brief` | boolean | no | — | Whether to maintain a restore brief. |
425
+ | `artifacts.quiz` | boolean | no | — | Whether to use quiz-based verification. |
426
+ | `restore_protocol.peer_driven` | boolean | no | — | Whether peers drive the restore process. |
427
+ | `restore_protocol.verify_via_quiz` | boolean | no | — | Whether to verify restoration via quiz. |
428
+
429
+ ---
430
+
431
+ ## Validation Rules Summary
432
+
433
+ These rules are enforced by the validator. A spec that violates any of these will be rejected by `rig spec validate` and `rig up`.
434
+
435
+ 1. `version` and `name` are required non-empty strings.
436
+ 2. `pods` must be a non-empty array.
437
+ 3. Pod IDs must not contain dots and must be unique.
438
+ 4. Pod labels are required.
439
+ 5. Member IDs must not contain dots and must be unique within their pod.
440
+ 6. `agent_ref`, `profile`, `runtime`, and `cwd` are required for every member.
441
+ 7. Terminal nodes require the exact triple: `runtime: terminal`, `agent_ref: builtin:terminal`, `profile: none`.
442
+ 8. `agent_ref` must start with `local:` (relative) or `path:` (absolute), except `builtin:terminal`.
443
+ 9. `local:` refs must be relative paths. `path:` refs must be absolute paths.
444
+ 10. `restore_policy` must be one of: `resume_if_possible`, `relaunch_fresh`, `checkpoint_only`.
445
+ 11. Pod-local edges use unqualified member IDs. Cross-pod edges use `pod.member` format.
446
+ 12. Cross-pod edges must reference different pods.
447
+ 13. Edge kinds must be one of: `delegates_to`, `spawned_by`, `can_observe`, `collaborates_with`, `escalates_to`.
448
+ 14. All file paths (`culture_file`, startup file paths, `compose_file`) must be safe relative paths.
449
+ 15. `services.kind` must be `compose`.
450
+ 16. `services.compose_file` is required when services is present.
451
+ 17. `services.project_name` must match `[a-z0-9][a-z0-9_-]*`.
452
+ 18. `services.down_policy` must be one of: `leave_running`, `down`, `down_and_volumes`.
453
+ 19. Each wait target must define exactly one of: `service`, `url`, `tcp`.
454
+ 20. `condition` is only valid on `service` targets and must be `healthy`.
455
+ 21. Startup file `delivery_hint` must be one of: `auto`, `guidance_merge`, `skill_install`, `send_text`.
456
+ 22. Startup action `type` must be one of: `slash_command`, `send_text`. (`shell` is explicitly rejected.)
457
+ 23. Startup action `phase` must be one of: `after_files`, `after_ready`.
458
+ 24. Startup action `idempotent` is a required boolean.
459
+ 25. Non-idempotent actions must not include `restore` in `applies_on`.
460
+ 26. `applies_on` values must be from: `fresh_start`, `restore`.
461
+
462
+ ---
463
+
464
+ ## Shipped Examples
465
+
466
+ These are the built-in specs shipped with OpenRig. Read them as worked examples.
467
+
468
+ | Spec | Location | Pods | Members | Services |
469
+ |------|----------|------|---------|----------|
470
+ | `product-team` | `packages/daemon/specs/rigs/product-team.yaml` | orch, dev, rev | 7 (lead, peer, impl, qa, design, r1, r2) | no |
471
+ | `implementation-pair` | `packages/daemon/specs/rigs/implementation-pair.yaml` | dev | 2 (impl, qa) | no |
472
+ | `adversarial-review` | `packages/daemon/specs/rigs/adversarial-review.yaml` | orch, rev | 3 (lead, r1, r2) | no |
473
+ | `research-team` | `packages/daemon/specs/rigs/research-team.yaml` | orch, research | 3 (lead, analyst, synthesizer) | no |
474
+ | `secrets-manager` | `packages/daemon/specs/rigs/launch/secrets-manager/rig.yaml` | vault | 1 (specialist) | yes (Vault) |
@@ -36,5 +36,7 @@ resources:
36
36
  path: skills/pods/development-team
37
37
  - id: review-team
38
38
  path: skills/pods/review-team
39
+ - id: rig-architect
40
+ path: skills/rig-architect
39
41
 
40
42
  profiles: {}