@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.
- package/dist/.claude/plugins/marketplaces/vat-skills/CHANGELOG.md +37 -4
- package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/.claude-plugin/plugin.json +1 -1
- package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/vat-adoption-and-configuration/SKILL.md +179 -0
- package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/{authoring → vat-agent-authoring}/SKILL.md +16 -134
- package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/{audit → vat-audit}/SKILL.md +1 -1
- package/dist/{skills/org-admin → .claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/vat-enterprise-org}/SKILL.md +3 -3
- package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/{resources → vat-knowledge-resources}/SKILL.md +1 -1
- package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/vat-rag/SKILL.md +104 -0
- package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/vat-skill-authoring/SKILL.md +156 -0
- package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/{distribution → vat-skill-distribution}/SKILL.md +3 -2
- 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
- package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/vibe-agent-toolkit/SKILL.md +40 -189
- package/dist/generated/resources/skills/CLAUDE.d.ts +28 -0
- package/dist/generated/resources/skills/CLAUDE.js +60 -0
- package/dist/generated/resources/skills/SKILL.d.ts +2 -10
- package/dist/generated/resources/skills/SKILL.js +14 -54
- package/dist/generated/resources/skills/vat-adoption-and-configuration.d.ts +29 -0
- package/dist/generated/resources/skills/vat-adoption-and-configuration.js +53 -0
- package/dist/generated/resources/skills/vat-agent-authoring.d.ts +0 -2
- package/dist/generated/resources/skills/vat-agent-authoring.js +9 -19
- package/dist/generated/resources/skills/vat-audit.js +1 -1
- package/dist/generated/resources/skills/{vat-claude-org-admin.js → vat-enterprise-org.js} +3 -3
- package/dist/generated/resources/skills/{vat-resources.js → vat-knowledge-resources.js} +1 -1
- package/dist/generated/resources/skills/{vat-install-architecture.d.ts → vat-rag.d.ts} +6 -7
- package/dist/generated/resources/skills/vat-rag.js +43 -0
- package/dist/generated/resources/skills/{vat-debugging.d.ts → vat-skill-authoring.d.ts} +7 -7
- package/dist/generated/resources/skills/vat-skill-authoring.js +48 -0
- package/dist/generated/resources/skills/{vat-skills-distribution.js → vat-skill-distribution.js} +4 -4
- package/dist/generated/resources/skills/{skill-quality-checklist.d.ts → vat-skill-review.d.ts} +5 -1
- package/dist/generated/resources/skills/{skill-quality-checklist.js → vat-skill-review.js} +10 -2
- package/dist/skills/vat-adoption-and-configuration/SKILL.md +179 -0
- package/dist/skills/{authoring → vat-agent-authoring}/SKILL.md +16 -134
- package/dist/skills/{audit → vat-audit}/SKILL.md +1 -1
- package/dist/{.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/org-admin → skills/vat-enterprise-org}/SKILL.md +3 -3
- package/dist/skills/{resources → vat-knowledge-resources}/SKILL.md +1 -1
- package/dist/skills/vat-rag/SKILL.md +104 -0
- package/dist/skills/vat-skill-authoring/SKILL.md +156 -0
- package/dist/skills/{distribution → vat-skill-distribution}/SKILL.md +3 -2
- 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
- package/dist/skills/vibe-agent-toolkit/SKILL.md +40 -189
- package/package.json +13 -11
- package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/debugging/SKILL.md +0 -111
- package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/distribution/resources/vat-install-architecture.md +0 -229
- package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/install/SKILL.md +0 -229
- package/dist/generated/resources/skills/vat-debugging.js +0 -48
- package/dist/generated/resources/skills/vat-install-architecture.js +0 -48
- package/dist/skills/debugging/SKILL.md +0 -111
- package/dist/skills/distribution/resources/vat-install-architecture.md +0 -229
- package/dist/skills/install/SKILL.md +0 -229
- /package/dist/generated/resources/skills/{vat-claude-org-admin.d.ts → vat-enterprise-org.d.ts} +0 -0
- /package/dist/generated/resources/skills/{vat-resources.d.ts → vat-knowledge-resources.d.ts} +0 -0
- /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
|
|
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:
|
|
6
|
+
# VAT Agent Authoring: Archetypes, Envelopes, Orchestration
|
|
7
7
|
|
|
8
|
-
|
|
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
|
|
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
|
-
-
|
|
390
|
-
-
|
|
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
|
|
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
|
|
3
|
-
description:
|
|
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.
|