loadout-ai 0.2.3 → 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 +71 -0
- package/MASTER_PLAN.md +141 -33
- package/README.md +160 -255
- package/dashboard/app.js +4 -4
- package/dashboard/index.html +4 -4
- package/dist/src/cli.js +189 -32
- package/dist/src/core/active-set.js +37 -2
- 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/cli-guide.js +101 -0
- package/dist/src/core/completion.js +3 -0
- package/dist/src/core/conformance.js +74 -0
- package/dist/src/core/install.js +36 -3
- package/dist/src/core/mcp-recipes.js +21 -0
- package/dist/src/core/profile-state.js +101 -0
- 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/remove.js +6 -7
- package/dist/src/core/runtime-tools.js +10 -2
- package/dist/src/core/scheduler.js +4 -3
- package/dist/src/core/snapshot.js +58 -13
- package/dist/src/core/state.js +13 -3
- package/dist/src/core/transaction.js +2 -1
- package/dist/src/core/uninstall.js +133 -0
- package/dist/src/core/update.js +87 -58
- package/dist/src/dashboard.js +5 -2
- package/dist/src/shared/schemas.js +69 -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 +75 -2
- package/docs/USER_TEST_GUIDE.md +202 -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/README.md
CHANGED
|
@@ -1,338 +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
|
-
|
|
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>
|
|
12
27
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
loadout --version
|
|
16
|
-
loadout upgrade
|
|
17
|
-
```
|
|
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.
|
|
18
30
|
|
|
19
|
-
|
|
31
|
+
## How it works
|
|
20
32
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
loadout upgrade --yes
|
|
25
|
-
```
|
|
33
|
+
**Choose -> Inspect -> Preview -> Apply -> Undo**
|
|
26
34
|
|
|
27
|
-
|
|
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.
|
|
28
40
|
|
|
29
|
-
|
|
30
|
-
loadout rollback
|
|
31
|
-
```
|
|
41
|
+
### Abridged terminal transcript
|
|
32
42
|
|
|
33
|
-
|
|
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.
|
|
34
44
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
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.
|
|
41
53
|
|
|
42
|
-
|
|
54
|
+
$ loadout setup --mode stable --agents codex --yes
|
|
55
|
+
…
|
|
56
|
+
Loadout installed 4 repositories for 1 agent(s). Snapshot: <snapshot-id>
|
|
43
57
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
loadout setup --mode power
|
|
47
|
-
loadout setup --mode maximum
|
|
58
|
+
$ loadout rollback
|
|
59
|
+
Restored snapshot <snapshot-id>
|
|
48
60
|
```
|
|
49
61
|
|
|
50
|
-
|
|
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.
|
|
51
63
|
|
|
52
|
-
|
|
53
|
-
loadout setup --mode stable --yes
|
|
54
|
-
loadout setup --mode power --yes --approve-risk
|
|
55
|
-
loadout setup --mode maximum --yes --approve-risk
|
|
56
|
-
```
|
|
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.
|
|
57
65
|
|
|
58
|
-
|
|
66
|
+
## Why Loadout
|
|
59
67
|
|
|
60
|
-
|
|
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.
|
|
61
69
|
|
|
62
|
-
|
|
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.
|
|
63
73
|
|
|
64
|
-
|
|
74
|
+
## Install
|
|
65
75
|
|
|
66
|
-
|
|
67
|
-
2. **Inspect the real contents.** Find skills, MCP declarations, plugins, commands, agents, and executable setup requirements.
|
|
68
|
-
3. **Check trust evidence.** Record the exact Git commit, license status, source paths, maintenance signals, overlaps, and static safety findings.
|
|
69
|
-
4. **Compare like with like.** A testing tool is compared with testing tools, not with an unrelated design skill.
|
|
70
|
-
5. **Choose a tier.** Stable is the strongest bounded default; Power is broader; Maximum keeps the full reviewed library available.
|
|
71
|
-
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.
|
|
72
77
|
|
|
73
|
-
|
|
78
|
+
```bash
|
|
79
|
+
npm install --global loadout-ai@0.4.0
|
|
80
|
+
loadout --version
|
|
81
|
+
loadout guide
|
|
82
|
+
```
|
|
74
83
|
|
|
75
|
-
|
|
84
|
+
For source development instead:
|
|
76
85
|
|
|
77
|
-
|
|
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
|
+
```
|
|
78
94
|
|
|
79
|
-
|
|
95
|
+
For a disposable first success, run:
|
|
80
96
|
|
|
81
97
|
```bash
|
|
82
|
-
loadout
|
|
98
|
+
loadout demo
|
|
83
99
|
```
|
|
84
100
|
|
|
85
|
-
|
|
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.
|
|
86
102
|
|
|
87
|
-
|
|
103
|
+
## Stable workflow
|
|
88
104
|
|
|
89
105
|
```bash
|
|
90
|
-
|
|
91
|
-
loadout
|
|
92
|
-
loadout optimize --project . --limit 30 --yes
|
|
93
|
-
```
|
|
106
|
+
# Preview for detected agents
|
|
107
|
+
loadout setup --mode stable
|
|
94
108
|
|
|
95
|
-
|
|
109
|
+
# Recompute from current state and apply after reviewing the preview
|
|
110
|
+
loadout setup --mode stable --yes
|
|
96
111
|
|
|
97
|
-
|
|
98
|
-
loadout
|
|
99
|
-
loadout
|
|
100
|
-
loadout
|
|
112
|
+
# Inspect managed state, then undo the latest supported mutation
|
|
113
|
+
loadout list
|
|
114
|
+
loadout health --explain
|
|
115
|
+
loadout rollback
|
|
101
116
|
```
|
|
102
117
|
|
|
103
|
-
|
|
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.
|
|
104
119
|
|
|
105
|
-
|
|
120
|
+
## Profiles
|
|
106
121
|
|
|
107
|
-
|
|
108
|
-
|
|
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 |
|
|
109
128
|
|
|
110
|
-
|
|
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.
|
|
111
130
|
|
|
112
|
-
|
|
113
|
-
loadout autopilot --time 09:00 # preview
|
|
114
|
-
loadout autopilot --time 09:00 --yes # enable
|
|
115
|
-
loadout autopilot --remove --yes # remove
|
|
116
|
-
```
|
|
131
|
+
## Catalog and discovery
|
|
117
132
|
|
|
118
|
-
|
|
133
|
+
<!-- loadout:catalog-coverage:start -->
|
|
119
134
|
|
|
120
|
-
|
|
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)**.
|
|
121
136
|
|
|
122
|
-
|
|
123
|
-
loadout review-queue
|
|
124
|
-
loadout candidate list --limit 20
|
|
125
|
-
loadout alerts --updates
|
|
126
|
-
loadout update
|
|
127
|
-
```
|
|
137
|
+
<!-- loadout:catalog-coverage:end -->
|
|
128
138
|
|
|
129
|
-
|
|
139
|
+
<!-- loadout:evidence-stages:start -->
|
|
130
140
|
|
|
131
|
-
-
|
|
132
|
-
- An **available update** is a different reviewed commit, not automatically better.
|
|
133
|
-
- A **replacement alert** appears only when category-specific comparison evidence supports it.
|
|
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).
|
|
134
142
|
|
|
135
|
-
|
|
143
|
+
<!-- loadout:evidence-stages:end -->
|
|
136
144
|
|
|
137
|
-
|
|
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.
|
|
138
146
|
|
|
139
147
|
<!-- loadout:daily-discovery:start -->
|
|
140
148
|
|
|
141
|
-
**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.
|
|
142
150
|
<!-- loadout:daily-discovery:end -->
|
|
143
151
|
|
|
144
|
-
|
|
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.
|
|
145
153
|
|
|
146
|
-
|
|
154
|
+
## Trust and limits
|
|
147
155
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
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.
|
|
153
163
|
|
|
154
|
-
|
|
164
|
+
<!-- loadout:current-limits:start -->
|
|
155
165
|
|
|
156
|
-
|
|
166
|
+
- **6 catalog records** currently have `NOASSERTION` license status and need upstream-license review before a public release decision.
|
|
157
167
|
|
|
158
|
-
|
|
168
|
+
<!-- loadout:current-limits:end -->
|
|
159
169
|
|
|
160
|
-
|
|
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.
|
|
161
171
|
|
|
162
|
-
|
|
163
|
-
loadout setup --mode stable --api-access none
|
|
164
|
-
loadout setup --mode maximum --api-access openai,anthropic
|
|
165
|
-
```
|
|
172
|
+
## Agent support
|
|
166
173
|
|
|
167
|
-
|
|
174
|
+
<!-- loadout:support-summary:start -->
|
|
168
175
|
|
|
169
|
-
|
|
170
|
-
export LOADOUT_GITHUB_TOKEN="$GITHUB_PERSONAL_ACCESS_TOKEN"
|
|
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.
|
|
171
177
|
|
|
172
|
-
|
|
173
|
-
--credential GITHUB_PERSONAL_ACCESS_TOKEN=env:LOADOUT_GITHUB_TOKEN
|
|
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.
|
|
174
179
|
|
|
175
|
-
|
|
176
|
-
--credential GITHUB_PERSONAL_ACCESS_TOKEN=env:LOADOUT_GITHUB_TOKEN \
|
|
177
|
-
--yes
|
|
178
|
-
```
|
|
180
|
+
Configured platform evidence: Linux (CI configured), macOS (CI configured), Windows (CI configured).
|
|
179
181
|
|
|
180
|
-
|
|
182
|
+
Platform evidence source: `.github/workflows/ci.yml (cross-platform job)`.
|
|
181
183
|
|
|
182
|
-
|
|
184
|
+
Configured CI platforms describe a manually triggered workflow, not evidence that a current run passed.
|
|
183
185
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
loadout
|
|
187
|
-
loadout tool graphify --agents codex --yes --approve-risk
|
|
188
|
-
loadout tool graphify --remove
|
|
189
|
-
```
|
|
186
|
+
<!-- loadout:support-summary:end -->
|
|
187
|
+
|
|
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.
|
|
190
189
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
|
196
|
-
|
|
|
197
|
-
|
|
|
198
|
-
|
|
|
199
|
-
|
|
|
200
|
-
|
|
|
201
|
-
|
|
|
202
|
-
|
|
|
203
|
-
|
|
|
204
|
-
|
|
|
205
|
-
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
| Preview updates | `loadout update` |
|
|
209
|
-
| Undo the latest applied change | `loadout rollback` |
|
|
210
|
-
| Test safely without touching your profile | `loadout demo` |
|
|
211
|
-
| See every command | `loadout --help` |
|
|
212
|
-
|
|
213
|
-
Shell completion is available for Bash, Zsh, Fish, and PowerShell:
|
|
190
|
+
## Command reference
|
|
191
|
+
|
|
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` |
|
|
205
|
+
|
|
206
|
+
## Development
|
|
214
207
|
|
|
215
208
|
```bash
|
|
216
|
-
|
|
209
|
+
npm ci
|
|
210
|
+
npm run verify
|
|
211
|
+
npm run verify:full
|
|
217
212
|
```
|
|
218
213
|
|
|
219
|
-
|
|
214
|
+
<!-- loadout:verification-summary:start -->
|
|
220
215
|
|
|
221
|
-
|
|
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.
|
|
222
217
|
|
|
223
|
-
|
|
224
|
-
2. inspects the selected contents;
|
|
225
|
-
3. resolves duplicate target names;
|
|
226
|
-
4. prints safety findings and every destination;
|
|
227
|
-
5. waits for explicit approval;
|
|
228
|
-
6. snapshots the old state;
|
|
229
|
-
7. applies the change as one transaction;
|
|
230
|
-
8. records hashes for later drift checks and rollback.
|
|
218
|
+
<!-- loadout:verification-summary:end -->
|
|
231
219
|
|
|
232
|
-
|
|
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.
|
|
233
221
|
|
|
234
|
-
##
|
|
222
|
+
## Documentation
|
|
235
223
|
|
|
236
|
-
|
|
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)
|
|
237
234
|
|
|
238
|
-
|
|
239
|
-
loadout demo
|
|
240
|
-
```
|
|
235
|
+
## Contributing, security, and attribution
|
|
241
236
|
|
|
242
|
-
|
|
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).
|
|
243
238
|
|
|
244
|
-
|
|
245
|
-
npm ci
|
|
246
|
-
npm run verify
|
|
247
|
-
```
|
|
248
|
-
|
|
249
|
-
`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.
|
|
250
|
-
|
|
251
|
-
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.
|
|
252
|
-
|
|
253
|
-
No bundled source is called benchmarked until real isolated trials, signed evidence, and human approval exist.
|
|
254
|
-
|
|
255
|
-
## Current beta limits
|
|
256
|
-
|
|
257
|
-
- Daily discovery creates leads; it does not automatically make them trusted catalog entries.
|
|
258
|
-
- Replacement alerts need real comparison evidence. Loadout does not invent a winner from stars or recency.
|
|
259
|
-
- MCP-only records need explicit configuration and may need external credentials or software.
|
|
260
|
-
- Graphify is the first fully reviewed executable recipe; other runtime tools need equivalent recipe work.
|
|
261
|
-
- Six catalog records currently have `NOASSERTION` license metadata and should be reviewed before relying on their license status.
|
|
262
|
-
- The local registry works for development and self-hosting; there is no hosted Loadout registry service yet.
|
|
263
|
-
- The optional dashboard exists for diagnostics, but the complete product is CLI-first.
|
|
264
|
-
|
|
265
|
-
## More detail
|
|
266
|
-
|
|
267
|
-
<details>
|
|
268
|
-
<summary><strong>All 50 upstream projects credited by Loadout</strong></summary>
|
|
269
|
-
|
|
270
|
-
- [Superpowers](https://github.com/obra/superpowers)
|
|
271
|
-
- [Context7](https://github.com/upstash/context7)
|
|
272
|
-
- [Playwright MCP](https://github.com/microsoft/playwright-mcp)
|
|
273
|
-
- [UI UX Pro Max](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill)
|
|
274
|
-
- [GitHub MCP Server](https://github.com/github/github-mcp-server)
|
|
275
|
-
- [OpenAI Skills Catalog](https://github.com/openai/skills)
|
|
276
|
-
- [Anthropic Skills](https://github.com/anthropics/skills)
|
|
277
|
-
- [Agent Skills Marketplace](https://github.com/wshobson/agents)
|
|
278
|
-
- [Vercel Agent Skills](https://github.com/vercel-labs/agent-skills)
|
|
279
|
-
- [Vercel Skills](https://github.com/vercel-labs/skills)
|
|
280
|
-
- [Cloudflare MCP Server](https://github.com/cloudflare/mcp-server-cloudflare)
|
|
281
|
-
- [Supabase MCP](https://github.com/supabase/mcp)
|
|
282
|
-
- [Sentry MCP](https://github.com/getsentry/sentry-mcp)
|
|
283
|
-
- [Exa MCP Server](https://github.com/exa-labs/exa-mcp-server)
|
|
284
|
-
- [Firecrawl MCP Server](https://github.com/firecrawl/firecrawl-mcp-server)
|
|
285
|
-
- [Azure DevOps MCP](https://github.com/microsoft/azure-devops-mcp)
|
|
286
|
-
- [Docker MCP Gateway](https://github.com/docker/mcp-gateway)
|
|
287
|
-
- [Hugging Face MCP Server](https://github.com/huggingface/hf-mcp-server)
|
|
288
|
-
- [Awesome Copilot](https://github.com/github/awesome-copilot)
|
|
289
|
-
- [OpenAI Codex Skills](https://github.com/openai/codex)
|
|
290
|
-
- [Ponytail](https://github.com/DietrichGebert/ponytail)
|
|
291
|
-
- [Addy Osmani Agent Skills](https://github.com/addyosmani/agent-skills)
|
|
292
|
-
- [Scientific Agent Skills](https://github.com/K-Dense-AI/scientific-agent-skills)
|
|
293
|
-
- [Planning with Files](https://github.com/OthmanAdi/planning-with-files)
|
|
294
|
-
- [PM Skills](https://github.com/phuryn/pm-skills)
|
|
295
|
-
- [Baoyu Skills](https://github.com/JimLiu/baoyu-skills)
|
|
296
|
-
- [Trail of Bits Skills](https://github.com/trailofbits/skills)
|
|
297
|
-
- [Antfu Skills](https://github.com/antfu/skills)
|
|
298
|
-
- [.NET Skills](https://github.com/dotnet/skills)
|
|
299
|
-
- [Microsoft Skills](https://github.com/microsoft/skills)
|
|
300
|
-
- [Web Quality Skills](https://github.com/addyosmani/web-quality-skills)
|
|
301
|
-
- [Softaworks Agent Toolkit](https://github.com/softaworks/agent-toolkit)
|
|
302
|
-
- [Draw.io Skill](https://github.com/Agents365-ai/drawio-skill)
|
|
303
|
-
- [Chrome DevTools MCP](https://github.com/ChromeDevTools/chrome-devtools-mcp)
|
|
304
|
-
- [Serena](https://github.com/oraios/serena)
|
|
305
|
-
- [Model Context Protocol Servers](https://github.com/modelcontextprotocol/servers)
|
|
306
|
-
- [AWS MCP Servers](https://github.com/awslabs/mcp)
|
|
307
|
-
- [DBHub](https://github.com/bytebase/dbhub)
|
|
308
|
-
- [FastAPI MCP](https://github.com/tadata-org/fastapi_mcp)
|
|
309
|
-
- [Browser MCP](https://github.com/BrowserMCP/mcp)
|
|
310
|
-
- [AntV Chart MCP](https://github.com/antvis/mcp-server-chart)
|
|
311
|
-
- [Excel MCP Server](https://github.com/haris-musa/excel-mcp-server)
|
|
312
|
-
- [arXiv MCP Server](https://github.com/blazickjp/arxiv-mcp-server)
|
|
313
|
-
- [Google Workspace MCP](https://github.com/taylorwilsdon/google_workspace_mcp)
|
|
314
|
-
- [MongoDB MCP Server](https://github.com/mongodb-js/mongodb-mcp-server)
|
|
315
|
-
- [Redis MCP Server](https://github.com/redis/mcp-redis)
|
|
316
|
-
- [Stripe AI](https://github.com/stripe/ai)
|
|
317
|
-
- [MCP Toolbox for Databases](https://github.com/googleapis/mcp-toolbox)
|
|
318
|
-
- [Browserbase MCP Server](https://github.com/browserbase/mcp-server-browserbase)
|
|
319
|
-
- [Bright Data MCP](https://github.com/brightdata/brightdata-mcp)
|
|
320
|
-
|
|
321
|
-
Thank you to every maintainer and contributor. Inclusion is attribution and discovery metadata, not ownership, endorsement, or relicensing.
|
|
322
|
-
|
|
323
|
-
</details>
|
|
324
|
-
|
|
325
|
-
- [Catalog and all upstream credits](./docs/CATALOG.md)
|
|
326
|
-
- [Daily generated discovery report](./docs/DISCOVERED.md)
|
|
327
|
-
- [How candidates are inspected and promoted](./docs/CANDIDATE_INTELLIGENCE.md)
|
|
328
|
-
- [Catalog ranking and conflict policy](./docs/CATALOG_POLICY.md)
|
|
329
|
-
- [Security policy](./SECURITY.md)
|
|
330
|
-
- [Testing guide](./docs/TESTING.md)
|
|
331
|
-
- [Complete CLI feature test matrix](./docs/FEATURE_TEST_MATRIX.md)
|
|
332
|
-
- [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.
|
|
333
240
|
|
|
334
241
|
## License
|
|
335
242
|
|
|
336
|
-
Loadout is licensed under the [MIT License](./LICENSE). Catalog entries
|
|
337
|
-
|
|
338
|
-
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
|