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.
Files changed (44) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/MASTER_PLAN.md +86 -13
  3. package/README.md +157 -284
  4. package/dashboard/app.js +4 -4
  5. package/dashboard/index.html +4 -4
  6. package/dist/src/cli.js +27 -21
  7. package/dist/src/core/adapters.js +10 -0
  8. package/dist/src/core/adopt.js +165 -32
  9. package/dist/src/core/agent-health-score.js +2 -2
  10. package/dist/src/core/catalog-coverage.js +2 -1
  11. package/dist/src/core/catalog-install.js +8 -1
  12. package/dist/src/core/catalog-release.js +2 -1
  13. package/dist/src/core/conformance.js +74 -0
  14. package/dist/src/core/install.js +36 -3
  15. package/dist/src/core/profiles.js +9 -4
  16. package/dist/src/core/ranking.js +1 -1
  17. package/dist/src/core/readme-claims.js +10 -0
  18. package/dist/src/core/readme-facts.js +40 -0
  19. package/dist/src/core/recommend.js +9 -3
  20. package/dist/src/core/runtime-tools.js +5 -2
  21. package/dist/src/core/scheduler.js +2 -1
  22. package/dist/src/core/snapshot.js +58 -13
  23. package/dist/src/core/state.js +8 -1
  24. package/dist/src/core/transaction.js +2 -1
  25. package/dist/src/core/uninstall.js +26 -2
  26. package/dist/src/dashboard.js +5 -2
  27. package/dist/src/shared/schemas.js +57 -0
  28. package/docs/FEATURE_TEST_MATRIX.md +16 -0
  29. package/docs/README_RESEARCH.md +36 -0
  30. package/docs/RELEASE_REVIEW.md +31 -5
  31. package/docs/REPOSITORY_STABILIZATION.md +190 -0
  32. package/docs/TESTING.md +50 -0
  33. package/docs/USER_TEST_GUIDE.md +26 -0
  34. package/docs/assets/loadout-hero.svg +259 -0
  35. package/docs/assets/loadout-mark.svg +54 -0
  36. package/docs/evidence/live-checks-2026-07-19.json +22 -0
  37. package/docs/evidence/live-checks.schema.json +28 -0
  38. package/docs/evidence/readme-claims.json +286 -0
  39. package/docs/superpowers/plans/2026-07-19-relatable-readme-hero.md +283 -0
  40. package/docs/superpowers/specs/2026-07-19-relatable-readme-hero-design.md +80 -0
  41. package/package.json +8 -4
  42. package/SIMPLE_PLAN.md +0 -44
  43. package/docs/plans/2026-07-18-release-0.3.md +0 -42
  44. package/docs/superpowers/plans/2026-07-18-cli-ux-polish.md +0 -86
