loadout-ai 0.4.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +40 -0
- package/MASTER_PLAN.md +106 -33
- package/README.md +57 -19
- package/catalog/discovered.json +8422 -6957
- package/catalog/packages.json +26 -0
- package/dist/src/cli.js +140 -68
- package/dist/src/core/active-policy.js +48 -8
- package/dist/src/core/active-set.js +1 -1
- package/dist/src/core/adopt.js +1 -1
- package/dist/src/core/catalog-coverage.js +2 -1
- package/dist/src/core/catalog-install.js +23 -8
- package/dist/src/core/cli-guide.js +5 -2
- package/dist/src/core/codex-mcp.js +49 -5
- package/dist/src/core/completion.js +0 -3
- package/dist/src/core/health.js +19 -11
- package/dist/src/core/install.js +3 -3
- package/dist/src/core/mcp-recipes.js +13 -4
- package/dist/src/core/mcp.js +6 -5
- package/dist/src/core/model-config.js +1 -1
- package/dist/src/core/portable.js +1 -1
- package/dist/src/core/recommend.js +34 -18
- package/dist/src/core/remove.js +28 -2
- package/dist/src/core/runtime-tool-recipe.js +2 -2
- package/dist/src/core/runtime-tools.js +15 -4
- package/dist/src/core/snapshot.js +20 -0
- package/dist/src/core/state.js +9 -0
- package/dist/src/core/sync.js +1 -1
- package/dist/src/core/transaction.js +2 -1
- package/dist/src/shared/schemas.js +1 -0
- package/docs/CATALOG.md +3 -2
- package/docs/DISCOVERED.md +253 -255
- package/docs/FEATURE_TEST_MATRIX.md +19 -32
- package/docs/GITHUB_AUTHORIZATION.md +2 -2
- package/docs/TESTING.md +3 -16
- package/docs/USER_TEST_GUIDE.md +23 -9
- package/docs/assets/loadout-workflow.png +0 -0
- package/docs/evidence/readme-claims.json +0 -8
- package/docs/superpowers/plans/2026-07-20-loadout-readme-explainer.md +116 -0
- package/docs/superpowers/specs/2026-07-20-loadout-readme-explainer-design.md +55 -0
- package/package.json +4 -6
- package/dashboard/app.js +0 -607
- package/dashboard/index.html +0 -249
- package/dashboard/styles.css +0 -384
- package/dist/src/core/demo.js +0 -136
- package/dist/src/dashboard.js +0 -421
|
@@ -112,26 +112,20 @@ Run the entire required gate with one command:
|
|
|
112
112
|
npm run verify
|
|
113
113
|
```
|
|
114
114
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
|
120
|
-
|
|
|
121
|
-
| `npm run
|
|
122
|
-
| `npm run
|
|
123
|
-
| `npm run
|
|
124
|
-
| `npm
|
|
125
|
-
| `npm test`
|
|
126
|
-
| `npm run test:e2e:
|
|
127
|
-
| `npm run test:
|
|
128
|
-
| `npm run test:
|
|
129
|
-
| `npm run test:performance` | Seven scans of 1,000 real on-disk skill directories | p95 remains below the enforced five-second budget. |
|
|
130
|
-
| `npm run test:e2e:dashboard` | Loopback dashboard first-run browser test | Playwright passes; no real profile is used. |
|
|
131
|
-
|
|
132
|
-
The dashboard test needs a Playwright browser. If the browser executable is absent,
|
|
133
|
-
run `npx playwright install chromium` once; that download is not a Loadout product
|
|
134
|
-
side effect.
|
|
115
|
+
`npm run verify:full` is an alias for the same CLI release gate. The individual stages
|
|
116
|
+
are listed below for focused reruns and diagnosis.
|
|
117
|
+
|
|
118
|
+
| Command | Coverage | Expected result |
|
|
119
|
+
| -------------------------- | ----------------------------------------------------------------------- | -------------------------------------------------- |
|
|
120
|
+
| `npm run format:check` | Repository formatting | Exit 0; no files changed. |
|
|
121
|
+
| `npm run lint` | TypeScript lint rules | Exit 0. |
|
|
122
|
+
| `npm run typecheck` | TypeScript contract | Exit 0. |
|
|
123
|
+
| `npm run check:evidence` | Catalog/discovery attribution, README claims, and release boundaries | Exit 0; no claim is silently promoted. |
|
|
124
|
+
| `npm test` | Unit, integration, native filesystem, safety, and regression suites | All tests pass. |
|
|
125
|
+
| `npm run test:e2e:cli` | Disposable scan → compare → optimize → apply → rollback journey | Prints a successful CLI product flow. |
|
|
126
|
+
| `npm run test:e2e:readme` | Isolated library/activation/manifest/card/rollback journey | Prints README 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. |
|
|
135
129
|
|
|
136
130
|
The focused regression contract for the v0.3.x profile lifecycle is:
|
|
137
131
|
|
|
@@ -361,11 +355,6 @@ and preserves matching active Stable units at the same reviewed commit; MCP-only
|
|
|
361
355
|
packages remain explicit setup items. `--approve-risk` acknowledges displayed static
|
|
362
356
|
findings but does not execute third-party repository scripts.
|
|
363
357
|
|
|
364
|
-
`loadout demo --json` is a shorter N smoke test. It creates its own isolated profile,
|
|
365
|
-
performs a real public-repository install and rollback, and must report that local
|
|
366
|
-
agent configuration was untouched. Add `--keep` only when you intend to inspect and
|
|
367
|
-
manually remove the printed demo directory.
|
|
368
|
-
|
|
369
358
|
## 5. Existing-skill provenance, adoption, comparison, and freshness (R/S/A)
|
|
370
359
|
|
|
371
360
|
Copy one harmless skill into the disposable unmanaged profile, then inspect it:
|
|
@@ -716,16 +705,14 @@ systemd/cron facility selected on Linux. `LOADOUT_HOME` does not make the native
|
|
|
716
705
|
scheduler disposable, so never skip the remove command. The lower-level `schedule`
|
|
717
706
|
and `unschedule` commands remain available for job-specific control.
|
|
718
707
|
|
|
719
|
-
|
|
708
|
+
The optional read-only loopback API can be checked separately:
|
|
720
709
|
|
|
721
710
|
```bash
|
|
722
711
|
loadout serve --port 0
|
|
723
|
-
loadout dashboard --port 0
|
|
724
712
|
```
|
|
725
713
|
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
interface.
|
|
714
|
+
Confirm that it binds only to `127.0.0.1`, inspect the API response, and stop it with
|
|
715
|
+
Ctrl-C. It must not bind a public interface.
|
|
729
716
|
|
|
730
717
|
## 11. Improvement-cycle records (S)
|
|
731
718
|
|
|
@@ -815,5 +802,5 @@ sections. Parenthesized numbers identify the track above.
|
|
|
815
802
|
`catalog-verify`, `catalog-update` (8, 9).
|
|
816
803
|
- MCP/conversion/sandbox: `mcp`, `inspect`, `evaluate`, `mcp-recipe`, `mcp-config`,
|
|
817
804
|
`codex-mcp-config`, `convert`, `sandbox-run` (7).
|
|
818
|
-
- Host/
|
|
819
|
-
`serve
|
|
805
|
+
- Host/automation surfaces: `completion`, `autopilot`, `schedule`, `unschedule`,
|
|
806
|
+
`serve` (10).
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Optional GitHub authorization
|
|
2
2
|
|
|
3
3
|
Public discovery remains anonymous. Private discovery is opt-in and begins only
|
|
4
|
-
when the user explicitly connects GitHub from the local CLI
|
|
4
|
+
when the user explicitly connects GitHub from the local CLI.
|
|
5
5
|
|
|
6
6
|
## Authorization model
|
|
7
7
|
|
|
@@ -15,7 +15,7 @@ issues, pull-request write, or repository-write permission is requested.
|
|
|
15
15
|
The app client ID, redirect URI, and application slug may be committed as public
|
|
16
16
|
configuration. The private key and client secret cannot: they belong to a hosted
|
|
17
17
|
broker or a user-controlled local credential manager. Loadout never asks the user to
|
|
18
|
-
paste a token into a manifest, catalog, log, or
|
|
18
|
+
paste a token into a manifest, catalog, log, or command argument.
|
|
19
19
|
|
|
20
20
|
## Local flow and failure modes
|
|
21
21
|
|
package/docs/TESTING.md
CHANGED
|
@@ -27,7 +27,7 @@ snapshot back:
|
|
|
27
27
|
npm run test:e2e:cli
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
-
This test does not use the
|
|
30
|
+
This test does not use the network, mock command output, or any real agent
|
|
31
31
|
profile. It is a required CI gate on Ubuntu; the manual cross-platform workflow runs
|
|
32
32
|
the broader native filesystem suite.
|
|
33
33
|
|
|
@@ -67,9 +67,8 @@ is universally safe. The opt-in `LOADOUT_TEST_LIVE_CATALOG=1` extension separate
|
|
|
67
67
|
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
|
-
Vitest suites, both CLI journeys, package smoke, and the performance gate.
|
|
71
|
-
`npm run verify:full`
|
|
72
|
-
dashboard browser test is also wanted.
|
|
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.
|
|
73
72
|
|
|
74
73
|
Current npm publication, the current pinned Stable repositories, and GitHub repository
|
|
75
74
|
settings are external state. Check them separately with:
|
|
@@ -281,18 +280,6 @@ output must never contain the token value; the config should contain only
|
|
|
281
280
|
explicit `--connect --approve-risk` verification path because an arbitrary MCP host
|
|
282
281
|
cannot resolve Loadout's keychain reference by itself.
|
|
283
282
|
|
|
284
|
-
## Optional dashboard
|
|
285
|
-
|
|
286
|
-
The dashboard is a secondary inspection surface, not the onboarding requirement:
|
|
287
|
-
|
|
288
|
-
```bash
|
|
289
|
-
npx . dashboard
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
Open the printed loopback URL. CLI setup, updates, removal, discovery, and rollback all
|
|
293
|
-
work without it. Browser automation is also optional and runs only when manually
|
|
294
|
-
dispatched in CI; locally, use `npm run test:e2e:dashboard`.
|
|
295
|
-
|
|
296
283
|
## Final cleanup test
|
|
297
284
|
|
|
298
285
|
```bash
|
package/docs/USER_TEST_GUIDE.md
CHANGED
|
@@ -40,17 +40,15 @@ receive different numbers of additions. `tool graphify` is also a preview; Graph
|
|
|
40
40
|
is a reviewed runtime tool and does not need an OpenAI or Anthropic API key for its
|
|
41
41
|
code-only install.
|
|
42
42
|
|
|
43
|
-
## 3.
|
|
43
|
+
## 3. Understand the three scopes
|
|
44
44
|
|
|
45
45
|
```bash
|
|
46
|
-
loadout
|
|
46
|
+
loadout profiles
|
|
47
47
|
```
|
|
48
48
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
project
|
|
52
|
-
require an in-page preview, acknowledgement, and a private local session token.
|
|
53
|
-
Stop the server with `Control-C`.
|
|
49
|
+
Stable keeps the active set at 30. Power deliberately activates a larger toolkit.
|
|
50
|
+
Maximum downloads the broadest screened skill library but keeps new entries disabled
|
|
51
|
+
until project optimization or an explicit enable action selects them.
|
|
54
52
|
|
|
55
53
|
## 4. Preview and install a profile
|
|
56
54
|
|
|
@@ -61,11 +59,12 @@ confirmation before changing files. A mutation creates a snapshot first.
|
|
|
61
59
|
# Recommended everyday skills
|
|
62
60
|
loadout setup --mode stable --agents codex,claude-code
|
|
63
61
|
|
|
64
|
-
# Broader daily-use selection (50 curated
|
|
62
|
+
# Broader daily-use selection (roughly 50 curated skills per agent)
|
|
65
63
|
loadout setup --mode power --agents codex,claude-code
|
|
66
64
|
|
|
67
65
|
# Download the broad reviewed library while keeping the active set controlled
|
|
68
66
|
loadout setup --mode maximum --agents codex,claude-code
|
|
67
|
+
loadout setup --mode maximum --agents codex,claude-code --details
|
|
69
68
|
```
|
|
70
69
|
|
|
71
70
|
Maximum stores reviewed copies in Loadout's disabled library; it does not expose the
|
|
@@ -142,6 +141,21 @@ them.
|
|
|
142
141
|
|
|
143
142
|
```bash
|
|
144
143
|
loadout mcp-recipe --no-key
|
|
144
|
+
loadout mcp-recipe --credential-free
|
|
145
|
+
|
|
146
|
+
# Preview, configure, verify, then remove Playwright for Codex
|
|
147
|
+
loadout mcp-recipe playwright --agent codex
|
|
148
|
+
loadout mcp-recipe playwright --agent codex --yes
|
|
149
|
+
loadout mcp-recipe playwright --agent codex --verify
|
|
150
|
+
loadout remove mcp-recipe:playwright:codex
|
|
151
|
+
loadout remove mcp-recipe:playwright:codex --yes
|
|
152
|
+
|
|
153
|
+
# Repeat independently for Claude Code
|
|
154
|
+
loadout mcp-recipe playwright --agent claude-code
|
|
155
|
+
loadout mcp-recipe playwright --agent claude-code --yes
|
|
156
|
+
loadout mcp-recipe playwright --agent claude-code --verify
|
|
157
|
+
loadout remove mcp-recipe:playwright:claude-code
|
|
158
|
+
loadout remove mcp-recipe:playwright:claude-code --yes
|
|
145
159
|
```
|
|
146
160
|
|
|
147
161
|
Expect Playwright MCP, Chrome DevTools MCP, and GitHub read-only. None requires a
|
|
@@ -169,7 +183,7 @@ cleanup deliberately deletes Loadout's snapshots, so it is the last lifecycle te
|
|
|
169
183
|
## Troubleshooting and recovery
|
|
170
184
|
|
|
171
185
|
- **`loadout` is not found after installation:** confirm `npm install --global
|
|
172
|
-
loadout-ai@0.
|
|
186
|
+
loadout-ai@0.5.0` completed, run `hash -r`, and confirm npm's global binary
|
|
173
187
|
directory is on `PATH`. For a source checkout, run `npm run build` and `npm link`.
|
|
174
188
|
- **A preview asks for `--approve-risk`:** read the reported scripts, domains,
|
|
175
189
|
credentials, binaries, or instruction findings. If you accept that specific plan,
|
|
Binary file
|
|
@@ -214,14 +214,6 @@
|
|
|
214
214
|
"tests/benchmark-campaign.test.ts"
|
|
215
215
|
]
|
|
216
216
|
},
|
|
217
|
-
{
|
|
218
|
-
"id": "dashboard.local",
|
|
219
|
-
"section": "Current beta limits",
|
|
220
|
-
"summary": "The dashboard presents local Loadout data and does not establish hosted-service availability.",
|
|
221
|
-
"evidenceClass": "integration-verified",
|
|
222
|
-
"status": "bounded",
|
|
223
|
-
"evidence": ["src/dashboard.ts", "tests/dashboard.test.ts"]
|
|
224
|
-
},
|
|
225
217
|
{
|
|
226
218
|
"id": "uninstall.complete",
|
|
227
219
|
"section": "Troubleshooting and uninstall",
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# Loadout README Explainer Implementation Plan
|
|
2
|
+
|
|
3
|
+
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
|
4
|
+
|
|
5
|
+
**Goal:** Generate and integrate an original Loadout workflow infographic that accurately explains the preview-first, recoverable extension lifecycle.
|
|
6
|
+
|
|
7
|
+
**Architecture:** A single project-owned PNG becomes the README hero while the existing SVG remains available. The README product-flow test locks the asset path and accessible description, and the normal verification suite guards product claims and repository integrity.
|
|
8
|
+
|
|
9
|
+
**Tech Stack:** Built-in image generation, PNG asset, Markdown/HTML README, Vitest, npm verification scripts, GitHub Actions.
|
|
10
|
+
|
|
11
|
+
## Global Constraints
|
|
12
|
+
|
|
13
|
+
- Use the exact five-stage order: Choose, Inspect, Preview, Apply, Undo.
|
|
14
|
+
- Name only checked-in supported agents: Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode, Windsurf, plus “+ 5 more adapters”.
|
|
15
|
+
- Use the exact footer: “Preview first · Managed changes · Snapshot-backed undo”.
|
|
16
|
+
- Do not add numerical safety, performance, popularity, or compatibility claims.
|
|
17
|
+
- Preserve `docs/assets/loadout-hero.svg`; create `docs/assets/loadout-workflow.png`.
|
|
18
|
+
- Use the exact alt text from the approved design spec.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
### Task 1: Lock the README integration contract
|
|
23
|
+
|
|
24
|
+
**Files:**
|
|
25
|
+
|
|
26
|
+
- Modify: `tests/readme-product-flow.test.ts`
|
|
27
|
+
- Test: `tests/readme-product-flow.test.ts`
|
|
28
|
+
|
|
29
|
+
**Interfaces:**
|
|
30
|
+
|
|
31
|
+
- Consumes: the current README hero assertion.
|
|
32
|
+
- Produces: a test contract for `./docs/assets/loadout-workflow.png` and the approved alt text.
|
|
33
|
+
|
|
34
|
+
- [ ] **Step 1: Update the hero assertion**
|
|
35
|
+
|
|
36
|
+
```ts
|
|
37
|
+
expect(readme).toContain(
|
|
38
|
+
'<img src="./docs/assets/loadout-workflow.png" alt="Loadout workflow: choose extensions, inspect sources, preview changes, apply through a managed snapshot, and undo safely across supported AI coding agents." width="960">',
|
|
39
|
+
);
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
- [ ] **Step 2: Run the focused test and verify red**
|
|
43
|
+
|
|
44
|
+
Run: `npx vitest run tests/readme-product-flow.test.ts`
|
|
45
|
+
|
|
46
|
+
Expected: FAIL because `README.md` still references `loadout-hero.svg`.
|
|
47
|
+
|
|
48
|
+
### Task 2: Generate and validate the infographic
|
|
49
|
+
|
|
50
|
+
**Files:**
|
|
51
|
+
|
|
52
|
+
- Create: `docs/assets/loadout-workflow.png`
|
|
53
|
+
- Preserve: `docs/assets/loadout-hero.svg`
|
|
54
|
+
|
|
55
|
+
**Interfaces:**
|
|
56
|
+
|
|
57
|
+
- Consumes: `docs/superpowers/specs/2026-07-20-loadout-readme-explainer-design.md` and the three supplied visual references.
|
|
58
|
+
- Produces: a wide, readable, original PNG suitable for a 960-pixel README presentation.
|
|
59
|
+
|
|
60
|
+
- [ ] **Step 1: Generate the project artwork**
|
|
61
|
+
|
|
62
|
+
Use built-in image generation with the supplied images as style references and this content contract: title “Your Agent Extensions, Under Control”; Choose → Inspect → Preview → Apply → Undo; a Loadout inventory card; the seven named agents; “+ 5 more adapters”; footer “Preview first · Managed changes · Snapshot-backed undo”; warm white hand-drawn infographic; no unsupported claims, logos, watermarks, gradients, shadows, or garbled text.
|
|
63
|
+
|
|
64
|
+
- [ ] **Step 2: Save the selected output**
|
|
65
|
+
|
|
66
|
+
Copy the generated artifact to `docs/assets/loadout-workflow.png` without modifying `docs/assets/loadout-hero.svg`.
|
|
67
|
+
|
|
68
|
+
- [ ] **Step 3: Inspect the saved PNG**
|
|
69
|
+
|
|
70
|
+
Open the workspace asset at original detail and verify every required label, composition, padding, and legibility. If any required text is wrong, perform one targeted image edit and inspect again.
|
|
71
|
+
|
|
72
|
+
### Task 3: Integrate and verify the README
|
|
73
|
+
|
|
74
|
+
**Files:**
|
|
75
|
+
|
|
76
|
+
- Modify: `README.md`
|
|
77
|
+
- Test: `tests/readme-product-flow.test.ts`
|
|
78
|
+
|
|
79
|
+
**Interfaces:**
|
|
80
|
+
|
|
81
|
+
- Consumes: `docs/assets/loadout-workflow.png` and the test contract from Task 1.
|
|
82
|
+
- Produces: the rendered README hero reference and accessible description.
|
|
83
|
+
|
|
84
|
+
- [ ] **Step 1: Replace the README hero reference**
|
|
85
|
+
|
|
86
|
+
```html
|
|
87
|
+
<img
|
|
88
|
+
src="./docs/assets/loadout-workflow.png"
|
|
89
|
+
alt="Loadout workflow: choose extensions, inspect sources, preview changes, apply through a managed snapshot, and undo safely across supported AI coding agents."
|
|
90
|
+
width="960"
|
|
91
|
+
/>
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
- [ ] **Step 2: Run the focused test and verify green**
|
|
95
|
+
|
|
96
|
+
Run: `npx vitest run tests/readme-product-flow.test.ts`
|
|
97
|
+
|
|
98
|
+
Expected: 9 passed and 1 skipped, with zero failures.
|
|
99
|
+
|
|
100
|
+
- [ ] **Step 3: Run the complete local gate**
|
|
101
|
+
|
|
102
|
+
Run: `npm run verify`
|
|
103
|
+
|
|
104
|
+
Expected: formatting, lint, type checking, evidence gates, 114 test files, CLI flow, README flow, package smoke, and performance checks all pass.
|
|
105
|
+
|
|
106
|
+
- [ ] **Step 4: Commit and push**
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
git add README.md docs/assets/loadout-workflow.png tests/readme-product-flow.test.ts docs/superpowers/plans/2026-07-20-loadout-readme-explainer.md
|
|
110
|
+
git commit -m "docs: add Loadout workflow explainer"
|
|
111
|
+
git push origin main
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
- [ ] **Step 5: Verify remote CI**
|
|
115
|
+
|
|
116
|
+
Run the normal push CI, then dispatch the full CI workflow on the final commit. Confirm the fast gate, Playwright diagnostics, and all six native OS/Node jobs complete successfully.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Loadout README Explainer Design
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Create one original README infographic that lets a first-time visitor understand Loadout in a few seconds: it turns a deliberate extension selection into a previewed, managed, and recoverable setup across supported AI coding agents.
|
|
6
|
+
|
|
7
|
+
The illustration may take broad inspiration from the supplied `code-review-graph` references—white space, hand-drawn lines, rounded cards, arrows, and a restrained multicolor palette—but must not reproduce their composition, wording, icons, or product claims.
|
|
8
|
+
|
|
9
|
+
## Selected Direction
|
|
10
|
+
|
|
11
|
+
Use a horizontal control-loop composition titled **“Your Agent Extensions, Under Control”**.
|
|
12
|
+
|
|
13
|
+
The center of the image contains five connected stages, in this exact order:
|
|
14
|
+
|
|
15
|
+
1. **Choose** — select a profile or packages.
|
|
16
|
+
2. **Inspect** — check pinned source and metadata.
|
|
17
|
+
3. **Preview** — see the plan before agent files change.
|
|
18
|
+
4. **Apply** — install through a managed snapshot.
|
|
19
|
+
5. **Undo** — roll back while protecting later edits.
|
|
20
|
+
|
|
21
|
+
The stages form a gentle left-to-right arc, with a return arrow from Undo toward Choose to suggest an intentional, repeatable lifecycle rather than a one-way installer.
|
|
22
|
+
|
|
23
|
+
Below the control loop, a single **Loadout** inventory card fans out to compact agent cards. Use only names supported by the checked-in adapter matrix: **Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode, and Windsurf**. A final small card reading **“+ 5 more adapters”** represents the remaining supported targets without overcrowding the graphic.
|
|
24
|
+
|
|
25
|
+
The footer contains the short summary **“Preview first · Managed changes · Snapshot-backed undo”**. Do not include numerical safety, performance, popularity, or compatibility claims.
|
|
26
|
+
|
|
27
|
+
## Visual Language
|
|
28
|
+
|
|
29
|
+
- Wide README-friendly raster infographic, approximately 16:9.
|
|
30
|
+
- Warm white background with generous breathing room.
|
|
31
|
+
- Loose hand-drawn marker lines and slightly imperfect rounded rectangles.
|
|
32
|
+
- Dark charcoal headings and outlines.
|
|
33
|
+
- Blue for selection and agent destinations, purple for inspection, orange for preview, green for apply, and coral for undo.
|
|
34
|
+
- Soft pastel fills with high-contrast text.
|
|
35
|
+
- No logos, mascots, screenshots, terminal chrome, photorealism, gradients, shadows, watermarks, or decorative clutter.
|
|
36
|
+
- All text must be legible at a README display width of 960 pixels.
|
|
37
|
+
|
|
38
|
+
## Repository Integration
|
|
39
|
+
|
|
40
|
+
- Save the final project asset as `docs/assets/loadout-workflow.png`.
|
|
41
|
+
- Keep the existing `docs/assets/loadout-hero.svg`; do not overwrite or delete it.
|
|
42
|
+
- Replace the top README image reference with the new PNG.
|
|
43
|
+
- Use this alt text: **“Loadout workflow: choose extensions, inspect sources, preview changes, apply through a managed snapshot, and undo safely across supported AI coding agents.”**
|
|
44
|
+
- Keep the existing centered 960-pixel presentation.
|
|
45
|
+
|
|
46
|
+
## Validation
|
|
47
|
+
|
|
48
|
+
The finished work is acceptable only if:
|
|
49
|
+
|
|
50
|
+
- the five stage labels and their order are accurate and readable;
|
|
51
|
+
- every named agent appears in the checked-in adapter capability matrix;
|
|
52
|
+
- no unsupported safety or performance claim is introduced;
|
|
53
|
+
- the PNG exists in the repository and the README references it with the specified alt text;
|
|
54
|
+
- visual inspection confirms a clean, original composition without clipped or garbled text;
|
|
55
|
+
- README product-flow tests, formatting, linting, type checking, evidence gates, unit tests, CLI flow, README flow, package smoke, performance checks, and remote CI all pass after integration.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "loadout-ai",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "Universal upgrade manager for AI coding agents",
|
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
},
|
|
11
11
|
"files": [
|
|
12
12
|
"dist/src",
|
|
13
|
-
"dashboard",
|
|
14
13
|
"catalog",
|
|
15
14
|
"docs",
|
|
16
15
|
"README.md",
|
|
@@ -41,17 +40,17 @@
|
|
|
41
40
|
"node": ">=20"
|
|
42
41
|
},
|
|
43
42
|
"scripts": {
|
|
43
|
+
"clean": "node scripts/clean-dist.mjs",
|
|
44
|
+
"prebuild": "npm run clean",
|
|
44
45
|
"build": "tsc -p tsconfig.json",
|
|
45
46
|
"prepack": "npm run build",
|
|
46
47
|
"dev": "tsx src/cli.ts",
|
|
47
|
-
"dashboard": "tsx src/dashboard.ts",
|
|
48
48
|
"format": "prettier --write .",
|
|
49
49
|
"format:check": "prettier --check .",
|
|
50
50
|
"lint": "eslint src tests vitest.config.ts",
|
|
51
51
|
"test": "vitest run",
|
|
52
52
|
"test:watch": "vitest",
|
|
53
53
|
"test:e2e": "npm run test:e2e:cli",
|
|
54
|
-
"test:e2e:dashboard": "playwright test",
|
|
55
54
|
"pretest:e2e:cli": "npm run build",
|
|
56
55
|
"test:e2e:cli": "node scripts/cli-product-flow.mjs",
|
|
57
56
|
"test:e2e:readme": "node scripts/readme-product-flow.mjs",
|
|
@@ -66,7 +65,7 @@
|
|
|
66
65
|
"check:evidence": "node scripts/check-catalog-attribution.mjs && node scripts/check-discovery-artifacts.mjs && npm run check:readme-claims && node --import tsx scripts/check-release-claims.ts",
|
|
67
66
|
"feed:build": "node --import tsx scripts/build-intelligence-feed.ts",
|
|
68
67
|
"verify": "npm run format:check && npm run lint && npm run typecheck && npm run check:evidence && npm test -- --run && npm run test:e2e:cli && npm run test:e2e:readme && npm run test:package && npm run test:performance",
|
|
69
|
-
"verify:full": "npm run verify
|
|
68
|
+
"verify:full": "npm run verify"
|
|
70
69
|
},
|
|
71
70
|
"dependencies": {
|
|
72
71
|
"commander": "^12.1.0",
|
|
@@ -74,7 +73,6 @@
|
|
|
74
73
|
},
|
|
75
74
|
"devDependencies": {
|
|
76
75
|
"@eslint/js": "^9.39.5",
|
|
77
|
-
"@playwright/test": "^1.61.1",
|
|
78
76
|
"@types/node": "^22.10.0",
|
|
79
77
|
"eslint": "^9.39.5",
|
|
80
78
|
"eslint-config-prettier": "^10.1.8",
|