npx skills add ...
npx skills add zernie/vigiles --skill adopt-spec
Adopt a typed .spec.ts for an existing hand-written CLAUDE.md — start from the file you already have, non-destructively
npx skills add zernie/vigiles --skill adopt-spec
Start a typed CLAUDE.md.spec.ts from an existing hand-written CLAUDE.md (or AGENTS.md). This is the non-destructive adoption path — you keep your existing instruction file as the starting point and get type safety going forward.
Adoption is the safe, faithful on-ramp — never an upgrade in disguise. These are non-negotiable:
CLAUDE.md / AGENTS.md. Only write the new .spec.ts. Never auto-compile over the file — switching it to spec-managed is a separate, explicit step the user runs with a diff to review.guidance() as guidance(). Upgrading to enforce() has a cost (config/plugins, possible false positives) and is a separate opt-in step — the strengthen skill. Adoption is not turning on strict / workflow gating.vigiles eject <file> hands the file back as plain hand-owned markdown anytime — it's never a one-way door. Tell the user this.<!-- vigiles:enforce ... --> comments are verified by vigiles lint with the same engine.Read the target instruction file (default: CLAUDE.md in the repo root). If the user specified a path, use that.
Also check if vigiles is installed: look for vigiles in package.json devDependencies. If not, suggest:
Identify these sections in the markdown:
`npm run build` — description or - `command` — description`src/foo.ts` — description listing important files### headings with **Enforced by:** or **Guidance only** annotationsFor each rule, classify it:
**Enforced by:** \linter/rule`→enforce("linter/rule", "why")`**Enforced by:** \code-review`or similar non-linter →guidance("...")`**Guidance only** → guidance("...")Create CLAUDE.md.spec.ts (or the appropriate name based on the source file) with this structure:
Important guidelines:
file() refs in sections where file paths appear in backticks — this enables stale reference detectioncmd() refs for any npm run commands mentioned in sections**Enforced by:** \code-review`rules toguidance()` — code review is not a mechanical enforcement// TODO: classify as enforce() or guidance() comment**Why:** text as the second argument to enforce() or guidance()ref() for cross-referencesRun:
Compare the compiled output against the original file. Key differences are expected (formatting, section ordering), but all rules, commands, key files, and prose content should be preserved.
Show the user:
npx vigiles compilenpx vigiles lintAsk if they want you to write the file. If yes, also suggest adding to .gitignore or updating CI to run vigiles compile and vigiles lint.
If the user wants CI integration, suggest adding to their GitHub Actions workflow:
Or using the vigiles GitHub Action:
npm run build
npx vigiles compile CLAUDE.md.spec.ts- name: Compile specs
run: npx vigiles compile
- name: Verify references + integrity
run: npx vigiles lint- uses: zernie/vigiles@v1
with:
command: lint