@@ -0,0 +1,80 @@
1
+ # Relatable README and Hero Design
2
+
3
+ ## Objective
4
+
5
+ Make Viraj's current Loadout README more memorable to a first-time visitor without weakening its evidence boundaries. Replace the small slot mark with a clearly stronger original hero, add a concise human explanation of the loadout metaphor, correct canonical repository links, and document the actual GitHub Actions failure without pretending it is a code defect.
6
+
7
+ ## Verified starting point
8
+
9
+ - Source: `VirajMishra1/loadout` default branch `main` at merge commit `194676910327176272ebe42982d13c6e8246f0aa`.
10
+ - The README already presents the verified `Choose -> Inspect -> Preview -> Apply -> Undo` flow and bounded warnings about unpublished `0.3.2`, preview/apply identity, catalog evidence, native-agent execution, security, and persistence.
11
+ - The failed upstream Actions job `88250042904` in run `29708871932` executed zero steps. Its sole annotation says the job did not start because recent account payments failed or the spending limit must be increased.
12
+ - Because no runner step started, there is no failing repository command to reproduce locally. Verification must instead run the workflow's intended commands locally and report that this validates the code but cannot reproduce GitHub account billing state.
13
+ - Canonical README/package links still point to the temporary `reddynitish/loadout` fork and must point to `VirajMishra1/loadout`.
14
+
15
+ ## README story
16
+
17
+ Keep `## Why Loadout` in its current location after the verified product journey. Add one short paragraph before the existing evidence-backed benefits:
18
+
19
+ > 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.
20
+
21
+ The final copy may be tightened for rhythm but must preserve these facts and must not introduce a founder narrative, generic marketing superlatives, universal safety, native-host execution, or stronger rollback guarantees than the implementation proves. Retain the three existing bullets for managed inventory, preview-first operations, and recoverable managed changes.
22
+
23
+ ## Hero composition
24
+
25
+ Create `docs/assets/loadout-hero.svg` as a wide, dependency-free, theme-aware SVG and replace the README's small `loadout-mark.svg` reference only after rendered comparison shows the hero is materially stronger.
26
+
27
+ The composition reads left to right:
28
+
29
+ 1. **Unmanaged edge:** a restrained cluster of loose extension/config tiles, crossing paths, and small labels sits outside a dashed management boundary. It is visibly disorganized but not cartoonishly chaotic.
30
+ 2. **Developer choice:** a simple, original geometric developer figure at a compact workbench reaches toward one extension tile. The figure is symbolic rather than a detailed character, avoiding any resemblance to Ponytail's artwork or composition.
31
+ 3. **Managed loadout:** five aligned equipment slots sit inside a clear rail. Selected slots use recognizable code-native symbols such as `>_`, a plug, linked nodes, or braces; the remaining slot can be empty. A small directional cue connects the chosen tile to the rail.
32
+ 4. **Outcome:** the organized rail is visually calmer and more regular than the unmanaged edge. The image communicates selection and control, not an unsupported claim that every external tool is safe.
33
+
34
+ Use a wide `viewBox` suitable for a GitHub README hero, approximately 960 by 300. Use SVG paths and basic shapes only, with no raster content, scripts, animation, gradients, external fonts, remote references, or copied assets. Every visible symbol should remain legible when the hero is rendered near 720 pixels wide and at a smaller mobile width.
35
+
36
+ Use `currentColor` plus an internal `prefers-color-scheme` fallback so strokes and restrained fills have adequate contrast on GitHub light and dark themes. Include one meaningful `<title>` and `<desc>`, `role="img"`, and matching `aria-labelledby`. The README `<img>` needs concise alt text describing the developer moving extension tiles from a messy group into organized loadout slots.
37
+
38
+ The existing `docs/assets/loadout-mark.svg` remains available as a compact mark unless repository cleanup later proves it unused and removal is explicitly covered by tests and links. The task does not need to delete it.
39
+
40
+ ## Canonical repository corrections
41
+
42
+ Update current canonical product metadata and visitor destinations from `reddynitish/loadout` to `VirajMishra1/loadout`:
43
+
44
+ - README CI workflow badge and image URL.
45
+ - README clone command.
46
+ - README issue-tracker link.
47
+ - `package.json` repository, homepage, and bugs URLs.
48
+ - `docs/evidence/live-checks.schema.json` `$id`.
49
+ - Tests/fixtures that intentionally assert canonical package metadata.
50
+
51
+ Do not rewrite historical evidence that accurately identifies the fork or dated fork CI runs. Historical links in `docs/REPOSITORY_STABILIZATION.md` remain historical evidence, not canonical product metadata.
52
+
53
+ ## Check failure handling
54
+
55
+ No workflow bypass is allowed. Do not delete, skip, weaken, or condition the required verification job. The smallest correct repository action is to leave CI logic intact and accurately report the external billing/spending-limit root cause.
56
+
57
+ Before PR creation:
58
+
59
+ - Reconfirm the failed check annotation and absence of job steps.
60
+ - Run each intended required job command locally, including the exact `npm test -- --run` invocation.
61
+ - Run `npm run verify`.
62
+ - Run `npm run verify:full` because Playwright dependencies are available locally.
63
+ - Treat any local failure as a real defect and fix it test-first; do not call the external billing annotation a locally reproduced failure.
64
+
65
+ ## Regression and rendering coverage
66
+
67
+ Update README-focused tests only for intended structure/content changes:
68
+
69
+ - require the new hero reference and genuine metaphor language;
70
+ - require canonical Viraj badge/clone/issue destinations;
71
+ - reject canonical README/package links to the temporary fork;
72
+ - preserve all six generated marker pairs, current hierarchy, executable offline product flow, warnings, and truth-boundary assertions.
73
+
74
+ Update package metadata tests for Viraj's canonical repository. Do not add a test that pretends GitHub billing can be reproduced locally.
75
+
76
+ Validate all README relative targets and heading fragments, SVG XML/accessibility structure, forbidden external SVG content, and light/dark renders at desktop and mobile sizes. Review the complete README as a first-time visitor for hierarchy, clarity, and unsupported implications.
77
+
78
+ ## Delivery
79
+
80
+ Commit implementation on `codex/relatable-readme-hero`, push it to Viraj's repository, and open a ready pull request against `main`. Include the Actions billing root cause, local command evidence, rendered hero evidence, and truth boundaries in the PR body. Do not merge the pull request.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "loadout-ai",
3
- "version": "0.3.1",
3
+ "version": "0.4.0",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "description": "Universal upgrade manager for AI coding agents",
@@ -16,7 +16,6 @@
16
16
  "README.md",
