vigiles 7.0.0 → 8.0.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.
package/README.md CHANGED
@@ -1,3 +1,44 @@
1
+ <!--
2
+ README DIRECTION — read before editing; keep changes aligned.
3
+ This file is the FRONT DOOR + a marketing asset for someone who already lives
4
+ in Claude Code / Codex. Optimize for a phone-skimmer.
5
+
6
+ 1. LEAD WITH BENEFITS, not mechanics or vocabulary. Say what the user GETS
7
+ (a guard that can't silently fail; a CLAUDE.md that stops lying) before how.
8
+ 1b. NEVER OPEN WITH A NEGATIVE, APOLOGY, OR CAVEAT. A bolded lead-in is the
9
+ FIRST thing a skimmer reads, so it must be the benefit/on-ramp, never a
10
+ deficiency or competitor: write "Start in plain markdown", NOT "No
11
+ TypeScript?". Put the STRONGEST proof (e.g. 2/7→7/7) on its OWN line, never
12
+ buried mid-paragraph, and END a section on the win, not the caveat (demote
13
+ trade-offs to a trailing aside). Break run-on em-dash/semicolon chains — a
14
+ paragraph is ≤ ~3 lines, one idea.
15
+ 1c. LEAD WITH THE CONCRETE PAIN the reader already feels — named in THEIR
16
+ situation, with the SPECIFIC silent failure, not an abstraction. "You
17
+ installed plugins and wrote skills — but do they actually work? A skill that
18
+ never fires, a hook that blocks nothing, a CLAUDE.md full of dead refs" beats
19
+ "reliability for your harness"; "a library with no tests" is the anchoring
20
+ analogy. This is NOT a 1b violation: a pain about the READER's situation is a
21
+ hook, not an apology — 1b bans opening with vigiles's OWN deficiency, a
22
+ caveat, or a competitor, never the user's pain. SAME FOR THE SUBDOCS: open
23
+ every guide with the concrete pain, THEN the "what this doc is" line + the
24
+ README uplink (per docs-quality in CLAUDE.md).
25
+ 2. COMPILED SPECS ARE EASY — reassure, never intimidate. You rarely hand-write
26
+ a .spec.ts: model-invocable skills (edit-spec / strengthen / test-harness)
27
+ author + edit it, and hooks auto-compile on save. Present the typed spec as
28
+ the SMOOTH, AUTO-ENFORCED next step you don't think about — the natural
29
+ evolution (JS→TS: gradual, strict opt-in), NEVER a wall. Markdown + inline
30
+ mode work with zero TS for anyone not there yet (progressive adoption).
31
+ 3. THE INSTRUMENTS stay first-class — including Eval (measuring whether a skill
32
+ actually helps is core, not optional). NOTE: Guard / compiled hooks is PARKED
33
+ FOR LAUNCH (commented out below; see research/roadmap.md "Launch readiness") —
34
+ so the live set is Lint/Test/Eval ("three instruments"); re-add Guard post-HN.
35
+ 4. SCANNABLE + SHORT — ~200-line cap; punchy table cells, bullets, runnable
36
+ blocks; benefits over jargon. Push depth into docs/ and LINK it.
37
+ 5. NO INTERNAL VOCABULARY (moat / measurement-authority / flywheel) and NO
38
+ research/ links — name the user benefit (see public-vs-internal-docs +
39
+ readme-brevity in CLAUDE.md).
40
+ -->
41
+
1
42
  <p align="center">
2
43
  <img src="logo.png" width="140" alt="vigiles logo" />
3
44
  </p>
@@ -8,10 +49,6 @@
8
49
  <strong>Make the harness your AI agent runs on reliable.</strong>
9
50
  </p>
10
51
 
11
- <p align="center">
12
- Your CLAUDE.md, hooks, and skills steer the agent — but nothing checks they're <em>true</em>, nothing stops them entering a <em>bad state</em>, nothing tests they <em>work</em>, and nothing measures whether they actually <em>help</em>. vigiles does all four — deterministically, mostly with no API key.
13
- </p>
14
-
15
52
  <p align="center">
16
53
  <a href="https://www.npmjs.com/package/vigiles"><img src="https://img.shields.io/npm/v/vigiles?color=orange" alt="npm version" /></a>
17
54
  <a href="https://github.com/zernie/vigiles/actions"><img src="https://img.shields.io/github/actions/workflow/status/zernie/vigiles/ci.yml?branch=main" alt="CI" /></a>
@@ -20,47 +57,83 @@
20
57
 
21
58
  ---
22
59
 
23
- `Agent = Model + Harness`. The model gets the headlines; the **harness** the
24
- instruction files, hooks, and skills you actually control is the half that
25
- fails silently. vigiles[^name] turns that harness into a compilable, analyzable,
26
- testable object instead of vibes. Four instruments, adopt any:
60
+ **You installed a bunch of plugins and wrote a few skillsbut do they actually work?**
61
+ A skill that never fires, a safety hook that blocks nothing, a CLAUDE.md full of dead
62
+ references your harness fails **silently**, and you find out mid-task.
27
63
 
28
- | | |
29
- | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
30
- | **🔎 Lint** | Every file path, script, code symbol, and linter rule your CLAUDE.md cites is checked against reality — a lint that asks _is this **true**_, not just _well-formed_ — so a renamed file or a disabled rule can't silently mislead the agent. **[→](docs/verifying-instruction-files.md)** |
31
- | **🛡 Guard** | Author a hook as a pure typed function and vigiles compiles it — making **whole classes of hook bugs unrepresentable** (the guard that silently doesn't block). **[→](docs/compiled-hooks.md)** |
32
- | **🧪 Test** | Hooks, skills, and subagents are code. vigiles tests they _do their job_ — and almost all of it is **deterministic, no API key**; the real-model evals run on your **Claude subscription**, not metered tokens. **[→](docs/harness-testing.md)** |
33
- | **📊 Eval** | Does that skill or plugin actually help — or just add cost? **A/B it on real tasks** and read the bill + correctness, not the vendor's headline — the eval you can afford. The same engine ranks the hyped ecosystem: **what works vs hype**. **[→](docs/measuring-skills.md)** |
64
+ **It's a library with no tests.**
34
65
 
35
- Pick the one that hurts today. **Works with Claude Code and Codex**
36
- ([`vigiles/codex`](docs/harnesses.md)), and you can
37
- [teach it your own harness](docs/authoring-an-adapter.md).
66
+ `Agent = Model + Harness` — the model gets the headlines, the harness is the half you
67
+ own. vigiles[^name] makes it prove itself **before the agent ever runs** — verify, test,
68
+ measure. Mostly free, no API key — real-model checks run on your **Claude Pro/Max
69
+ subscription, not metered tokens**.
70
+
71
+ Three instruments, adopt any:
72
+
73
+ | | |
74
+ | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
75
+ | **🔎 Lint** | Your CLAUDE.md stops lying — every path, script, symbol & linter rule checked against **reality**. **[→](docs/verifying-instruction-files.md)** |
76
+ | **🧪 Test** | Prove your hooks, skills & subagents do their job — **free, no API key**. **[→](docs/harness-testing.md)** |
77
+ | **📊 Eval** | Know if a skill helps or just costs — **A/B on real tasks**, on your own subscription. **[→](docs/measuring-skills.md)** |
78
+
79
+ <!-- PARKED FOR LAUNCH — Guard / compiled hooks. Re-add this row + the ④ section below post-HN. See research/roadmap.md "Launch readiness".
80
+ | **🛡 Guard** | A safety hook that **can't silently fail open** — write a typed function, get a guard that blocks. **[→](docs/compiled-hooks.md)** |
81
+ -->
82
+
83
+ <p align="center">
84
+ <img src="vigiles-demo.gif" width="720" alt="vigiles lint catching a file that moved and a script that was renamed" />
85
+ </p>
86
+ <!-- Regenerate the GIF: `python3 scripts/make-demo-gif.py` (output is verbatim CLI; see scripts/demo.sh for a live asciinema recording). -->
87
+
88
+ **Two ways in** — pick the pain that's yours:
89
+
90
+ - **Run agents on your own repo?** Start with **Lint** below, or `npx vigiles init`.
91
+ - **Ship plugins to a marketplace?** **[`vigiles scan`](docs/for-plugin-authors.md)**
92
+ ranks structural health with no key — see the **[plugin-author guide →](docs/for-plugin-authors.md)**.
93
+
94
+ **Your agent writes the spec — and you can always eject.** You rarely hand-write a
95
+ `.spec.ts`: skills author it for you, **`init` adopts an existing CLAUDE.md
96
+ non-destructively** (untouched until you compile), and plain markdown + inline
97
+ `<!-- vigiles:enforce -->` comments work with zero TypeScript. **Claude Code and
98
+ Codex** ([`vigiles/codex`](docs/harnesses.md)), or [your own
99
+ harness](docs/authoring-an-adapter.md). _(New here? [the FAQ](docs/faq.md) covers the
100
+ "do I write TypeScript / will it touch my files" questions.)_
38
101
 
39
102
  ## Quick start
40
103
 
41
104
  **Paste into Claude Code or Codex:**
42
105
 
43
106
  ```text
44
- Set up vigiles in this repo with good defaults (lint + test, non-interactive).
45
- Verify my CLAUDE.md / AGENTS.md references and show me what's stale, then write
46
- and run a harness test for one of my hooks or skills. Ask me first before gating
47
- it in CI, adding a real-model eval, or enforcing strictly (--strict).
107
+ Set up vigiles in this repo: run `npx vigiles init` and accept the defaults. If I
108
+ already have a CLAUDE.md or AGENTS.md, adopt it into a spec and show me which
109
+ references are stale. Then install the dep, compile, and write + run one harness
110
+ test for a hook or skill of mine. Don't enforce a spec-per-file or add a real-model
111
+ eval without asking me first.
48
112
  ```
49
113
 
114
+ The same prompt works in Codex.
115
+
50
116
  Or do it yourself:
51
117
 
52
118
  ```bash
53
119
  npx vigiles init # sets up lint + test: spec + harness test + CI + plugin
54
120
  ```
55
121
 
56
- Interactive in a terminal, non-interactive for agents/CI (or `--yes`). It installs
57
- a model-invocable **`test-harness` skill** too, so you can then tell your agent
58
- _"test my skills"_ and it writes the test.
122
+ Interactive in a terminal, non-interactive for agents/CI (or `--yes`).
123
+
124
+ **You don't hand-write any of this your agent does.** `init` installs
125
+ model-invocable skills, so a plain-English ask does the work (it edits the source
126
+ and recompiles on save; you never touch it by hand):
127
+
128
+ - _"test my skills"_ → scaffolds **and runs** a trigger/behaviour test (`test-harness`)
129
+ - _"harden my rules"_ → upgrades prose guidance into enforced linter rules (`strengthen`)
130
+ - _"add a rule to my CLAUDE.md"_ → edits the source and recompiles (`edit-spec`)
59
131
 
60
132
  <details>
61
133
  <summary>What <code>init</code> sets up</summary>
62
134
 
63
135
  - **Both lint and test** by default; scope with `--lint` / `--test`.
136
+ - **Already have a CLAUDE.md / AGENTS.md? `init` adopts it** into a spec faithfully and **non-destructively** — your file is left untouched until you choose to `compile` (and `eject` undoes it).
64
137
  - Adds `vigiles` to `devDependencies`; installs the Claude Code plugin (skills + hooks) via the marketplace — globally, never vendored.
65
138
  - Wires CI as a `zernie/vigiles@v1` workflow (a composite over the same CLI) that posts a sticky PR comment + a `valid` output.
66
139
 
@@ -71,10 +144,10 @@ Prefer to write tests yourself? They can be JS **or** TS
71
144
 
72
145
  ## ① Lint — your CLAUDE.md lies to your agent
73
146
 
74
- Your CLAUDE.md points the agent at `src/auth/login.ts` and says to run `npm run
75
- check`. But the file moved six commits ago and the script was renamed — the agent
76
- trusts the stale claim and acts on fiction. `npx vigiles lint` resolves every
77
- reference against reality:
147
+ **Your CLAUDE.md drifts the moment you refactor.** It points the agent at
148
+ `src/auth/login.ts` and says run `npm run check` but the file moved six commits
149
+ ago and the script was renamed. The agent trusts the stale claim and acts on
150
+ fiction. `npx vigiles lint` resolves every reference against reality:
78
151
 
79
152
  ```text
80
153
  CLAUDE.md:
@@ -83,57 +156,25 @@ CLAUDE.md:
83
156
  ✓ @typescript-eslint/no-floating-promises — exists and enabled in eslint config
84
157
  ```
85
158
 
86
- File paths, scripts, and code symbols — plus linter rules across **7 catalogs**
87
- (the rule exists **and is enabled**). Start with one inline comment, no new files;
88
- step up to a typed `.spec.ts` (compiled to CLAUDE.md) when you want it.
89
- **[Full guide →](docs/verifying-instruction-files.md)**
90
-
91
- > **Markdown is prose; a typed spec is a _program_.** Opt in and an agent that
92
- > leaks or hands off mismatched data is a **type error** — your multi-agent
93
- > pipeline won't compile if the handoffs don't line up. Others lint prose; vigiles
94
- > is a **compiler for harnesses**, graduated like `strict`. **[The moat →](research/typed-spec-moat.md)**
95
-
96
- **Same cross-reference, any plugin.** `npx vigiles scan` checks a plugin's
97
- _contracts_ — every subagent tool, `mcp__server__tool`, `mcp_tool` hook, hook
98
- event, and script path actually **exists and resolves**, not just parses (valid
99
- YAML ≠ a real tool). A **superset of `claude plugin validate`**, no key. **[Audit any plugin →](docs/cli.md#scan-dir)**
100
-
101
- ## ② Guard — author a hook that can't be wrong
102
-
103
- A safety hook is the one place that can _stop_ the agent before something
104
- irreversible — yet hand-written hooks fail silently (`exit 1` not `2`, the wrong
105
- JSON field, a `grep` that misses `cd x && git push -f`): they look like a guard
106
- and block nothing. Write the hook as a pure typed function instead — vigiles
107
- compiles the protocol for you:
108
-
109
- ```typescript
110
- import { defineHook, tool, deny, allow } from "vigiles/hook";
159
+ File paths, scripts, code symbols — plus linter rules across **7 linters**
160
+ (ESLint, Ruff, Clippy + four more): each rule exists **and is enabled**.
111
161
 
112
- export default defineHook({
113
- on: "PreToolUse",
114
- match: tool("Bash"),
115
- decide: (e) =>
116
- e.command.runs("git push", { force: true })
117
- ? deny("no force-push to a protected branch")
118
- : allow(),
119
- });
120
- ```
162
+ **Start with one inline comment — no new files.** Step up to a typed `.spec.ts`
163
+ (your agent writes it; it compiles to CLAUDE.md) when you want compiler-grade
164
+ guarantees — and `vigiles eject` hands it back to plain markdown anytime.
165
+ **[Full guide →](docs/verifying-instruction-files.md)**
121
166
 
122
- This **eliminates an entire class of bugs**: you never write the exit code / JSON
123
- field (false confidence), the matcher is **AST-backed** (catches the compound
124
- bypass a glob misses), the only import allowed is `vigiles/hook` (capability = API
125
- surface), and the artifact is **stamped** (a later hand-edit is refused). A real,
126
- widely-copied OSS safety hook blocks **2/7** of the disaster battery; the compiled
127
- rewrite blocks **7/7**. Honest about the cons: this fixes a hook's _logic_, not
128
- the harness's _delivery_ — a subagent's tool calls still bypass any PreToolUse
129
- hook ([#34692](https://github.com/anthropics/claude-code/issues/34692)), so it's a
130
- strong default, not an unbypassable wall. **[Compiled hooks — bug classes + trade-offs →](docs/compiled-hooks.md)**
167
+ > **Want more? Bad states can stop compiling.** Opt in deeper and a broken
168
+ > hand-off between agents becomes a build error instead of a runtime surprise —
169
+ > graduated like TypeScript's `strict`, on only when you want it.
170
+ > **[How →](docs/compiled-hooks.md)**
131
171
 
132
- ## Test — does your harness do its job?
172
+ ## Test — does your harness do its job?
133
173
 
134
- A hook can be wired wrong; a skill's description can fail to trigger — or hijack
135
- unrelated prompts; injected context can never reach the model. All of it passes a
136
- naive "did it run?" check. vigiles tests the assembled harness for real:
174
+ **You wired the hook but does it actually block?** A skill's description can fail
175
+ to trigger, or hijack unrelated prompts; injected context can silently never reach
176
+ the model. All of it passes a naive "did it run?" check. vigiles tests the
177
+ assembled harness for real:
137
178
 
138
179
  ```typescript
139
180
  import { runHook } from "vigiles/testing";
@@ -157,11 +198,11 @@ Almost every tier runs with **no model and no API key** — milliseconds, on eve
157
198
  commit; only the real-model evals need a model, on your own `claude` CLI.
158
199
  **[How it works →](docs/harness-testing.md)**
159
200
 
160
- ## Eval — does it actually help, or just cost more?
201
+ ## Eval — does it actually help, or just cost more?
161
202
 
162
- A skill claims "65% fewer tokens." A plugin promises "3× faster." Stars and
163
- vibes — **zero measurement**. vigiles A/Bs the claim on real coding tasks, the
164
- harness loaded exactly as it ships, and reports the **metric triple**:
203
+ **"65% fewer tokens." "3× faster." Says who?** A skill claims it, a plugin promises
204
+ itstars and vibes, **zero measurement**. vigiles A/Bs the claim on real coding
205
+ tasks, the harness loaded exactly as it ships, and reports the **metric triple**:
165
206
 
166
207
  ```typescript
167
208
  import { measureArms } from "vigiles/testing";
@@ -178,20 +219,70 @@ const r = await measureArms({
178
219
  - **The target** — whatever the skill claims to move (output tokens, latency, tool calls), verified on its own terms.
179
220
  - **The blast radius** — correctness, a deterministic 1/0. A token win that breaks the code is **not a win**.
180
221
 
181
- The kicker: every run is **your own `claude` CLI on your Pro/Max subscription**,
182
- so you can measure on every changeand the same engine powers the **ecosystem
183
- benchmark** ("what works vs hype"). **[Eval a skill →](docs/measuring-skills.md)** · **[Why it's affordable →](docs/eval-architecture.md)**
222
+ **Safe to repeat.** Each real-model run is sandboxed (ephemeral dir, egress blocked
223
+ or allow-listed), and `interceptTools` catches an irreversible external a push, a
224
+ paid API as an _attempt_, never running it. **[Safety, sandboxing & FAQ →](docs/safety.md)**
225
+
226
+ **The eval you can actually afford.** promptfoo / DeepEval hit a metered API and
227
+ bill **per token, every run**. vigiles answers most questions with **no model at
228
+ all**, and runs the rest on your own **Claude Pro/Max subscription — $0 extra**. So
229
+ you can measure on every change. **[Eval a skill →](docs/measuring-skills.md)** · **[Why it's affordable →](docs/eval-architecture.md)**
230
+
231
+ <!-- PARKED FOR LAUNCH — Guard / compiled hooks. Re-add this whole section (and the table row above) post-HN. See research/roadmap.md "Launch readiness".
232
+
233
+ ## ④ Guard — a safety hook that can't silently fail open
234
+
235
+ **Your safety hook looks like it blocks — and doesn't.** A guard is your last stop
236
+ before something irreversible, but a hand-written one **fails open** without telling
237
+ you. _(Already write safety hooks? This is the power tool.)_ Write a pure typed
238
+ function instead; vigiles emits the exit code, the JSON, and an AST-backed matcher:
239
+
240
+ ```typescript
241
+ import { defineHook, tool, deny, allow } from "vigiles/hook";
242
+
243
+ export default defineHook({
244
+ on: "PreToolUse",
245
+ match: tool("Bash"),
246
+ decide: (e) =>
247
+ e.command.runs("git push", { force: true })
248
+ ? deny("no force-push to a protected branch")
249
+ : allow(),
250
+ });
251
+ ```
252
+
253
+ **The proof:** a widely-copied OSS safety hook blocks **2/7** of the disaster
254
+ battery. The compiled rewrite blocks **7/7** — measured, not asserted.
255
+
256
+ You never hand-write the exit code or JSON field (the usual false confidence), the
257
+ matcher is **AST-backed** (it catches the `cd x && git push -f` a glob misses), and
258
+ the artifact is **stamped** so a later hand-edit is refused.
259
+
260
+ _Scope: this fixes a hook's logic, not the harness's delivery — a subagent's tool
261
+ calls still bypass any PreToolUse hook
262
+ ([#34692](https://github.com/anthropics/claude-code/issues/34692)), so it's a strong
263
+ default, not an unbypassable wall._
264
+ **[Compiled hooks — bug classes + trade-offs →](docs/compiled-hooks.md)**
265
+
266
+ -->
267
+
268
+ ## FAQ
269
+
270
+ - **Isn't this just a markdown linter?** No — it checks whether your instruction file is _true_ (every path/script/symbol/rule exists and is enabled), then tests and measures your harness. A style linter can't do any of that.
271
+ - **Do I have to write TypeScript?** No. Lint your markdown with zero new files; when you want a spec, your agent writes it. It's gradual, like TS's `strict`.
272
+ - **Does it overwrite my files?** No. `init` adopts an existing CLAUDE.md _non-destructively_ — untouched until you `compile`, and `eject` reverses it.
273
+ - **Need an API key?** No for almost everything (free, every commit). Real-model evals run on your Claude Pro/Max subscription — $0 metered tokens.
274
+ - **Non-JS repo?** `npx vigiles lint` verifies your CLAUDE.md with no install (Ruff/Clippy/Pylint/… too).
184
275
 
185
- **The eval you can actually afford.** promptfoo / DeepEval / … hit a metered API
186
- SDK and bill **per token, every run**; vigiles answers most questions with **no
187
- model at all** and runs the rest on **your Claude Pro/Max subscription — $0 extra**.
276
+ **[Full FAQ →](docs/faq.md)**
188
277
 
189
278
  ## More
190
279
 
191
- - **[Plugin health leaderboard →](docs/cli.md#scan-dir)** — point `scan` at a marketplace (e.g. `wshobson/agents`) and it ranks every plugin by structural health (0–100, A–F), worst issues first **no key**. Add `--trigger` for the model-gated column: do the skills actually fire?
192
- - **[CLI & GitHub Action →](docs/cli.md)** — every command (incl. compiled hooks via `compile`), the Action, and the plugin. The full **[lint rules matrix →](docs/verifying-instruction-files.md#the-validation-rules--the-full-matrix)** lives with the linting guide.
193
- - **[Skills →](docs/skills.md)** — consumer skills installed as a Claude Code plugin. The model-invocable ones (`test-harness`, `strengthen`, `edit-spec`) fire on their own ask _"test my skills"_ and the agent reaches for them.
194
- - **[Docs index →](docs/README.md)** · **[Research →](research/README.md)** · **[API reference →](https://zernie.github.io/vigiles/)** (generated) · **[Related tools →](docs/related-tools.md)** (ast-grep, Dependency Cruiser, Ruler, rulesync).
280
+ - **[CLI →](docs/cli.md)** — every command and the plugin · **[GitHub Action →](docs/github-action.md)** run it in CI. The full **[lint rules matrix →](docs/verifying-instruction-files.md#the-validation-rules--the-full-matrix)** lives with the linting guide.
281
+ - **[Skills →](docs/skills.md)** — the skills `init` installs, and how the model-invocable ones trigger.
282
+ - **[Ship plugins? The plugin-author guide →](docs/for-plugin-authors.md)** — scan a draft for structural health, make your skills fire for users, then rank a whole marketplace (0–100, A–F, worst issues first) **no key**.
283
+ - **[Docs index →](docs/README.md)** · **[API reference →](https://zernie.github.io/vigiles/)** · **[Related tools →](docs/related-tools.md)** (ast-grep, Dependency Cruiser, Ruler, rulesync).
284
+ - **[Stability →](STABILITY.md)** — 0.x: the CLI is stable; the library API is still evolving; experimental surfaces are marked.
285
+ - **Not for you if** you want a model/capability benchmark or runtime guardrails in the request path — vigiles is build-/CI-time.
195
286
  - Companion to [Feedback Loop Is All You Need](https://zernie.com/blog/feedback-loop-is-all-you-need).
196
287
 
197
288
  ## License
@@ -11,7 +11,7 @@
11
11
  * recognizes exactly these, so this list can't silently drift from the code.
12
12
  */
13
13
  /** Human-facing verbs (printed in help; typed by a human/agent/CI). */
14
- export declare const VERBS: readonly ["init", "compile", "lint", "refs", "test", "eval", "scan", "measure", "explain", "scaffold-test", "generate-types", "generate-schema", "generate-harness", "hook-runtime"];
14
+ export declare const VERBS: readonly ["init", "compile", "eject", "lint", "test", "eval", "scan", "scaffold-test", "generate", "hook-runtime"];
15
15
  /** Runtime entrypoint kinds under `vigiles hook-runtime <kind>` (emitted, not typed). */
16
16
  export declare const HOOK_RUNTIME_KINDS: readonly ["run-program", "agent", "agent-start", "agent-done", "skill", "skill-tool", "skill-start", "skill-done", "run-skill", "intercept-tool", "guard", "action", "refs", "effect-enter", "effect-exit"];
17
17
  export type Verb = (typeof VERBS)[number];
@@ -17,17 +17,13 @@ exports.HOOK_RUNTIME_KINDS = exports.VERBS = void 0;
17
17
  exports.VERBS = [
18
18
  "init",
19
19
  "compile",
20
+ "eject",
20
21
  "lint",
21
- "refs",
22
22
  "test",
23
23
  "eval",
24
24
  "scan",
25
- "measure",
26
- "explain",
27
25
  "scaffold-test",
28
- "generate-types",
29
- "generate-schema",
30
- "generate-harness",
26
+ "generate",
31
27
  "hook-runtime",
32
28
  ];
33
29
  /** Runtime entrypoint kinds under `vigiles hook-runtime <kind>` (emitted, not typed). */
package/dist/cli.d.ts CHANGED
@@ -6,7 +6,7 @@
6
6
  * vigiles init — scaffold a spec from scratch
7
7
  * vigiles compile — compile .spec.ts → .md with linter verification
8
8
  * vigiles lint — verify hashes, report coverage, detect duplicates
9
- * vigiles generate-types — emit .d.ts with types from project state
9
+ * vigiles generate types — emit .d.ts with types from project state
10
10
  */
11
11
  export {};
12
12
  //# sourceMappingURL=cli.d.ts.map