loadout-ai 0.8.0 → 0.9.1

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 (98) hide show
  1. package/CHANGELOG.md +136 -0
  2. package/README.md +149 -309
  3. package/SECURITY.md +21 -1
  4. package/catalog/discovered.json +29122 -25325
  5. package/catalog/packages.json +4 -4
  6. package/dist/src/cli.js +12 -4
  7. package/dist/src/commands/agents.js +3 -1
  8. package/dist/src/commands/catalog-candidate.js +150 -0
  9. package/dist/src/commands/catalog-workflows.js +365 -0
  10. package/dist/src/commands/catalog.js +9 -354
  11. package/dist/src/commands/coordinate.js +730 -0
  12. package/dist/src/commands/coordination-discussions.js +218 -0
  13. package/dist/src/commands/coordination-sessions.js +197 -0
  14. package/dist/src/commands/inventory.js +4 -2
  15. package/dist/src/core/{routing → agents}/model-config.js +7 -2
  16. package/dist/src/core/catalog/catalog.js +1 -0
  17. package/dist/src/core/catalog/registry.js +5 -19
  18. package/dist/src/core/coordination/adapters/claude-code.js +154 -0
  19. package/dist/src/core/coordination/adapters/codex.js +160 -0
  20. package/dist/src/core/coordination/adapters/types.js +64 -0
  21. package/dist/src/core/coordination/auth.js +59 -0
  22. package/dist/src/core/coordination/auto-contract.js +457 -0
  23. package/dist/src/core/coordination/bridge-lease.js +79 -0
  24. package/dist/src/core/coordination/conflict-preview.js +167 -0
  25. package/dist/src/core/coordination/contract-diff.js +106 -0
  26. package/dist/src/core/coordination/coordinator.js +552 -0
  27. package/dist/src/core/coordination/crash-recovery.js +169 -0
  28. package/dist/src/core/coordination/daemon.js +670 -0
  29. package/dist/src/core/coordination/discussion-pipeline.js +313 -0
  30. package/dist/src/core/coordination/discussion.js +340 -0
  31. package/dist/src/core/coordination/events.js +161 -0
  32. package/dist/src/core/coordination/git-ownership.js +217 -0
  33. package/dist/src/core/coordination/http-api.js +118 -0
  34. package/dist/src/core/coordination/interrupt-policy.js +89 -0
  35. package/dist/src/core/coordination/lock.js +140 -0
  36. package/dist/src/core/coordination/mcp-server.js +424 -0
  37. package/dist/src/core/coordination/quick-start.js +200 -0
  38. package/dist/src/core/coordination/redaction.js +85 -0
  39. package/dist/src/core/coordination/replay.js +188 -0
  40. package/dist/src/core/coordination/retention.js +180 -0
  41. package/dist/src/core/coordination/runtime.js +21 -0
  42. package/dist/src/core/coordination/session-manager.js +366 -0
  43. package/dist/src/core/coordination/watcher.js +128 -0
  44. package/dist/src/core/{routing → delegation}/first-party-skills.js +25 -13
  45. package/dist/src/core/delegation/handoff-bundle.js +253 -0
  46. package/dist/src/core/delegation/handoff-templates.js +222 -0
  47. package/dist/src/core/delegation/handoff-verification.js +117 -0
  48. package/dist/src/core/delegation/handoff.js +537 -0
  49. package/dist/src/core/discovery/candidate-intelligence-evidence.js +108 -0
  50. package/dist/src/core/discovery/candidate-intelligence-types.js +1 -0
  51. package/dist/src/core/discovery/candidate-intelligence-validation.js +108 -0
  52. package/dist/src/core/discovery/candidate-intelligence.js +3 -214
  53. package/dist/src/core/discovery/community.js +12 -4
  54. package/dist/src/core/discovery/github-discovery.js +6 -2
  55. package/dist/src/core/discovery/private-discovery.js +6 -2
  56. package/dist/src/core/install/reconcile.js +1 -1
  57. package/dist/src/core/install/snapshot.js +24 -5
  58. package/dist/src/core/install/uninstall.js +39 -3
  59. package/dist/src/core/reporting/cli-guide.js +9 -5
  60. package/dist/src/core/reporting/completion.js +43 -38
  61. package/dist/src/core/reporting/doctor.js +1 -1
  62. package/dist/src/core/runtime/bounded-json.js +65 -0
  63. package/dist/src/core/runtime/github.js +30 -16
  64. package/dist/src/core/runtime/mcp-recipes.js +1 -1
  65. package/dist/src/core/workspace/active-policy.js +1 -1
  66. package/docs/DEMO_SCRIPT.md +19 -23
  67. package/docs/DISCOVERED.md +250 -251
  68. package/docs/FEATURE_TEST_MATRIX.md +30 -15
  69. package/docs/LIVE_COLLABORATION.md +283 -0
  70. package/docs/REFERENCE.md +263 -0
  71. package/docs/RELEASE_REVIEW.md +1 -1
  72. package/docs/TESTING.md +17 -1
  73. package/docs/USER_TEST_GUIDE.md +211 -3
  74. package/docs/assets/loadout-discover-activate.webp +0 -0
  75. package/docs/assets/loadout-handoff-coordinate.webp +0 -0
  76. package/docs/assets/loadout-social-preview.png +0 -0
  77. package/docs/decisions/001-coordination-jsonl-locking.md +35 -0
  78. package/docs/decisions/002-local-daemon-authentication.md +32 -0
  79. package/docs/decisions/003-bounded-agent-discussions.md +91 -0
  80. package/docs/evidence/coordination-provider-check-2026-09-05.md +33 -0
  81. package/docs/specs/BOUNDED_AGENT_DISCUSSIONS.md +169 -0
  82. package/docs/specs/HANDOFF_CONTEXT_BUNDLES.md +139 -0
  83. package/docs/specs/HANDOFF_VERIFICATION.md +83 -0
  84. package/docs/superpowers/plans/2026-09-03-coordination-hardening.md +231 -0
  85. package/docs/superpowers/plans/2026-09-03-release-readiness.md +232 -0
  86. package/docs/superpowers/plans/2026-09-04-bounded-agent-discussions.md +121 -0
  87. package/docs/superpowers/plans/2026-09-04-handoff-context-bundles.md +109 -0
  88. package/docs/superpowers/plans/2026-09-04-handoff-verification.md +56 -0
  89. package/docs/superpowers/plans/2026-09-05-pre-release-hardening.md +175 -0
  90. package/docs/superpowers/plans/2026-09-05-public-readiness.md +20 -0
  91. package/package.json +15 -5
  92. package/skills/loadout-handoff/SKILL.md +291 -0
  93. package/dist/src/core/routing/handoff.js +0 -314
  94. package/dist/src/core/routing/policy.js +0 -147
  95. package/dist/src/core/routing/route.js +0 -411
  96. package/docs/assets/loadout-workflow.png +0 -0
  97. package/skills/loadout-router/SKILL.md +0 -85
  98. /package/dist/src/core/{routing → agents}/credentials.js +0 -0