17
17
  "CHANGELOG.md",
18
18
  "MASTER_PLAN.md",
19
- "SIMPLE_PLAN.md",
20
19
  "SECURITY.md",
21
20
  "LICENSE"
22
21
  ],
@@ -55,13 +54,18 @@
55
54
  "test:e2e:dashboard": "playwright test",
56
55
  "pretest:e2e:cli": "npm run build",
57
56
  "test:e2e:cli": "node scripts/cli-product-flow.mjs",
57
+ "test:e2e:readme": "node scripts/readme-product-flow.mjs",
58
58
  "test:package": "node scripts/package-smoke.mjs",
59
59
  "pretest:performance": "npm run build",
60
60
  "test:performance": "node scripts/scan-benchmark.mjs",
61
61
  "typecheck": "tsc -p tsconfig.json --noEmit",
62
- "check:evidence": "node scripts/check-catalog-attribution.mjs && node scripts/check-discovery-artifacts.mjs && node --import tsx scripts/check-release-claims.ts",
62
+ "readme:update": "node scripts/update-readme-facts.mjs",
63
+ "readme:check": "node scripts/update-readme-facts.mjs --check",
64
+ "check:readme-claims": "npm run build && node scripts/check-readme-claims.mjs",
65
+ "check:live": "node scripts/check-live-evidence.mjs",
66
+ "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",
63
67
  "feed:build": "node --import tsx scripts/build-intelligence-feed.ts",
64
- "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:package && npm run test:performance",
68
+ "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",
65
69
  "verify:full": "npm run verify && npm run test:e2e:dashboard"
66
70
  },
