A package for shipping a business owner their own Claude Code plugin marketplace, with Skill Loop checking every skill on a schedule and a live stream that shows each check as it runs.
These numbers are from the run in the stream above: sib check all against main at commit 2964188, then sib loop demo on the Skill Loop engine. Nothing was executed from the plugins themselves; the inventory reads files and hashes them.
gtm-audit-pro)| Check | Result | What it found |
|---|
Skill Loop's inventory flagged 65 missing references. Before calling them skill bugs, refs-resolve re-resolved each one. 14 exist at the plugin root or once a doubled segment like assets/assets is collapsed, 15 are example paths in prose (skill-creator's references/finance.md), and 1 is code (this.accountId,). That leaves 35 real gaps. The other 30 are an Evaluator seam: the probe was wrong, not the skill. The fix belongs in the engine's resolver.
One CLI, one Worker, one D1 table. The marketplace repo stays the source of truth; the box reads it, runs Skill Loop over it, and streams what happened.
FDE / CLIENT CLIENT'S CLAUDE CODE sib init acme ─▶ acme-marketplace repo /plugin marketplace add │ .claude-plugin/marketplace.json acme/acme-marketplace │ plugins/* · qa/<plugin>/<skill>/suite.json ▲ ▼ │ install git push ─▶ GitHub Actions skill-loop.yml ────────────────┘ sib check all G0 manifest · G1 inventory · G2 suites sib loop run trigger ▸ score ▸ detect ▸ research ▸ redraft ▸ stage │ POST /api/events (Bearer SIB_INGEST_TOKEN) ▼ ┌──────────────────────── CLOUDFLARE ─────────────────────────────────┐ │ skills-in-a-box Worker │ │ Assets / guide · /run/ run view │ │ /api/events ──▶ D1 events (run_id, seq, kind, body) │ │ /api/stream ◀── SSE, resumes from Last-Event-ID ──▶ any browser │ │ cron ──▶ workflow_dispatch skill-loop.yml (G3) │ │ │ │ jev-gateway /v1/select-skill ──▶ outcomes join the same log (G3) │ └─────────────────────────────────────────────────────────────────────┘ │ drift found ▼ PR with the redrafted section + score diff ──▶ owner approves ──▶ tag release (G4)
Check IDs are code in checks/index.mjs. Unbuilt work reports "not built" instead of passing. Chip colors below are the result from the recorded run.
/plugin marketplace add acme/acme-marketplace, with only the plugins they paid for.Box exists and runs. CLI, 18 checks, Worker with SSE stream, D1 schema, CI workflow, and a recorded proof run against the real marketplace.
Fix what install would hit. Drop or restore gtm-audit-pro, list or move the 4 orphans, pin version and upstream license on the 9 vendored plugins. Merge Skill Loop into main under plugins/skill-loop.
Resolve the 35 missing files and the 6 duplicate names. Upstream the resolver fix so the 30 false positives stop appearing. Deploy the Worker so every CI run streams.
Suites for client-facing skills first (google and meta wiring, GTM). Draft from each SKILL.md, review by hand, record baselines tagged with the model ID.
Cron dispatches the loop. Drift opens a PR with the redrafted section and score diff. Only the owner token merges. jev-gateway skill-selection outcomes join the same event log.
Client forks and releases. sib init tested end to end, a clean-container install in CI, and a tagged release with a changelog line on every version bump.
Paste into Claude Code on the Mac. The env vars for Claude Code Web are at the end of the block.
cd /Users/supabowl && claude --dangerously-skip-permissions Build "Skills in a Box" in /Users/supabowl/skills-in-a-box and push it to github.com/organized-ai/skills-in-a-box (private, MIT). First step: apply the Organized Codebase agent templates to .claude/ before writing code. Context: an FDE tool that ships a client their own Claude Code plugin marketplace and keeps every skill in it checked by Skill Loop, with a live SSE stream as proof. Engine: Organized-AI/plugin-marketplace, branch codex/skill-loop-bounded-optimization, plugins/skill-loop (76 tests pass). Style: match devops-in-a-box (dark, gold, IBM Plex) and use GSAP on the guide. Phase 0 is drafted already (cli/sib.mjs, checks/index.mjs, src/worker.js, migrations/0001_events.sql, wrangler.jsonc, .github/workflows/skill-loop.yml, site/page.html). Recreate it from the attached tarball if present, otherwise build to that spec: - sib check [g0..g4|all] [--why] [--json], sib loop demo|run, sib init <client>, sib stream - every check event POSTs to $SIB_URL/api/events with Bearer $SIB_INGEST_TOKEN and appends to $SIB_RECORD - Worker: Assets for / and /run/, GET /api/stream (SSE from D1, Last-Event-ID resume), /api/status, /api/events Deploy first: 1. wrangler d1 create skills-in-a-box, put the id in wrangler.jsonc, wrangler d1 migrations apply skills-in-a-box --remote 2. wrangler secret put SIB_INGEST_TOKEN (openssl rand -hex 24), wrangler deploy 3. Run SIB_URL=<worker url> SIB_INGEST_TOKEN=... sib check all, and confirm the run view streams it Then work gate by gate. A gate is done only when `sib check <gate>` passes in CI. Keep checks honest. G0 In plugin-marketplace: remove or restore gtm-audit-pro, list or move boris, google-oauth-helper, phased-planning, social-carousel, pin version + upstream license on the 9 vendored Anthropic plugins, merge plugins/skill-loop into main. G1 Fix the 35 missing references and 6 duplicate skill names. Open a PR on the skill-loop engine so its resolver checks the plugin root and collapses doubled segments. G2 `sib suite draft <skill>` writes qa/<plugin>/<skill>/suite.json from the SKILL.md for review. Start with organized-google-wiring and organized-meta-wiring. Record baselines tagged with the model ID. G3 Worker cron dispatches skill-loop.yml. Drift opens a PR with the redrafted section and score diff. Only `sib approve` with the owner token merges. Post jev-gateway /v1/select-skill outcomes into the same event log. G4 sib init tested end to end on a sample client, CI installs the marketplace in a clean container, tagged releases with a changelog line. Rules: no time estimates anywhere. Commit after each gate passes. README leads with the one-command check and shows which gates are green. # Claude Code Web env vars CLOUDFLARE_ACCOUNT_ID=<your account id> CLOUDFLARE_API_TOKEN=<Workers Scripts:Edit, D1:Edit, Account Settings:Read> SIB_INGEST_TOKEN=<same value as the Worker secret> SIB_URL=https://skills-in-a-box.<subdomain>.workers.dev SIB_MARKET=./plugin-marketplace SIB_ENGINE=./plugin-marketplace/plugins/skill-loop GITHUB_TOKEN=<repo + workflow scope on organized-ai>