@vibe-agent-toolkit/vat-development-agents 0.1.32-rc.4 → 0.1.32

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.
Files changed (52) hide show
  1. package/dist/.claude/plugins/marketplaces/vat-skills/CHANGELOG.md +37 -4
  2. package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/.claude-plugin/plugin.json +1 -1
  3. package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/vat-adoption-and-configuration/SKILL.md +179 -0
  4. package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/{authoring → vat-agent-authoring}/SKILL.md +16 -134
  5. package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/{audit → vat-audit}/SKILL.md +1 -1
  6. package/dist/{skills/org-admin → .claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/vat-enterprise-org}/SKILL.md +3 -3
  7. package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/{resources → vat-knowledge-resources}/SKILL.md +1 -1
  8. package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/vat-rag/SKILL.md +104 -0
  9. package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/vat-skill-authoring/SKILL.md +156 -0
  10. package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/{distribution → vat-skill-distribution}/SKILL.md +3 -2
  11. package/dist/{skills/authoring/resources/skill-quality-checklist.md → .claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/vat-skill-review/SKILL.md} +16 -1
  12. package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/vibe-agent-toolkit/SKILL.md +40 -189
  13. package/dist/generated/resources/skills/CLAUDE.d.ts +28 -0
  14. package/dist/generated/resources/skills/CLAUDE.js +60 -0
  15. package/dist/generated/resources/skills/SKILL.d.ts +2 -10
  16. package/dist/generated/resources/skills/SKILL.js +14 -54
  17. package/dist/generated/resources/skills/vat-adoption-and-configuration.d.ts +29 -0
  18. package/dist/generated/resources/skills/vat-adoption-and-configuration.js +53 -0
  19. package/dist/generated/resources/skills/vat-agent-authoring.d.ts +0 -2
  20. package/dist/generated/resources/skills/vat-agent-authoring.js +9 -19
  21. package/dist/generated/resources/skills/vat-audit.js +1 -1
  22. package/dist/generated/resources/skills/{vat-claude-org-admin.js → vat-enterprise-org.js} +3 -3
  23. package/dist/generated/resources/skills/{vat-resources.js → vat-knowledge-resources.js} +1 -1
  24. package/dist/generated/resources/skills/{vat-install-architecture.d.ts → vat-rag.d.ts} +6 -7
  25. package/dist/generated/resources/skills/vat-rag.js +43 -0
  26. package/dist/generated/resources/skills/{vat-debugging.d.ts → vat-skill-authoring.d.ts} +7 -7
  27. package/dist/generated/resources/skills/vat-skill-authoring.js +48 -0
  28. package/dist/generated/resources/skills/{vat-skills-distribution.js → vat-skill-distribution.js} +4 -4
  29. package/dist/generated/resources/skills/{skill-quality-checklist.d.ts → vat-skill-review.d.ts} +5 -1
  30. package/dist/generated/resources/skills/{skill-quality-checklist.js → vat-skill-review.js} +10 -2
  31. package/dist/skills/vat-adoption-and-configuration/SKILL.md +179 -0
  32. package/dist/skills/{authoring → vat-agent-authoring}/SKILL.md +16 -134
  33. package/dist/skills/{audit → vat-audit}/SKILL.md +1 -1
  34. package/dist/{.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/org-admin → skills/vat-enterprise-org}/SKILL.md +3 -3
  35. package/dist/skills/{resources → vat-knowledge-resources}/SKILL.md +1 -1
  36. package/dist/skills/vat-rag/SKILL.md +104 -0
  37. package/dist/skills/vat-skill-authoring/SKILL.md +156 -0
  38. package/dist/skills/{distribution → vat-skill-distribution}/SKILL.md +3 -2
  39. package/dist/{.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/authoring/resources/skill-quality-checklist.md → skills/vat-skill-review/SKILL.md} +16 -1
  40. package/dist/skills/vibe-agent-toolkit/SKILL.md +40 -189
  41. package/package.json +13 -11
  42. package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/debugging/SKILL.md +0 -111
  43. package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/distribution/resources/vat-install-architecture.md +0 -229
  44. package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/install/SKILL.md +0 -229
  45. package/dist/generated/resources/skills/vat-debugging.js +0 -48
  46. package/dist/generated/resources/skills/vat-install-architecture.js +0 -48
  47. package/dist/skills/debugging/SKILL.md +0 -111
  48. package/dist/skills/distribution/resources/vat-install-architecture.md +0 -229
  49. package/dist/skills/install/SKILL.md +0 -229
  50. /package/dist/generated/resources/skills/{vat-claude-org-admin.d.ts → vat-enterprise-org.d.ts} +0 -0
  51. /package/dist/generated/resources/skills/{vat-resources.d.ts → vat-knowledge-resources.d.ts} +0 -0
  52. /package/dist/generated/resources/skills/{vat-skills-distribution.d.ts → vat-skill-distribution.d.ts} +0 -0
