loadout-ai 0.1.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.
Files changed (125) hide show
  1. package/LICENSE +21 -0
  2. package/MASTER_PLAN.md +1711 -0
  3. package/README.md +453 -0
  4. package/SECURITY.md +18 -0
  5. package/SIMPLE_PLAN.md +44 -0
  6. package/catalog/discovered.json +10469 -0
  7. package/catalog/packages.json +1150 -0
  8. package/dashboard/app.js +607 -0
  9. package/dashboard/index.html +249 -0
  10. package/dashboard/styles.css +384 -0
  11. package/dist/src/cli.js +2735 -0
  12. package/dist/src/core/active-policy.js +233 -0
  13. package/dist/src/core/active-set.js +382 -0
  14. package/dist/src/core/adapters.js +254 -0
  15. package/dist/src/core/adopt.js +92 -0
  16. package/dist/src/core/agent-health-score.js +475 -0
  17. package/dist/src/core/agent-inspection.js +152 -0
  18. package/dist/src/core/agent-versions.js +131 -0
  19. package/dist/src/core/api.js +90 -0
  20. package/dist/src/core/atomic-file.js +22 -0
  21. package/dist/src/core/audit.js +174 -0
  22. package/dist/src/core/benchmark-campaign.js +496 -0
  23. package/dist/src/core/benchmark-evidence.js +458 -0
  24. package/dist/src/core/benchmark-fixtures.js +1157 -0
  25. package/dist/src/core/benchmark-runner.js +301 -0
  26. package/dist/src/core/benchmark-trust.js +795 -0
  27. package/dist/src/core/canary.js +77 -0
  28. package/dist/src/core/candidate-intelligence.js +661 -0
  29. package/dist/src/core/catalog-coverage.js +85 -0
  30. package/dist/src/core/catalog-install.js +186 -0
  31. package/dist/src/core/catalog-release.js +286 -0
  32. package/dist/src/core/catalog.js +327 -0
  33. package/dist/src/core/codex-mcp.js +122 -0
  34. package/dist/src/core/community.js +86 -0
  35. package/dist/src/core/compatibility-intelligence.js +465 -0
  36. package/dist/src/core/completion.js +160 -0
  37. package/dist/src/core/components.js +138 -0
  38. package/dist/src/core/conversion.js +56 -0
  39. package/dist/src/core/credentials.js +377 -0
  40. package/dist/src/core/demo.js +136 -0
  41. package/dist/src/core/diff.js +83 -0
  42. package/dist/src/core/discovery-connector.js +165 -0
  43. package/dist/src/core/doctor.js +95 -0
  44. package/dist/src/core/ecosystem-import.js +1072 -0
  45. package/dist/src/core/evaluate.js +72 -0
  46. package/dist/src/core/file-lock.js +140 -0
  47. package/dist/src/core/freshness-alerts.js +230 -0
  48. package/dist/src/core/github-discovery.js +97 -0
  49. package/dist/src/core/github.js +148 -0
  50. package/dist/src/core/head-to-head.js +437 -0
  51. package/dist/src/core/health-score-evidence.js +169 -0
  52. package/dist/src/core/health.js +129 -0
  53. package/dist/src/core/improve.js +223 -0
  54. package/dist/src/core/install.js +233 -0
  55. package/dist/src/core/intelligence-feed-build.js +59 -0
  56. package/dist/src/core/intelligence-feed.js +353 -0
  57. package/dist/src/core/loadout-badge.js +55 -0
  58. package/dist/src/core/loadout-card.js +87 -0
  59. package/dist/src/core/manifest.js +307 -0
  60. package/dist/src/core/mcp-recipes.js +419 -0
  61. package/dist/src/core/mcp-registry-discovery.js +455 -0
  62. package/dist/src/core/mcp.js +287 -0
  63. package/dist/src/core/model-config.js +102 -0
  64. package/dist/src/core/observations.js +87 -0
  65. package/dist/src/core/outcomes.js +164 -0
  66. package/dist/src/core/package.js +225 -0
  67. package/dist/src/core/paths.js +214 -0
  68. package/dist/src/core/portable.js +130 -0
  69. package/dist/src/core/private-discovery.js +45 -0
  70. package/dist/src/core/profiles.js +255 -0
  71. package/dist/src/core/provenance.js +278 -0
  72. package/dist/src/core/ranking.js +104 -0
  73. package/dist/src/core/recommend.js +181 -0
  74. package/dist/src/core/registry-api.js +97 -0
  75. package/dist/src/core/registry.js +316 -0
  76. package/dist/src/core/release-claims.js +175 -0
  77. package/dist/src/core/remove.js +122 -0
  78. package/dist/src/core/review-queue.js +200 -0
  79. package/dist/src/core/runtime-tool-recipe.js +315 -0
  80. package/dist/src/core/runtime-tools.js +453 -0
  81. package/dist/src/core/safety.js +234 -0
  82. package/dist/src/core/sandbox.js +78 -0
  83. package/dist/src/core/scheduler.js +264 -0
  84. package/dist/src/core/share-report.js +85 -0
  85. package/dist/src/core/signing.js +115 -0
  86. package/dist/src/core/skill-compare.js +239 -0
  87. package/dist/src/core/skill-inventory.js +193 -0
  88. package/dist/src/core/skill-security.js +340 -0
  89. package/dist/src/core/skills-sh-discovery.js +336 -0
  90. package/dist/src/core/skills.js +208 -0
  91. package/dist/src/core/snapshot.js +210 -0
  92. package/dist/src/core/source.js +305 -0
  93. package/dist/src/core/state.js +300 -0
  94. package/dist/src/core/sync.js +348 -0
  95. package/dist/src/core/terminal.js +53 -0
  96. package/dist/src/core/transaction.js +211 -0
  97. package/dist/src/core/update-watch.js +39 -0
  98. package/dist/src/core/update.js +216 -0
  99. package/dist/src/core/upgrade.js +207 -0
  100. package/dist/src/dashboard.js +418 -0
  101. package/dist/src/shared/schemas.js +336 -0
  102. package/dist/src/shared/types.js +1 -0
  103. package/docs/ACTIVE_SET.md +53 -0
  104. package/docs/ACTIVE_SET_POLICY.md +45 -0
  105. package/docs/CANDIDATE_INTELLIGENCE.md +139 -0
  106. package/docs/CATALOG.md +78 -0
  107. package/docs/CATALOG_POLICY.md +41 -0
  108. package/docs/COMMUNITY_DISCOVERY.md +14 -0
  109. package/docs/COMPATIBILITY_POLICY.md +22 -0
  110. package/docs/CONVERSION_AND_SANDBOX.md +27 -0
  111. package/docs/CREDENTIAL_AND_UPDATE_POLICY.md +31 -0
  112. package/docs/DISCOVERED.md +280 -0
  113. package/docs/EVALUATION_PROTOCOL.md +40 -0
  114. package/docs/EVALUATION_PROTOCOL_V1.md +300 -0
  115. package/docs/FEATURE_TEST_MATRIX.md +802 -0
  116. package/docs/GITHUB_AUTHORIZATION.md +38 -0
  117. package/docs/HEAD_TO_HEAD_EVALUATION.md +79 -0
  118. package/docs/PROVENANCE_AND_COMPARISON.md +72 -0
  119. package/docs/PROVIDER_CONFIGURATION.md +45 -0
  120. package/docs/RELEASE_REVIEW.md +117 -0
  121. package/docs/SAFE_UPDATE_DEMO.md +25 -0
  122. package/docs/SCHEMA_DECISIONS.md +25 -0
  123. package/docs/TEAM_POLICY.md +18 -0
  124. package/docs/TESTING.md +190 -0
  125. package/package.json +82 -0
