@vibe-agent-toolkit/vat-development-agents 0.1.32-rc.3 → 0.1.32-rc.5
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 +31 -1
- 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/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/{org-admin → vat-enterprise-org}/SKILL.md +2 -2
- 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/{skills/distribution → .claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/vat-skill-distribution}/SKILL.md +4 -3
- package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/vat-skill-review/SKILL.md +99 -0
- 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} +2 -2
- 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} +5 -5
- package/dist/generated/resources/skills/{skill-quality-checklist.d.ts → vat-skill-review.d.ts} +6 -1
- package/dist/generated/resources/skills/vat-skill-review.js +38 -0
- 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/skills/{org-admin → vat-enterprise-org}/SKILL.md +2 -2
- 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/{.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/distribution → skills/vat-skill-distribution}/SKILL.md +4 -3
- package/dist/skills/vat-skill-review/SKILL.md +99 -0
- 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/authoring/resources/skill-quality-checklist.md +0 -42
- 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/skill-quality-checklist.js +0 -25
- package/dist/generated/resources/skills/vat-debugging.js +0 -48
- package/dist/generated/resources/skills/vat-install-architecture.js +0 -48
- package/dist/skills/authoring/resources/skill-quality-checklist.md +0 -42
- 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
|
@@ -18,8 +18,32 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
18
18
|
- **`info` severity** in the validation framework. `CAPABILITY_*` and `COMPAT_TARGET_UNDECLARED` emit as info; they appear in output and respect `validation.severity` overrides but do not contribute to build failure status.
|
|
19
19
|
- New validation codes: `CAPABILITY_LOCAL_SHELL`, `CAPABILITY_EXTERNAL_CLI`, `CAPABILITY_BROWSER_AUTH` (info); `COMPAT_TARGET_INCOMPATIBLE`, `COMPAT_TARGET_NEEDS_REVIEW` (warning); `COMPAT_TARGET_UNDECLARED` (info).
|
|
20
20
|
- Skill-smell philosophy doc at `docs/skill-smell-philosophy.md` articulating rule-addition bar, default severity posture, graduation path, and data-driven evolution. Referenced from `docs/validation-codes.md`.
|
|
21
|
+
- Cached Anthropic skill-authoring best-practices doc at `docs/external/anthropic-skill-authoring-best-practices.md` with attribution, source URL, and fetch date. Provides a diffable reference so VAT's tooling stays aligned with upstream Anthropic guidance. CLAUDE.md documents the periodic-refresh policy.
|
|
22
|
+
- `vat-skill-review.md` (formerly `skill-quality-checklist.md`) rewritten with `[A]` / `[VAT]` tags distinguishing Anthropic-aligned items from VAT-opinionated additions. Added gerund-form naming guidance (Anthropic's preferred pattern), frontmatter-key conservatism, cross-skill dependency disclosure, in-package YAML-styling consistency, and large-tables-to-reference-files guidance — all from dogfood findings across 17 real skills (8 avonrisk-sdlc + 1 vibe-validate + 8 VAT dev-agents).
|
|
23
|
+
- Five new skill-quality validation codes, all non-blocking:
|
|
24
|
+
- `SKILL_DESCRIPTION_OVER_CLAUDE_CODE_LIMIT` (warning): description > 250 chars — Claude Code's `/skills` listing truncation limit since v2.1.86.
|
|
25
|
+
- `SKILL_DESCRIPTION_FILLER_OPENER` (warning): description opens with `This skill...`, `A skill that...`, `Used to...`, `Use when you want to...`, or `Use when you need to...`.
|
|
26
|
+
- `SKILL_DESCRIPTION_WRONG_PERSON` (warning): description uses first- or second-person voice (Anthropic: "Always write in third person").
|
|
27
|
+
- `SKILL_NAME_MISMATCHES_DIR` (warning): frontmatter `name` differs from the parent directory name.
|
|
28
|
+
- `SKILL_TIME_SENSITIVE_CONTENT` (info): body contains `as of <month> <year>`, `after <month> <year>`, etc. — will go stale.
|
|
29
|
+
- `vat audit` and `vat skills validate` now print a checklist-discovery footer when skill-level findings are present, pointing at the `vat-skill-review` skill for rationale and judgment-call items.
|
|
30
|
+
- **`vat skill review <path>` command**: deep-review a single skill. Combines `validateSkillForPackaging` output, config-aware compat verdicts (when inside a VAT project), and a manual-checklist walkthrough into one report. Groups automated findings by checklist section (Naming / Description / Body structure / References / Frontmatter hygiene / Compatibility). Supports `--yaml` for machine-readable output. Designed as a thin composition over existing primitives, not a new validation pipeline.
|
|
31
|
+
- **MCP interpreter observations**: the `.mcp.json` scanner's `MCP_SERVER_COMMAND` evidence now rolls up into a `CAPABILITY_EXTERNAL_CLI` observation when the command is a python interpreter (`python`, `python3`, `python3.11`, absolute paths) or a node interpreter (`node`, `nodejs`, absolute paths). Closes the gap where python3-MCP plugins produced no capability signal and verdicts couldn't fire against them. Bespoke commands (e.g. `./scripts/my-server.sh`) remain un-rolled-up by design.
|
|
32
|
+
- **`RESERVED_WORD_IN_NAME` (warning)** — code-registry-framework replacement for the legacy non-overridable error `SKILL_NAME_RESERVED_WORD`. Fires when a skill frontmatter `name` contains `anthropic` or `claude` (reserved for Anthropic's certified skills). Overridable via `validation.severity` / `validation.allow` like any other framework code. Per the skill-smell philosophy, reserved-word naming is a fix-before-publish smell, not a genuine build breaker, so default severity is `warning`.
|
|
21
33
|
|
|
22
34
|
### Changed
|
|
35
|
+
- **`vibe-agent-toolkit` plugin restructured into 10 sub-skills + a router.** Each sub-skill now has a sharp single responsibility and a name that aligns with its CLI command. Published skill names changed:
|
|
36
|
+
- `resources` → `vat-knowledge-resources`
|
|
37
|
+
- `distribution` → `vat-skill-distribution`
|
|
38
|
+
- `authoring` → split into `vat-skill-authoring` (SKILL.md authoring) and `vat-agent-authoring` (TypeScript agents)
|
|
39
|
+
- `org-admin` → `vat-enterprise-org` (also avoids the reserved word `claude` in the previous filename)
|
|
40
|
+
- `audit` → `vat-audit`
|
|
41
|
+
- `skill-quality-checklist` → `vat-skill-review` (now a first-class skill, no longer transcluded)
|
|
42
|
+
- New: `vat-adoption-and-configuration`, `vat-skill-authoring`, `vat-rag`
|
|
43
|
+
- Root `SKILL.md` (`vibe-agent-toolkit`) is now a thin discovery router (~60 lines, prose references to sub-skills only, no transclusion).
|
|
44
|
+
- Pre-1.0: no backwards-compatibility shims for the old skill names. Adopters with pinned references to the old names should update to the new ones.
|
|
45
|
+
- **Contributor-only reference docs moved out of the plugin** to `docs/contributing/` (`vat-debugging.md`, `vat-install-architecture.md`). These are not installed with the plugin — they're for people working on VAT itself.
|
|
46
|
+
- Shortened over-limit descriptions on three VAT development-agent skills (renamed above: `vat-enterprise-org`, `vat-skill-distribution`) to stay under Claude Code's 250-character truncation limit.
|
|
23
47
|
- **BREAKING: Runtime target rename.** `claude-desktop` → `claude-chat`, `cowork` → `claude-cowork`. Update `plugin.json`, `marketplace.json`, and any config references. The `claude-desktop` name was architecturally wrong — Claude Desktop is a host application, not a runtime.
|
|
24
48
|
- **BREAKING: `runCompatDetectors` returns `DetectorOutput { evidence, observations }`** instead of `ValidationIssue[]`. The skill-validator converts observations to issues via `observationToIssue`; external callers must do the same or consume observations directly.
|
|
25
49
|
- **BREAKING: `CompatibilityResult` restructured.** Old shape: `{ declared, analyzed: Record<Target, Verdict>, evidence: CompatibilityEvidence[] }`. New: `{ declaredTargets, evidence: EvidenceRecord[], observations: Observation[], verdicts: Verdict[] }`.
|
|
@@ -27,7 +51,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
27
51
|
|
|
28
52
|
### Fixed
|
|
29
53
|
- `vat audit --compat` now honors config-layer `targets` declared in `vibe-agent-toolkit.config.yaml`, matching `vat skills validate` verdicts inside a VAT project. Previously only `plugin.json` / `marketplace.json` targets flowed into plugin-level compat analysis. Multi-skill plugins use the union of every in-plugin skill's targets.
|
|
30
|
-
- `skill-quality-checklist.md
|
|
54
|
+
- `vat-skill-review.md` (formerly `skill-quality-checklist.md`): description-opener rule no longer contradicts Anthropic's official skill-description guidance. `Use when <concrete trigger>` is now explicitly allowed (it's the recommended pattern); only vague filler like `Use when you want to...` / `Use when you need to...` is banned. Prior wording banned all `Use when...` openers, which contradicted VAT's own authoring guidance.
|
|
55
|
+
- `readMarketplaceDefaultTargets()` now walks upward from the starting directory to find the enclosing `.claude-plugin/marketplace.json`, instead of only checking the parent directory. Canonical layouts (`~/.claude/plugins/marketplaces/<m>/<p>/`) still work identically; deeper nested layouts now resolve correctly. Safeguarded against runaway walks by max depth (10 levels) and `node_modules` / `.git` boundaries. Closes limitation #1 from the 0.1.32-rc.1 plan Outcome.
|
|
56
|
+
- **`vat audit` now walks to the nearest config per SKILL.md** instead of loading a single top-level config. In monorepos with per-package `vibe-agent-toolkit.config.yaml` files (e.g. `packages/<pkg>/vibe-agent-toolkit.config.yaml`), each skill's validation now honors its own package's config — eliminating cross-package config bleed where a root config was silently applied to skills owned by other packages.
|
|
57
|
+
- **`vat audit` now honors `resources.exclude` from the config.** Previously the `exclude` list in the `resources` section only affected `vat resources validate`; audit ignored it and reported findings against files the author had explicitly opted out of validation for.
|
|
58
|
+
- **`vat skill review <path>` accepts single-file skills** (any `.md` file), not just `SKILL.md` inside a directory. Useful when reviewing loose skill drafts or checklist-style skills that don't live in a dedicated directory.
|
|
59
|
+
- **`SKILL_NAME_MISMATCHES_DIR` false positive:** the mismatch check no longer fires when `SKILL.md` lives directly inside a generic container directory (`skills/`, `resources/`). The parent directory name in those layouts carries no signal about what the skill is named.
|
|
60
|
+
- Three directory-targeted markdown links in VAT docs (`CLAUDE.md`, `docs/README.md`, `docs/getting-started.md`) now point at specific files, silencing the corresponding `LINK_TARGETS_DIRECTORY` errors on VAT's own docs.
|
|
31
61
|
|
|
32
62
|
### Removed
|
|
33
63
|
- **BREAKING:** `COMPAT_REQUIRES_BROWSER_AUTH`, `COMPAT_REQUIRES_LOCAL_SHELL`, `COMPAT_REQUIRES_EXTERNAL_CLI` codes (replaced by `CAPABILITY_*` + `COMPAT_TARGET_*`).
|
|
@@ -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,6 +1,6 @@
|
|
|
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
|
|
@@ -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
|