@@ -0,0 +1,179 @@
1
+ ---
2
+ name: vat-adoption-and-configuration
3
+ description: Use when starting a new VAT project, adding VAT to an existing repo, or orienting to `vibe-agent-toolkit.config.yaml`. Covers project setup, repo structure, package.json wiring, vibe-validate integration, and the npm postinstall hook.
4
+ ---
5
+
6
+ # VAT Adoption and Configuration
7
+
8
+ This skill covers the top-level orientation for adopting VAT in a project: installing the CLI, the overall shape of `vibe-agent-toolkit.config.yaml`, repo structure conventions, vibe-validate integration, and how npm postinstall wires plugin registration. Per-section deep-dives live in the sibling skills listed below.
9
+
10
+ ## Installing VAT
11
+
12
+ VAT ships as the `vibe-agent-toolkit` npm package with a `vat` CLI:
13
+
14
+ ```bash
15
+ # Global install (most common during development)
16
+ npm install -g vibe-agent-toolkit
17
+
18
+ # Or run without installing
19
+ npx vibe-agent-toolkit <command>
20
+ bunx vibe-agent-toolkit <command>
21
+
22
+ # As a runtime dependency (recommended for published packages that ship skills)
23
+ npm install --save vibe-agent-toolkit
24
+ ```
25
+
26
+ Once installed, `vat --help` lists the top-level command groups. `vat <group> --help` and `vat <group> <cmd> --help --verbose` cover the rest.
27
+
28
+ ## Recommended Repo Structure
29
+
30
+ ```
31
+ my-skills-project/
32
+ ├── package.json # includes "vat" block (see below)
33
+ ├── vibe-agent-toolkit.config.yaml # single source of truth for VAT
34
+ ├── resources/
35
+ │ ├── skills/ # SKILL.md sources
36
+ │ │ ├── SKILL.md # router skill (optional, for multi-skill bundles)
37
+ │ │ └── my-skill.md
38
+ │ └── content/ # non-skill markdown (RAG, collections)
39
+ ├── agents/ # TypeScript portable agents (optional)
40
+ │ └── my-agent/
41
+ │ ├── agent.yaml
42
+ │ └── src/
43
+ ├── schemas/ # JSON Schemas for resource collections
44
+ ├── docs/ # project documentation
45
+ └── dist/ # generated (gitignored): vat build output
46
+ ```
47
+
48
+ Three conventions are load-bearing:
49
+
50
+ 1. **`vibe-agent-toolkit.config.yaml` at the project root** — VAT walks upward from the invocation directory to find it.
51
+ 2. **SKILL.md files live under `resources/skills/`** — any path works, but this one is what `vat build` and `vat audit` expect by default.
52
+ 3. **`dist/` is the only write target** — everything VAT generates goes there, and it's gitignored.
53
+
54
+ ## `vibe-agent-toolkit.config.yaml` Shape
55
+
56
+ ```yaml
57
+ version: 1
58
+
59
+ skills:
60
+ include: ["resources/skills/SKILL.md", "resources/skills/*.md"]
61
+ defaults:
62
+ linkFollowDepth: 2
63
+ excludeNavigationFiles: true
64
+ targets: ['claude-code']
65
+ config:
66
+ my-skill:
67
+ linkFollowDepth: 1
68
+
69
+ resources:
70
+ collections:
71
+ docs:
72
+ include: ["docs/**/*.md"]
73
+ validation:
74
+ frontmatterSchema: "schemas/doc.schema.json"
75
+ mode: permissive
76
+
77
+ claude:
78
+ marketplaces:
79
+ my-marketplace:
80
+ owner: { name: "my-org" }
81
+ publish:
82
+ changelog: CHANGELOG.md
83
+ readme: README.md
84
+ plugins:
85
+ - name: my-plugin
86
+ description: "What this plugin does"
87
+ skills: "*"
88
+
89
+ rag:
90
+ stores:
91
+ default:
92
+ db: .rag-db/
93
+ include: ["docs/**/*.md"]
94
+ ```
95
+
96
+ Sections and the skills that own their details:
97
+
98
+ | Section | Owning skill |
99
+ |---|---|
100
+ | Top-level structure, `version`, section orientation | this skill (`vat-adoption-and-configuration`) |
101
+ | `skills:` (include, defaults, per-skill config, packagingOptions) | `vibe-agent-toolkit:vat-skill-authoring` |
102
+ | `resources:` (collections, schemas, validation modes) | `vibe-agent-toolkit:vat-knowledge-resources` |
103
+ | `claude:` (marketplaces, plugins, publish, owner) | `vibe-agent-toolkit:vat-skill-distribution` |
104
+ | `rag:` (stores, embedding providers) | `vibe-agent-toolkit:vat-rag` |
105
+
106
+ When adding to a section, load the owning skill rather than re-deriving the shape from this file.
107
+
108
+ ## `package.json` Wiring
109
+
110
+ For projects that publish skills via npm, three fields tie VAT into the npm lifecycle:
111
+
112
+ ```json
113
+ {
114
+ "name": "@myorg/my-skills",
115
+ "dependencies": {
116
+ "vibe-agent-toolkit": "latest"
117
+ },
118
+ "scripts": {
119
+ "build": "vat build",
120
+ "postinstall": "vat claude plugin install --npm-postinstall || exit 0"
121
+ },
122
+ "vat": {
123
+ "skills": ["my-skill-one", "my-skill-two"]
124
+ }
125
+ }
126
+ ```
127
+
128
+ - **`dependencies.vibe-agent-toolkit`** — runtime dep, not dev. Needed so the postinstall hook can find `vat`.
129
+ - **`scripts.postinstall`** — registers the built plugin into the user's `~/.claude/plugins/` tree after `npm install -g` or any install that runs lifecycle scripts. The `|| exit 0` keeps `npm install` from aborting if the hook can't run (unusual but defensive).
130
+ - **`vat.skills`** — declares which skill names this package ships. `vat verify` cross-checks this list against `skills.include` in `vibe-agent-toolkit.config.yaml`; mismatches fire `PACKAGE_JSON_LISTS_UNKNOWN_SKILL` / `PACKAGE_JSON_MISSING_SKILL`. The list is a packaging contract with npm, not a build input — `vat build` discovers skills from the config globs.
131
+
132
+ The full distribution pipeline (build, verify, npm publish, marketplace layout, managed settings) lives in `vibe-agent-toolkit:vat-skill-distribution`.
133
+
134
+ ## vibe-validate Integration
135
+
136
+ If the project uses vibe-validate (recommended), wire VAT into the validation config:
137
+
138
+ ```yaml
139
+ # vibe-validate.config.yaml (or relevant section)
140
+ phases:
141
+ - name: vat-build-and-verify
142
+ parallel: false
143
+ commands:
144
+ - name: vat build
145
+ run: vat build
146
+ - name: vat verify
147
+ run: vat verify
148
+ ```
149
+
150
+ `vat verify` runs the full artifact check (resources → skills → marketplace → consistency); it's the authoritative gate before `npm publish`. In this repo's own config, `bun run validate` already does this — adopters typically mirror the pattern.
151
+
152
+ ## First-Time Setup Checklist
153
+
154
+ 1. `npm install -g vibe-agent-toolkit` (or add to local deps)
155
+ 2. `vat --help` — confirm the CLI resolves
156
+ 3. Create `vibe-agent-toolkit.config.yaml` with the minimal `version: 1` plus the sections you need
157
+ 4. Add `resources/skills/SKILL.md` or a kebab-case SKILL.md file and stage it in git (the skill discovery crawler uses `git ls-files` by default — untracked new files are skipped)
158
+ 5. `vat skills validate` — report any issues before building
159
+ 6. `vat build` — produces `dist/` artifacts
160
+ 7. `vat verify` — full consistency check; should be a no-op when clean
161
+ 8. If publishing: add the `vat.skills`, `scripts.postinstall`, and `dependencies.vibe-agent-toolkit` entries in `package.json` before `npm publish`
162
+
163
+ ## When Things Are Off
164
+
165
+ - **"No skills section in config yaml"** — either the file isn't at the project root, or `skills.include` is missing.
166
+ - **"Found 0 skills"** — glob doesn't match any SKILL.md files. Confirm the path and that the files are tracked by git (VAT's discovery respects `.gitignore` and `git ls-files`).
167
+ - **`PACKAGE_JSON_LISTS_UNKNOWN_SKILL`** — `vat.skills` mentions a name not produced by `skills.include` discovery. Either add the file or remove the name.
168
+ - **`vat audit` fires unexpected warnings** — load `vibe-agent-toolkit:vat-audit` for the full audit surface, including `--compat` and `--exclude` flags.
169
+
170
+ ## References
171
+
172
+ - `vibe-agent-toolkit:vat-skill-authoring` — SKILL.md frontmatter, body structure, references, packagingOptions
173
+ - `vibe-agent-toolkit:vat-agent-authoring` — TypeScript agent archetypes and runtime adapters
174
+ - `vibe-agent-toolkit:vat-skill-distribution` — `vat build` / `vat verify` / marketplace / npm publish
175
+ - `vibe-agent-toolkit:vat-knowledge-resources` — `resources:` collections and frontmatter schemas
176
+ - `vibe-agent-toolkit:vat-rag` — `rag:` stores, embedding providers, `vat rag index/query`
177
+ - `vibe-agent-toolkit:vat-audit` — `vat audit` for plugins, marketplaces, and installed skills
178
+ - `vibe-agent-toolkit:vat-skill-review` — pre-publication quality checklist
179
+ - Getting Started Guide — full setup walkthrough
@@ -1,34 +1,11 @@
1
1
  ---
