--- name: skills-cli-retroactive-store-wiring description: "Retroactively register hand-copied skills with the vercel-labs skills CLI (global store + lockfile), wire omp via the agents provider (no repo symlinks), and extract authored overrides without twins" --- # Skills CLI retroactive store wiring (omp tiers) Retrofit provenance for hand-copied skills and wire them for omp on Dank workstations. Executed 2026-10-18 on blankpad; doctrine doc: `omp-docs/tools/vercel-labs-skills/skill-store-wiring.md` (repo). ## Tier law (final design — do NOT reintroduce per-skill symlinks in the repo) | Tier | Path | Owner | |---|---|---| | Store | `~/.agents/skills/` + lockfile `~/.agents/.skill-lock.json` (v3) | `skills` CLI | | Authored | `/agent/skills/` real dirs | Frank, branch → PR | | Managed | `~/.omp/agent/managed-skills/` | `manage_skill` only | omp has NO agent id in the skills CLI (79-agent registry in `dist/cli.mjs`; `-a pi` writes `~/.agents/skills` too — pi detector keys on `~/.pi/agent`). omp reads the store DIRECTLY via its `agents` provider (`skills.enableAgentsUser`, default true; check with `read cfg://skills`). Precedence: authored (native, 100) > skillshare > ... > agents provider > managed (5). Identical copies collapse by realpath; differing same-named copies survive namespaced `agents/` with a startup warning — so when authoring an override, REMOVE the store twin (`npx -y skills remove -g`; prunes lockfile too) or `skills update -g` resurrects a twin. ## Procedure (retroactive registration) 1. List the repo/live skill dirs to register; identify true sources (per-skill — e.g. `find-skills` is `vercel-labs/skills`, not `mattpocock/skills`). 2. Drift check FIRST, per skill, before anything moves: `diff -rq / ~/.agents/skills/` after canonical install; abort-and-report on drift (byte-identical = clean cutover). 3. Canonical install (scratch dir with a package.json; global scope): `npx -y skills add / --all -g` (+ per extra source `npx -y skills add vercel-labs/skills --skill find-skills --agent universal -g`). Artifacts: store dirs + `~/.agents/.skill-lock.json`; verify `jq '.skills|length'`. 4. Authored extraction (only for skills the user will customize): copy dir into repo `agent/skills//`, add an "Authored override" note after frontmatter, then `npx -y skills remove -g` and confirm `jq '.skills|has("")' == false`. 5. Clear repo copies of store-managed skills (repo records authored overrides ONLY). Live cutover after merge: move old dirs to /tmp snapshot, `git merge --ff-only origin/main` in the live checkout. 6. `skills ls` from a repo containing `agent/skills` mislabels skills as Eve project skills (path collision) — attribution noise, ignore. 7. Fresh-box recipe (three commands, no wiring): add `--all -g`, add find-skills, `remove grilling -g`. ## Gotchas - Eve/Codex `agents/openai.yaml` files ride along from upstream; omp ignores them — prune from authored dirs (they get swept off disk elsewhere, leaving phantom ` D` in git status). - `skills remove` prunes only global scope if `-g` given; check lockfile after. - Mid-run doc readers (subagents) may see pre-cutover trees — send them a correction message, don't let stale advice ship in issue bodies.