package/README.md ADDED
@@ -0,0 +1,453 @@
1
+ # Loadout
2
+
3
+ **One safe CLI to discover, compare, install, update, and roll back capabilities across AI coding agents.**
4
+
5
+ Loadout turns the fragmented world of Agent Skills, MCP servers, plugins, and agent-specific directories into one screened workflow. It detects the agents on your computer, inventories what you already have, prepares capabilities from immutable Git commits, explains conflicts before writing, and snapshots every managed change.
6
+
7
+ It supports Codex, Claude Code, Cursor, Gemini CLI, OpenCode, Hermes, Windsurf, Cline, GitHub Copilot, Roo Code, Kiro CLI, and Junie on macOS, Linux, and Windows.
8
+
9
+ > Loadout is in open-source beta and **has not been published to npm yet**. Use `npx .` from a clone today. The intended post-publication command is `npx loadout-ai`; the installed executable will be `loadout`.
10
+
11
+ ## Why Loadout exists
12
+
13
+ Useful agent extensions appear across dozens of repositories, social feeds, and incompatible marketplaces. A star count alone cannot tell you whether two collections overlap, whether a repository still works, what it will write, or how to undo the installation.
14
+
15
+ Loadout gives you:
16
+
17
+ - one inventory across supported agents;
18
+ - a 50-repository technically screened catalog pinned to exact commits;
19
+ - Stable, Power, Maximum, and Custom selection modes;
20
+ - project-aware activation instead of exposing an enormous library to every prompt;
21
+ - evidence-based comparison and replacement alerts;
22
+ - daily read-only discovery and update checks;
23
+ - explicit MCP configuration with native credential-store references;
24
+ - transactional installs, integrity checks, snapshots, and rollback;
25
+ - no execution of third-party repository install or lifecycle scripts.
26
+
27
+ Loadout does not claim there is one universally “best” configuration. It makes the evidence, trade-offs, and exact filesystem plan visible so the user can decide.
28
+
29
+ ## Run it locally
30
+
31
+ Requirements: Git and Node.js 20 or newer.
32
+
33
+ ```bash
34
+ git clone https://github.com/VirajMishra1/loadout.git
35
+ cd loadout
36
+ npm ci
37
+ npm run build
38
+ npx . --help
39
+ ```
40
+
41
+ Start with the unified read-only preview:
42
+
43
+ ```bash
44
+ npx . upgrade
45
+ ```
46
+
47
+ `upgrade` detects installed agents, inventories health, scores only evidence it can prove, scans the current project, recommends reviewed sources, fetches exact pinned commits, and prints every target and risk finding. Nothing changes until `--yes` is supplied.
48
+
49
+ ## The core journey
50
+
51
+ ```bash
52
+ # 1. Preview the strongest low-risk Stable journey. Read-only.
53
+ npx . upgrade --mode stable --project .
54
+
55
+ # 2. Apply exactly the displayed transaction.
56
+ npx . upgrade --mode stable --project . --yes
57
+
58
+ # 3. Inspect and optimize the active set for this project.
59
+ npx . library
60
+ npx . optimize --project .
61
+ npx . optimize --project . --yes
62
+
63
+ # 4. Explain health evidence, share a private aggregate card, or undo.
64
+ npx . health --explain
65
+ npx . card
66
+ npx . rollback
67
+ ```
68
+
69
+ `setup`, `scan`, `recommend`, and the other constituent commands remain available for advanced use. `upgrade --json` provides the same deterministic preview for automation.
70
+
71
+ `--approve-risk` acknowledges findings that were already printed during preview; it does not disable safety validation. The applied operation is transactional and produces a snapshot identifier.
72
+
73
+ For a real install-and-rollback exercise that cannot touch your profile:
74
+
75
+ ```bash
76
+ npx . demo
77
+ ```
78
+
79
+ The demo creates a temporary virtual Codex profile, fetches the pinned public Superpowers source, installs discovered skills, verifies managed state, rolls back, and deletes the temporary directory.
80
+
81
+ ## Choose a loadout
82
+
83
+ | Mode | Intended use | What it selects | Installation behavior |
84
+ | ----------- | ----------------------------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
85
+ | **Stable** | Recommended daily driver | 30 selected skills from four pinned, SPDX-identified sources | Installs the selected skills into detected agents with no extra static-risk approval |
86
+ | **Power** | Broad daily driver | A maintained skill-level allowlist from eight cross-project collections | Installs only the selected skills, not every skill in each collection |
87
+ | **Maximum** | Exploration and maximum optionality | Every non-archived technically screened catalog record | Stores all discovered skill components in Loadout's disabled library; MCP-only records remain explicit setup steps |
88
+ | **Custom** | Precise control | Only package IDs supplied by the user | Uses the same preview, safety, conflict, and transaction pipeline |
89
+
90
+ Maximum is a library, not an instruction to activate everything. Use `optimize`, `activate`, `enable`, and `disable` to keep each agent's active set bounded and relevant to the current project. Loadout warns when an active set exceeds 30 skills per agent.
91
+
92
+ ```bash
93
+ npx . setup --mode maximum
94
+ npx . setup --mode maximum --yes --approve-risk
95
+ npx . optimize --project . --limit 30
96
+ npx . optimize --project . --limit 30 --yes
97
+ ```
98
+
99
+ ## Install a reviewed runtime tool: Graphify
100
+
101
+ Graphify is not one of Stable's 30 portable skills. It is an executable codebase-intelligence tool, so Loadout gives it a separate, explicit recipe instead of silently running its repository installer. The recipe pins Graphify 0.9.17 to its reviewed Git commit and exact PyPI wheel SHA-256, isolates its Python runtime under Loadout state, strips provider credentials from installer subprocesses, snapshots every target, verifies the installed version, pins the generated runtime lookup, and supports removal.
102
+
103
+ Install [`uv`](https://docs.astral.sh/uv/getting-started/installation/) first, then preview before applying:
104
+
105
+ ```bash
106
+ # See every reviewed executable recipe.
107
+ npx . tool
108
+
109
+ # Preview the exact artifact, commands, permissions, and Codex target.
110
+ npx . tool graphify --agents codex
111
+
112
+ # Apply only after reviewing the preview.
113
+ npx . tool graphify --agents codex --yes --approve-risk
114
+
115
+ # Preview and then remove it, restoring the pre-install snapshot.
116
+ npx . tool graphify --remove
117
+ npx . tool graphify --remove --yes --approve-risk
118
+ ```
119
+
120
+ The same recipe has reviewed registration targets for Claude Code, Cursor, Gemini CLI, OpenCode, Hermes, GitHub Copilot, and Kiro CLI. Pass a comma-separated list such as `--agents codex,claude-code`; Loadout refuses requested agents it cannot detect.
121
+
122
+ ## What Loadout manages
123
+
124
+ The bundled catalog currently contains **50 credited public repositories** across **37 categories**: **31 have skill components** and **19 are MCP-only**. All 50 are technically screened and pinned; four sources currently satisfy the stricter Stable recommendation policy. See every linked source, license status, component type, and pinned commit in **[Catalog and upstream credits](./docs/CATALOG.md)**.
125
+
126
+ ```bash
127
+ npx . catalog
128
+ npx . catalog --coverage
129
+ npx . catalog --history superpowers
130
+ npx . search playwright
131
+ ```
132
+
133
+ Catalog admission is evidence-based. Every bundled record has an exact GitHub commit and repository-relative component evidence. Loadout reports separate trust stages—`discovered`, `inspected`, `human-reviewed`, `benchmarked`, and `recommended`—instead of calling every pinned record “best.” Stars are one bounded ranking input, not an installation threshold or a substitute for source review. Missing evidence receives no score, archived projects are not auto-selected, and unrelated categories are never presented as head-to-head alternatives.
134
+
135
+ `NOASSERTION` in the catalog means GitHub did not report an SPDX license identifier. It is a review flag—not a license grant and not an accusation. Upstream repositories and their current terms remain authoritative.
136
+
137
+ ## Find what is new
138
+
139
+ Discovery is deliberately separate from installation. It gathers leads and explains their evidence, but a newly popular repository cannot silently enter the trusted catalog or modify an agent.
140
+
141
+ **[Today's generated discovery report](./docs/DISCOVERED.md)** lists the latest candidates with direct repository links and supporting signals. Automation refreshes that page and its machine-readable companion at `catalog/discovered.json`; the signed 50-repository release catalog remains separate.
142
+
143
+ <!-- loadout:daily-discovery:start -->
144
+
145
+ **Discovery snapshot (generated 2026-07-16):** [242 repositories observed](./docs/DISCOVERED.md), including 219 uncataloged review candidates and 23 repositories already in the reviewed catalog.
146
+ <!-- loadout:daily-discovery:end -->
147
+
148
+ ```bash
149
+ # GitHub defaults to a rolling 180-day discovery window.
150
+ npx . discover --source github
151
+
152
+ # Public Hacker News API: current stories that link to GitHub.
153
+ npx . discover --source hacker-news --min-score 20
154
+ npx . discover --source hacker-news --query codex,mcp,agent
155
+
156
+ # skills.sh install telemetry (requires its request-scoped VERCEL_OIDC_TOKEN,
157
+ # or uses the last complete local cache).
158
+ npx . discover --source skills-sh --limit 50
159
+
160
+ # Official MCP Registry identity and distribution metadata.
161
+ npx . discover --source mcp-registry --limit 50
162
+
163
+ # Query all four sources independently and retain partial results.
164
+ npx . discover --source all --queue --json
165
+
166
+ # Inspect the deduplicated review queue.
167
+ npx . review-queue
168
+
169
+ # Triage today's generated feed with disclosed evidence.
170
+ npx . candidate list --limit 20
171
+
172
+ # Clone one lead, pin its commit, and statically inspect its real contents.
173
+ npx . candidate inspect owner/repository --output ./candidate-dossier.json
174
+ ```
175
+
176
+ Install both daily read-only jobs with one command:
177
+
178
+ ```bash
179
+ npx . autopilot --time 09:00 # preview both jobs
180
+ npx . autopilot --time 09:00 --yes # install both native schedules
181
+ npx . autopilot --remove --yes # remove both schedules
182
+ ```
183
+
184
+ Autopilot installs native schedules on macOS, Linux, and Windows using the pinned npm launcher for this Loadout version. It refreshes the local discovery/review queue and checks pinned package updates every day. It never installs a candidate, promotes a catalog record, or applies an update without a later explicit command and approval. Catalog membership changes only through a verified signed release.
185
+
186
+ Candidates stay in the review queue until a human decision. Shortlisting is not promotion, and promotion is not installation. Discovery state records observations over time so momentum can be measured without manufacturing a signal from a single snapshot.
187
+
188
+ `candidate inspect` is the missing bridge between “this repository is moving” and “this belongs in the catalog.” It creates a path-portable dossier containing the immutable Git commit, installability (`portable-components`, `explicit-runtime-setup`, or `unsupported-source-shape`), discovered skills/rules/commands/agents/plugins/MCP declarations, static safety findings, license status, and possible overlap with catalog packages. Runtime tools such as Graphify are not mislabeled as portable skill bundles. Inspection never runs repository scripts, hooks, MCP servers, lifecycle commands, or models.
189
+
190
+ After a human reviews that dossier, Loadout can create a catalog-record proposal without editing the catalog:
191
+
192
+ ```bash
193
+ npx . candidate propose ./candidate-dossier.json \
194
+ --id reviewed-id --category workflow \
195
+ --platforms windows,macos,linux
196
+
197
+ # Persist only after human review; this still does not mutate the catalog.
198
+ npx . candidate propose ./candidate-dossier.json \
199
+ --id reviewed-id --category workflow \
200
+ --platforms windows,macos,linux \
201
+ --approve --output ./reviewed-id.proposal.json
202
+ ```
203
+
204
+ See [Candidate intelligence and catalog trust](./docs/CANDIDATE_INTELLIGENCE.md) for the full admission and signed-release workflow.
205
+
206
+ ## Know what is already installed
207
+
208
+ ```bash
209
+ npx . status
210
+ npx . versions
211
+ npx . doctor
212
+ npx . health --explain
213
+ npx . capabilities
214
+ npx . compare <skill-name>
215
+ npx . adopt <skill-name> --agent codex
216
+ ```
217
+
218
+ `versions` invokes only bounded read-only `--version` commands with a sanitized environment. `health --explain` shows every scored dimension, cap, evidence item, uncertainty, and remediation; absent evidence receives zero rather than an invented neutral score.
219
+
220
+ `compare` uses fingerprints, embedded source evidence, names, capability relationships, and catalog evidence. A same-name result is a candidate match, never proof that two skills are identical. `adopt` takes Loadout ownership of one explicitly selected existing skill without changing its bytes.
221
+
222
+ ## Project-aware activation
223
+
224
+ The cache, reviewed library, installed state, and active agent directories are separate states. Loadout can therefore retain a broad reviewed library while exposing only a small working set.
225
+
226
+ ```bash
227
+ npx . recommend --project .
228
+ npx . activate --project . --limit 30
229
+ npx . optimize --project .
230
+ npx . optimize --project . --yes
231
+ npx . disable <package-or-package/skill>
232
+ npx . disable <package-or-package/skill> --yes
233
+ npx . enable <package-or-package/skill>
234
+ npx . enable <package-or-package/skill> --yes
235
+ ```
236
+
237
+ Dry-run is the default for mutations. Activation refuses unmanaged packages, drifted files, incomplete library copies, quarantined entries, and occupied targets.
238
+
239
+ ## MCP without hidden execution
240
+
241
+ Loadout separates four actions that other installers often blur together:
242
+
243
+ 1. inspect MCP evidence;
244
+ 2. preview a configuration change;
245
+ 3. apply that exact configuration with explicit risk approval;
246
+ 4. optionally launch one exact reviewed artifact for a bounded JSON-RPC connection check.
247
+
248
+ ```bash
249
+ npx . mcp --repository upstash/context7
250
+ npx . mcp-recipe playwright --config ./mcp.json
251
+ npx . mcp-recipe playwright --config ./mcp.json --verify
252
+ npx . mcp-recipe playwright --connect --approve-risk
253
+ ```
254
+
255
+ Credential-bearing recipes can reference the native OS credential store. Secrets are accepted through stdin, never written into Loadout JSON state, and injected only into the approved child process:
256
+
257
+ ```bash
258
+ printf '%s' "$GITHUB_PERSONAL_ACCESS_TOKEN" \
259
+ | npx . credentials set loadout.github --stdin
260
+
261
+ npx . mcp-recipe github-readonly --connect --approve-risk \
262
+ --credential GITHUB_PERSONAL_ACCESS_TOKEN=keychain:loadout.github
263
+ ```
264
+
265
+ Native backends are macOS Keychain, Linux Secret Service, and Windows Credential Manager. `mcp-recipe --connect` is opt-in, time-bounded, signal-cleaned, and restricted to the recipe's exact reviewed pin. General repository setup never launches third-party processes.
266
+
267
+ ## Reproducible team loadouts
268
+
269
+ ```bash
270
+ npx . init --name my-team
271
+ npx . add superpowers
272
+ npx . lock
273
+ npx . sync --manifest loadout.json # preview
274
+ npx . sync --manifest loadout.json --yes # apply transactionally
275
+ npx . audit --manifest loadout.json --lock loadout.lock
276
+ npx . export team.loadout.json --manifest loadout.json --lock loadout.lock
277
+ npx . import team.loadout.json # preview
278
+ ```
279
+
280
+ Manifests resolve catalog packages, Git repositories, local sources, and exact registry descriptors. Dependency cycles, incompatible versions, missing requirements, unsafe paths, and portable exports containing absolute local package paths are rejected. Imports do not silently replace files and snapshot destinations before an approved overwrite.
281
+
282
+ ## Updates, evidence, and recovery
283
+
284
+ ```bash
285
+ npx . alerts
286
+ npx . update
287
+ npx . update --package <package-id> --apply
288
+ npx . watch
289
+ npx . rollback
290
+ npx . audit --manifest loadout.json --lock loadout.lock
291
+ ```
292
+
293
+ Updates are planned before they are applied. Loadout checks managed hashes, reviewed commits, archive status, staleness evidence, permission changes, and replacement evidence. It will not treat a newer commit or a faster-growing repository as automatically safer or better.
294
+
295
+ `rollback` restores the most recent snapshot by default, or a specific snapshot with `--snapshot <id>`. Removal and configuration changes preserve unrelated files and unrelated MCP keys.
296
+
297
+ ## Reproducible evaluation and shareable evidence
298
+
299
+ Loadout now includes the versioned [Evaluation Protocol v1](./docs/EVALUATION_PROTOCOL_V1.md). A campaign can be validated, deterministically scheduled, and worst-case priced without contacting a model provider:
300
+
301
+ ```bash
302
+ npx . benchmark plan ./campaign.json
303
+ npx . benchmark plan ./campaign.json \
304
+ --run-id first-run --output ./benchmark-run.json --json
305
+ ```
306
+
307
+ Planning rejects unbounded or edited metadata and writes a resumable, content-free run record. It does **not** make a model call. The isolated paid runner and real fixture evidence remain separate release gates; Loadout will not label a source benchmarked from a plan alone.
308
+
309
+ Generate or compare privacy-safe aggregate artifacts:
310
+
311
+ ```bash
312
+ npx . report --json > before.json
313
+ npx . card --output LOADOUT_CARD.md
314
+ npx . report --json > after.json
315
+ npx . compare-loadouts before.json after.json
316
+ ```
317
+
318
+ The card excludes project paths and names, prompts, code, filenames, repository names, and credentials. Its Agent Health Score reports evidence coverage and explicitly does not claim universal quality or task improvement.
319
+
320
+ ## Supported agents and platforms
321
+
322
+ | Agent | Skill management | Additional native/adapted components |
323
+ | -------------- | -------------------------------------- | ---------------------------------------------------------------------------------------------- |
324
+ | Codex | Native | Agents and scoped root files are native; commands, MCP, and plugin contents are adapted |
325
+ | Claude Code | Native | Commands, agents, and scoped root files are native; MCP and plugin contents are adapted |
326
+ | Cursor | Native | Rules, commands, agents, and scoped root files are native; MCP and plugin contents are adapted |
327
+ | Gemini CLI | Native | Commands and scoped root files are native; plugin contents are adapted |
328
+ | OpenCode | Native, at `~/.config/opencode/skills` | Commands, agents, and scoped root files are native; plugin contents are adapted |
329
+ | Hermes | Native | Skills are the currently claimed automatic install path |
330
+ | Windsurf | Yes, at `~/.codeium/windsurf/skills` | Skills only |
331
+ | Cline | Yes, at `~/.cline/skills` | Skills only |
332
+ | GitHub Copilot | Yes, at `~/.copilot/skills` | Skills only |
333
+ | Roo Code | Yes, at `~/.roo/skills` | Skills only |
334
+ | Kiro CLI | Yes, at `~/.kiro/skills` | Skills only |
335
+ | Junie | Yes, at `~/.junie/skills` | Skills only |
336
+
337
+ Run `npx . capabilities` for the authoritative `native`, `adapted`, or `unsupported` matrix used by the planner itself. `npx . capabilities --gaps` turns every unsupported combination into an evidence-gated engineering backlog; unsupported components are skipped rather than falsely converted.
338
+
339
+ macOS, Linux, and native Windows paths are supported. WSL is intentionally treated as Linux and uses its POSIX `$HOME`; Loadout never silently crosses into the Windows profile under `/mnt/c`. `LOADOUT_USER_HOME` and `LOADOUT_HOME` provide isolated roots for testing.
340
+
341
+ ## Safety model
342
+
343
+ - **Preview first:** mutating commands are dry-run by default.
344
+ - **Immutable input:** screened sources are fetched at exact commits and verified.
345
+ - **Narrow copying:** setup copies discovered component directories; it does not run repository installers.
346
+ - **Transactional writes:** a failed multi-package operation restores prior state.
347
+ - **Owned-file boundaries:** remove and rollback touch only recorded managed targets.
348
+ - **Integrity checks:** drift blocks unsafe enable, update, and removal operations.
349
+ - **Conflict handling:** exact target collisions are resolved deterministically and reported; evidenced hard conflicts block the operation.
350
+ - **Secret boundaries:** credential values stay in the native OS store and out of manifests, lockfiles, reports, and logs.
351
+ - **Honest adapters:** the installer and capability report share the same compatibility matrix.
352
+ - **Explicit execution:** sandbox commands and real MCP connection checks require separate approval.
353
+
354
+ Read [Compatibility policy](./docs/COMPATIBILITY_POLICY.md), [Active-set contract](./docs/ACTIVE_SET.md), [Provenance and comparison](./docs/PROVENANCE_AND_COMPARISON.md), and [Credential and update policy](./docs/CREDENTIAL_AND_UPDATE_POLICY.md) for the precise contracts.
355
+
356
+ ## Command map
357
+
358
+ | Goal | Commands |
359
+ | ---------------------- | ------------------------------------------------------------------------------------ |
360
+ | Onboard | `upgrade`, `setup`, `scan`, `status`, `versions`, `health`, `demo` |
361
+ | Find and compare | `catalog`, `search`, `discover`, `candidate`, `review-queue`, `compare`, `recommend` |
362
+ | Manage active skills | `library`, `activate`, `optimize`, `enable`, `disable`, `adopt` |
363
+ | Maintain safely | `health`, `alerts`, `update`, `watch`, `remove`, `rollback`, `audit` |
364
+ | Share desired state | `init`, `add`, `unadd`, `lock`, `sync`, `export`, `import` |
365
+ | Configure MCP | `mcp`, `mcp-config`, `codex-mcp-config`, `mcp-recipe` |
366
+ | Credentials and models | `credentials`, `models` |
367
+ | Evaluate evidence | `benchmark`, `inspect`, `evaluate`, `head-to-head`, `canary`, `outcome` |
368
+ | Share safe evidence | `report`, `share`, `card`, `compare-loadouts` |
369
+ | Package and registry | `create`, `pack`, `publish`, `registry-serve` |
370
+ | Operate | `completion`, `autopilot`, `schedule`, `unschedule`, `tool`, `dashboard`, `serve` |
371
+
372
+ Use `npx . <command> --help` for exact options. Shell completion is available for Bash, Zsh, Fish, and PowerShell:
373
+
374
+ ```bash
375
+ npx . completion zsh > ~/.zfunc/_loadout
376
+ ```
377
+
378
+ ## How it works
379
+
380
+ ```mermaid
381
+ flowchart LR
382
+ A["Detect and scan agents"] --> B["Select screened sources"]
383
+ B --> C["Fetch exact Git commits"]
384
+ C --> D["Inspect skills and MCP evidence"]
385
+ D --> E["Resolve overlaps and safety findings"]
386
+ E --> F["Preview exact targets"]
387
+ F --> G{"Explicit approval?"}
388
+ G -->|No| H["No profile mutation"]
389
+ G -->|Yes| I["Snapshot and transactional apply"]
390
+ I --> J["Hash verification, health, rollback"]
391
+ ```
392
+
393
+ Loadout state lives outside the repository under `~/.loadout` by default. Agent content is written only to the detected agent's documented user directory. The optional dashboard is a loopback diagnostics surface; the full product journey remains available through the CLI.
394
+
395
+ ## Test everything before touching a real profile
396
+
397
+ The automated tests use disposable Loadout and user homes.
398
+
399
+ ```bash
400
+ npm run verify
401
+ ```
402
+
403
+ `verify` runs formatting, lint, typechecking, catalog/discovery evidence checks, all
404
+ unit and integration tests, the real CLI product flow, an installed npm-tarball smoke
405
+ test, and the 1,000-skill performance gate. Use `npm run verify:full` to include the
406
+ optional Playwright dashboard check.
407
+
408
+ Then follow **[the complete feature test matrix](./docs/FEATURE_TEST_MATRIX.md)** to
409
+ exercise every CLI command and authority boundary, or the shorter **[disposable
410
+ end-to-end guide](./docs/TESTING.md)** for Power/Maximum, optimization, lifecycle, and
411
+ rollback on virtual Codex and Claude Code profiles.
412
+
413
+ ## Current limits
414
+
415
+ - The npm package is prepared but not yet published.
416
+ - The bundled catalog is technically screened and finite; only the stricter Stable subset is currently marked recommended, and discovery leads do not auto-promote themselves.
417
+ - Public GitHub is the default source. Private GitHub discovery requires explicit authorization through an environment or native credential reference.
418
+ - Skill components are the only components installed automatically by broad setup. MCP-only records require an explicit recipe or configuration target.
419
+ - Executable tools are never smuggled into broad setup. Graphify has a separately previewed, pinned, credential-isolated, reversible runtime recipe; additional runtime tools still require the same reviewed-recipe treatment.
420
+ - Six catalog records currently have `NOASSERTION` license status and need upstream-license review before a public release decision.
421
+ - Additional component types are installed only where the adapter reports tested support. Loadout does not promise perfect conversion of arbitrary hooks, subagents, plugins, or proprietary formats.
422
+ - The included registry server is for local development or self-hosting. No public Loadout registry service is deployed.
423
+ - Ranking and evaluation explain bounded evidence; they do not scientifically prove that one configuration is best for every person or task.
424
+ - Benchmark campaign planning is implemented, but no bundled source is called benchmarked until the isolated runner, real fixtures, and signed promotion evidence are complete.
425
+
426
+ ## Contributing
427
+
428
+ Catalog additions need more than popularity. A proposal should include an immutable commit, inspectable component evidence, license status, supported platforms, category/overlap analysis, and a reason it improves the existing catalog. Discovery candidates should pass review before promotion.
429
+
430
+ Before opening a pull request:
431
+
432
+ ```bash
433
+ npm run verify
434
+ ```
435
+
436
+ Useful references:
437
+
438
+ - [Catalog and all upstream credits](./docs/CATALOG.md)
439
+ - [Daily generated discovery report](./docs/DISCOVERED.md)
440
+ - [Catalog ranking and conflict policy](./docs/CATALOG_POLICY.md)
441
+ - [Testing guide](./docs/TESTING.md)
442
+ - [Complete CLI feature test matrix](./docs/FEATURE_TEST_MATRIX.md)
443
+ - [Evaluation protocol](./docs/EVALUATION_PROTOCOL.md)
444
+ - [Community discovery policy](./docs/COMMUNITY_DISCOVERY.md)
445
+ - [Candidate intelligence and signed catalog trust](./docs/CANDIDATE_INTELLIGENCE.md)
446
+ - [Security policy](./SECURITY.md)
447
+ - [Canonical engineering plan](./MASTER_PLAN.md)
448
+
449
+ ## License
450
+
451
+ Loadout itself is licensed under the [MIT License](./LICENSE). Catalog entries remain governed by their respective upstream licenses and terms; inclusion is attribution and discovery metadata, not relicensing.
452
+
453
+ Built for the OpenAI Build Week **Developer Tools** category.
package/SECURITY.md ADDED
@@ -0,0 +1,18 @@
1
+ # Loadout threat model
2
+
3
+ Loadout handles third-party repositories and agent configuration, so its safety boundary is deliberately conservative.
4
+
5
+ ## Protected actions
6
+
7
+ - Repository discovery uses a shallow Git fetch and reads files; it does not run package managers, lifecycle hooks, binaries, or scripts.
8
+ - Updates are compared by commit and file hash before mutation.
9
+ - New or changed scripts, hooks, binaries, embedded secret-like material, and suspicious instruction patterns are blocking findings.
10
+ - Network domains and environment-variable names are reported without exposing values. They require review when a policy or caller treats them as sensitive.
11
+ - Blocked updates can be quarantined as metadata under `$LOADOUT_HOME/quarantine`. Quarantine never installs or executes the fetched repository.
12
+ - Approved changes still run through a transactional snapshot and rollback path; approval is a human acknowledgement, not a claim that the package is safe.
13
+
14
+ ## Explicit non-guarantees
15
+
16
+ Static inspection cannot prove that a package is benign. It may miss obfuscated behavior, interpreter-specific behavior, malicious content hidden in generated files, or risks introduced by an agent consuming a text instruction. Stars, repository age, and “official” labels are discovery signals, not security proofs.
17
+
18
+ Loadout does not currently sandbox arbitrary executables or automatically execute third-party installers. Users should review diffs, licenses, requested permissions, and provenance before approving a change.
package/SIMPLE_PLAN.md ADDED
@@ -0,0 +1,44 @@
1
+ # Loadout plan — simple version
2
+
3
+ Loadout's primary experience is CLI-first:
4
+
5
+ ```bash
6
+ npx loadout-ai
7
+ ```
8
+
9
+ It detects installed agents, scans the actual skills already present, and recommends a
10
+ small Stable foundation. Maximum Library and Custom are explicit alternatives. It
11
+ previews reviewed pinned sources, exact overlaps, capacity, and safety findings before
12
+ one rollback-safe transaction. The dashboard is optional diagnostics.
13
+
14
+ Loadout also provides the package-manager operations:
15
+
16
+ - Find, install, update, remove, create, share, and synchronize AI-agent add-ons.
17
+ - Work with skills, commands, rules, agents, plugins, and MCP tools.
18
+ - Support Codex, Claude Code, Cursor, and more from one setup file.
19
+
20
+ Loadout's four major advantages are:
21
+
22
+ 1. **Safety:** scan first, explain every change, block dangerous behavior, and never
23
+ touch unrelated files.
24
+ 2. **Recovery:** back up before changes and provide one-command undo.
25
+ 3. **Guidance:** check setup health and recommend tested add-on collections for the
26
+ user's project.
27
+ 4. **Optimization:** keep a broad reviewed library but expose only the best supported,
28
+ non-overlapping active set for the current agent and project.
29
+
30
+ The original build order was:
31
+
32
+ 1. Finish the reliable package-manager foundation.
33
+ 2. Match OpenPackage's package types, sources, synchronization, and publishing.
34
+ 3. Add health checks, security scanning, safe updates, recommendations, and profiles.
35
+ 4. Keep the dashboard optional and prove every supported platform with tests.
36
+
37
+ That foundation is now integrated on `main`. [MASTER_PLAN.md](./MASTER_PLAN.md) is the
38
+ only canonical checklist; contributor branches and notes are historical inputs, not
39
+ separate sources of project status. Phase 12 now tracks provenance for unmanaged
40
+ skills, evidence-backed comparison, library-versus-active-set state, safe adoption and
41
+ enable/disable, project activation, guided optimization, category evaluations, daily
42
+ review queues, provider/MCP workflows, CLI polish, npm publication, and public-beta
43
+ testing. Catalog expansion, legal review, keychains, additional adapters, and submission
44
+ work remain explicit rather than hidden behind earlier checked implementation proofs.