2
- name: authoring
3
- description: Use when authoring SKILL.md files, designing agent architectures, or configuring packaging options. Covers SKILL.md structure, agent archetypes, orchestration patterns, and validation override patterns.
2
+ name: vat-agent-authoring
3
+ description: Use when authoring TypeScript portable agents agent archetypes, agent.yaml, result envelopes, orchestration patterns, and runtime adapters (Vercel/LangChain/OpenAI/Claude Agent SDK). Paired with vat-skill-authoring for the SKILL.md side.
4
4
  ---
5
5
 
6
- # VAT Agent Authoring: SKILL.md, Archetypes & Patterns
6
+ # VAT Agent Authoring: Archetypes, Envelopes, Orchestration
7
7
 
8
- ## SKILL.md Structure
9
-
10
- A SKILL.md file is the definition file for a VAT agent skill. It tells Claude what the skill
11
- does and how to use it. All SKILL.md files must have YAML frontmatter:
12
-
13
- ```markdown
14
- ---
15
- name: my-skill
16
- description: One sentence: what this skill does and when to use it (max 200 chars)
17
- ---
18
-
19
- # My Skill
20
-
21
- Rest of the skill documentation...
22
- ```
23
-
24
- Required frontmatter fields:
25
- - `name` — unique identifier, kebab-case, matches the skill's directory name
26
- - `description` — trigger description used for skill routing; be specific about activation conditions
27
-
28
- Best practices for `description`:
29
- - Start with "Use when..." to make activation conditions explicit
30
- - Include the key commands or concepts the skill covers
31
- - Keep under 200 characters
8
+ This skill covers authoring TypeScript portable agents — the runtime side of a VAT agent package. For SKILL.md authoring (frontmatter, body structure, references, packagingOptions, validation overrides) use `vibe-agent-toolkit:vat-skill-authoring`.
32
9
 