@@ -108,23 +108,38 @@ the capability table names native, adapted, and unsupported surfaces honestly.
108
108
  Run the entire required gate with one command:
109
109
 
110
110
  ```bash
111
- npm run verify
111
+ npm run verify:full
112
112
  ```
113
113
 
114
- `npm run verify:full` is an alias for the same CLI release gate. The individual stages
115
- are listed below for focused reruns and diagnosis.
116
-
117
- | Command | Coverage | Expected result |
118
- | -------------------------- | ----------------------------------------------------------------------- | -------------------------------------------------- |
119
- | `npm run format:check` | Repository formatting | Exit 0; no files changed. |
120
- | `npm run lint` | TypeScript lint rules | Exit 0. |
121
- | `npm run typecheck` | TypeScript contract | Exit 0. |
122
- | `npm run check:evidence` | Catalog/discovery attribution, README claims, and release boundaries | Exit 0; no claim is silently promoted. |
123
- | `npm test` | Unit, integration, native filesystem, safety, and regression suites | All tests pass. |
124
- | `npm run test:e2e:cli` | Disposable scan → compare → optimize → apply → rollback journey | Prints a successful CLI product flow. |
125
- | `npm run test:e2e:readme` | Isolated library/activation/manifest/card/rollback journey | Prints README product flow success. |
126
- | `npm run test:package` | `npm pack`, install outside the checkout, packaged CLI install/rollback | Prints package smoke success. |
127
- | `npm run test:performance` | Seven scans of 1,000 real on-disk skill directories | p95 remains below the enforced five-second budget. |
114
+ This is the release gate. It runs the normal verification path plus coverage.
115
+ The individual stages are listed below for focused reruns and diagnosis.
116
+
117
+ | Command | Coverage | Expected result |
118
+ | ------------------------------- | ----------------------------------------------------------------------- | -------------------------------------------------- |
119
+ | `npm run format:check` | Repository formatting | Exit 0; no files changed. |
120
+ | `npm run lint` | TypeScript lint rules | Exit 0. |
121
+ | `npm run typecheck` | TypeScript contract | Exit 0. |
122
+ | `npm run check:evidence` | Catalog/discovery attribution, README claims, and release boundaries | Exit 0; no claim is silently promoted. |
123
+ | `npm test` | Unit, integration, native filesystem, safety, and regression suites | All tests pass. |
124
+ | `npm run test:e2e:cli` | Disposable scan → compare → optimize → apply → rollback journey | Prints a successful CLI product flow. |
125
+ | `npm run test:e2e:readme` | Isolated library/activation/manifest/card/rollback journey | Prints README product flow success. |
126
+ | `npm run test:e2e:coordination` | Disposable ownership/contract/template/verified-handoff journey | Prints coordination product flow success. |
127
+ | `npm run test:package` | `npm pack`, install outside the checkout, packaged CLI install/rollback | Prints package smoke success. |
128
+ | `npm run test:performance` | Seven scans of 1,000 real on-disk skill directories | p95 remains below the enforced five-second budget. |
129
+
130
+ Coordination convenience regressions are covered by:
131
+
132
+ ```bash
133
+ npx vitest run tests/handoff-templates.test.ts tests/cli-handoff.test.ts \
134
+ tests/handoff-verification.test.ts tests/coordination-quick-start.test.ts \
135
+ tests/auto-contract.test.ts tests/git-ownership.test.ts \
136
+ tests/discussion-pipeline.test.ts
137
+ ```
138
+
139
+ These tests cover traversal rejection, template interpolation and bundles,
140
+ non-blocking verified completion, normalized ownership splits, exact/current/
141
+ stale contract candidates, Git author mappings, and idempotent linked handoffs.
142
+ Windows CI is authoritative for native path behavior and must be green.
128
143
 
