ainb users browse the curated catalog — 93 toolkit-owned skills + vetted external — in the [b] modal and via ainb skill browse --catalog ainb, then install any pick across every tool home. CODE COMPLETE 4 / 6 GATES GREEN HUMAN GATE PENDING
[b] shelf with a kind badge. Those install by running their documented command
(npx skills add …, claude plugin install …, claude mcp add …)
via sh -c, gated behind a 2-step confirm (first Enter shows the exact
command, second runs it) — sourced only from the vetted toolkit release index.
A scoped code review graded it Good, Security A−, no Critical; all
2 Medium + 3 Minor findings were applied. Separately, the post-merge drift that had silently
broken all ~20 skill-manager tmux tripwires locally (home-marker + ainb-hooks
nudge) was repaired — every one green again.
The agents-in-a-box toolkit is now an external provider of skills that ainb users browse and install — not baked in. A new AinbCuratedCatalogBackend (alongside the existing SkillsShHttpBackend, behind the same CatalogBackend trait) surfaces one curated shelf: the toolkit's own skills and the vetted external-dependencies.yaml entries.
[b] opens the browse modal, defaulting to the curated (ainb) catalog; Tab toggles to skills.sh. A blank Enter lists the whole curated shelf (it's small + local); typing filters.ainb skill browse --catalog ainb prints the same shelf; --catalog skills (default) keeps the skills.sh path.ainb source add + ainb skill install flow: owned → the pinned GitHub release, external → its real upstream, deployed to every tool home.catalog-index.json), fetched by a pinned tag ([skills].catalog_release, default latest). The owned install URIs pin that same tag, so a browse and its installs always agree on bytes.A vhs recording drives the real binary against an offline curated index. Every frame was read and asserted — not blank-checked.
m → SkillManager · b → curated modal · Enter → shelf · Enter → install. Entirely offline.Browse Catalog (ainb curated). The shelf shows BOTH an owned entry (aaa-curated-owned → stevengonsalvez/agents-in-a-box) and a vetted-external entry (zzz-curated-external → acme/external-skill), with the [Tab] switch catalog affordance. This is the success-criterion "shows BOTH" check, frame-true.file-tmp-ainb-curated-jour) — the selected entry was installed from its upstream and deployed. The tripwire additionally asserts the manifest + lockfile on disk.# curated browse → install, real binary in tmux run 1 test result: ok. 1 passed ... finished in 8.76s run 2 test result: ok. 1 passed ... finished in 8.34s run 3 test result: ok. 1 passed ... finished in 8.80s
ainb-skill-core catalog_index test result: ok. 10 passed ainb-cli catalog_curated test result: ok. 7 passed ainb-cli skill_browse test result: ok. 5 passed # incl. curated --catalog ainb
| Commit | Change |
|---|---|
60322927 | skill-core: CatalogIndex types + pure transforms (10 tests) |
6e630b3e | fix: repair malformed sentry-cli frontmatter close (real product bug) |
6781b407 | xtask: gen-catalog-index generator + snapshot |
e0258e12 | cli: AinbCuratedCatalogBackend over the release index (7 tests) |
c763ce2a | cli: skill browse --catalog ainb (5 tests) |
a67cb808 | tui: browse the curated catalog in the [b] modal + Tab toggle |
d1036624 | test: live tmux tripwire for curated [b] browse + install |
1a12574f / 8693f456 | docs/ci: [skills].catalog_release pin + release publish step |
5e6b0f96 | test: vhs journey scaffolding |
| Gate | What | Status |
|---|---|---|
| G1 | tmux tripwire — comprehensive, non-flaky ×3 | GREEN |
| G2/G3 | vhs journey, every frame READ + asserted | GREEN |
| G4 | catalog tests + my code clippy-clean | GREEN |
| G5 | this explainer, live on here.now | THIS PAGE |
| G6 | HTML solid → human validates | STEVIE |
repo external entries that resolve to an installable subpath (3 of them). multi-subpath dirs install best-effort; repo-root-only externals are omitted because the install flow requires a @ref/path URI.external-dependencies.yaml aren't a single gh: unit, so they're not in the browse shelf yet.Skills (manager) tile + seed install.json prompt_dismissed); the other 18 want the same mechanical sweep./tmux-verify G5 gate · branch feat/skill-manager · all artifacts real (no placeholders). The human gate (G6) is Stevie.