67
71
  "dependencies": {
package/SIMPLE_PLAN.md DELETED
@@ -1,44 +0,0 @@
1
- # Loadout plan — simple version
2
-
3
- Loadout's primary experience is CLI-first:
4
-
5
- ```bash
6
- npx loadout-ai
7
- ```
8
-
9
- It detects installed agents, scans the actual skills already present, and recommends a
10
- small Stable foundation. Maximum Library and Custom are explicit alternatives. It
11
- previews reviewed pinned sources, exact overlaps, capacity, and safety findings before
12
- one rollback-safe transaction. The dashboard is optional diagnostics.
13
-
14
- Loadout also provides the package-manager operations:
15
-
16
- - Find, install, update, remove, create, share, and synchronize AI-agent add-ons.
17
- - Work with skills, commands, rules, agents, plugins, and MCP tools.
18
- - Support Codex, Claude Code, Cursor, and more from one setup file.
19
-
20
- Loadout's four major advantages are:
21
-
22
- 1. **Safety:** scan first, explain every change, block dangerous behavior, and never
23
- touch unrelated files.
24
- 2. **Recovery:** back up before changes and provide one-command undo.
25
- 3. **Guidance:** check setup health and recommend tested add-on collections for the
26
- user's project.
27
- 4. **Optimization:** keep a broad reviewed library but expose only the best supported,
28
- non-overlapping active set for the current agent and project.
29
-
30
- The original build order was:
31
-
32
- 1. Finish the reliable package-manager foundation.
33
- 2. Match OpenPackage's package types, sources, synchronization, and publishing.
34
- 3. Add health checks, security scanning, safe updates, recommendations, and profiles.
35
- 4. Keep the dashboard optional and prove every supported platform with tests.
36
-
37
- That foundation is now integrated on `main`. [MASTER_PLAN.md](./MASTER_PLAN.md) is the
38
- only canonical checklist; contributor branches and notes are historical inputs, not
39
- separate sources of project status. Phase 12 now tracks provenance for unmanaged
40
- skills, evidence-backed comparison, library-versus-active-set state, safe adoption and
41
- enable/disable, project activation, guided optimization, category evaluations, daily
42
- review queues, provider/MCP workflows, CLI polish, npm publication, and public-beta
43
- testing. Catalog expansion, legal review, keychains, additional adapters, and submission
44
- work remain explicit rather than hidden behind earlier checked implementation proofs.
@@ -1,42 +0,0 @@
1
- # Loadout 0.3 Product-Hardening Plan
2
-
3
- ## Goal
4
-
5
- Ship a user-testable CLI release with one-command cleanup, honest whole-profile update
6
- checks, explicit no-key MCP discovery, and a verified local dashboard.
7
-
8
- ## Public contracts
9
-
10
- 1. `loadout uninstall` is a preview. `loadout uninstall --yes` removes scheduled
11
- Loadout jobs, runtime tools, managed agent files, disabled library copies, cache,
12
- snapshots, and state while preserving unmanaged or modified files. `--remove-cli`
13
- additionally runs the global npm uninstall.
14
- 2. `loadout update` checks every tracked package and compares the last installed
15
- Stable/Power/Maximum profile with the current trusted catalog. It never mutates by
16
- default.
17
- 3. `loadout update --yes` reapplies trusted profile changes and applies all
18
- statically-safe active package updates; blocked, disabled, or failed updates are
19
- reported and skipped. `--package <id> --yes` remains the precise path.
20
- 4. Stable, Power, and Maximum are re-evaluated against the trusted catalog whenever
21
- `update` runs. Discovery can nominate new candidates daily, but candidates cannot
22
- enter a profile until immutable source, license, compatibility, and safety review
23
- are recorded.
24
- 5. `loadout mcp-recipe --no-key` lists reviewed recipes requiring no separately
25
- billed AI/model API key. It includes GitHub read-only while separately disclosing
26
- the GitHub token. `--credential-free` is the stricter zero-credential filter.
27
- 6. `loadout dashboard` remains loopback-only and is verified by the browser E2E test.
28
-
29
- ## Implementation sequence
30
-
31
- - [x] Add failing tests for uninstall preview/application and CLI help.
32
- - [x] Implement uninstall orchestration with dependency injection and path guards.
33
- - [x] Add failing tests for persisted profile state and profile drift reporting.
34
- - [x] Record setup mode in snapshot-restorable install state and include it in update.
35
- - [x] Add failing tests for bulk safe update selection and clear skipped results.
36
- - [x] Implement `update --yes`, retaining `--apply` as a compatible alias.
37
- - [x] Add and test Chrome DevTools as a pinned no-key MCP recipe.
38
- - [x] Add `mcp-recipe --no-key` and beginner-readable recipe output.
39
- - [x] Update README, test guide, master plan, changelog, completion, and version.
40
- - [ ] Run unit, lint, type, evidence, package, CLI E2E, performance, dashboard E2E,
41
- and npm dry-run gates.
42
- - [ ] Review, commit, merge to main, push, tag, and publish to npm.
@@ -1,86 +0,0 @@
1
- # CLI UX Polish Implementation Plan
2
-
3
- > **For agentic workers:** REQUIRED SUB-SKILL: Use `executing-plans` to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
4
-
5
- **Goal:** Make Loadout's everyday CLI path understandable for a first-time user while preserving its existing safe, advanced capabilities.
6
-
7
- **Architecture:** Keep the CLI as the primary interface. Add one concise, read-only `guide` command and a focused help footer; retain advanced commands but remove them from the first-screen help. Fix JSON output and package-scoped update previews as explicit public CLI contracts. Document a safe test journey and keep the dashboard as an optional local companion.
8
-
9
- **Tech Stack:** Node.js 20+, TypeScript, Commander, Vitest, framework-free local dashboard.
10
-
11
- ## Global Constraints
12
-
13
- - Never mutate a user's agent configuration from a default or preview command.
14
- - Existing command names remain valid even if hidden from first-screen help.
15
- - Machine-readable commands must emit valid JSON when `--json` is accepted.
16
- - Do not require an API key or GitHub account for the core test journey.
17
- - Every behavior change gets a test before its production code.
18
-
19
- ---
20
-
21
- ### Task 1: Define the beginner CLI contract
22
-
23
- **Files:**
24
-
25
- - Modify: `tests/cli-help.test.ts`
26
- - Modify: `src/cli.ts`
27
-
28
- **Interfaces:**
29
-
30
- - Produces: `loadout guide`, a read-only command that explains setup, discovery, project recommendations, recovery, dashboard, and help.
31
-
32
- - [x] **Step 1: Write failing CLI contract tests** for `loadout guide`, a focused top-level help footer, and retained access to an advanced command.
33
- - [x] **Step 2: Run** `npm test -- tests/cli-help.test.ts` **and confirm the new assertions fail.**
34
- - [x] **Step 3: Implement** `guide`, hide maintainer-only commands from first-screen help, and add a short help footer that points to the guide.
35
- - [x] **Step 4: Run** `npm test -- tests/cli-help.test.ts` **and confirm it passes.**
36
- - [ ] **Step 5: Commit** the focused CLI discoverability change.
37
-
38
- ### Task 2: Repair machine-readable and scoped preview contracts
39
-
40
- **Files:**
41
-
42
- - Modify: `tests/cli-help.test.ts`
43
- - Modify: `tests/update.test.ts`
44
- - Modify: `src/cli.ts`
45
- - Modify: `src/core/update.ts`
46
-
47
- **Interfaces:**
48
-
49
- - `loadout catalog --json` returns a JSON array.
50
- - `loadout update --package <id>` plans only that managed package and rejects an unknown installed package clearly.
51
-
52
- - [x] **Step 1: Write failing tests** for catalog JSON and package-scoped update planning.
53
- - [x] **Step 2: Run the focused test files** and confirm the assertions fail for the existing implementation.
54
- - [x] **Step 3: Implement the smallest compatible fixes.**
55
- - [x] **Step 4: Run the focused tests** and confirm they pass.
56
- - [ ] **Step 5: Commit** the contract fixes separately.
57
-
58
- ### Task 3: Record user testing and current product scope
59
-
60
- **Files:**
61
-
62
- - Create: `docs/USER_TEST_GUIDE.md`
63
- - Modify: `MASTER_PLAN.md`
64
-
65
- **Interfaces:**
66
-
67
- - The guide gives a real-profile-safe order of commands, says which commands change state, and gives rollback instructions.
68
- - `MASTER_PLAN.md` begins with the one authoritative unfinished-work section and moves stale immediate tasks out of the active path.
69
-
70
- - [x] **Step 1: Add a concise user testing guide** for daily use, discovery, optional dashboard, safe mutation, rollback, and advanced validation.
71
- - [x] **Step 2: Add the current remaining work section** and mark historic, non-essential ideas as deferred rather than pretending they are active product requirements.
72
- - [x] **Step 3: Run markdown and CLI smoke checks** to make sure command names match the real surface.
73
- - [ ] **Step 4: Commit** documentation separately.
74
-
75
- ### Task 4: Validate the actual user journey
76
-
77
- **Files:**
78
-
79
- - Test: `tests/cli-help.test.ts`
80
- - Test: `tests/update.test.ts`
81
- - Test: `tests/dashboard.test.ts`
82
-
83
- - [x] **Step 1: Build and run** the CLI guide, catalog JSON, health, library, project recommendation preview, and dashboard endpoint checks without changing agent files.
84
- - [ ] **Step 2: Run** `npm run verify:full` **and inspect every failure if any.**
85
- - [ ] **Step 3: Review the diff for accidental profile/cache/secrets changes.**
86
- - [ ] **Step 4: Commit, then present the exact install/test/recovery commands to the user.**