129
144
  The focused regression contract for the v0.3.x profile lifecycle is:
130
145
 
@@ -0,0 +1,283 @@
1
+ # Live Claude Code ↔ Codex coordination
2
+
3
+ Live coordination is beta in 0.9.0. The ordinary `loadout handoff` inbox is
4
+ the stable fallback: it is durable, understandable, and does not run either
5
+ provider automatically.
6
+
7
+ ## What “shared memory” means
8
+
9
+ Loadout shares structured project facts, not private conversations or model
10
+ context windows. Both agents can see the same tasks, file ownership, versioned
11
+ contracts, decisions, progress, blockers, verification results, and cursors.
12
+ Every accepted event is persisted before a watcher, dashboard, or provider
13
+ bridge sees it.
14
+
15
+ ```text
16
+ Claude Code CLI <----> provider bridge <----> Codex SDK
17
+ |
18
+ coordination protocol
19
+ .handoff/coordination.jsonl
20
+ / | \
21
+ CLI MCP HTTP/SSE
22
+ ```
23
+
24
+ The source of truth is an append-only project JSONL log protected by an
25
+ exclusive cross-process lock. There is no cloud service and no SQLite database.
26
+ Sequence numbers, acknowledgements, and snapshots make reconnects deterministic.
27
+
28
+ ## Three operating levels
29
+
30
+ 1. **Durable handoff (stable):** `loadout handoff` passes a bounded task and
31
+ context to the next agent session.
32
+ 2. **Shared coordination protocol (beta):** CLI or MCP tools publish and read
33
+ structured events. Agents see changes when they call `snapshot`/`subscribe`,
34
+ while the local daemon and dashboard can observe changes immediately.
35
+ 3. **Provider bridge (beta, opt-in):** a long-running local process resumes
36
+ provider sessions and submits relevant events as new follow-up turns.
37
+ 4. **Bounded design discussion (beta, opt-in):** Claude Code and Codex
38
+ alternate proposals and critiques on one question, then record a decision.
39
+
40
+ The bridge does not inject into an already-running turn. Delivery happens at a
41
+ safe turn boundary because that is what the supported Claude Code CLI and Codex
42
+ SDK interfaces provide.
43
+
44
+ ## Quick protocol test (no paid agent turn)
45
+
46
+ For the beginner path, preview and approve a normalized ownership split:
47
+
48
+ ```bash
49
+ loadout coord start --agents claude-code,codex
50
+ loadout coord start --agents claude-code,codex --yes
51
+ ```
52
+
53
+ The command ignores generated directories and collapses redundant child paths.
54
+ Any existing ownership makes it stop rather than overwrite active work.
55
+
56
+ Run these commands in a disposable Git repository:
57
+
58
+ ```bash
59
+ loadout coord own claude-code src/api
60
+ loadout coord contract checkout-api --agent claude-code \
61
+ --body "POST /api/checkout -> 201 { id: string }"
62
+ loadout coord snapshot codex
63
+ loadout coord ack codex 1
64
+ loadout coord release claude-code src/api
65
+ loadout coord status
66
+ loadout coord replay
67
+ ```
68
+
69
+ The contract revision is allocated atomically when `--revision` is omitted.
70
+ Overlapping exclusive ownership is rejected. A future acknowledgement or stale
71
+ explicit contract revision is rejected as a conflict.
72
+
73
+ After ownership exists, detect imports that cross agent boundaries:
74
+
75
+ ```bash
76
+ loadout coord detect
77
+ loadout coord detect --publish
78
+ loadout coord detect --publish --yes
79
+ ```
80
+
81
+ Detection is conservative. Exact supported one-line declarations may be
82
+ published after the second approval; multiline or ambiguous declarations are
83
+ marked `MANUAL` and refused. Existing generated bodies are reported as current
84
+ or stale. This is an on-demand scan, not a background compiler or watcher.
85
+
86
+ ## Connect the MCP server
87
+
88
+ `loadout serve` starts a protocol-only stdio MCP server in the current project.
89
+ It exposes `claim_task`, `release_ownership`, `publish_contract`,
90
+ `publish_update`, `subscribe`, `ack`, and `snapshot`. Contract revisions
91
+ auto-increment when omitted.
92
+
93
+ For Claude Code, add the server at project scope using its MCP command:
94
+
95
+ ```bash
96
+ claude mcp add --transport stdio --scope project loadout-coordination -- loadout serve
97
+ ```
98
+
99
+ For Codex, add this table to `~/.codex/config.toml` (or use the equivalent
100
+ Codex MCP configuration UI):
101
+
102
+ ```toml
103
+ [mcp_servers."loadout-coordination"]
104
+ command = "loadout"
105
+ args = ["serve"]
106
+ ```
107
+
108
+ Restart the host after changing its MCP configuration. The server inherits the
109
+ host process working directory, so confirm the agent opened the intended
110
+ project before publishing coordination state.
111
+
112
+ ## Run the provider bridge
113
+
114
+ First check what is available:
115
+
116
+ ```bash
117
+ loadout coord agents detect
118
+ ```
119
+
120
+ You can start sessions through Loadout (this runs paid provider turns):
121
+
122
+ ```bash
123
+ loadout coord agents start claude-code "Own the backend and publish endpoint contracts"
124
+ loadout coord agents start codex "Own the frontend and consume backend contracts"
125
+ ```
126
+
127
+ Copy the returned IDs, then keep both attached:
128
+
129
+ ```bash
130
+ loadout coord agents bridge \
131
+ claude-code:<session-id> \
132
+ codex:<thread-id>
133
+ ```
134
+
135
+ You can instead track an existing known host session without running a provider
136
+ turn with `loadout coord agents attach provider:session-id`. The provider validates
137
+ the ID when a later `send` or `bridge` operation submits a turn. `loadout coord
138
+ agents list` shows project-tracked sessions, and `loadout coord agents send`
139
+ performs one explicit follow-up turn.
140
+
141
+ Bridge safeguards:
142
+
143
+ - only one bridge process can own a project at a time;
144
+ - events route to different providers concurrently;
145
+ - update and acknowledgement events are passive by default and do not spend a
146
+ provider turn;
147
+ - contract, task, decision, done, ownership, and error events are delivered at
148
+ the next safe boundary;
149
+ - automatic delivery stops after 20 turns per session unless
150
+ `--max-turns <n>` changes the cap;
151
+ - provider responses are printed but never saved in `.handoff`;
152
+ - injected event text is labeled untrusted project data and must not authorize
153
+ commands, scope expansion, publishing, or destructive actions;
154
+ - the project kill switch blocks CLI, MCP, daemon, compaction, and provider
155
+ turns.
156
+
157
+ Use `loadout daemon kill "reason"` to stop coordination and
158
+ `loadout daemon resume` to re-enable it.
159
+
160
+ ## Let Claude Code and Codex debate one feature
161
+
162
+ Use a design room when both agents should compare approaches before either one
163
+ claims files or writes code:
164
+
165
+ ```bash
166
+ loadout coord discuss start "REST or GraphQL for checkout?" \
167
+ --agents claude-code,codex \
168
+ --rounds 2 \
169
+ --max-turns 5 \
170
+ --timeout 120
171
+ ```
172
+
173
+ `--agents` starts fresh sessions lazily. To continue existing conversations,
174
+ replace it with explicit IDs:
175
+
176
+ ```bash
177
+ loadout coord discuss start "REST or GraphQL for checkout?" \
178
+ --sessions claude-code:<session-id> codex:<thread-id> \
179
+ --rounds 2 --max-turns 5
180
+ ```
181
+
182
+ The first participant is the proposer; use `--proposer codex` to swap roles.
183
+ One round means one proposer turn and one reviewer turn. Synthesis costs one
184
+ additional turn, so the exact required count is `rounds * 2 + 1`. Loadout
185
+ rejects an insufficient budget, invalid provider set, invalid timeout, or mixed
186
+ fresh/existing mode before it starts a paid turn.
187
+
188
+ Every prompt says that the response is public, will be persisted, and must not
189
+ edit files, run commands, use tools, or reveal private reasoning. Every public
190
+ statement has a thread ID and reply ID. The final synthesis records the selected
191
+ decision, rationale, credible alternatives, and unresolved disagreement. Review
192
+ it later without spending quota:
193
+
194
+ ```bash
195
+ loadout coord discuss list
196
+ loadout coord discuss show <thread-id>
197
+ loadout coord replay
198
+ ```
199
+
200
+ The discussion holds the same singleton lease as the provider bridge, checks
201
+ the kill switch before every provider turn, never retries a rejected or invalid
202
+ response silently, and defaults to a 120-second per-turn timeout. It does not
203
+ begin implementation automatically.
204
+
205
+ Turn an accepted decision into implementation only after reviewing the dry run:
206
+
207
+ ```bash
208
+ loadout coord discuss implement <thread-id>
209
+ loadout coord discuss implement <thread-id> --yes
210
+ ```
211
+
212
+ The approved command refuses mentioned paths without ownership, bundles files
213
+ that already exist, attaches acceptance criteria, records generated handoff
214
+ IDs, and uses a deterministic plan ID so retries do not duplicate tasks.
215
+ Extracted paths are normalized inside the project and the plan fails before
216
+ sending anything if it exceeds the 256-file coordination event limit.
217
+
218
+ Git history can suggest ownership when commits carry distinguishable authors:
219
+
220
+ ```bash
221
+ loadout coord git-ownership \
222
+ --agents "claude-code=Claude Opus 4.6,codex=Viraj Mishra"
223
+ ```
224
+
225
+ Confidence includes commits by unmapped human authors. Add `--yes` only after
226
+ reviewing the suggestions; Git history is evidence, not proof of current intent.
227
+
228
+ ## Optional daemon and dashboard
229
+
230
+ ```bash
231
+ loadout daemon start
232
+ ```
233
+
234
+ The daemon binds only to `127.0.0.1`. It prints an authenticated dashboard URL
235
+ whose token is carried in the URL fragment, moved immediately into browser
236
+ session storage, and removed from visible history. REST and SSE accept bearer
237
+ headers only; query-string tokens, non-loopback Host headers, and cross-origin
238
+ browser requests are rejected. The token and session state are project-local
239
+ files with mode `0600`.
240
+
241
+ The dashboard is observability, not an agent injector. Use the MCP tools or the
242
+ provider bridge for agent-to-agent delivery.
243
+
244
+ ## Safety and data model
245
+
246
+ - Event schemas cap names, descriptions, context, payloads, arrays, and paths.
247
+ - Secret-like keys and values are redacted at the canonical write boundary, so
248
+ CLI, MCP, and HTTP writes follow the same rule.
249
+ - Ownership claims use normalized project-relative paths and detect directory /
250
+ child overlap.
251
+ - Contract revisions and event sequences are allocated while holding the same
252
+ project lock.
253
+ - Compaction first writes a complete archival copy and aborts if archival fails.
254
+ - Corrupt JSONL lines are reported rather than hiding valid neighboring events.
255
+ - `.handoff/coordination.jsonl` is project data. Do not commit it when its facts
256
+ are private; add the appropriate `.handoff` paths to `.gitignore`.
257
+
258
+ ## Honest limitations
259
+
260
+ - This is durable shared state plus follow-up turns, not one simultaneous model
261
+ context or provider-to-provider hidden channel.
262
+ - Claude Code and Codex authentication, quotas, billing, and host session IDs
263
+ remain provider concerns.
264
+ - The bridge cannot steer a turn already in progress.
265
+ - The design-room kill switch cannot cancel a provider call already in flight;
266
+ it prevents persistence and the next provider turn.
267
+ - A provider may fail, time out, reject a resume ID, or return output Loadout
268
+ cannot parse. The event stays durable and can still be consumed manually.
269
+ - The bridge is local to one machine and one repository. Remote teams need a
270
+ separately designed authenticated transport; this release intentionally does
271
+ not expose the daemon to a network.
272
+ - Contract detection supports relative TypeScript/JavaScript imports and exact
273
+ one-line declarations; aliases, generated clients, path mappings, and complex
274
+ multiline declarations may require a manual contract.
275
+
276
+ ## Evidence
277
+
278
+ The coordination test suite covers concurrent writers, ownership conflicts,
279
+ revision allocation, malformed logs, redaction, authenticated HTTP/SSE, MCP
280
+ stdio framing, retention failure safety, kill-switch behavior, provider CLI/SDK
281
+ shapes, session replay, concurrent provider delivery, passive policy, and the
282
+ automatic-turn cap. The package smoke test verifies the compiled MCP artifact is
283
+ included in the npm tarball.
@@ -0,0 +1,263 @@
1
+ # Loadout Reference
2
+
3
+ Detailed configuration, profiles, integrations, and discovery documentation.
4
+ For the quick start, see the [README](../README.md).
5
+
6
+ ## Profiles
7
+
8
+ Loadout is opinionated when you want it to be and precise when you do not. The
9
+ modes differ in one thing: how much of the reviewed catalog they install.
10
+
11
+ | Mode | Sources | Skills | Active by default |
12
+ | --------- | --------------------- | ------ | -------------------------------- |
13
+ | `stable` | 4 | 30 | yes — recommended starting point |
14
+ | `power` | 8 | 56 | yes |
15
+ | `maximum` | all reviewed | all | **no — downloaded but disabled** |
16
+ | `custom` | your `--package` list | varies | yes |
17
+
18
+ **Maximum is the one worth understanding.** It downloads the entire reviewed
19
+ library and leaves every skill _disabled_. Nothing reaches an agent prompt until
20
+ a project activates what it needs:
21
+
22
+ ```bash
23
+ loadout setup --mode maximum --yes
24
+ cd ~/code/my-app
25
+ loadout optimize --project . # scans the repo, proposes an active set
26
+ loadout activate # enable just those here
27
+ ```
28
+
29
+ That trade is deliberate: disk is cheap and context is not. A large disabled
30
+ library plus a small active set beats installing everything into every prompt.
31
+
32
+ ### Stable: the essentials
33
+
34
+ Stable is the recommended daily driver: **30 selected skill directories from four
35
+ pinned public sources**, installed into each agent you choose.
36
+
37
+ | Included source | What Stable takes from it | GitHub |
38
+ | ---------------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
39
+ | [Superpowers](https://github.com/obra/superpowers) | Planning, execution, testing, review, verification | [![GitHub stars](https://img.shields.io/github/stars/obra/superpowers?style=flat&label=stars)](https://github.com/obra/superpowers) |
40
+ | [Context7](https://github.com/upstash/context7) | Current documentation and MCP workflows | [![GitHub stars](https://img.shields.io/github/stars/upstash/context7?style=flat&label=stars)](https://github.com/upstash/context7) |
41
+ | [Addy Osmani Agent Skills](https://github.com/addyosmani/agent-skills) | Engineering, frontend, debugging, performance, docs, shipping | [![GitHub stars](https://img.shields.io/github/stars/addyosmani/agent-skills?style=flat&label=stars)](https://github.com/addyosmani/agent-skills) |
42
+ | [Agent Skills Marketplace](https://github.com/wshobson/agents) | Architecture, review, error handling, JavaScript, Python | [![GitHub stars](https://img.shields.io/github/stars/wshobson/agents?style=flat&label=stars)](https://github.com/wshobson/agents) |
43
+
44
+ ```bash
45
+ loadout setup --mode stable
46
+ loadout setup --mode stable --yes
47
+ ```
48
+
49
+ ### Power: a larger cross-project toolkit
50
+
51
+ Power draws a skill-level allowlist from eight major collections.
52
+
53
+ | Included source | Focus | GitHub |
54
+ | ------------------------------------------------------------------------ | --------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
55
+ | [Anthropic Skills](https://github.com/anthropics/skills) | Documents, frontend, MCP building, web testing | [![GitHub stars](https://img.shields.io/github/stars/anthropics/skills?style=flat&label=stars)](https://github.com/anthropics/skills) |
56
+ | [OpenAI Skills](https://github.com/openai/skills) | CLI, docs, browser work, images, security | [![GitHub stars](https://img.shields.io/github/stars/openai/skills?style=flat&label=stars)](https://github.com/openai/skills) |
57
+ | [Vercel Agent Skills](https://github.com/vercel-labs/agent-skills) | React, web design, composition, deployment | [![GitHub stars](https://img.shields.io/github/stars/vercel-labs/agent-skills?style=flat&label=stars)](https://github.com/vercel-labs/agent-skills) |
58
+ | [Superpowers](https://github.com/obra/superpowers) | Planning, debugging, testing, collaboration | [![GitHub stars](https://img.shields.io/github/stars/obra/superpowers?style=flat&label=stars)](https://github.com/obra/superpowers) |
59
+ | [UI UX Pro Max](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill) | UI systems, slides, styling, product design | [![GitHub stars](https://img.shields.io/github/stars/nextlevelbuilder/ui-ux-pro-max-skill?style=flat&label=stars)](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill) |
60
+ | [Context7](https://github.com/upstash/context7) | Current documentation and MCP workflows | [![GitHub stars](https://img.shields.io/github/stars/upstash/context7?style=flat&label=stars)](https://github.com/upstash/context7) |
61
+ | [Agent Skills Marketplace](https://github.com/wshobson/agents) | Architecture, testing, APIs, TypeScript, Python | [![GitHub stars](https://img.shields.io/github/stars/wshobson/agents?style=flat&label=stars)](https://github.com/wshobson/agents) |
62
+ | [Awesome Copilot](https://github.com/github/awesome-copilot) | Codebase knowledge, plans, browser and security workflows | [![GitHub stars](https://img.shields.io/github/stars/github/awesome-copilot?style=flat&label=stars)](https://github.com/github/awesome-copilot) |
63
+
64
+ ```bash
65
+ loadout setup --mode power
66
+ ```
67
+
68
+ ### Maximum: download broadly, activate intelligently
69
+
70
+ Downloads every non-archived, technically screened skill component into
71
+ Loadout's **disabled local library**. Then let the current project choose:
72
+
73
+ ```bash
74
+ loadout setup --mode maximum
75
+ loadout recommend --project .
76
+ loadout optimize --project . --limit 30
77
+ loadout optimize --project . --limit 30 --yes
78
+ ```
79
+
80
+ ### Custom: take exact control
81
+
82
+ ```bash
83
+ # Replace the managed profile
84
+ loadout setup --mode custom --package superpowers --package context7
85
+
86
+ # Add without replacing
87
+ loadout install --mode custom --package humanizer
88
+ loadout install --mode custom --package obsidian-skills --agents claude-code,cursor
89
+ ```
90
+
91
+ Run `loadout profiles` to compare every mode.
92
+
93
+ ## MCP integrations
94
+
95
+ Profiles never start MCP servers silently.
96
+
97
+ ```bash
98
+ loadout mcp-recipe # list recipes
99
+ loadout mcp-recipe --credential-free # no-credential subset
100
+ loadout mcp-recipe playwright --agent claude-code # preview
101
+ loadout mcp-recipe playwright --agent claude-code --yes # configure
102
+ loadout mcp-recipe playwright --agent claude-code --verify # test
103
+ ```
104
+
105
+ Configuration alone does not start the server. Test a real connection separately
106
+ with `--connect --approve-risk`. Loadout can reference credentials from environment
107
+ variables or the OS keychain without printing their values.
108
+
109
+ ## Optional runtime tools
110
+
111
+ [Graphify](https://github.com/Graphify-Labs/graphify) is an optional codebase graph
112
+ tool. It does not require an LLM API key:
113
+
114
+ ```bash
115
+ loadout tool graphify
116
+ loadout tool graphify --yes --approve-risk
117
+ loadout tool graphify --remove --yes --approve-risk
118
+ ```
119
+
120
+ Executable tools remain an explicit choice instead of hiding inside a profile.
121
+
122
+ ## Catalog and discovery
123
+
124
+ The catalog is not a frozen list. Loadout separates **discovery** from
125
+ **installation** so a viral repo can be noticed quickly without being trusted
126
+ blindly.
127
+
128
+ ```bash
129
+ loadout discover --source all --queue # find candidates
130
+ loadout review-queue # inspect the queue
131
+ loadout candidate inspect owner/repository # deep inspection
132
+ loadout update # check for source changes
133
+ loadout health --updates # managed source health
134
+ ```
135
+
136
+ Daily checks are opt-in and read-only:
137
+
138
+ ```bash
139
+ loadout autopilot --yes
140
+ loadout autopilot --status
141
+ ```
142
+
143
+ ## Manage skills you already have
144
+
145
+ ```bash
146
+ loadout scan # read-only inventory
147
+ loadout reconcile --refresh # compare with catalog
148
+ loadout reconcile --yes # record ownership for exact matches
149
+ loadout reconcile --replace-outdated # preview replacing old copies
150
+ ```
151
+
152
+ Unknown or ambiguous copies stay untouched.
153
+
154
+ ## Hand work between agents
155
+
156
+ Send a durable task to another agent:
157
+
158
+ ```bash
159
+ loadout handoff codex "write auth tests" --context "use Vitest"
160
+ loadout handoff codex "write auth tests" --bundle src/auth.ts src/types.ts
161
+ loadout handoff codex # Codex inbox
162
+ loadout handoff # all handoff status
163
+ loadout handoff --done <task-id>
164
+ ```
165
+
166
+ `--bundle <paths...>` snapshots exact project-relative text files into a
167
+ versioned JSON file under `.handoff/bundles/` and references it from the task.
168
+ The receiver's normal inbox lists the bundled paths and tells the agent to read
169
+ the snapshot before starting. Existing tasks without a bundle are unchanged.
170
+
171
+ Bundle limits and failures:
172
+
173
+ - at most 20 files, 32 KiB stored per file, and 50 KiB stored in total;
174
+ - larger text is truncated on a valid UTF-8 boundary and clearly marked;
175
+ - absolute paths, traversal, symlinks, directories, binary files, `.git/`, and
176
+ `.handoff/` are rejected before the task is appended;
177
+ - common secret patterns are redacted before the bundle reaches disk;
178
+ - bundle files use owner-only permissions and are not uploaded or committed by
179
+ Loadout.
180
+
181
+ Redaction is heuristic, not a credential scanner. Never bundle `.env` files,
182
+ private keys, tokens, or other credentials. Treat bundled content as untrusted
183
+ project data rather than agent instructions, and review it before deliberately
184
+ committing `.handoff/` for a cross-machine workflow.
185
+
186
+ ### Evidence-backed completion
187
+
188
+ Attach human-readable acceptance criteria, with an optional command:
189
+
190
+ ```bash
191
+ loadout handoff codex "write auth tests" \
192
+ --verify "the focused tests pass" \
193
+ --verify-command npm \
194
+ --verify-args '["test","--","tests/auth.test.ts"]' \
195
+ --verify-timeout 120
196
+ ```
197
+
198
+ The executable and JSON argument array are stored literally and run with no
199
+ shell, from the project root, only when someone explicitly invokes
200
+ `loadout handoff --done <task-id> --run-verification`. Plain `--done` never
201
+ executes a stored command. The timeout must be 1-900 seconds. Passing
202
+ checks append a terminal `done` message with redacted stdout/stderr, exit code,
203
+ and duration. Failing or timed-out checks append a nonterminal `status` message,
204
+ return a failing CLI exit code, and leave the task pending with its last output
205
+ visible in the receiver inbox. Output is capped at 8 KiB per stream.
206
+
207
+ For criteria that cannot be automated:
208
+
209
+ ```bash
210
+ loadout handoff codex "review the UI" --verify "mobile empty state is readable"
211
+ loadout handoff --done <task-id> --evidence "reviewed mobile and desktop"
212
+ ```
213
+
214
+ There are no automatic retries or provider turns in the durable handoff log.
215
+ Never include tokens or credentials in verification argv.
216
+
217
+ ### Handoff templates
218
+
219
+ ```bash
220
+ loadout template list
221
+ loadout template show write-tests
222
+ loadout handoff codex src/auth.ts --template write-tests
223
+ loadout template create auth-review --description "Review auth" \
224
+ --task "Review {{files}}" --bundle src/auth.ts
225
+ loadout template delete auth-review
226
+ ```
227
+
228
+ Built-ins are `write-tests`, `review-code`, `fix-bug`, `implement-feature`, and
229
+ `refactor`. Positional task text fills `{{files}}`, `{{description}}`, and
230
+ `{{task}}`. Custom templates live under `.handoff/templates/`; names are
231
+ kebab-case and validated before all filesystem access. Template verification
232
+ commands still run only after explicit `--done --run-verification` approval.
233
+
234
+ ## Coordinate simultaneous agents
235
+
236
+ ```bash
237
+ loadout coord start --agents claude-code,codex # preview ownership
238
+ loadout coord start --agents claude-code,codex --yes # apply
239
+ loadout coord detect # contract candidates
240
+ loadout coord detect --publish --yes # exact candidates only
241
+ loadout coord discuss implement <thread-id> # preview linked tasks
242
+ loadout coord discuss implement <thread-id> --yes # dispatch once
243
+ loadout coord git-ownership --agents "codex=Git Author"
244
+ ```
245
+
246
+ Every convenience mutation is preview-first. Contract detection is conservative
247
+ and refuses manual placeholders. Discussion implementation refuses unowned
248
+ mentioned paths and is idempotent by deterministic plan ID. Git history
249
+ percentages include unmapped authors; use explicit agent/author mappings when
250
+ the Git identity is not literally the agent name. See
251
+ [`LIVE_COLLABORATION.md`](./LIVE_COLLABORATION.md) for the protocol, MCP server,
252
+ provider bridge, daemon, and honest limitations.
253
+
254
+ ## Agent support
255
+
256
+ Loadout's adapter capability matrix covers **12 agents**: Claude Code, Cline,
257
+ Codex, Cursor, Gemini CLI, GitHub Copilot, Hermes, Junie, Kiro CLI, OpenCode,
258
+ Roo Code, Windsurf.
259
+
260
+ See the [complete feature matrix](./FEATURE_TEST_MATRIX.md) for configured
261
+ paths, filesystem lifecycle, platform, and native-host evidence.
262
+
263
+ Use `loadout doctor --verbose` for the local component matrix.
@@ -22,6 +22,6 @@ For current behavior and evidence, use:
22
22
  [sanitized July 19 live checks](./evidence/live-checks-2026-07-19.json) only when
23
23
  investigating that historical release line.
24
24
 
25
- The current release gate is `npm run verify`. Publication status must be checked
25
+ The current release gate is `npm run verify:full`. Publication status must be checked
26
26
  against the npm registry and the corresponding GitHub release rather than inferred
27
27
  from this archived document.
package/docs/TESTING.md CHANGED
@@ -68,7 +68,23 @@ checks the current pinned Stable sources and remains network-dependent.
68
68
 
69
69
  Run `npm run verify` for formatting, lint, types, deterministic evidence checks, all
70
70
  Vitest suites, both CLI journeys, package smoke, and the performance gate.
71
- `npm run verify:full` is retained as an alias for the same complete CLI gate.
71
+ Run `npm run verify:full` before a release; it runs that gate and then enforces
72
+ the global and security-sensitive per-file coverage floors.
73
+
74
+ The coordination suites exercise the protocol separately from paid providers:
75
+
76
+ ```bash
77
+ npx vitest run 'tests/coordination*.test.ts'
78
+ npm run test:package
79
+ ```
80
+
81
+ They cover cross-process ordering, ownership/revision conflicts, redaction,
82
+ retention and recovery, daemon authentication, MCP framing, provider command/SDK
83
+ shapes, automatic watcher delivery, passive interrupt policy, singleton bridge
84
+ ownership, bounded two-agent discussion turns and reply chains, leases, and
85
+ runaway-turn limits. Fake provider drivers are used for deterministic
86
+ tests; the suite does not spend Claude or Codex quota. Follow the disposable
87
+ manual flow in `docs/USER_TEST_GUIDE.md` for an intentional real-host test.
72
88
 
73
89
  Current npm publication, the current pinned Stable repositories, and GitHub repository
74
90
  settings are external state. Check them separately with: