loadout-ai 0.3.1 → 0.4.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 +42 -0
- package/MASTER_PLAN.md +86 -13
- package/README.md +157 -284
- package/dashboard/app.js +4 -4
- package/dashboard/index.html +4 -4
- package/dist/src/cli.js +27 -21
- package/dist/src/core/adapters.js +10 -0
- package/dist/src/core/adopt.js +165 -32
- package/dist/src/core/agent-health-score.js +2 -2
- package/dist/src/core/catalog-coverage.js +2 -1
- package/dist/src/core/catalog-install.js +8 -1
- package/dist/src/core/catalog-release.js +2 -1
- package/dist/src/core/conformance.js +74 -0
- package/dist/src/core/install.js +36 -3
- package/dist/src/core/profiles.js +9 -4
- package/dist/src/core/ranking.js +1 -1
- package/dist/src/core/readme-claims.js +10 -0
- package/dist/src/core/readme-facts.js +40 -0
- package/dist/src/core/recommend.js +9 -3
- package/dist/src/core/runtime-tools.js +5 -2
- package/dist/src/core/scheduler.js +2 -1
- package/dist/src/core/snapshot.js +58 -13
- package/dist/src/core/state.js +8 -1
- package/dist/src/core/transaction.js +2 -1
- package/dist/src/core/uninstall.js +26 -2
- package/dist/src/dashboard.js +5 -2
- package/dist/src/shared/schemas.js +57 -0
- package/docs/FEATURE_TEST_MATRIX.md +16 -0
- package/docs/README_RESEARCH.md +36 -0
- package/docs/RELEASE_REVIEW.md +31 -5
- package/docs/REPOSITORY_STABILIZATION.md +190 -0
- package/docs/TESTING.md +50 -0
- package/docs/USER_TEST_GUIDE.md +26 -0
- package/docs/assets/loadout-hero.svg +259 -0
- package/docs/assets/loadout-mark.svg +54 -0
- package/docs/evidence/live-checks-2026-07-19.json +22 -0
- package/docs/evidence/live-checks.schema.json +28 -0
- package/docs/evidence/readme-claims.json +286 -0
- package/docs/superpowers/plans/2026-07-19-relatable-readme-hero.md +283 -0
- package/docs/superpowers/specs/2026-07-19-relatable-readme-hero-design.md +80 -0
- package/package.json +8 -4
- package/SIMPLE_PLAN.md +0 -44
- package/docs/plans/2026-07-18-release-0.3.md +0 -42
- package/docs/superpowers/plans/2026-07-18-cli-ux-polish.md +0 -86
package/README.md
CHANGED
|
@@ -1,370 +1,243 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="./docs/assets/loadout-hero.svg" alt="A developer arranging extensions from a messy, unmanaged group into organized loadout slots" width="960">
|
|
3
|
+
</p>
|
|
2
4
|
|
|
3
|
-
|
|
5
|
+
<h1 align="center">Loadout</h1>
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
<p align="center"><strong>Agent extensions, under control.</strong></p>
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
<p align="center">
|
|
10
|
+
A local CLI for inspecting, previewing, installing, and undoing managed extensions for AI coding agents.
|
|
11
|
+
</p>
|
|
8
12
|
|
|
9
|
-
|
|
13
|
+
<p align="center">
|
|
14
|
+
<a href="https://github.com/VirajMishra1/loadout/actions/workflows/ci.yml"><img src="https://github.com/VirajMishra1/loadout/actions/workflows/ci.yml/badge.svg" alt="CI status"></a>
|
|
15
|
+
<a href="./package.json"><img src="https://img.shields.io/badge/Node.js-%3E%3D20-339933?logo=node.js&logoColor=white" alt="Node.js 20 or newer"></a>
|
|
16
|
+
<a href="./LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="MIT License"></a>
|
|
17
|
+
</p>
|
|
10
18
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
`loadout upgrade` is a read-only preview. It detects your installed agents, checks what you already have, scans the current project, recommends useful additions, and shows the exact files it would change.
|
|
19
|
+
<p align="center">
|
|
20
|
+
<a href="#how-it-works">How it works</a> ·
|
|
21
|
+
<a href="#install">Install</a> ·
|
|
22
|
+
<a href="#profiles">Profiles</a> ·
|
|
23
|
+
<a href="#trust-and-limits">Trust</a> ·
|
|
24
|
+
<a href="#command-reference">Commands</a> ·
|
|
25
|
+
<a href="#development">Development</a>
|
|
26
|
+
</p>
|
|
20
27
|
|
|
21
|
-
|
|
28
|
+
> [!IMPORTANT]
|
|
29
|
+
> Installation is version-pinned so the code you test matches these docs. The commands below target `loadout-ai@0.4.0`; review the preview before every apply.
|
|
22
30
|
|
|
23
|
-
|
|
24
|
-
loadout upgrade --yes
|
|
25
|
-
```
|
|
31
|
+
## How it works
|
|
26
32
|
|
|
27
|
-
|
|
33
|
+
**Choose -> Inspect -> Preview -> Apply -> Undo**
|
|
28
34
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
with a preview-first command:
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
loadout uninstall
|
|
38
|
-
loadout uninstall --yes
|
|
39
|
-
loadout uninstall --yes --remove-cli
|
|
40
|
-
```
|
|
35
|
+
1. **Choose** a bounded profile or explicit packages.
|
|
36
|
+
2. **Inspect** pinned source and catalog metadata separately before setup.
|
|
37
|
+
3. **Preview** detected agents, aggregate repository, directory, and collision counts, warnings, skipped entries, and package IDs needing approval without changing agent target files.
|
|
38
|
+
4. **Apply** by rerunning with `--yes`; Loadout recomputes from current state before using a snapshot-backed transaction.
|
|
39
|
+
5. **Undo** the latest supported mutation with drift checks that protect later edits.
|
|
41
40
|
|
|
42
|
-
|
|
43
|
-
stops if a Loadout-managed file contains your edits unless you explicitly add
|
|
44
|
-
`--force`.
|
|
41
|
+
### Abridged terminal transcript
|
|
45
42
|
|
|
46
|
-
|
|
43
|
+
This is an explicitly abridged transcript from a disposable, single-Codex Stable run. A literal `…` marks omitted fetch output; `<snapshot-id>` is a variable placeholder because snapshot IDs vary.
|
|
47
44
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
45
|
+
```console
|
|
46
|
+
$ loadout setup --mode stable --agents codex
|
|
47
|
+
…
|
|
48
|
+
Loadout: Stable Boost
|
|
49
|
+
Detected agents: Codex
|
|
50
|
+
Catalog selection: 4 repositories
|
|
51
|
+
Ready to install: 4 skill repositories (30 agent skill directories)
|
|
52
|
+
Preview complete; nothing was changed. Re-run with --yes to install this exact screened plan.
|
|
54
53
|
|
|
55
|
-
|
|
54
|
+
$ loadout setup --mode stable --agents codex --yes
|
|
55
|
+
…
|
|
56
|
+
Loadout installed 4 repositories for 1 agent(s). Snapshot: <snapshot-id>
|
|
56
57
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
loadout setup --mode power
|
|
60
|
-
loadout setup --mode maximum
|
|
58
|
+
$ loadout rollback
|
|
59
|
+
Restored snapshot <snapshot-id>
|
|
61
60
|
```
|
|
62
61
|
|
|
63
|
-
|
|
62
|
+
The final preview sentence above is captured CLI wording. A later `--yes` invocation recomputes the plan from pinned sources and current agent and filesystem state; it does not persist or prove identity with the earlier preview.
|
|
64
63
|
|
|
65
|
-
|
|
66
|
-
loadout setup --mode stable --yes
|
|
67
|
-
loadout setup --mode power --yes --approve-risk
|
|
68
|
-
loadout setup --mode maximum --yes --approve-risk
|
|
69
|
-
```
|
|
64
|
+
Preview may populate Loadout's own cache; it leaves agent target files unchanged. Review its aggregate counts, warnings, skipped entries, and package IDs needing approval before deciding whether to run a later apply command.
|
|
70
65
|
|
|
71
|
-
|
|
66
|
+
## Why Loadout
|
|
72
67
|
|
|
73
|
-
|
|
68
|
+
Skills, plugins, MCP servers, and agent settings tend to accumulate one experiment at a time. Eventually it becomes hard to remember what is installed, where it came from, or how to undo it. In a game, a loadout is the deliberate set of tools chosen before a mission. Loadout brings that same discipline to AI coding agents: inspect the available equipment, choose intentionally, apply it through managed changes, and remove or roll it back later.
|
|
74
69
|
|
|
75
|
-
|
|
70
|
+
- **One managed inventory.** List installed packages, inspect drift, and track what Loadout owns across configured agent paths.
|
|
71
|
+
- **Preview by default.** Setup, updates, removal, MCP recipes, and uninstall expose a plan before their supported writes.
|
|
72
|
+
- **Recoverable changes.** Snapshots and managed-file hashes support rollback while refusing to overwrite later user edits.
|
|
76
73
|
|
|
77
|
-
|
|
74
|
+
## Install
|
|
78
75
|
|
|
79
|
-
|
|
80
|
-
2. **Inspect the real contents.** Find skills, MCP declarations, plugins, commands, agents, and executable setup requirements.
|
|
81
|
-
3. **Check trust evidence.** Record the exact Git commit, license status, source paths, maintenance signals, overlaps, and static safety findings.
|
|
82
|
-
4. **Compare like with like.** A testing tool is compared with testing tools, not with an unrelated design skill.
|
|
83
|
-
5. **Choose a tier.** Stable is the strongest bounded default; Power is broader; Maximum keeps the full reviewed library available.
|
|
84
|
-
6. **Keep watching.** New candidates and changes are recorded every day, but nothing is silently promoted or installed.
|
|
76
|
+
You need Node.js 20 or newer and Git.
|
|
85
77
|
|
|
86
|
-
|
|
78
|
+
```bash
|
|
79
|
+
npm install --global loadout-ai@0.4.0
|
|
80
|
+
loadout --version
|
|
81
|
+
loadout guide
|
|
82
|
+
```
|
|
87
83
|
|
|
88
|
-
|
|
84
|
+
For source development instead:
|
|
89
85
|
|
|
90
|
-
|
|
86
|
+
```bash
|
|
87
|
+
git clone https://github.com/VirajMishra1/loadout.git
|
|
88
|
+
cd loadout
|
|
89
|
+
npm ci
|
|
90
|
+
npm run build
|
|
91
|
+
npm link
|
|
92
|
+
loadout --version
|
|
93
|
+
```
|
|
91
94
|
|
|
92
|
-
|
|
95
|
+
For a disposable first success, run:
|
|
93
96
|
|
|
94
97
|
```bash
|
|
95
|
-
loadout
|
|
98
|
+
loadout demo
|
|
96
99
|
```
|
|
97
100
|
|
|
98
|
-
|
|
101
|
+
The demo uses temporary state and cleans it up; it does not write to your normal agent configuration. See the [user test guide](./docs/USER_TEST_GUIDE.md) if linking, `PATH`, networking, risk approval, or rollback needs attention.
|
|
99
102
|
|
|
100
|
-
|
|
103
|
+
## Stable workflow
|
|
101
104
|
|
|
102
105
|
```bash
|
|
103
|
-
|
|
104
|
-
loadout
|
|
105
|
-
loadout optimize --project . --limit 30 --yes
|
|
106
|
-
```
|
|
106
|
+
# Preview for detected agents
|
|
107
|
+
loadout setup --mode stable
|
|
107
108
|
|
|
108
|
-
|
|
109
|
+
# Recompute from current state and apply after reviewing the preview
|
|
110
|
+
loadout setup --mode stable --yes
|
|
109
111
|
|
|
110
|
-
|
|
111
|
-
loadout
|
|
112
|
-
loadout
|
|
113
|
-
loadout
|
|
112
|
+
# Inspect managed state, then undo the latest supported mutation
|
|
113
|
+
loadout list
|
|
114
|
+
loadout health --explain
|
|
115
|
+
loadout rollback
|
|
114
116
|
```
|
|
115
117
|
|
|
116
|
-
|
|
118
|
+
Stable currently selects 30 skill directories from four pinned, SPDX-identified, policy-selected public sources. Selection policy is evidence, not a claim that the sources are safe, trusted, human-reviewed, benchmarked, or the right choice for every user.
|
|
117
119
|
|
|
118
|
-
|
|
120
|
+
## Profiles
|
|
119
121
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
+
| Profile | Scope |
|
|
123
|
+
| ----------- | ---------------------------------------------------------------------- |
|
|
124
|
+
| **Stable** | Bounded default: 30 skills from four policy-selected sources |
|
|
125
|
+
| **Power** | Broader cross-project set from eight checked-in collections |
|
|
126
|
+
| **Maximum** | Valid skill-bearing contents in a managed, disabled-by-default library |
|
|
127
|
+
| **Custom** | Only package IDs explicitly supplied by the user |
|
|
122
128
|
|
|
123
|
-
|
|
129
|
+
Preview choices with `loadout profiles` and `loadout setup --mode <profile>`. Maximum counts are computed from pinned contents after validation and duplicate resolution; MCP-only entries stay on a separate approval path.
|
|
124
130
|
|
|
125
|
-
|
|
126
|
-
loadout autopilot --time 09:00 # preview
|
|
127
|
-
loadout autopilot --time 09:00 --yes # enable
|
|
128
|
-
loadout autopilot --remove --yes # remove
|
|
129
|
-
```
|
|
131
|
+
## Catalog and discovery
|
|
130
132
|
|
|
131
|
-
|
|
133
|
+
<!-- loadout:catalog-coverage:start -->
|
|
132
134
|
|
|
133
|
-
|
|
135
|
+
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; 4 sources are selected by the bounded Stable policy. See every linked source, license status, component type, and pinned commit in **[Catalog and upstream credits](./docs/CATALOG.md)**.
|
|
134
136
|
|
|
135
|
-
|
|
136
|
-
loadout review-queue
|
|
137
|
-
loadout candidate list --limit 20
|
|
138
|
-
loadout alerts --updates
|
|
139
|
-
loadout update
|
|
140
|
-
```
|
|
137
|
+
<!-- loadout:catalog-coverage:end -->
|
|
141
138
|
|
|
142
|
-
|
|
143
|
-
managed repository. It is read-only. `loadout update --yes` applies reviewed profile
|
|
144
|
-
changes and safe screened updates; anything disabled, risky, or failed is held for
|
|
145
|
-
review. Daily checks never include `--yes`.
|
|
139
|
+
<!-- loadout:evidence-stages:start -->
|
|
146
140
|
|
|
147
|
-
|
|
141
|
+
Catalog evidence-stage counts: **0 benchmarked**, **0 discovered**, **0 human-reviewed**, **46 inspected**, **4 policy-selected**. Stage definitions and Stable selection criteria are in the [catalog policy](./docs/CATALOG_POLICY.md).
|
|
148
142
|
|
|
149
|
-
-
|
|
150
|
-
- An **available update** is a different reviewed commit, not automatically better.
|
|
151
|
-
- A **replacement alert** appears only when category-specific comparison evidence supports it.
|
|
143
|
+
<!-- loadout:evidence-stages:end -->
|
|
152
144
|
|
|
153
|
-
Loadout
|
|
154
|
-
|
|
155
|
-
The repository also refreshes a public discovery report every day:
|
|
145
|
+
Loadout does not claim there is one universally “best” configuration. Recommendations are bounded, rule-based proposals; stars and discovery results are signals for review, not quality proof.
|
|
156
146
|
|
|
157
147
|
<!-- loadout:daily-discovery:start -->
|
|
158
148
|
|
|
159
|
-
**Discovery snapshot (generated 2026-07-17):** [242 repositories observed](./docs/DISCOVERED.md), including 219 uncataloged review candidates and 23 repositories already in the
|
|
149
|
+
**Discovery snapshot (generated 2026-07-17):** [242 repositories observed](./docs/DISCOVERED.md), including 219 uncataloged review candidates and 23 repositories already in the inspected catalog.
|
|
160
150
|
<!-- loadout:daily-discovery:end -->
|
|
161
151
|
|
|
162
|
-
|
|
152
|
+
The checked-in discovery report proves only its dated snapshot, not the success of every scheduled run. Use `loadout discover --source all --queue`, `loadout review-queue`, and `loadout candidate inspect owner/repository` to inspect candidates before catalog promotion.
|
|
163
153
|
|
|
164
|
-
|
|
154
|
+
## Trust and limits
|
|
165
155
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
156
|
+
- A pinned commit identifies source bytes; it does not prove safety, correct licensing, usefulness, or future compatibility.
|
|
157
|
+
- Static inspection reports scripts, hooks, binaries, domains, credential references, and unsupported components. It is not a security audit.
|
|
158
|
+
- No bundled source is called benchmarked until isolated real trials, signed evidence, and human approval exist.
|
|
159
|
+
- Project recommendations read bounded local metadata. The documented local flow does not upload project source.
|
|
160
|
+
- Catalog fetches, discovery, update checks, and optional live checks use the network where stated.
|
|
161
|
+
- MCP servers and executable tools have separate preview and approval paths because they can use credentials, start processes, or contact services.
|
|
162
|
+
- Shared manifests hold environment-variable or OS-keychain references, not secret values.
|
|
171
163
|
|
|
172
|
-
|
|
164
|
+
<!-- loadout:current-limits:start -->
|
|
173
165
|
|
|
174
|
-
|
|
166
|
+
- **6 catalog records** currently have `NOASSERTION` license status and need upstream-license review before a public release decision.
|
|
175
167
|
|
|
176
|
-
|
|
168
|
+
<!-- loadout:current-limits:end -->
|
|
177
169
|
|
|
178
|
-
|
|
170
|
+
Read the [security policy](./SECURITY.md), [catalog policy](./docs/CATALOG_POLICY.md), and [credential and update policy](./docs/CREDENTIAL_AND_UPDATE_POLICY.md) before trusting third-party content.
|
|
179
171
|
|
|
180
|
-
|
|
181
|
-
loadout setup --mode stable --api-access none
|
|
182
|
-
loadout setup --mode maximum --api-access openai,anthropic
|
|
183
|
-
```
|
|
172
|
+
## Agent support
|
|
184
173
|
|
|
185
|
-
|
|
174
|
+
<!-- loadout:support-summary:start -->
|
|
186
175
|
|
|
187
|
-
See the
|
|
176
|
+
Loadout's adapter capability matrix currently covers **12 agents**: Claude Code, Cline, Codex, Cursor, Gemini CLI, GitHub Copilot, Hermes, Junie, Kiro CLI, OpenCode, Roo Code, Windsurf. See the [complete feature matrix](./docs/FEATURE_TEST_MATRIX.md) for configured paths, filesystem lifecycle, platform, and native-host evidence.
|
|
188
177
|
|
|
189
|
-
|
|
190
|
-
loadout mcp-recipe --no-key
|
|
191
|
-
```
|
|
178
|
+
`tests/adapter-conformance.test.ts` plans, applies, inspects, disables, re-enables, and rolls back one skill for every configured target when the suite runs. A configured target path does not prove that the native application recognizes or executes it. Native application execution is not inferred from filesystem simulation.
|
|
192
179
|
|
|
193
|
-
|
|
194
|
-
shows non-AI credentials separately: GitHub MCP needs a GitHub token, while the two
|
|
195
|
-
browser recipes need no credential. Use `loadout mcp-recipe --credential-free` for the
|
|
196
|
-
stricter zero-credential list. Browser control and service authorization remain
|
|
197
|
-
explicit.
|
|
180
|
+
Configured platform evidence: Linux (CI configured), macOS (CI configured), Windows (CI configured).
|
|
198
181
|
|
|
199
|
-
|
|
200
|
-
export LOADOUT_GITHUB_TOKEN="$GITHUB_PERSONAL_ACCESS_TOKEN"
|
|
182
|
+
Platform evidence source: `.github/workflows/ci.yml (cross-platform job)`.
|
|
201
183
|
|
|
202
|
-
|
|
203
|
-
--credential GITHUB_PERSONAL_ACCESS_TOKEN=env:LOADOUT_GITHUB_TOKEN
|
|
184
|
+
Configured CI platforms describe a manually triggered workflow, not evidence that a current run passed.
|
|
204
185
|
|
|
205
|
-
loadout
|
|
206
|
-
--credential GITHUB_PERSONAL_ACCESS_TOKEN=env:LOADOUT_GITHUB_TOKEN \
|
|
207
|
-
--yes
|
|
208
|
-
```
|
|
186
|
+
<!-- loadout:support-summary:end -->
|
|
209
187
|
|
|
210
|
-
|
|
188
|
+
Configured paths and disposable filesystem lifecycle tests do not prove that native applications recognize or execute installed skills. Use `loadout capabilities --inspect` for the local component matrix.
|
|
211
189
|
|
|
212
|
-
|
|
190
|
+
## Command reference
|
|
213
191
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
loadout
|
|
218
|
-
loadout
|
|
219
|
-
|
|
192
|
+
| Job | Command |
|
|
193
|
+
| ---------------------------------- | ------------------------------------------- |
|
|
194
|
+
| Guided read-only path | `loadout guide` |
|
|
195
|
+
| Preview or apply a profile | `loadout setup --mode stable [--yes]` |
|
|
196
|
+
| List and inspect managed state | `loadout list`; `loadout health --explain` |
|
|
197
|
+
| Browse or search | `loadout catalog`; `loadout search <words>` |
|
|
198
|
+
| Recommend for a project | `loadout recommend --project .` |
|
|
199
|
+
| Preview or apply updates | `loadout update [--yes]` |
|
|
200
|
+
| Undo the latest supported mutation | `loadout rollback` |
|
|
201
|
+
| Remove one managed package | `loadout remove <package>` |
|
|
202
|
+
| Preview complete removal | `loadout uninstall` |
|
|
203
|
+
| Test with temporary state | `loadout demo` |
|
|
204
|
+
| Discover the full surface | `loadout --help`; `loadout advanced` |
|
|
220
205
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
## Useful commands
|
|
224
|
-
|
|
225
|
-
| Goal | Command |
|
|
226
|
-
| ----------------------------------------- | --------------------------------------------- |
|
|
227
|
-
| See the guided upgrade | `loadout upgrade` |
|
|
228
|
-
| Install a loadout | `loadout setup --mode stable\|power\|maximum` |
|
|
229
|
-
| See detected agents and installed skills | `loadout status` |
|
|
230
|
-
| Inspect health and evidence | `loadout health --explain` |
|
|
231
|
-
| Browse the reviewed catalog | `loadout catalog` |
|
|
232
|
-
| Search by capability | `loadout search <words>` |
|
|
233
|
-
| Recommend for a project | `loadout recommend --project .` |
|
|
234
|
-
| Activate relevant library skills | `loadout optimize --project .` |
|
|
235
|
-
| Find new repositories | `loadout discover --source all --queue` |
|
|
236
|
-
| Read the discovery queue | `loadout review-queue` |
|
|
237
|
-
| Check installed changes | `loadout alerts --updates` |
|
|
238
|
-
| Preview updates | `loadout update` |
|
|
239
|
-
| Apply all safe reviewed updates | `loadout update --yes` |
|
|
240
|
-
| Undo the latest applied change | `loadout rollback` |
|
|
241
|
-
| Completely remove Loadout | `loadout uninstall` |
|
|
242
|
-
| Test safely without touching your profile | `loadout demo` |
|
|
243
|
-
| See every command | `loadout --help` |
|
|
244
|
-
|
|
245
|
-
Shell completion is available for Bash, Zsh, Fish, and PowerShell:
|
|
206
|
+
## Development
|
|
246
207
|
|
|
247
208
|
```bash
|
|
248
|
-
|
|
209
|
+
npm ci
|
|
210
|
+
npm run verify
|
|
211
|
+
npm run verify:full
|
|
249
212
|
```
|
|
250
213
|
|
|
251
|
-
|
|
214
|
+
<!-- loadout:verification-summary:start -->
|
|
252
215
|
|
|
253
|
-
|
|
216
|
+
`verify` invokes `format:check`, `lint`, `typecheck`, `check:evidence`, `test`, `test:e2e:cli`, `test:e2e:readme`, `test:package`, `test:performance` in that order. Use `npm run verify:full` to include the optional Playwright dashboard check.
|
|
254
217
|
|
|
255
|
-
|
|
256
|
-
2. inspects the selected contents;
|
|
257
|
-
3. resolves duplicate target names;
|
|
258
|
-
4. prints safety findings and every destination;
|
|
259
|
-
5. waits for explicit approval;
|
|
260
|
-
6. snapshots the old state;
|
|
261
|
-
7. applies the change as one transaction;
|
|
262
|
-
8. records hashes for later drift checks and rollback.
|
|
218
|
+
<!-- loadout:verification-summary:end -->
|
|
263
219
|
|
|
264
|
-
|
|
220
|
+
The repository's mixed README product-flow test uses an isolated build, disposable state, an offline fixture, direct core calls, and CLI subprocesses. It does not prove live-network availability or behavior inside native agent applications. The [testing guide](./docs/TESTING.md) documents the exact checks and their boundaries.
|
|
265
221
|
|
|
266
|
-
##
|
|
222
|
+
## Documentation
|
|
267
223
|
|
|
268
|
-
|
|
224
|
+
- [Catalog and upstream credits](./docs/CATALOG.md)
|
|
225
|
+
- [Catalog evidence policy](./docs/CATALOG_POLICY.md)
|
|
226
|
+
- [Feature and evidence matrix](./docs/FEATURE_TEST_MATRIX.md)
|
|
227
|
+
- [Testing contract](./docs/TESTING.md)
|
|
228
|
+
- [User test and troubleshooting guide](./docs/USER_TEST_GUIDE.md)
|
|
229
|
+
- [Daily discovery snapshot](./docs/DISCOVERED.md)
|
|
230
|
+
- [Candidate inspection and promotion](./docs/CANDIDATE_INTELLIGENCE.md)
|
|
231
|
+
- [Credential and update policy](./docs/CREDENTIAL_AND_UPDATE_POLICY.md)
|
|
232
|
+
- [Repository stabilization record](./docs/REPOSITORY_STABILIZATION.md)
|
|
233
|
+
- [Engineering plan](./MASTER_PLAN.md) and [changelog](./CHANGELOG.md)
|
|
269
234
|
|
|
270
|
-
|
|
271
|
-
loadout demo
|
|
272
|
-
```
|
|
235
|
+
## Contributing, security, and attribution
|
|
273
236
|
|
|
274
|
-
|
|
237
|
+
Keep changes scoped, add regression coverage for behavior changes, and run `npm run verify:full`. Report vulnerabilities through [SECURITY.md](./SECURITY.md), without credentials, private source, or unredacted state. General bugs and proposals belong in the [issue tracker](https://github.com/VirajMishra1/loadout/issues).
|
|
275
238
|
|
|
276
|
-
|
|
277
|
-
npm ci
|
|
278
|
-
npm run verify
|
|
279
|
-
```
|
|
280
|
-
|
|
281
|
-
`verify` checks formatting, lint, types, catalog evidence, unit and integration tests, a real CLI product flow, an installed-package smoke test, and a 1,000-skill performance gate.
|
|
282
|
-
|
|
283
|
-
Use the **[product testing guide](./docs/TESTING.md)** for Power, Maximum, project optimization, credentials, and rollback. Use the **[complete feature matrix](./docs/FEATURE_TEST_MATRIX.md)** when you want to exercise every CLI feature and understand which commands read files, use the network, start processes, or write state.
|
|
284
|
-
|
|
285
|
-
No bundled source is called benchmarked until real isolated trials, signed evidence, and human approval exist.
|
|
286
|
-
|
|
287
|
-
## Current beta limits
|
|
288
|
-
|
|
289
|
-
- Daily discovery creates leads; it does not automatically make them trusted catalog entries.
|
|
290
|
-
- Replacement alerts need real comparison evidence. Loadout does not invent a winner from stars or recency.
|
|
291
|
-
- MCP-only records need explicit configuration and may need external credentials or software.
|
|
292
|
-
- Graphify is the first fully reviewed executable recipe; other runtime tools need equivalent recipe work.
|
|
293
|
-
- Six catalog records currently have `NOASSERTION` license metadata and should be reviewed before relying on their license status.
|
|
294
|
-
- The local registry works for development and self-hosting; there is no hosted Loadout registry service yet.
|
|
295
|
-
- The optional dashboard exists for diagnostics, but the complete product is CLI-first.
|
|
296
|
-
|
|
297
|
-
## More detail
|
|
298
|
-
|
|
299
|
-
<details>
|
|
300
|
-
<summary><strong>All 50 upstream projects credited by Loadout</strong></summary>
|
|
301
|
-
|
|
302
|
-
- [Superpowers](https://github.com/obra/superpowers)
|
|
303
|
-
- [Context7](https://github.com/upstash/context7)
|
|
304
|
-
- [Playwright MCP](https://github.com/microsoft/playwright-mcp)
|
|
305
|
-
- [UI UX Pro Max](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill)
|
|
306
|
-
- [GitHub MCP Server](https://github.com/github/github-mcp-server)
|
|
307
|
-
- [OpenAI Skills Catalog](https://github.com/openai/skills)
|
|
308
|
-
- [Anthropic Skills](https://github.com/anthropics/skills)
|
|
309
|
-
- [Agent Skills Marketplace](https://github.com/wshobson/agents)
|
|
310
|
-
- [Vercel Agent Skills](https://github.com/vercel-labs/agent-skills)
|
|
311
|
-
- [Vercel Skills](https://github.com/vercel-labs/skills)
|
|
312
|
-
- [Cloudflare MCP Server](https://github.com/cloudflare/mcp-server-cloudflare)
|
|
313
|
-
- [Supabase MCP](https://github.com/supabase/mcp)
|
|
314
|
-
- [Sentry MCP](https://github.com/getsentry/sentry-mcp)
|
|
315
|
-
- [Exa MCP Server](https://github.com/exa-labs/exa-mcp-server)
|
|
316
|
-
- [Firecrawl MCP Server](https://github.com/firecrawl/firecrawl-mcp-server)
|
|
317
|
-
- [Azure DevOps MCP](https://github.com/microsoft/azure-devops-mcp)
|
|
318
|
-
- [Docker MCP Gateway](https://github.com/docker/mcp-gateway)
|
|
319
|
-
- [Hugging Face MCP Server](https://github.com/huggingface/hf-mcp-server)
|
|
320
|
-
- [Awesome Copilot](https://github.com/github/awesome-copilot)
|
|
321
|
-
- [OpenAI Codex Skills](https://github.com/openai/codex)
|
|
322
|
-
- [Ponytail](https://github.com/DietrichGebert/ponytail)
|
|
323
|
-
- [Addy Osmani Agent Skills](https://github.com/addyosmani/agent-skills)
|
|
324
|
-
- [Scientific Agent Skills](https://github.com/K-Dense-AI/scientific-agent-skills)
|
|
325
|
-
- [Planning with Files](https://github.com/OthmanAdi/planning-with-files)
|
|
326
|
-
- [PM Skills](https://github.com/phuryn/pm-skills)
|
|
327
|
-
- [Baoyu Skills](https://github.com/JimLiu/baoyu-skills)
|
|
328
|
-
- [Trail of Bits Skills](https://github.com/trailofbits/skills)
|
|
329
|
-
- [Antfu Skills](https://github.com/antfu/skills)
|
|
330
|
-
- [.NET Skills](https://github.com/dotnet/skills)
|
|
331
|
-
- [Microsoft Skills](https://github.com/microsoft/skills)
|
|
332
|
-
- [Web Quality Skills](https://github.com/addyosmani/web-quality-skills)
|
|
333
|
-
- [Softaworks Agent Toolkit](https://github.com/softaworks/agent-toolkit)
|
|
334
|
-
- [Draw.io Skill](https://github.com/Agents365-ai/drawio-skill)
|
|
335
|
-
- [Chrome DevTools MCP](https://github.com/ChromeDevTools/chrome-devtools-mcp)
|
|
336
|
-
- [Serena](https://github.com/oraios/serena)
|
|
337
|
-
- [Model Context Protocol Servers](https://github.com/modelcontextprotocol/servers)
|
|
338
|
-
- [AWS MCP Servers](https://github.com/awslabs/mcp)
|
|
339
|
-
- [DBHub](https://github.com/bytebase/dbhub)
|
|
340
|
-
- [FastAPI MCP](https://github.com/tadata-org/fastapi_mcp)
|
|
341
|
-
- [Browser MCP](https://github.com/BrowserMCP/mcp)
|
|
342
|
-
- [AntV Chart MCP](https://github.com/antvis/mcp-server-chart)
|
|
343
|
-
- [Excel MCP Server](https://github.com/haris-musa/excel-mcp-server)
|
|
344
|
-
- [arXiv MCP Server](https://github.com/blazickjp/arxiv-mcp-server)
|
|
345
|
-
- [Google Workspace MCP](https://github.com/taylorwilsdon/google_workspace_mcp)
|
|
346
|
-
- [MongoDB MCP Server](https://github.com/mongodb-js/mongodb-mcp-server)
|
|
347
|
-
- [Redis MCP Server](https://github.com/redis/mcp-redis)
|
|
348
|
-
- [Stripe AI](https://github.com/stripe/ai)
|
|
349
|
-
- [MCP Toolbox for Databases](https://github.com/googleapis/mcp-toolbox)
|
|
350
|
-
- [Browserbase MCP Server](https://github.com/browserbase/mcp-server-browserbase)
|
|
351
|
-
- [Bright Data MCP](https://github.com/brightdata/brightdata-mcp)
|
|
352
|
-
|
|
353
|
-
Thank you to every maintainer and contributor. Inclusion is attribution and discovery metadata, not ownership, endorsement, or relicensing.
|
|
354
|
-
|
|
355
|
-
</details>
|
|
356
|
-
|
|
357
|
-
- [Catalog and all upstream credits](./docs/CATALOG.md)
|
|
358
|
-
- [Daily generated discovery report](./docs/DISCOVERED.md)
|
|
359
|
-
- [How candidates are inspected and promoted](./docs/CANDIDATE_INTELLIGENCE.md)
|
|
360
|
-
- [Catalog ranking and conflict policy](./docs/CATALOG_POLICY.md)
|
|
361
|
-
- [Security policy](./SECURITY.md)
|
|
362
|
-
- [Testing guide](./docs/TESTING.md)
|
|
363
|
-
- [Complete CLI feature test matrix](./docs/FEATURE_TEST_MATRIX.md)
|
|
364
|
-
- [Engineering master plan](./MASTER_PLAN.md)
|
|
239
|
+
The catalog contains 50 credited public repositories. Inclusion records discovery and attribution; it does not transfer ownership, imply endorsement, or relicense upstream work.
|
|
365
240
|
|
|
366
241
|
## License
|
|
367
242
|
|
|
368
|
-
Loadout is licensed under the [MIT License](./LICENSE). Catalog entries
|
|
369
|
-
|
|
370
|
-
Built for the OpenAI Build Week **Developer Tools** category.
|
|
243
|
+
Loadout is licensed under the [MIT License](./LICENSE). Catalog entries retain their upstream licenses and terms.
|
package/dashboard/app.js
CHANGED
|
@@ -331,7 +331,7 @@ function renderHealth(data) {
|
|
|
331
331
|
setMarkupState(
|
|
332
332
|
health,
|
|
333
333
|
`health-list ${state}`,
|
|
334
|
-
`<div class="metric-row"><strong>${Number(report.installedPackages) || 0}</strong><span>packages</span><strong>${report.updatesChecked ? Number(report.updatesAvailable) || 0 : "—"}</strong><span>${report.updatesChecked ? "updates" : "updates not checked"}</span><strong>${Number(report.driftedFiles) || 0}</strong><span>drifted files</span><strong>${Number(report.driftedMcpServers) || 0}</strong><span>drifted MCP</span></div>${findings.map((finding) => `<p><span class="finding-level">${escapeHtml(finding.level || "info")}</span>${escapeHtml(finding.message || "")}</p>`).join("")}`,
|
|
334
|
+
`<p><strong>Evidence coverage and managed-state hygiene</strong></p><div class="metric-row"><strong>${Number(report.installedPackages) || 0}</strong><span>packages</span><strong>${report.updatesChecked ? Number(report.updatesAvailable) || 0 : "—"}</strong><span>${report.updatesChecked ? "updates" : "updates not checked"}</span><strong>${Number(report.driftedFiles) || 0}</strong><span>drifted files</span><strong>${Number(report.driftedMcpServers) || 0}</strong><span>drifted MCP</span></div>${findings.map((finding) => `<p><span class="finding-level">${escapeHtml(finding.level || "info")}</span>${escapeHtml(finding.message || "")}</p>`).join("")}`,
|
|
335
335
|
);
|
|
336
336
|
}
|
|
337
337
|
|
|
@@ -363,12 +363,12 @@ function renderRecommendations(data) {
|
|
|
363
363
|
setMarkupState(
|
|
364
364
|
recommendations,
|
|
365
365
|
"grid",
|
|
366
|
-
items
|
|
366
|
+
`<p><strong>Rule-based project suggestions</strong>: detected project signals select catalog entries; this is not empirical quality evidence.</p>${items
|
|
367
367
|
.map((item, index) => {
|
|
368
368
|
const headingId = `recommendation-${index}`;
|
|
369
369
|
return `<article aria-labelledby="${headingId}"><div class="card-heading"><h3 id="${headingId}">${escapeHtml(item.packageId || "Unknown package")}</h3><span class="badge">${escapeHtml(item.confidence || "unknown")}</span></div><p>${escapeHtml(item.reason || "No recommendation reason available.")}</p></article>`;
|
|
370
370
|
})
|
|
371
|
-
.join("")
|
|
371
|
+
.join("")}`,
|
|
372
372
|
);
|
|
373
373
|
}
|
|
374
374
|
|
|
@@ -378,7 +378,7 @@ function renderProfiles(data) {
|
|
|
378
378
|
? Object.entries(data.profiles)
|
|
379
379
|
: [];
|
|
380
380
|
if (!entries.length)
|
|
381
|
-
return setTextState(profiles, "No
|
|
381
|
+
return setTextState(profiles, "No Loadout policy profiles are available.");
|
|
382
382
|
setMarkupState(
|
|
383
383
|
profiles,
|
|
384
384
|
"grid",
|
package/dashboard/index.html
CHANGED
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
<p class="eyebrow">LOADOUT</p>
|
|
14
14
|
<h1 id="page-title">Your agent control center.</h1>
|
|
15
15
|
<p class="subhead">
|
|
16
|
-
|
|
17
|
-
machine.
|
|
16
|
+
Evidence health, safe updates, policy setups, and real packages from
|
|
17
|
+
this machine.
|
|
18
18
|
</p>
|
|
19
19
|
<nav class="dashboard-nav" aria-label="Dashboard views">
|
|
20
20
|
<a href="#home" data-route="home">Home</a>
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
|
|
126
126
|
<section data-screen="home" aria-labelledby="recommendations-heading">
|
|
127
127
|
<div class="section-title">
|
|
128
|
-
<h2 id="recommendations-heading">
|
|
128
|
+
<h2 id="recommendations-heading">Rule-based project suggestions</h2>
|
|
129
129
|
<span id="project-signals"></span>
|
|
130
130
|
</div>
|
|
131
131
|
<div
|
|
@@ -141,7 +141,7 @@
|
|
|
141
141
|
|
|
142
142
|
<section data-screen="home" aria-labelledby="profiles-heading">
|
|
143
143
|
<div class="section-title">
|
|
144
|
-
<h2 id="profiles-heading">
|
|
144
|
+
<h2 id="profiles-heading">Loadout policy profiles</h2>
|
|
145
145
|
<span>Preview only</span>
|
|
146
146
|
</div>
|
|
147
147
|
<div
|