33
10
  ## Agent Archetypes
34
11
 
@@ -138,10 +115,10 @@ type StatefulAgentResult<TData, TError, TMetadata> =
138
115
  | { status: 'error'; error: TError };
139
116
  ```
140
117
 
141
- Standard LLM error literals: `'llm-refusal'`, `'llm-invalid-output'`, `'llm-timeout'`,
142
- `'llm-rate-limit'`, `'llm-token-limit'`, `'llm-unavailable'`.
118
+ Standard LLM error literals: `'llm-refusal'`, `'llm-invalid-output'`, `'llm-timeout'`, `'llm-rate-limit'`, `'llm-token-limit'`, `'llm-unavailable'`.
143
119
 
144
120
  Always check status before accessing data:
121
+
145
122
  ```typescript
146
123
  const output = await myAgent.execute(input);
147
124
  if (output.result.status === 'success') {
@@ -236,100 +213,6 @@ while (true) {
236
213
  }
237
214
  ```
238
215
 
239
- ## packagingOptions Reference
240
-
241
- Configure in your skill's `vat.skills[]` entry in `package.json`:
242
-
243
- ```json
244
- {
245
- "vat": {
246
- "skills": [{
247
- "name": "my-skill",
248
- "source": "./SKILL.md",
249
- "path": "./dist/skills/my-skill",
250
- "packagingOptions": {
251
- "linkFollowDepth": 1,
252
- "resourceNaming": "resource-id",
253
- "stripPrefix": "knowledge-base",
254
- "excludeReferencesFromBundle": {
255
- "rules": [
256
- { "patterns": ["**/concepts/**"], "template": "Use search to find: {{link.text}}" }
257
- ],
258
- "defaultTemplate": "{{link.text}} (search knowledge base)"
259
- }
260
- }
261
- }]
262
- }
263
- }
264
- ```
265
-
266
- **`linkFollowDepth`** — How deep to follow links from SKILL.md:
267
-
268
- | Value | Behavior |
269
- |-------|----------|
270
- | `0` | Skill file only (no links followed) |
271
- | `1` | Direct links only |
272
- | `2` | Direct + one transitive level **(default)** |
273
- | `"full"` | Complete transitive closure |
274
-
275
- **`resourceNaming`** — How bundled files are named:
276
-
277
- | Strategy | Example | Use When |
278
- |----------|---------|----------|
279
- | `basename` | `overview.md` | Few files, unique names **(default)** |
280
- | `resource-id` | `topics-quickstart-overview.md` | Many files, flat output |
281
- | `preserve-path` | `topics/quickstart/overview.md` | Preserve structure |
282
-
283
- Use `stripPrefix` to remove a common directory prefix (e.g., `"knowledge-base"`).
284
-
285
- **`excludeReferencesFromBundle`** — Rules for excluding files and rewriting their links:
286
- - `rules[]` — Ordered glob patterns (first match wins), each with optional Handlebars template
287
- - `defaultTemplate` — Applied to depth-exceeded links not matching any rule
288
-
289
- **Template variables:**
290
-
291
- | Variable | Description |
292
- |----------|-------------|
293
- | `{{link.text}}` | Link display text |
294
- | `{{link.href}}` | Original href (without fragment) |
295
- | `{{link.fragment}}` | Fragment including `#` prefix, or empty |
296
- | `{{link.type}}` | Link type (`"local_file"`, etc.) |
297
- | `{{link.resource.id}}` | Target resource ID (if resolved) |
298
- | `{{link.resource.fileName}}` | Target filename (if resolved) |
299
- | `{{skill.name}}` | Skill name from frontmatter |
300
-
301
- **`validation`** — Unified framework for overriding default severity and allowing specific issue instances:
302
-
303
- ```yaml
304
- # In vibe-agent-toolkit.config.yaml under skills.defaults or skills.config.<name>
305
- validation:
306
- severity:
307
- LINK_DROPPED_BY_DEPTH: error # upgrade: block on depth-dropped links
308
- LINK_TO_NAVIGATION_FILE: ignore # silence: this skill intentionally links to READMEs
309
- allow:
310
- PACKAGED_UNREFERENCED_FILE:
311
- - paths: ["templates/runtime.json"]
312
- reason: "consumed programmatically at runtime"
313
- expires: "2026-09-30"
314
- SKILL_LENGTH_EXCEEDS_RECOMMENDED:
315
- - reason: "whole-skill concern; paths defaults to ['**/*']"
316
- ```
317
-
318
- Two sub-keys, each covering a different override granularity:
319
-
320
- - **`severity`** — Class-level. Raise any code to `error` (blocks build), lower to `warning` (emits, non-blocking), or `ignore` (fully suppressed). Applies to every instance of that code.
321
- - **`allow`** — Per-instance. Suppress specific `(code, path)` matches with a required `reason` and optional `expires` date. `paths` is optional (defaults to `["**/*"]` — the whole skill). Use for legitimate exceptions that don't warrant code-wide silencing.
322
-
323
- Things adopters typically adjust:
324
-
325
- - Downgrade `LINK_DROPPED_BY_DEPTH` to `ignore` when intentionally linking out to external docs.
326
- - Allow specific files under `PACKAGED_UNREFERENCED_FILE` when they're consumed programmatically by CLI scripts at runtime.
327
- - Raise `ALLOW_EXPIRED` to `error` for zero-tolerance expiry policies.
328
-
329
- Expired `allow` entries still apply — VAT emits `ALLOW_EXPIRED` as a reminder rather than silently re-surfacing the underlying issue (no surprise build breaks when a date passes). Unused `allow` entries surface as `ALLOW_UNUSED` (analogous to ESLint's unused-disable).
330
-
331
- Full code reference at `docs/validation-codes.md`. `vat audit` is advisory: it applies `severity` for display grouping only, ignores `allow`, and always exits 0. Use `vat skills validate` or `vat skills build` for gated checks.
332
-
333
216
  ## Testing Agents
334
217
 
335
218
  ### Unit Testing Pure Functions
@@ -376,19 +259,18 @@ const output2 = await agent.execute({
376
259
 
377
260
  ## Best Practices
378
261
 
379
- 1. **Return result envelopes, never throw** for expected errors
380
- 2. **Define error types as literal unions** (`'invalid-format' | 'timeout'`) not `string`
381
- 3. **Use Zod schemas** for all input/output validation
382
- 4. **Test all paths** — success, each error type, edge cases
383
- 5. **Use mock mode** for external dependencies to enable offline testing
384
- 6. **Document with JSDoc** — purpose, params, return type, example, `@throws Never throws`
385
- 7. **Keep SKILL.md focused** — if it exceeds ~300 lines, split into action skills
262
+ 1. **Return result envelopes, never throw** for expected errors.
263
+ 2. **Define error types as literal unions** (`'invalid-format' | 'timeout'`), not `string`.
264
+ 3. **Use Zod schemas** for all input/output validation.
265
+ 4. **Test all paths** — success, each error type, edge cases.
266
+ 5. **Use mock mode** for external dependencies to enable offline testing.
267
+ 6. **Document with JSDoc** — purpose, params, return type, example, `@throws Never throws`.
268
+ 7. **Keep SKILL.md focused** — if the skill documentation exceeds ~300 lines, split the skill or use progressive disclosure (see `vibe-agent-toolkit:vat-skill-authoring`).
386
269
 
387
270
  ## References
388
271
 
389
- - Skill Quality and Compatibility VAT's Stance what VAT believes makes a skill good and compatible, and how those beliefs turn into validation codes. Read this before overriding severity defaults or adding allow entries.
390
- - Validation Codes Reference full list of codes VAT emits, their default severity, and override recipes.
391
- - [Skill Quality Checklist](resources/skill-quality-checklist.md) — Pre-publication checklist for all skills (general + CLI-backed)
272
+ - `vibe-agent-toolkit:vat-skill-authoring`sibling skill covering SKILL.md frontmatter, body structure, references, packagingOptions, and validation overrides
273
+ - `vibe-agent-toolkit:vat-skill-review`pre-publication quality checklist
392
274
  - agent-authoring.md — Complete patterns guide
393
275
  - orchestration.md — Multi-agent workflows
394
- - [Building Effective Agents - Anthropic](https://www.anthropic.com/research/building-effective-agents)
276
+ - [Building Effective Agents Anthropic](https://www.anthropic.com/research/building-effective-agents)
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: audit
2
+ name: vat-audit
3
3
  description: Use when running vat audit to validate Claude plugins, agent skills, or marketplaces. Covers the audit command, --compat flag for surface compatibility analysis, --exclude for noise filtering, and interpreting audit output.
4
4
  ---
5
5
 
@@ -1,12 +1,12 @@
1
1
  ---
2
- name: org-admin
3
- description: Anthropic org admin (Enterprise/Team). Use for user management, API-key auditing, cost/usage reporting, workspace admin, and enterprise skill distribution via the Admin API. Requires ANTHROPIC_ADMIN_API_KEY.
2
+ name: vat-enterprise-org
3
+ description: Use for Anthropic Enterprise/Team org administration via the Admin API — user management, API-key auditing, cost/usage reporting, workspace admin, and enterprise skill distribution. Requires ANTHROPIC_ADMIN_API_KEY.
4
4
  ---
5
5
 
6
6
  # Claude Org Administration
7
7
 
8
8
  **For Anthropic org admins only.** Requires `ANTHROPIC_ADMIN_API_KEY` (Enterprise/Team plan).
9
- If you don't have an admin key, this skill is not for you — use `vibe-agent-toolkit:distribution`
9
+ If you don't have an admin key, this skill is not for you — use `vibe-agent-toolkit:vat-skill-distribution`
10
10
  for local plugin management instead.
11
11
 
12
12
  ## Two Ways to Use It
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: resources
2
+ name: vat-knowledge-resources
3
3
  description: Use when working with VAT resource collections, per-directory frontmatter schema validation, link validation, or the vat resources command. Covers collection configuration, schema mapping, and validation modes.
4
4
  ---
5
5
 
@@ -0,0 +1,104 @@
1
+ ---
2
+ name: vat-rag
3
+ description: Use when running `vat rag index` / `vat rag query` or configuring RAG for agent context — covers the CLI commands, native embedding providers and vector store support, chunking, custom metadata, and extension points for adding new backends.
4
+ ---
5
+
6
+ # VAT RAG: Indexing and Querying Markdown with Native Providers
7
+
8
+ This skill covers VAT's RAG (retrieval-augmented generation) surface: the `vat rag` CLI commands, the embedding and vector-store providers that ship natively, and how to extend either side. For authoring the markdown that gets indexed (frontmatter schemas, collections) use `vibe-agent-toolkit:vat-knowledge-resources`.
9
+
10
+ ## CLI Commands
11
+
12
+ ```bash
13
+ # Index markdown into a local vector DB (default: .rag-db/)
14
+ vat rag index docs/
15
+
16
+ # Ask a natural-language question; returns the top chunks with file paths and heading context
17
+ vat rag query "How do I configure agent tools?"
18
+
19
+ # Inspect the current index
20
+ vat rag stats
21
+ ```
22
+
23
+ `vat rag index` reads `vibe-agent-toolkit.config.yaml` when no path argument is given and respects the `rag` section for per-store configuration (multiple indices, content transforms, metadata schemas).
24
+
25
+ ```bash
26
+ # Multi-store: index separate databases for different corpora
27
+ vat rag index --db ./dist/rag-en docs/en/
28
+ vat rag index --db ./dist/rag-fr docs/fr/
29
+
30
+ # Query a specific database
31
+ vat rag query "installation" --db ./dist/rag-en
32
+ ```
33
+
34
+ See `vat rag --help` for the full flag surface and `docs/guides/rag-usage-guide.md` for end-to-end configuration examples.
35
+
36
+ ## What Ships Natively
37
+
38
+ VAT's `@vibe-agent-toolkit/rag` package provides the core interfaces and a small set of ready-to-use providers. The goal is "works out of the box" for common cases, with clean extension points for everything else.
39
+
40
+ ### Embedding providers
41
+
42
+ | Provider | Model | Where it runs |
43
+ |---|---|---|
44
+ | `TransformersEmbeddingProvider` | `Xenova/all-MiniLM-L6-v2` (default) | Local, via `transformers.js` — no API key, CPU inference |
45
+ | `OpenAIEmbeddingProvider` | `text-embedding-3-small` (default) | OpenAI API — requires `OPENAI_API_KEY` |
46
+
47
+ Both implement the `EmbeddingProvider` interface (`name`, `model`, `dimensions`, `embed(text)`, `embedBatch(texts)`), so the rest of the RAG pipeline doesn't care which one is wired in.
48
+
49
+ ### Vector store
50
+
51
+ - `@vibe-agent-toolkit/rag-lancedb` — native LanceDB-backed store, lives on disk under `.rag-db/` by default. Supports approximate-nearest-neighbor search, metadata filtering, and incremental re-indexing.
52
+
53
+ ### Chunking and metadata
54
+
55
+ - Hybrid heading-based + token-aware chunking via `chunkMarkdown`, integrated with `ResourceRegistry` so chunks inherit file-level metadata.
56
+ - `DefaultRAGMetadata` — sensible defaults for markdown docs (filePath, tags, type, headingPath, sourceUrl, etc.).
57
+ - Custom metadata — extend `DefaultRAGMetadataSchema` or replace it entirely. Use `createCustomRAGChunkSchema(MySchema)` to get type-safe chunks through the whole pipeline.
58
+
59
+ ### Token counters
60
+
61
+ - `FastTokenCounter` — bytes/4 heuristic, zero-cost.
62
+ - `ApproximateTokenCounter` — `gpt-tokenizer`-backed, closer to reality for OpenAI-style models.
63
+
64
+ ## Extension Points
65
+
66
+ The RAG interfaces are small on purpose. If something isn't supported natively, implement the interface in your own package:
67
+
68
+ - **Embedding provider** — implement `EmbeddingProvider` (cohere, Voyage, local LLM endpoints, etc.). Register via config or pass directly to `RAG.open({ embedding: myProvider })`.
69
+ - **Vector store** — implement `RAGQueryProvider` + `RAGAdminProvider` (pgvector, Pinecone, Qdrant, ChromaDB, etc.). The `@vibe-agent-toolkit/rag-lancedb` package is the reference implementation; mirror its shape.
70
+ - **Content transform** — hook into the chunking pipeline to rewrite markdown (e.g. strip HTML comments, expand templates) before it hits the embedder.
71
+ - **Custom metadata** — ship your own Zod schema and thread it through the CLI via config.
72
+
73
+ **Contributions welcome**: native support for additional embedding providers and vector stores is on the roadmap. If you've written a clean implementation of the RAG interfaces for another backend, open a PR — the target is a small, curated set of "we ship and test these" providers, with everything else available as community packages.
74
+
75
+ ## Configuration
76
+
77
+ ```yaml
78
+ version: 1
79
+
80
+ rag:
81
+ stores:
82
+ default:
83
+ db: .rag-db/
84
+ include: ["docs/**/*.md"]
85
+ exclude: ["docs/drafts/**"]
86
+ embedding:
87
+ provider: transformers-js # or: openai
88
+ model: Xenova/all-MiniLM-L6-v2 # embedding-specific
89
+ ```
90
+
91
+ Per-store configuration keeps multi-corpus projects (multilingual docs, product-vs-support splits) legible.
92
+
93
+ ## Troubleshooting
94
+
95
+ - `vat rag query` returns empty: confirm `vat rag stats` shows non-zero chunks; re-run `vat rag index` after adding content.
96
+ - Slow first index with `transformers-js`: the model downloads on first use and caches under `~/.cache/transformers`.
97
+ - Drift between indexed content and live docs: re-index. LanceDB supports delete-by-filter, so `vat rag index --rebuild` for the specific store is safe.
98
+
99
+ ## References
100
+
101
+ - `vibe-agent-toolkit:vat-knowledge-resources` — markdown collections and frontmatter schema validation (the content side)
102
+ - RAG Usage Guide — configuration walkthroughs for single-store, multi-store, and custom metadata
103
+ - Embedding Providers — provider deep-dive and how to write new ones
104
+ - @vibe-agent-toolkit/rag — package README with the full interface reference
@@ -0,0 +1,156 @@
1
+ ---
2
+ name: vat-skill-authoring
3
+ description: Use when authoring or revising a SKILL.md file — frontmatter, body structure, references, packagingOptions (linkFollowDepth, excludeReferencesFromBundle), and validation overrides. Paired with vat-skill-review for pre-publication checks.
4
+ ---
5
+
6
+ # VAT Skill Authoring: SKILL.md Structure and Packaging
7
+
8
+ This skill covers authoring SKILL.md files for portable Claude skills: frontmatter shape, body structure, reference links, and the packaging options that control how the skill is bundled for distribution. For the TypeScript agent side (archetypes, result envelopes, orchestration, runtime adapters) use `vibe-agent-toolkit:vat-agent-authoring`.
9
+
10
+ ## SKILL.md Structure
11
+
12
+ A SKILL.md file is the definition file for a portable skill. It tells Claude what the skill does and how to use it. All SKILL.md files must have YAML frontmatter:
13
+
14
+ ```markdown
15
+ ---
16
+ name: my-skill
17
+ description: One sentence — what this skill does and when to use it (≤250 chars)
18
+ ---
19
+
20
+ # My Skill
21
+
22
+ Rest of the skill documentation...
23
+ ```
24
+
25
+ Required frontmatter fields:
26
+
27
+ - `name` — unique identifier, kebab-case (`^[a-z][a-z0-9-]*$`), matches the skill's directory name after build. Avoid the reserved words `claude` and `anthropic` (Claude Code rejects non-certified skills using those words — surfaced as `RESERVED_WORD_IN_NAME`).
28
+ - `description` — trigger description used for Claude's skill routing; be specific about activation conditions.
29
+
30
+ Best practices for `description`:
31
+
32
+ - Lead with an action verb or `Use when <concrete trigger>` — filler openers like "This skill...", "A skill that...", "Use when you want to..." fire `SKILL_DESCRIPTION_FILLER_OPENER`.
33
+ - Include 2–4 trigger keywords a user is likely to type.
34
+ - Write in third person. First-person ("I can...") and conversational second-person ("You can use...") fire `SKILL_DESCRIPTION_WRONG_PERSON`.
35
+ - Keep under 250 characters so the Claude Code `/skills` listing doesn't truncate the tail (target ≤200 for safety, ≤130 if shipping a large skill collection). The hard schema limit is 1024.
36
+
37
+ ## Body Structure
38
+
39
+ - Lead with a short orientation paragraph: what the skill owns and when to reach for it.
40
+ - Use H2 sections for major content blocks; avoid deeply nested H3/H4 trees — they hurt Claude's ability to route attention inside the file.
41
+ - Keep SKILL.md under ~500 lines. Longer than that fires `SKILL_LENGTH_EXCEEDS_RECOMMENDED` and is a strong signal to split via progressive disclosure (linked reference files) or to spin the content into a sibling skill.
42
+ - Avoid time-sensitive phrasing like "as of April 2026" in the body — it ages the skill quickly (`SKILL_TIME_SENSITIVE_CONTENT`).
43
+
44
+ ## References Section
45
+
46
+ A short `## References` section at the bottom is the canonical place to list linked resources. Two patterns:
47
+
48
+ - **Progressive disclosure** — link to `.md` files inside the skill directory that get bundled. Keep reference depth ≤ 2 hops; deeper chains fire `REFERENCE_TOO_DEEP`.
49
+ - **Prose references to sibling skills** — write `vibe-agent-toolkit:vat-audit`, not `[vat-audit](./vat-audit.md)`. Markdown links to sibling SKILL.md files cause the packager to transclude the other skill (and fire `LINK_TO_SKILL_DEFINITION`).
50
+
51
+ Avoid linking to navigation files (`README.md`, `index.md`) — they're excluded from the bundle and the link resolves to nothing (`LINK_TO_NAVIGATION_FILE`).
52
+
53
+ ## packagingOptions Reference
54
+
55
+ Packaging options are configured per skill in `vibe-agent-toolkit.config.yaml` under `skills.config.<name>`:
56
+
57
+ ```yaml
58
+ skills:
59
+ include: ["resources/skills/SKILL.md", "resources/skills/*.md"]
60
+ defaults:
61
+ linkFollowDepth: 2
62
+ config:
63
+ my-skill:
64
+ linkFollowDepth: 1
65
+ resourceNaming: resource-id
66
+ stripPrefix: knowledge-base
67
+ excludeReferencesFromBundle:
68
+ rules:
69
+ - patterns: ["**/concepts/**"]
70
+ template: "Use search to find: {{link.text}}"
71
+ defaultTemplate: "{{link.text}} (search knowledge base)"
72
+ ```
73
+
74
+ **`linkFollowDepth`** — How deep to follow links from SKILL.md:
75
+
76
+ | Value | Behavior |
77
+ |-------|----------|
78
+ | `0` | Skill file only (no links followed) |
79
+ | `1` | Direct links only |
80
+ | `2` | Direct + one transitive level **(default)** |
81
+ | `"full"` | Complete transitive closure |
82
+
83
+ **`resourceNaming`** — How bundled files are named:
84
+
85
+ | Strategy | Example | Use When |
86
+ |----------|---------|----------|
87
+ | `basename` | `overview.md` | Few files, unique names **(default)** |
88
+ | `resource-id` | `topics-quickstart-overview.md` | Many files, flat output |
89
+ | `preserve-path` | `topics/quickstart/overview.md` | Preserve structure |
90
+
91
+ Use `stripPrefix` to remove a common directory prefix (e.g., `"knowledge-base"`).
92
+
93
+ **`excludeReferencesFromBundle`** — Rules for excluding files and rewriting their links:
94
+
95
+ - `rules[]` — ordered glob patterns (first match wins), each with optional Handlebars template
96
+ - `defaultTemplate` — applied to depth-exceeded links not matching any rule
97
+
98
+ **Template variables:**
99
+
100
+ | Variable | Description |
101
+ |----------|-------------|
102
+ | `{{link.text}}` | Link display text |
103
+ | `{{link.href}}` | Original href (without fragment) |
104
+ | `{{link.fragment}}` | Fragment including `#` prefix, or empty |
105
+ | `{{link.type}}` | Link type (`"local_file"`, etc.) |
106
+ | `{{link.resource.id}}` | Target resource ID (if resolved) |
107
+ | `{{link.resource.fileName}}` | Target filename (if resolved) |
108
+ | `{{skill.name}}` | Skill name from frontmatter |
109
+
110
+ ## Validation Overrides
111
+
112
+ The `validation` sub-key in a skill's config provides the unified override framework for VAT validation codes:
113
+
114
+ ```yaml
115
+ skills:
116
+ config:
117
+ my-skill:
118
+ validation:
119
+ severity:
120
+ LINK_DROPPED_BY_DEPTH: error # upgrade: block on depth-dropped links
121
+ LINK_TO_NAVIGATION_FILE: ignore # silence: this skill intentionally links to READMEs
122
+ allow:
123
+ PACKAGED_UNREFERENCED_FILE:
124
+ - paths: ["templates/runtime.json"]
125
+ reason: "consumed programmatically at runtime"
126
+ expires: "2026-09-30"
127
+ SKILL_LENGTH_EXCEEDS_RECOMMENDED:
128
+ - reason: "whole-skill concern; paths defaults to ['**/*']"
129
+ ```
130
+
131
+ Two sub-keys, each covering a different override granularity:
132
+
133
+ - **`severity`** — class-level. Raise any code to `error` (blocks build), lower to `warning` (emits, non-blocking), or `ignore` (fully suppressed). Applies to every instance of that code.
134
+ - **`allow`** — per-instance. Suppress specific `(code, path)` matches with a required `reason` and optional `expires` date. `paths` is optional (defaults to `["**/*"]` — the whole skill). Use for legitimate exceptions that don't warrant code-wide silencing.
135
+
136
+ Common adjustments:
137
+
138
+ - Downgrade `LINK_DROPPED_BY_DEPTH` to `ignore` when intentionally linking out to external docs.
139
+ - Allow specific files under `PACKAGED_UNREFERENCED_FILE` when they're consumed programmatically by CLI scripts at runtime.
140
+ - Raise `ALLOW_EXPIRED` to `error` for zero-tolerance expiry policies.
141
+
142
+ Expired `allow` entries still apply — VAT emits `ALLOW_EXPIRED` as a reminder rather than silently re-surfacing the underlying issue (no surprise build breaks when a date passes). Unused `allow` entries surface as `ALLOW_UNUSED` (analogous to ESLint's unused-disable).
143
+
144
+ `vat audit` is advisory: it applies `severity` for display grouping only, ignores `allow`, and always exits 0. Use `vat skills validate` or `vat skills build` for gated checks.
145
+
146
+ ## Pre-publication Check
147
+
148
+ Before shipping a skill, walk through the `vibe-agent-toolkit:vat-skill-review` checklist — it covers naming, description quality, structure, validation-code triage, and Anthropic's skill-authoring best practices. The `vat skill review <skill>` CLI command renders a skill-specific view of the same checklist.
149
+
150
+ ## References
151
+
152
+ - `vibe-agent-toolkit:vat-skill-review` — pre-publication quality checklist (general + CLI-backed items, tied to VAT validation codes)
153
+ - `vibe-agent-toolkit:vat-skill-distribution` — plugin/marketplace config, `vat build`, `vat verify`, npm publishing
154
+ - `vibe-agent-toolkit:vat-knowledge-resources` — the `resources:` config section for multi-collection frontmatter schema validation
155
+ - Validation Codes Reference — full list of codes VAT emits, their default severity, and override recipes.
156
+ - Skill Quality and Compatibility — VAT's Stance — what VAT believes makes a skill good and compatible.