@vibe-agent-toolkit/vat-development-agents 0.1.26 → 0.1.28-rc.1
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.
|
@@ -1,12 +1,669 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
All notable changes to
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
-
The format is based on [Keep a Changelog](https://keepachangelog.com/),
|
|
6
|
-
and this project adheres to [Semantic Versioning](https://semver.org/).
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
### Breaking
|
|
11
|
+
- **Removed top-level `vat install` command.** Install of flat skills now uses `vat skills install <source> --target <target> --scope <user|project>`. Install of Claude plugins uses `vat claude plugin install <source>`.
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
- `vat skills install <source> --target <target> --scope <user|project>` — cross-platform flat skill installer. Supports 7 targets (claude, codex, copilot, gemini, cursor, windsurf, agents) and 2 scopes (user, project). Sources: local directory, `.zip`, `.tgz`, or `npm:@scope/package`. Pre-verifies all skills before touching the filesystem (all-or-nothing).
|
|
15
|
+
- `vat skills list npm:@scope/package` — inspect what skills are in an npm package without installing.
|
|
16
|
+
- **Content-type routing** — auto-discovered files now route to `scripts/`, `templates/`, `assets/`, or `resources/` based on file extension instead of all going to `resources/`.
|
|
17
|
+
- **Skill files config** — declare `files` entries in `vibe-agent-toolkit.config.yaml` for build artifacts, unlinked files, or routing overrides. Supports default + per-skill merge with dest-based override. See `docs/guides/skill-files-and-routing.md`.
|
|
18
|
+
- **Deferred verification** — validation chain recognizes declared build artifacts at source time (deferred), enforces hard gates at build time (source must exist) and verify time (dest must exist in output).
|
|
19
|
+
- **`vat verify` files check** — post-build verification now confirms all `files[].dest` paths exist in the built output.
|
|
20
|
+
|
|
21
|
+
### Changed
|
|
22
|
+
- Published VAT skills updated to describe the new `vat skills install` command surface.
|
|
23
|
+
|
|
24
|
+
## [0.1.26] - 2026-04-10
|
|
25
|
+
|
|
26
|
+
### Added
|
|
27
|
+
- **Cross-skill SKILL.md bundling prevention** — VAT now detects when a skill links to another skill's `SKILL.md` and excludes it from the bundle. A `SKILL.md` is a skill definition marker, not a resource — bundling one inside another skill creates duplicate definitions that break marketplace sync and confuse skill consumers. Two layers of protection: link-follow filtering (prevents the bad state) and post-build validation (safety net). The exclusion appears in build output as `skill-definition` reason.
|
|
28
|
+
- **ESLint rule: `no-fs-promises-cp`** — Prevents usage of async `cp()` from `node:fs/promises` in favor of `cpSync()` from `node:fs`. Node 22's async `cp({ recursive: true })` silently drops files in nested directories. The rule auto-fixes and explains the issue so developers can make an informed eslint-disable decision if async is truly needed.
|
|
29
|
+
|
|
30
|
+
### Fixed
|
|
31
|
+
- **Marketplace publish drops non-markdown files on Node 22** — `composePublishTree` used async `cp()` from `node:fs/promises` which silently drops `.mjs` files in nested directories on Node 22. Replaced with `cpSync` which works correctly across all Node versions. Added a system test that verifies `.mjs` scripts survive the full compose→publish pipeline.
|
|
32
|
+
- **Marketplace publish `--debug` flag not reaching logger** — `--debug` was defined on the publish command but consumed by a parent command in the Commander hierarchy. Options are now read via `optsWithGlobals()` so `--debug` works correctly.
|
|
33
|
+
- **Marketplace publish debug logging** — `vat claude marketplace publish --debug` now logs the full file list at each stage of the publish pipeline (cpSync output, git tracked files, git ignored files, early-exit tree). Diagnoses files disappearing between build output and published commit.
|
|
34
|
+
|
|
35
|
+
## [0.1.25] - 2026-04-09
|
|
36
|
+
|
|
37
|
+
### Security
|
|
38
|
+
- **Marketplace publish no longer logs git remote credentials.** `vat claude marketplace publish` previously echoed the full remote URL — including any credentials embedded by the user's config OR injected at runtime from `GH_TOKEN`/`GITHUB_TOKEN` — to stdout via its `Remote:` and `Pushed to …` log lines. In CI, GitHub Actions auto-masked the secret, but local runs (including adopter dry-runs) emitted the raw token to the terminal. All URL logging now passes through a `redactUrlCredentials()` helper that strips userinfo before logging. Git commands still receive the tokenized URL for authentication — only the logged copy is redacted.
|
|
39
|
+
|
|
40
|
+
### Changed
|
|
41
|
+
- **BREAKING: Marketplace publish no longer rewrites `CHANGELOG.md`.** `vat claude marketplace publish` now mirrors the source `CHANGELOG.md` byte-for-byte into the publish tree and extracts release notes for the commit body only. Accepts both Keep a Changelog workflows: a pre-stamped `[X.Y.Z]` section matching `package.json` (preferred) or a non-empty `[Unreleased]` section (fallback). Fails if neither is present. Workflow A adopters whose `main` branch CHANGELOG continues to carry `[Unreleased]` at publish time will see that heading on the publish branch too — stamp `CHANGELOG.md` on `main` before tagging if you want a stamped heading in the published file. Side benefit: corrections/typo-fixes to `CHANGELOG.md` on `main` now propagate to the publish branch on the next publish.
|
|
42
|
+
|
|
43
|
+
### Fixed
|
|
44
|
+
- **`toAbsolutePath()` and `getRelativePath()` now return forward-slash paths on Windows** — previously these returned backslash paths, bypassing cross-platform normalization.
|
|
45
|
+
|
|
46
|
+
## [0.1.24] - 2026-04-06
|
|
47
|
+
|
|
48
|
+
### Feature
|
|
49
|
+
- **Safe path normalization** — added `safePath.join()`, `safePath.resolve()`, `safePath.relative()` wrappers in `@vibe-agent-toolkit/utils` that always return forward-slash paths. New ESLint rules (`no-path-join`, `no-path-resolve`, `no-path-relative`) enforce their use over raw `node:path` functions, with auto-fix support. Adopters can copy these rules from `packages/dev-tools/eslint-local-rules/` into their own projects. Closes #38.
|
|
50
|
+
- **Cross-platform ESLint rule parity with vibe-validate** — ported `no-path-resolve-dirname` (enforces `normalizePath()` over `path.resolve(__dirname)` in tests for Windows 8.3 short name safety) and `no-test-scoped-functions` (enforces module-scope helper functions in test files, SonarQube S1515). VAT now ships 15 custom ESLint rules for cross-platform safety.
|
|
51
|
+
|
|
52
|
+
## [0.1.23] - 2026-04-02
|
|
53
|
+
|
|
54
|
+
### Feature
|
|
55
|
+
- **Marketplace publishing** — distribute Claude plugin marketplaces via Git branches. `vat claude marketplace publish` composes built artifacts with changelog, readme, and license into a squashed commit on a configurable branch. Consumers install with `/plugin marketplace add owner/repo#branch`. Includes standalone strict validation (`vat claude marketplace validate`) and automatic marketplace verification in `vat verify`.
|
|
56
|
+
|
|
57
|
+
### Docs
|
|
58
|
+
- **Marketplace testing guide** — added "Testing Your Marketplace" section to marketplace-distribution.md with full local test flow (`marketplace add` → `install` → `validate` → verify skills), known issues (name collision, `$schema` validation), and update workflow.
|
|
59
|
+
- **Marketplace README** — rewrote marketplace branch README as a developer-facing landing page with two-step install, skill descriptions, and architecture link.
|
|
60
|
+
- **Main README** — added "Claude Plugin Marketplace" section with install commands and links to marketplace branch and distribution guide.
|
|
61
|
+
- **Distribution skill** — added local marketplace testing subsection with commands and known-issue notes.
|
|
62
|
+
|
|
63
|
+
### Changed
|
|
64
|
+
- **Publish workflow** — added marketplace publish step to CI; stable tags push to `claude-marketplace` branch, RC tags push to `claude-marketplace-next`.
|
|
65
|
+
- **Pre-publish checks** — added marketplace dry-run validation (Check 12) to catch build/changelog issues before any npm mutations.
|
|
66
|
+
|
|
67
|
+
## [0.1.22] - 2026-04-01
|
|
68
|
+
|
|
69
|
+
### Added
|
|
70
|
+
- `vat claude org info` — org identity from Admin API (`/v1/organizations/me`).
|
|
71
|
+
- `vat claude org users list/get` — list and retrieve org members.
|
|
72
|
+
- `vat claude org invites list` — list pending and accepted invitations.
|
|
73
|
+
- `vat claude org workspaces list/get` — list and retrieve API workspaces.
|
|
74
|
+
- `vat claude org workspaces members list` — list workspace members.
|
|
75
|
+
- `vat claude org api-keys list` — inventory of org API keys with status and workspace scope.
|
|
76
|
+
- `vat claude org usage` — daily token usage report (model/workspace/key breakdown); autopaginates by advancing `starting_at`.
|
|
77
|
+
- `vat claude org cost` — USD cost report; `amount` field is string decimal. Valid `group_by[]` values: `description`, `workspace`.
|
|
78
|
+
- `vat claude org code-analytics` — Claude Code productivity metrics; `starting_at` is date-only `YYYY-MM-DD`.
|
|
79
|
+
- `vat claude org skills list` — workspace-scoped skills from `/v1/skills` (beta); skill IDs are slugs not UUIDs.
|
|
80
|
+
- `vat claude org skills install <source>` — upload a built skill directory or ZIP to the organization via Skills API (`POST /v1/skills`). Reads `display_title` from SKILL.md frontmatter; `--title` to override. Supports `--from-npm <pkg>@<version>` to download and upload all skills from an npm package (with optional `--skill <name>` filter).
|
|
81
|
+
- `vat claude org skills delete <skill-id>` — delete a skill from the organization via Skills API (`DELETE /v1/skills/{id}`).
|
|
82
|
+
- `OrgApiClient.uploadSkill()` / `OrgApiClient.deleteSkill()` — programmatic multipart upload and delete for Skills API.
|
|
83
|
+
- `buildMultipartFormData()` — zero-dependency multipart/form-data builder exported from `@vibe-agent-toolkit/claude-marketplace`.
|
|
84
|
+
- `vat claude org skills versions list <skill-id>` — list all versions of a skill.
|
|
85
|
+
- `vat claude org skills versions delete <skill-id> <version>` — delete a specific skill version (required before deleting the skill itself).
|
|
86
|
+
- `OrgApiClient.deleteSkillVersion()` — programmatic version deletion for Skills API.
|
|
87
|
+
- All other mutating org commands (`users update/remove`, `invites create/delete`, `workspaces create/archive`, `api-keys update`) return structured `not-yet-implemented` stubs.
|
|
88
|
+
- All `vat claude org` commands require `ANTHROPIC_ADMIN_API_KEY`; `org skills` commands require `ANTHROPIC_API_KEY`.
|
|
89
|
+
- `vibe-agent-toolkit:org-admin` skill — documents OrgApiClient programmatic API, CLI commands, report pagination quirks, and common recipes (cost summaries, API key audits, invite tracking).
|
|
90
|
+
|
|
91
|
+
### Fixed
|
|
92
|
+
- **Plugin version in plugin.json** — `vat claude plugin build` now includes `version` from package.json in generated plugin.json. Without it, Claude Code caches plugins under an `unknown/` directory, causing stale skill resolution across version upgrades.
|
|
93
|
+
- **`PLUGIN_MISSING_VERSION` audit check** — `vat audit` now warns when a plugin's plugin.json is missing the `version` field, explaining the stale cache impact.
|
|
94
|
+
- **Semver pre-release in plugin.json schema** — version field now accepts pre-release suffixes (e.g., `1.0.0-rc.3`) in addition to strict semver.
|
|
95
|
+
- **System test isolation** — `fakeHomeEnv()` now overrides `CLAUDE_CONFIG_DIR` to prevent shell-level environment variables from leaking into spawned test processes. Fixes false test failures when `CLAUDE_CONFIG_DIR` is set in the developer's shell.
|
|
96
|
+
- **`unknown_link` false positives** — `vat resources validate` no longer reports `unknown_link` errors for changelog headings (`## [Unreleased]`, `## [0.1.0] - 2026-01-01`) or bare filenames with extensions (`config.schema.json`, `image.png`). Unresolved `linkReference` nodes are now skipped, and bare filenames are classified as `local_file`.
|
|
97
|
+
- **Collection matching in dot-directories** — picomatch `**` globs now match paths containing dot-directory segments (e.g., `.claude/worktrees/`). Previously, collection validation silently returned 0 matches when the project path included a dotfile directory.
|
|
98
|
+
## [0.1.21] - 2026-03-31
|
|
99
|
+
|
|
100
|
+
### Breaking Changes
|
|
101
|
+
- **`vat skills install` removed** — replaced by `vat claude plugin install`. Update postinstall scripts to use `vat claude plugin install --npm-postinstall || exit 0` and add `vibe-agent-toolkit` to your package's `dependencies` (runtime, not devDependencies) so that `vat` is available via `./node_modules/.bin/` during postinstall.
|
|
102
|
+
- **`vat skills uninstall` removed** — replaced by `vat claude plugin uninstall`.
|
|
103
|
+
- **`vat claude build` replaced** — superseded by `vat claude plugin build` (same function, new location under the plugin command group). `vat build` now runs both `skills` and `claude` phases automatically; no separate step needed.
|
|
104
|
+
- **`vat claude verify` removed** — use `vat verify` (config-driven top-level command).
|
|
105
|
+
- **`vat-development-agents` plugin renamed to `vibe-agent-toolkit`** — the installed plugin name changes. Skill short names also updated: `agent-authoring` → `authoring`, `skills-distribution` → `distribution`, `install-architecture` → `install`. Installed skill IDs are now `vibe-agent-toolkit:authoring`, `vibe-agent-toolkit:distribution`, etc.
|
|
106
|
+
|
|
107
|
+
### Added
|
|
108
|
+
- `vat claude plugin install` — installs skill packages into Claude Code. Accepts `--target code|api.anthropic.com|claude.ai` (`code` is default; `claude.ai` returns a structured not-available stub). Correct postinstall pattern uses the local `node_modules` binary, never assumes a global `vat`.
|
|
109
|
+
- `vat claude plugin build` — generates `dist/.claude/plugins/marketplaces/` from `dist/skills/` and `vibe-agent-toolkit.config.yaml`. Cleans stale output before each build. Replaces `vat claude build`; now runs automatically as the `claude` phase of `vat build`.
|
|
110
|
+
- `vat claude plugin list` — lists installed plugins from the plugin registry and legacy skills directory.
|
|
111
|
+
- `vat claude plugin uninstall` — removes a plugin and all 5 install artifacts (marketplace dir, cache dir, `installed_plugins.json`, `known_marketplaces.json`, `settings.json`). Idempotent; `--all` finds plugins by npm package name; `--dry-run` previews without changes.
|
|
112
|
+
- **`vat build` now runs `skills → claude` phases** — full pipeline in one command; `claude` phase skipped automatically if no `claude.marketplaces` config is present.
|
|
113
|
+
- **`vat claude plugin install --dev` uses plugin tree symlinks** — skills appear as `{plugin}:{skill}` in Claude Code (e.g. `vibe-agent-toolkit:authoring`) instead of flat names. Requires `vat build` first. Gracefully rejects on Windows with a clear error.
|
|
114
|
+
- `vat-development-agents` self-adoption: postinstall now uses `vat claude plugin install --npm-postinstall` via `.bin/vat` (no path guessing, no global `vat` assumption).
|
|
115
|
+
- **`CLAUDE_CONFIG_DIR` env var support** — `getClaudeUserPaths()` now respects `CLAUDE_CONFIG_DIR` to override the default `~/.claude` location. Enables multiple Claude installations and non-standard config paths.
|
|
116
|
+
|
|
117
|
+
### Fixed
|
|
118
|
+
-**`vat skills build` cleans `dist/skills/` before rebuilding** — stale skill directories from renamed or removed skills no longer accumulate between builds.
|
|
119
|
+
- **`@next` dist-tag now updated on stable npm releases** — `publish.yml` now runs `determine-publish-tags.ts` to compute `update_next` and passes it to `publish-with-rollback.ts` via `UPDATE_NEXT` env; `publish-with-rollback.ts` now has a Phase 2 that applies `npm dist-tag add <pkg>@<version> next` to all packages when `UPDATE_NEXT=true`, with rollback on failure
|
|
120
|
+
|
|
121
|
+
## [0.1.20] - 2026-03-26
|
|
122
|
+
|
|
123
|
+
### Fixed
|
|
124
|
+
- **Plugin reinstall now removes stale skills** — reinstalling a plugin package that has fewer skills than the previous version no longer leaves orphaned skill directories in the Claude installation; the marketplace directory is fully replaced on each install rather than merged additively
|
|
125
|
+
|
|
126
|
+
## [0.1.19] - 2026-03-23
|
|
127
|
+
|
|
128
|
+
### Fixed
|
|
129
|
+
- **Audit: resolve URL-encoded paths in skill link traversal** — `vat audit` now correctly resolves `%20`, `%26`, and other percent-encoded characters in markdown link paths during skill link traversal; previously reported false `LINK_INTEGRITY_BROKEN` errors for files in directories with spaces or special characters (e.g., SharePoint-synced folders)
|
|
130
|
+
|
|
131
|
+
### Changed
|
|
132
|
+
- **Shared `resolveLocalHref` utility** — extracted common href → filesystem path resolution (anchor stripping, URL-decoding, relative path resolution) into `@vibe-agent-toolkit/resources` so both the audit and validate code paths use a single implementation
|
|
133
|
+
|
|
134
|
+
## [0.1.18] - 2026-03-20
|
|
135
|
+
|
|
136
|
+
### Added
|
|
137
|
+
- **`success` boolean on `SafeExecResult`** — convenience field (`success: exitCode === 0`) for cleaner conditional checks in callers of `safeExecSync()` and `safeExec()`
|
|
138
|
+
|
|
139
|
+
## [0.1.17] - 2026-03-20
|
|
140
|
+
|
|
141
|
+
### Fixed
|
|
142
|
+
- **Link validator: resolve percent-encoded paths** (fixes #59) — `%20` and other URL-encoded characters in markdown link paths are now decoded before filesystem resolution; bare relative paths with slashes (e.g., `files/doc.pdf`) are correctly classified as `local_file` instead of `unknown`
|
|
143
|
+
- **Windows Node.js v24+ compatibility** — fixed `ERR_UNSUPPORTED_ESM_URL_SCHEME` when running `vat` on Windows with Node.js v24, where bare absolute paths require `file://` URLs for dynamic imports
|
|
144
|
+
|
|
145
|
+
### Breaking Changes
|
|
146
|
+
- **Redesigned skill config and plugin distribution** (PR #55) — `vat.skills[]` in package.json is now an array of skill name strings (not objects); all config lives in `vibe-agent-toolkit.config.yaml`
|
|
147
|
+
- `dist/.claude/` directory structure now mirrors `~/.claude/plugins/` directly — plugin install is a recursive copy, no manifest parsing needed
|
|
148
|
+
- New `PluginJsonSchema` (strict: `name`, `description`, `author` only)
|
|
149
|
+
- Removed `MarketplaceSchema`, `marketplace-validator.ts`, and all related code
|
|
150
|
+
|
|
151
|
+
### Added
|
|
152
|
+
- **marketplace.json build, validate, and audit** (PR #57) — full marketplace manifest lifecycle
|
|
153
|
+
- `MarketplaceManifestSchema` in agent-skills with passthrough for all official source types (string, github, url, npm, pip)
|
|
154
|
+
- `validateMarketplace()` validator mirroring the plugin-validator pattern
|
|
155
|
+
- `vat claude build` now generates `.claude-plugin/marketplace.json` with relative source paths
|
|
156
|
+
- `vat claude verify` validates marketplace.json against the schema
|
|
157
|
+
- Unified validator routes marketplace type to `validateMarketplace()` (replaces placeholder UNKNOWN_FORMAT error)
|
|
158
|
+
- `vat audit --user` now correctly validates marketplace directories
|
|
159
|
+
- Plugin `description` is now optional in VAT project config (adopter compatibility)
|
|
160
|
+
- Added marketplace-level `skills` selector to config schema
|
|
161
|
+
- **Transitive link traversal for `vat audit`** (PR #56) — follows all local file links from SKILL.md via BFS with cycle detection
|
|
162
|
+
- Reports broken links (`LINK_INTEGRITY_BROKEN` error), boundary escapes (`OUTSIDE_PROJECT_BOUNDARY` warning), and unreferenced markdown files (`SKILL_UNREFERENCED_FILE` info with `--warn-unreferenced-files`)
|
|
163
|
+
- Excludes CLAUDE.md, README.md, and other navigation files from unreferenced file detection
|
|
164
|
+
- **Implicit reference detection** — `extractImplicitReferences()` scans for non-markdown-link file references (backtick-quoted, bold, DOT graphviz, bare prose, `@`-prefix)
|
|
165
|
+
- New `SKILL_IMPLICIT_REFERENCE` issue code for files referenced implicitly but not via `[text](path)` links
|
|
166
|
+
- Reduces false-positive unreferenced file warnings from 18 to 9 when auditing real installed plugins
|
|
167
|
+
- **Settings schemas synced with official Claude Code docs** — `vat audit settings` now recognizes ~30 additional fields including sandbox filesystem/network controls, permission modes (`askEdits`, `readOnly`), and managed-only lockdown settings; fixes `autoUpdatesChannel` enum to match the official values (`stable`, `latest`)
|
|
168
|
+
|
|
169
|
+
## [0.1.15] - 2026-03-02
|
|
170
|
+
|
|
171
|
+
### Added
|
|
172
|
+
- **`vat build` and `vat verify` top-level commands** — orchestrate the full build and verification pipeline in dependency order
|
|
173
|
+
- `vat build`: skills → claude plugins (future: cursor, etc.)
|
|
174
|
+
- `vat verify`: resources → skills → claude artifacts
|
|
175
|
+
- `--only <phase>` flag to run a single phase; `--marketplace <name>` to target a specific marketplace
|
|
176
|
+
- **`vat claude build`** — generates Claude plugin marketplace artifacts from pre-built skills
|
|
177
|
+
- Reads `claude:` section from `vibe-agent-toolkit.config.yaml`; resolves skill selectors (exact names and globs)
|
|
178
|
+
- Copies pre-built `dist/skills/<name>/` into `dist/plugins/<plugin>/skills/` (no re-bundling)
|
|
179
|
+
- Generates `dist/plugins/<plugin>/.claude-plugin/plugin.json` and `dist/.claude-plugin/marketplace.json`
|
|
180
|
+
- Sanitizes colon-namespaced skill names (e.g. `plugin:skill`) to double-underscore for Windows filesystem safety
|
|
181
|
+
- **`vat claude verify`** — validates Claude marketplace and plugin artifacts against schemas
|
|
182
|
+
- Validates `marketplace.json` against `MarketplaceSchema`, `plugin.json` against `ClaudePluginSchema`
|
|
183
|
+
- Validates `managed-settings.json` against `ManagedSettingsSchema` when `claude.managedSettings` is configured
|
|
184
|
+
- Supports both source-layout (`file:`) and build-to-dist patterns
|
|
185
|
+
- **`claude:` config section in `vibe-agent-toolkit.config.yaml`** — configure Claude plugin distribution
|
|
186
|
+
- `claude.marketplaces` — named map of marketplace definitions (inline or `file:` source-layout)
|
|
187
|
+
- `claude.managedSettings` — path to managed-settings.json for schema validation
|
|
188
|
+
- Marketplace config: `owner`, `skills` selector (exact or glob), `plugins` grouping, `output` paths
|
|
189
|
+
- **Claude plugin registry installer** (`packages/claude-marketplace`) — writes directly to Claude Code's plugin registry
|
|
190
|
+
- Five-step install: copies plugin files to `~/.claude/plugins/marketplaces/` and `cache/`, updates `known_marketplaces.json`, `installed_plugins.json`, and `settings.json enabledPlugins`
|
|
191
|
+
- Called automatically by `vat skills install --npm-postinstall` when `dist/.claude-plugin/marketplace.json` exists
|
|
192
|
+
- **`vat skills install` now routes through Claude plugin system** when package ships a plugin
|
|
193
|
+
- If `dist/.claude-plugin/marketplace.json` exists: installs via plugin registry (namespaced, version-tracked)
|
|
194
|
+
- If marketplace.json is absent: emits guidance to run `vat build` and exits 0 (no raw skill install)
|
|
195
|
+
- `--user-install-without-plugin` flag: explicit opt-in to force `~/.claude/skills/` install
|
|
196
|
+
- **`vat --cwd <dir>` root flag** — change working directory before any command runs
|
|
197
|
+
- Enables CI pipelines to run `vat build --cwd packages/my-agents` from the monorepo root
|
|
198
|
+
- **Marketplace settings schema fields** in `ClaudeSettingsSchema` and `ManagedSettingsSchema`
|
|
199
|
+
- `extraKnownMarketplaces`, `enabledPlugins` added to settings/settings.local
|
|
200
|
+
- `strictKnownMarketplaces` added to managed-settings only
|
|
201
|
+
- `vat audit settings` output gains `marketplaces:` section showing registered marketplaces and enabled plugins
|
|
202
|
+
- **`plugin:skill` colon notation in skill names** - Skill names may now include a plugin namespace prefix (e.g., `vibe-agent-toolkit:audit`)
|
|
203
|
+
- Format: `plugin-name:skill-name`; the prefix is the plugin/package namespace, the suffix is the skill's local name
|
|
204
|
+
- Supported in both SKILL.md `name:` frontmatter and `package.json` `vat.skills[].name`
|
|
205
|
+
- **`vibe-agent-toolkit` skill package split** - Replaced the 1310-line monolith with an umbrella + 4 focused action skills
|
|
206
|
+
- Umbrella `vibe-agent-toolkit` (~179 lines): concepts, archetypes overview, routing table, CLI quick reference
|
|
207
|
+
- `vibe-agent-toolkit:resources` — resource collections, per-directory schema validation, `vat resources` commands
|
|
208
|
+
- `vibe-agent-toolkit:distribution` — packaging, `--target claude-web`, `vat install`, npm and private distribution
|
|
209
|
+
- `vibe-agent-toolkit:agent-authoring` — SKILL.md authoring, 4 archetypes with examples, packaging options reference
|
|
210
|
+
- `vibe-agent-toolkit:audit` — `vat audit` flags, auto-detection table, `--compat` output, CI usage patterns
|
|
211
|
+
- **`vat audit --exclude <glob>`** - Filter paths from recursive scans (repeatable flag)
|
|
212
|
+
- Example: `vat audit plugins/ --exclude "dist/**" --exclude "node_modules/**"`
|
|
213
|
+
- Prunes directory traversal early for performance; does not just filter output
|
|
214
|
+
- **Unified `vat install` command** - Single command for installing any VAT resource type
|
|
215
|
+
- Auto-detects resource type from source: `SKILL.md` → agent-skill, `.claude-plugin/plugin.json` → claude-plugin, `.claude-plugin/marketplace.json` → claude-marketplace
|
|
216
|
+
- Routes to the correct `~/.claude/` subdirectory automatically
|
|
217
|
+
- Flags: `--type` (explicit override), `--force`, `--dry-run`; YAML output includes `sourceType` field
|
|
218
|
+
- `vat skills install` remains as an alias constrained to agent skills only
|
|
219
|
+
- **`vat audit --compat`** - Per-surface compatibility analysis for plugins and skills
|
|
220
|
+
- Reports compatibility with `claude-code`, `cowork`, and `claude-desktop` surfaces with supporting evidence
|
|
221
|
+
- Detects Python scripts, bash hooks, sqlite dependencies, and other surface-specific constraints
|
|
222
|
+
- Works in both path mode and `--user` mode; combinable with recursive scanning for full marketplace matrices
|
|
223
|
+
- **`vat skills package --target <target>`** - Target-specific packaging for Claude.ai web upload
|
|
224
|
+
- `--target claude-web` produces a ZIP with `references/` instead of `resources/`, matching the Claude.ai web upload spec
|
|
225
|
+
- `--target claude-code` (default) preserves existing behavior unchanged
|
|
226
|
+
- ZIP size validation for `claude-web`: warn at 4MB, error at 8MB
|
|
227
|
+
|
|
228
|
+
### Changed
|
|
229
|
+
- **`vat audit` is recursive by default** (**BREAKING**) - `vat audit <path>` now walks the full directory tree automatically
|
|
230
|
+
- `--recursive` / `-r` flag removed; use `--no-recursive` to scan the top-level directory only
|
|
231
|
+
- `--user` behavior unchanged: scans `~/.claude/` directories, exit code remains 0 (informational)
|
|
232
|
+
- **`CLAUDE.md` documentation additions** - Resource collections and licensing conventions added to the contributor guide
|
|
233
|
+
- Resource collections: per-directory schema validation config, `permissive` vs `strict` modes, `vat resources validate` usage
|
|
234
|
+
- Licensing conventions: table for open source / proprietary / not-yet-licensed packages with enterprise LICENSE template
|
|
235
|
+
|
|
236
|
+
## [0.1.14] - 2026-02-11
|
|
237
|
+
|
|
238
|
+
### Added
|
|
239
|
+
- **Content transform pipeline** - Shared `transformContent()` engine in `@vibe-agent-toolkit/resources` for rewriting markdown links before persistence
|
|
240
|
+
- `LinkRewriteRule[]` configuration with match criteria (type, glob pattern, excludeResourceIds) and Handlebars templates
|
|
241
|
+
- Template variables: `{{link.text}}`, `{{link.href}}`, `{{link.fragment}}`, `{{link.resource.*}}` (id, filePath, extension, mimeType, sizeBytes, estimatedTokenCount, frontmatter.*)
|
|
242
|
+
- Consumer context variables for skill/project-specific data (e.g., `{{skill.name}}`, `{{kb.baseUrl}}`)
|
|
243
|
+
- `ResourceLookup` interface decouples transform from full ResourceRegistry
|
|
244
|
+
- First-match-wins rule ordering; unmatched links preserved as-is
|
|
245
|
+
- **Full document storage** (`rag_documents` table) - Optional `storeDocuments: true` config on LanceDB RAG provider
|
|
246
|
+
- Stores complete document content alongside vector chunks for retrieval after search
|
|
247
|
+
- `getDocument(resourceId)` returns full content, metadata, token count, chunk count, and indexing timestamp
|
|
248
|
+
- Content transforms applied to stored documents
|
|
249
|
+
- Incremental updates: changed content updates the document record
|
|
250
|
+
- Cascading deletes: `deleteResource()` removes both chunks and document record
|
|
251
|
+
- `DocumentResult` interface added to `@vibe-agent-toolkit/rag` provider interfaces
|
|
252
|
+
- **Content transform support in RAG indexing** - `contentTransform` option on LanceDB provider rewrites links before chunking
|
|
253
|
+
- Content hash computed on transformed output for accurate change detection
|
|
254
|
+
- Re-indexes automatically when transform rules change
|
|
255
|
+
- **OnnxEmbeddingProvider** - Local ONNX-based embedding generation (#45)
|
|
256
|
+
- Makes `@lancedb/vectordb` and `onnxruntime-node` optional peer dependencies
|
|
257
|
+
- Falls back gracefully when native dependencies unavailable
|
|
258
|
+
|
|
259
|
+
### Fixed
|
|
260
|
+
- **tokenCount in enrichChunks** - `tokenCount` field now populated on enriched chunks; chunk position metadata (`chunkIndex`, `totalChunks`, `isFirstChunk`, `isLastChunk`) added (#46)
|
|
261
|
+
- **Custom metadata overwriting core chunk fields** - `chunkToLanceRow()` now spreads metadata before core fields so `chunkIndex`, `totalChunks`, and other core columns cannot be overwritten by user-defined metadata schemas with colliding names
|
|
262
|
+
- **Path-relative resource IDs** - `ResourceRegistry` generates IDs relative to `baseDir` (e.g., `docs-guide` instead of `guide`), preventing collisions for same-named files in different directories
|
|
263
|
+
|
|
264
|
+
## [0.1.13] - 2026-02-10
|
|
265
|
+
|
|
266
|
+
### Added
|
|
267
|
+
- **Skills development install** (`vat skills install --dev`) - Symlink-based installation reads `vat.skills[]` from `package.json` and symlinks built skills into `~/.claude/skills/`
|
|
268
|
+
- After rebuild, skills update immediately (no re-install needed)
|
|
269
|
+
- `--build` flag auto-runs `vat skills build` before symlinking
|
|
270
|
+
- `--name` flag to install a specific skill from multi-skill packages
|
|
271
|
+
- `--force` to overwrite existing installations
|
|
272
|
+
- `--dry-run` to preview without creating symlinks
|
|
273
|
+
- **Skills uninstall** (`vat skills uninstall <name>`) - Remove installed skills (directories or symlinks)
|
|
274
|
+
- `--all` flag reads `package.json` and removes all declared skills
|
|
275
|
+
- `--dry-run` to preview without removing
|
|
276
|
+
- Reports `wasSymlink` in YAML output for each removed skill
|
|
277
|
+
- **MCP test client harness** - Reusable `MCPTestClient` class for reliable MCP server testing
|
|
278
|
+
- Waits for server readiness signal before sending requests (eliminates race conditions)
|
|
279
|
+
- Auto-incrementing request IDs with ID-based promise resolution
|
|
280
|
+
- Graceful shutdown with SIGTERM/SIGKILL fallback
|
|
281
|
+
|
|
282
|
+
### Fixed
|
|
283
|
+
- **npm install installs ALL skills** - `vat skills install <npm-package>` now installs all skills from multi-skill packages instead of only the first one
|
|
284
|
+
- **Broken symlink detection** - `vat skills install --force` now correctly detects and removes broken symlinks using `lstatSync` instead of `existsSync`
|
|
285
|
+
- **MCP test reliability** - Replaced timing-based test approach with readiness-signal pattern; tests now complete in ~600ms instead of flaking at 2-3.5s
|
|
286
|
+
|
|
287
|
+
## [0.1.12] - 2026-02-10
|
|
288
|
+
|
|
289
|
+
### Added
|
|
290
|
+
- **External URL validation with caching** (#41)
|
|
291
|
+
- Optional external URL validation via `--check-external-urls` flag
|
|
292
|
+
- Filesystem-based cache with TTLs (24h alive, 1h dead)
|
|
293
|
+
- Per-collection configuration for timeout, retry, ignore patterns
|
|
294
|
+
- New issue types: `external_url_dead`, `external_url_timeout`, `external_url_error`
|
|
295
|
+
- Cache stored in `.vat-cache/external-urls.json`
|
|
296
|
+
- Uses `markdown-link-check` library for robust HTTP checking
|
|
297
|
+
- **Link Depth Control for Skills** - Control how deep to follow markdown links during skill packaging
|
|
298
|
+
- `linkFollowDepth` in `packagingOptions`: `0` (skill only), `1` (direct links), `2` (default), `N`, or `"full"` (unlimited)
|
|
299
|
+
- Prevents transitive link explosion in large knowledge bases (e.g., 493 files → ~10 files with depth 1)
|
|
300
|
+
- **Rule-Based Link Exclusion** - Selectively exclude files from bundles with per-pattern link rewriting
|
|
301
|
+
- `excludeReferencesFromBundle` with ordered rules: each rule specifies glob patterns and optional Handlebars template
|
|
302
|
+
- `defaultTemplate` for depth-boundary links that don't match explicit rules (default: `"{{link.text}}"`)
|
|
303
|
+
- Template variables: `{{link.text}}`, `{{link.href}}`, `{{link.fragment}}`, `{{link.type}}`, `{{link.resource.id}}`, `{{link.resource.fileName}}`, `{{link.resource.relativePath}}`, `{{skill.name}}`
|
|
304
|
+
- No dead links in output: every non-bundled link target is rewritten per its matched template
|
|
305
|
+
- **Resource Naming Strategies for Skills** - Flexible control over packaged resource file naming
|
|
306
|
+
- Three strategies: `basename` (default, simple), `resource-id` (flatten to kebab-case), `preserve-path` (maintain directory structure)
|
|
307
|
+
- Universal `stripPrefix` option removes path prefixes before applying naming strategy
|
|
308
|
+
- Filename collision detection prevents duplicate names in flat output
|
|
309
|
+
- Configure via `packagingOptions` in skill metadata (package.json `vat.skills[]`)
|
|
310
|
+
- **Non-Markdown Asset Bundling** - JSON schemas, images, and other non-markdown files linked from bundled markdown are now included in skill packages
|
|
311
|
+
- **Handlebars Template Utility** - Shared template rendering in `@vibe-agent-toolkit/utils` with compiled template caching
|
|
312
|
+
- **Directory Link Detection** - Links targeting directories now produce actionable validation errors suggesting README.md/index.md alternatives (previously crashed with ENOTSUP)
|
|
313
|
+
- **Expanded Validation Metadata** - `directFileCount`, `excludedReferenceCount`, and `excludedReferences` in validation results
|
|
314
|
+
- `--verbose` flag on `vat skills validate` shows excluded reference details with reason (`depth-exceeded` / `pattern-matched`) and matched pattern
|
|
315
|
+
- **Packaging Options Documentation** - Comprehensive reference in VAT SKILL.md covering linkFollowDepth, resourceNaming, excludeReferencesFromBundle, and ignoreValidationErrors
|
|
316
|
+
|
|
317
|
+
### Changed
|
|
318
|
+
- **Default link follow depth is now 2** (was unlimited). Use `linkFollowDepth: "full"` to restore unlimited behavior.
|
|
319
|
+
- `LINK_TARGETS_DIRECTORY` validation is now overridable (transitively-bundled docs may contain directory links the skill author cannot control)
|
|
320
|
+
|
|
321
|
+
### Improved
|
|
322
|
+
- **Navigation file errors** now include full resolved paths and line numbers (not just basename)
|
|
323
|
+
- **Depth terminology** clarified as "link-chain hops" instead of misleading "levels deep"
|
|
324
|
+
|
|
325
|
+
### Internal
|
|
326
|
+
- **npm link reliability** - Topological sort, `--install-strategy=shallow`, and retry logic for workspace package linking
|
|
327
|
+
|
|
328
|
+
## [0.1.11] - 2026-02-09
|
|
329
|
+
|
|
330
|
+
**Note:** Version 0.1.10 was deprecated due to incomplete publish (phantom package in publish list caused partial release).
|
|
331
|
+
|
|
332
|
+
### Performance
|
|
333
|
+
- **Discovery Scan: 540x Faster** - File discovery now completes in ~0.5 seconds instead of 5+ minutes
|
|
334
|
+
- Added `PERFORMANCE_POISON` patterns to exclude `.git`, `node_modules`, and `coverage` directories
|
|
335
|
+
- Batch git-ignore checking reduces 794 subprocess calls to 1 (`git check-ignore --stdin`)
|
|
336
|
+
- Skills list command that previously timed out now completes in seconds
|
|
337
|
+
- **Skills Validation: 12x Faster** - Validation improved from 13.5s to 1.13s
|
|
338
|
+
- Introduced `GitTracker` to cache git-ignore checks across validations
|
|
339
|
+
- Eliminates 174 redundant git subprocess calls during link validation
|
|
340
|
+
- Pre-populates cache from `git ls-files` for instant lookups
|
|
341
|
+
|
|
342
|
+
### Fixed
|
|
343
|
+
- **LanceDB Database Size** - `getStats()` now accurately reports database disk usage
|
|
344
|
+
- Previously always showed "0.00 MB" regardless of actual size
|
|
345
|
+
- Implements recursive directory traversal to calculate true size in bytes
|
|
346
|
+
- Helps users monitor disk usage and verify successful index builds
|
|
347
|
+
- **Phantom Package Validation** - Pre-publish check now catches packages declared but not existing
|
|
348
|
+
- Previously only checked for undeclared packages (exist but not in lists)
|
|
349
|
+
- Now validates both directions: undeclared packages AND phantom packages
|
|
350
|
+
- Prevents publish failures from stale package list entries
|
|
351
|
+
- Root cause of 0.1.10 publish failure
|
|
352
|
+
|
|
353
|
+
### Changed
|
|
354
|
+
- **Test Suite Reorganization**: Separated integration tests from unit tests for faster development feedback
|
|
355
|
+
- Moved 15 integration tests (testing file I/O, git, databases, ML models) to separate test phase
|
|
356
|
+
- Unit test execution time improved from 121s to 27-41s (63% faster)
|
|
357
|
+
- Integration tests run separately in ~34-38s
|
|
358
|
+
- Coverage thresholds adjusted to reflect unit test reality: 70% for project coverage, 80% for new code (patches)
|
|
359
|
+
- Clearer separation enables faster development iteration and better CI parallelization
|
|
360
|
+
|
|
361
|
+
### Internal
|
|
362
|
+
- **Turborepo Integration**: Build orchestration with intelligent caching and parallel execution
|
|
363
|
+
- **Circular Dependency Resolution**: Removed circular dependencies between packages for cleaner architecture
|
|
364
|
+
- **Shared Test Infrastructure**: `@vibe-agent-toolkit/test-agents` package for consistent testing across runtime adapters
|
|
365
|
+
- **Test Parallelism**: Adaptive test parallelism with `availableParallelism()` for 2x dev speedup
|
|
366
|
+
|
|
367
|
+
## [0.1.9] - 2026-02-07
|
|
368
|
+
|
|
369
|
+
- **Resource Compiler** (`@vibe-agent-toolkit/resource-compiler`) - Compile markdown to TypeScript with full IDE support
|
|
370
|
+
- Direct `.md` imports in TypeScript with type safety
|
|
371
|
+
- H2 headings become typed fragment properties for granular access
|
|
372
|
+
- Frontmatter parsing to typed objects
|
|
373
|
+
- IDE autocomplete, go-to-definition, and hover tooltips
|
|
374
|
+
- `vat-compile-resources` CLI: compile markdown to JS/TS modules
|
|
375
|
+
- TypeScript Language Service Plugin for seamless `.md` imports
|
|
376
|
+
- Build integration: copy generated resources to dist during build
|
|
377
|
+
- Dog-fooded in vat-example-cat-agents package
|
|
378
|
+
|
|
379
|
+
- **VAT Distribution Standard** - Package-based skill distribution with build and install infrastructure
|
|
380
|
+
- `vat skills build` command: Builds skills from source into `dist/skills/` during package build
|
|
381
|
+
- `vat skills install` command: Smart installation from npm packages, local directories, or zip files
|
|
382
|
+
- Package.json `vat` metadata convention for declaring skills, agents, pure functions, and runtimes
|
|
383
|
+
- Automatic skill installation via npm postinstall hooks
|
|
384
|
+
- Two distributable skills:
|
|
385
|
+
- `vibe-agent-toolkit`: User adoption guide for VAT CLI and agent creation (from vat-development-agents)
|
|
386
|
+
- `vat-example-cat-agents`: Orchestration guide for 8 example cat agents (from vat-example-cat-agents)
|
|
387
|
+
- See [Distributing VAT Skills Guide](./docs/guides/distributing-vat-skills.md) for usage
|
|
388
|
+
|
|
389
|
+
- **Audit Misconfiguration Detection** - `vat audit` now detects misconfigured standalone skills
|
|
390
|
+
- Identifies standalone SKILL.md files in ~/.claude/plugins/ that won't be recognized by Claude Code
|
|
391
|
+
- Error code: SKILL_MISCONFIGURED_LOCATION with actionable fix suggestions
|
|
392
|
+
- Helps users correct common installation mistakes
|
|
393
|
+
|
|
394
|
+
- `--user` flag for `vat skills validate` to validate installed user skills
|
|
395
|
+
- Shared utilities: claude-paths, skill-discovery, user-context-scanner, config-loader
|
|
396
|
+
- Case-insensitive skill discovery (finds malformed SKILL.md variations)
|
|
397
|
+
|
|
398
|
+
### Changed
|
|
399
|
+
- **BREAKING**: `vat skills list` now defaults to project skills (use `--user` for installed skills)
|
|
400
|
+
- **Plugin Schema Updated to Official Claude Code Spec** - Updated ClaudePluginSchema to match official documentation
|
|
401
|
+
- Made `description` and `version` optional (only `name` required if manifest exists)
|
|
402
|
+
- Added component path fields: `commands`, `skills`, `agents`, `hooks`, `mcpServers`, `outputStyles`, `lspServers`
|
|
403
|
+
- Renamed types for clarity: `PluginSchema` → `ClaudePluginSchema`, `Plugin` → `ClaudePlugin`
|
|
404
|
+
- Updated plugin-validator to handle optional version field with exactOptionalPropertyTypes
|
|
405
|
+
- Tests updated to validate actual errors instead of missing optional fields
|
|
406
|
+
- **CLI Dependency Cleanup** - Removed example agent packages from automatic installation
|
|
407
|
+
- Removed `@vibe-agent-toolkit/vat-example-cat-agents` from CLI dependencies
|
|
408
|
+
- Added `@vibe-agent-toolkit/vat-development-agents` to CLI dependencies
|
|
409
|
+
- Added comment warning against adding example packages to CLI dependencies
|
|
410
|
+
- Example agents now opt-in via separate `npm install -g @vibe-agent-toolkit/vat-example-cat-agents`
|
|
411
|
+
- **Skill Naming Consistency** - Skill names now match package names
|
|
412
|
+
- `vat-example-cat-agents` skill renamed from `cat-agents-skill` for consistency
|
|
413
|
+
- Refactored `vat skills validate` to use shared utilities and respect resource config boundaries
|
|
414
|
+
- Refactored `vat skills list` to use shared utilities
|
|
415
|
+
|
|
416
|
+
### Fixed
|
|
417
|
+
- **RAG Metadata Filtering**: Now works correctly regardless of which Zod version (v3 or v4) you have installed
|
|
418
|
+
- Previously: Metadata filters returned 0 results if your Zod version differed from the library's
|
|
419
|
+
- Now: Automatically detects and works with both Zod v3.25.0+ and v4.0.0+
|
|
420
|
+
- No code changes required - filtering just works
|
|
421
|
+
- **RAG Line Number Tracking**: Chunks now preserve exact line ranges from source documents
|
|
422
|
+
- Previously all chunks from the same section had identical line numbers
|
|
423
|
+
- Fixed off-by-one error in line position calculation (1-based to 0-based conversion)
|
|
424
|
+
- Properly flattens nested heading hierarchy during section extraction
|
|
425
|
+
- Handles large paragraphs by splitting into line-level chunks
|
|
426
|
+
- Enables accurate IDE navigation and source citations
|
|
427
|
+
- **BREAKING CHANGE**: RAG database column names are now lowercase (SQL standard)
|
|
428
|
+
- Existing LanceDB indexes must be rebuilt - run `await provider.clear()` then re-index
|
|
429
|
+
- Your code doesn't change - still use camelCase in queries: `{ metadata: { contentType: 'docs' } }`
|
|
430
|
+
- Why: Prevents case-sensitivity issues, no quotes needed in queries, follows SQL conventions
|
|
431
|
+
- See migration guide: `packages/rag-lancedb/README.md#upgrading-from-v018-to-v019`
|
|
432
|
+
- Eliminated path duplication across audit, install, and other commands
|
|
433
|
+
- `vat audit --user` now finds standalone skills in ~/.claude/skills
|
|
434
|
+
|
|
435
|
+
### Added
|
|
436
|
+
- **RAG Similarity Scores**: Search results now include confidence scores (0-1, higher is better)
|
|
437
|
+
- Filter results by confidence threshold
|
|
438
|
+
- Compare result relevance
|
|
439
|
+
- Build smarter retrieval logic
|
|
440
|
+
- **RAG Progress Tracking**: See real-time progress when building large indexes
|
|
441
|
+
- Shows resources indexed, chunks created, time elapsed/remaining
|
|
442
|
+
- Add progress bars to your CLI tools
|
|
443
|
+
- Monitor long-running index builds
|
|
444
|
+
- **Accurate Line Numbers**: Chunks now track exact line ranges in source files
|
|
445
|
+
- Jump directly to source in your IDE
|
|
446
|
+
- Show precise code citations
|
|
447
|
+
- Build better documentation tools
|
|
448
|
+
|
|
449
|
+
### Internal
|
|
450
|
+
- Deleted obsolete skill-finder.ts (replaced by skill-discovery.ts)
|
|
451
|
+
- Removed registry tracking from skills install command (architectural simplification)
|
|
452
|
+
- Preserved audit.ts custom scanning logic (architectural decision for independence)
|
|
453
|
+
|
|
454
|
+
## [0.1.8] - 2026-02-06
|
|
455
|
+
|
|
456
|
+
### Fixed
|
|
457
|
+
- **RAG Metadata Filtering at Scale**: Fixed metadata filtering returning empty results on production-scale indexes (>1000 chunks)
|
|
458
|
+
- Root cause: LanceDB struct column access (`metadata['field']`) doesn't scale
|
|
459
|
+
- Solution: Store metadata as top-level columns with direct access (`` `field` ``)
|
|
460
|
+
- All metadata fields now stored as top-level LanceDB columns instead of nested struct
|
|
461
|
+
- Filter builder updated to use direct column access for efficient queries
|
|
462
|
+
- Added system test validating metadata filtering with flattened schema
|
|
463
|
+
- Fixes issue reported by an adopter project (753 docs, 4,321 chunks)
|
|
464
|
+
|
|
465
|
+
### Changed
|
|
466
|
+
- **BREAKING CHANGE**: Existing LanceDB indexes must be rebuilt
|
|
467
|
+
- Metadata storage format changed from nested struct to top-level columns
|
|
468
|
+
- Run `await ragProvider.clear()` then re-index resources
|
|
469
|
+
- API remains backward compatible - no code changes required beyond index rebuild
|
|
470
|
+
- See migration guide in `packages/rag-lancedb/README.md`
|
|
471
|
+
|
|
472
|
+
## [0.1.7] - 2026-02-05
|
|
473
|
+
|
|
474
|
+
### Added
|
|
475
|
+
- **RAG Extensible Metadata Schema Support**: Custom metadata fields with full type safety
|
|
476
|
+
- Generic provider interfaces with `TMetadata` type parameter for compile-time type safety
|
|
477
|
+
- Zod schema introspection for automatic serialization/deserialization
|
|
478
|
+
- Support for arrays (CSV), objects (JSON), dates (timestamps), and primitives
|
|
479
|
+
- Type-safe query filtering on custom metadata fields
|
|
480
|
+
- `DefaultRAGMetadata` schema with standard fields (tags, title, description, category)
|
|
481
|
+
- See `packages/rag-lancedb/README.md` for usage examples
|
|
482
|
+
|
|
483
|
+
## [0.1.6] - 2026-02-04
|
|
484
|
+
|
|
485
|
+
### Fixed
|
|
486
|
+
- Umbrella package now works with `npx vibe-agent-toolkit` by adding ESM type declaration
|
|
487
|
+
- Version output now shows project root for local installs instead of "unknown"
|
|
488
|
+
|
|
489
|
+
## [0.1.5] - 2026-02-04
|
|
490
|
+
|
|
491
|
+
### Fixed
|
|
492
|
+
- CLI now works correctly with `npx` commands in CI environments without global installation
|
|
493
|
+
- Link validation detects case mismatches in filenames, preventing failures on case-sensitive filesystems (Linux)
|
|
494
|
+
|
|
495
|
+
## [0.1.4] - 2026-02-03
|
|
496
|
+
|
|
497
|
+
### Added
|
|
498
|
+
- **Multi-Collection Resource Validation System**: Comprehensive resource type system with frontmatter validation
|
|
499
|
+
- Multi-collection support via `vibe-agent-toolkit.config.yaml` with pattern resolution
|
|
500
|
+
- Per-collection frontmatter validation with JSON Schema
|
|
501
|
+
- Validation modes: strict vs permissive
|
|
502
|
+
- Collection filtering via `--collection <id>` flag in scan/validate commands
|
|
503
|
+
- Format options: `--format yaml|json|text` for structured or human-readable output
|
|
504
|
+
- Package-based schema references (e.g., `@vibe-agent-toolkit/agent-skills/schemas/skill-frontmatter.json`)
|
|
505
|
+
- Enhanced validation error messages with actual/expected values
|
|
506
|
+
- Enhanced `vat doctor` command validates config file schema and checks schema file existence
|
|
507
|
+
- **Agent Skills Package Rename**: `@vibe-agent-toolkit/runtime-claude-skills` → `@vibe-agent-toolkit/agent-skills`
|
|
508
|
+
- Exported JSON schemas: `skill-frontmatter.json` and `vat-skill-frontmatter.json`
|
|
509
|
+
|
|
510
|
+
### Changed
|
|
511
|
+
- **Output Format Improvements**: Enhanced validation and scan output
|
|
512
|
+
- Added error summary by type
|
|
513
|
+
- Added per-collection error tracking (filesWithErrors, errorCount)
|
|
514
|
+
- Simplified scan output with `--verbose` flag for file details
|
|
515
|
+
- Errors grouped by file in structured output (YAML/JSON)
|
|
516
|
+
|
|
517
|
+
## [0.1.3] - 2026-02-01
|
|
518
|
+
|
|
519
|
+
### Added
|
|
520
|
+
- **Frontmatter Validation**: Parse and validate YAML frontmatter in markdown files
|
|
521
|
+
- CLI flag `--frontmatter-schema` for `vat resources validate` to validate against JSON Schema
|
|
522
|
+
- Reports YAML syntax errors and schema validation failures
|
|
523
|
+
- `ResourceMetadata` includes parsed frontmatter data when present
|
|
524
|
+
|
|
525
|
+
## [0.1.2] - 2026-01-30
|
|
526
|
+
|
|
527
|
+
### Added
|
|
528
|
+
- **Session Management System**: Pluggable session persistence for stateful agents
|
|
529
|
+
- `RuntimeSession<TState>` type with id, history, state, and metadata
|
|
530
|
+
- `SessionStore<TState>` interface for pluggable persistence strategies
|
|
531
|
+
- `MemorySessionStore` - in-memory sessions with TTL support and sliding window expiration
|
|
532
|
+
- `FileSessionStore` - file-based persistence in `~/.vat-sessions/` (runtime-agnostic)
|
|
533
|
+
- CLI transport integration with `--session-store` and `--session-id` flags
|
|
534
|
+
- Session management commands: `/clear` (or `/restart`), `/state`
|
|
535
|
+
- Commands shown upfront in CLI welcome message for better UX
|
|
536
|
+
- Conversational demo supports session resumption across restarts
|
|
537
|
+
- Session helpers: `validateSessionId`, `createInitialSession`, `updateSessionAccess`, `isSessionExpired`
|
|
538
|
+
- Reusable test helpers to eliminate duplication across store implementations
|
|
539
|
+
- **Audit Command Enhancements**: Comprehensive validation of Claude skills
|
|
540
|
+
- Transitive link validation - recursively follows and validates all linked markdown files
|
|
541
|
+
- Unreferenced file detection with `--check-unreferenced` flag
|
|
542
|
+
- BFS traversal to discover entire skill structure
|
|
543
|
+
- Comprehensive statistics for all files in skill
|
|
544
|
+
- Handles circular references gracefully
|
|
545
|
+
- **MCP Gateway**: Expose VAT agents through Model Context Protocol (`@vibe-agent-toolkit/gateway-mcp`)
|
|
546
|
+
- Stdio transport for Claude Desktop integration
|
|
547
|
+
- Stateless agent support (Pure Function Tools, One-Shot LLM Analyzers)
|
|
548
|
+
- Multi-agent server support (expose multiple agents through single gateway)
|
|
549
|
+
- Runtime-agnostic architecture with adapter pattern
|
|
550
|
+
- Observability hooks (console logger, OpenTelemetry-aligned interfaces)
|
|
551
|
+
- Error classification (retryable vs non-retryable)
|
|
552
|
+
- Complete documentation and examples (haiku-validator, photo-analyzer, combined server)
|
|
553
|
+
- Integration and system tests
|
|
554
|
+
- **Agent Runtime Architecture**: Core VAT agent archetype system
|
|
555
|
+
- Pure function agents: Deterministic, synchronous tools
|
|
556
|
+
- LLM analyzer agents: AI-powered analysis with structured I/O
|
|
557
|
+
- Function orchestrator, event consumer, agentic researcher, conversational assistant archetypes
|
|
558
|
+
- Provider-agnostic LLM integration via context.callLLM()
|
|
559
|
+
- Shared validation and execution wrappers
|
|
560
|
+
- **Example Cat Agents**: Comprehensive agent examples for testing
|
|
561
|
+
- Haiku generator/validator, name generator/validator
|
|
562
|
+
- Photo analyzer, description parser
|
|
563
|
+
- Human approval workflow
|
|
564
|
+
- **Runtime Adapters**: Convert VAT agents to framework-specific formats
|
|
565
|
+
- `@vibe-agent-toolkit/runtime-vercel-ai-sdk`: Vercel AI SDK tools and functions
|
|
566
|
+
- `@vibe-agent-toolkit/runtime-langchain`: LangChain DynamicStructuredTool
|
|
567
|
+
- `@vibe-agent-toolkit/runtime-openai`: OpenAI function calling tools
|
|
568
|
+
- `@vibe-agent-toolkit/runtime-claude-agent-sdk`: Claude Agent SDK MCP tools
|
|
569
|
+
- All support both pure function and LLM analyzer archetypes
|
|
570
|
+
- Multi-provider demos (Anthropic Claude, OpenAI GPT)
|
|
571
|
+
- **Shared Test Factories**: Zero-duplication test infrastructure in dev-tools
|
|
572
|
+
- `createPureFunctionTestSuite()` and `createLLMAnalyzerTestSuite()` factories
|
|
573
|
+
- Consistent testing across all runtime adapters
|
|
574
|
+
- Runtime-specific behavior through config interfaces
|
|
575
|
+
- **Common Demo Infrastructure**: Runtime-agnostic demo framework
|
|
576
|
+
- Single demo implementation works with any runtime adapter
|
|
577
|
+
- Demonstrates agent portability across frameworks
|
|
578
|
+
- Multi-provider comparison support
|
|
579
|
+
- **Documentation**: Guide for adding new runtime adapters
|
|
580
|
+
- Package structure and configuration patterns
|
|
581
|
+
- Adapter implementation best practices
|
|
582
|
+
- Testing with shared factories
|
|
583
|
+
- Validation checklist and common pitfalls
|
|
584
|
+
- **Result Constructors Re-exported**: Convenience exports from `@vibe-agent-toolkit/agent-runtime`
|
|
585
|
+
- `createSuccess`, `createError`, `createInProgress`
|
|
586
|
+
- Error constants: `LLM_REFUSAL`, `LLM_INVALID_OUTPUT`, `LLM_TIMEOUT`, etc.
|
|
587
|
+
- All result types and metadata types re-exported for single-package convenience
|
|
588
|
+
|
|
589
|
+
### Changed
|
|
590
|
+
- Upgraded vibe-validate from 0.18.2-rc.1 to 0.18.4-rc.1 (fixes caching bug)
|
|
591
|
+
- Migrated from deprecated `vectordb@0.4.20` to `@lancedb/lancedb@0.23.0`
|
|
592
|
+
- Resolves Bun compatibility issues with Apache Arrow
|
|
593
|
+
- Changed nullable number fields to use -1 sentinel values instead of null
|
|
594
|
+
- API changes: `search().execute()` → `vectorSearch().toArray()`, `filter().execute()` → `query().where().toArray()`
|
|
595
|
+
- Updated OpenAI SDK from 4.67.0 to 6.16.0 (resolves node-domexception deprecation warnings)
|
|
596
|
+
- **BREAKING: Pure Function Agent API Simplified** - Consolidated to single `definePureFunction` API
|
|
597
|
+
- **Removed**: `createPureFunctionAgent` and `createSafePureFunctionAgent` (use `definePureFunction` instead)
|
|
598
|
+
- **API Change**: Agents now return output directly (unwrapped) instead of `OneShotAgentOutput` envelopes
|
|
599
|
+
- **API Change**: Pure function agents are now synchronous (`execute(input): TOutput`) instead of async
|
|
600
|
+
- **API Change**: Invalid input throws exceptions instead of returning error envelopes
|
|
601
|
+
- **API Change**: Handler function receives validated input, returns output directly (no manual wrapping)
|
|
602
|
+
- **Archetype renamed**: `pure-function-tool` → `pure-function` for consistency
|
|
603
|
+
- **Migration Path**: Replace `createPureFunctionAgent((input) => createSuccess(output), manifest)` with `definePureFunction(config, (input) => output)`
|
|
604
|
+
- **Runtime adapters updated**: All four runtime packages handle new unwrapped API
|
|
605
|
+
- **Documentation updated**: `docs/agent-authoring.md` shows only `definePureFunction` pattern
|
|
606
|
+
|
|
607
|
+
## [0.1.1] - 2026-01-12
|
|
608
|
+
|
|
609
|
+
### Added
|
|
610
|
+
- **`vat doctor` Diagnostic Command**: System health checks and troubleshooting
|
|
611
|
+
- Validates Node.js, Bun, Git, TypeScript installations
|
|
612
|
+
- Checks database connectivity (LanceDB)
|
|
613
|
+
- Validates configuration files
|
|
614
|
+
- Verifies installation integrity
|
|
615
|
+
- Exit codes: 0 (all checks passed), 1 (issues found), 2 (system errors)
|
|
616
|
+
- **Resource Collection System**: Advanced resource querying with checksums
|
|
617
|
+
- Content checksumming for change detection
|
|
618
|
+
- Advanced filtering and querying capabilities
|
|
619
|
+
- Test isolation infrastructure for improved reliability
|
|
620
|
+
- **Plugin & Marketplace Audit System** (`vat audit`): Comprehensive plugin ecosystem validation
|
|
621
|
+
- Validates `plugin.json` manifests (name, version, description, metadata)
|
|
622
|
+
- Validates `marketplace.json` with bundled skills, git repos, LSP servers
|
|
623
|
+
- Registry tracking for installed plugins and known marketplaces
|
|
624
|
+
- Cache staleness detection - detects stale cached skills vs installed plugins
|
|
625
|
+
- Compares checksums between cache and source
|
|
626
|
+
- Identifies cache-only and installed-only resources
|
|
627
|
+
- Hierarchical output with cache status indicators (stale/fresh/orphaned)
|
|
628
|
+
- `--verbose` flag for detailed diagnostic output
|
|
629
|
+
- Filter plugin/marketplace results from skill-only scans
|
|
630
|
+
- Performance optimizations for large plugin collections
|
|
631
|
+
|
|
632
|
+
## [0.1.0] - 2026-01-04
|
|
633
|
+
|
|
10
634
|
### Added
|
|
11
|
-
-
|
|
12
|
-
-
|
|
635
|
+
- **Publishing System**: Automated npm publishing with rollback safety
|
|
636
|
+
- `validate-version`: Ensures all packages have unified version
|
|
637
|
+
- `publish-with-rollback`: Publishes 11 packages in dependency order with automatic rollback/deprecation on failure
|
|
638
|
+
- `extract-changelog`: Extracts version-specific changelog for GitHub releases
|
|
639
|
+
- GitHub Actions workflow triggered by version tags (v*)
|
|
640
|
+
- Smart npm dist-tag handling: RC versions → @next, stable versions → @latest
|
|
641
|
+
- Manifest tracking for publish progress and rollback capability
|
|
642
|
+
- Cross-platform test helpers with security validation
|
|
643
|
+
- **Agent Runtime**: Execute agents with `vat agent run <name> "input"` using Anthropic API
|
|
644
|
+
- **Agent Discovery**: List all agents in your project with `vat agent list`
|
|
645
|
+
- **Agent Validation**: Validate manifests and resources with `vat agent validate <name>`
|
|
646
|
+
- **Claude Skills Audit**: Comprehensive validation of Claude Skills with `vat agent audit [path] --recursive`
|
|
647
|
+
- Validates frontmatter fields (name, description, license, compatibility)
|
|
648
|
+
- Enforces naming conventions (lowercase, hyphens, reserved words)
|
|
649
|
+
- Checks link integrity (broken links, Windows paths)
|
|
650
|
+
- Detects console-incompatible tool usage (Write, Edit, Bash)
|
|
651
|
+
- Exit codes: 0 (success), 1 (validation errors), 2 (system errors)
|
|
652
|
+
- **Claude Skills Import**: Convert SKILL.md to agent.yaml with `vat agent import <skillPath> [options]`
|
|
653
|
+
- Extracts frontmatter metadata to agent manifest
|
|
654
|
+
- Validates before conversion
|
|
655
|
+
- Supports custom output paths with `--output`
|
|
656
|
+
- Force overwrite with `--force`
|
|
657
|
+
- **Claude Skills Packaging**: Build agents as Claude Skills with `vat agent build <name>`
|
|
658
|
+
- **Installation Management**: Install/uninstall Claude Skills locally with `vat agent install/uninstall <name>`
|
|
659
|
+
- **Installation Scopes**: Control installation location with `--scope user|project`
|
|
660
|
+
- **Dev Mode**: Symlink-based development workflow with `--dev` flag
|
|
661
|
+
- **Gitignore Support**: File crawler and link validator now respect `.gitignore` patterns
|
|
662
|
+
- **RAG System**: Document indexing and semantic search with LanceDB
|
|
663
|
+
- New package: `@vibe-agent-toolkit/agent-config` - agent manifest loading and validation
|
|
664
|
+
- New package: `@vibe-agent-toolkit/runtime-claude-skills` - Claude Skills builder, installer, validator, and import/export
|
|
665
|
+
- New package: `@vibe-agent-toolkit/discovery` - format detection and file scanning utilities
|
|
666
|
+
- New documentation: [Agent Skills Best Practices Guide](./docs/guides/agent-skills-best-practices.md)
|
|
667
|
+
- New documentation: [Audit Command Reference](./docs/cli/audit.md)
|
|
668
|
+
- New documentation: [Import Command Reference](./docs/cli/import.md)
|
|
669
|
+
- **Resources System**: Markdown resource scanning and validation of link integrity
|
|
@@ -6,15 +6,44 @@ Development agents and skills for building, testing, and distributing AI agent s
|
|
|
6
6
|
|
|
7
7
|
## Install
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
### From the terminal
|
|
10
10
|
|
|
11
|
-
```
|
|
12
|
-
claude plugin marketplace add jdutton/vibe-agent-toolkit#claude-marketplace
|
|
11
|
+
```bash
|
|
12
|
+
claude plugin marketplace add jdutton/vibe-agent-toolkit#claude-marketplace
|
|
13
13
|
claude plugin install vibe-agent-toolkit@vat-skills
|
|
14
14
|
```
|
|
15
15
|
|
|
16
|
+
### From within Claude Code
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
/plugin marketplace add jdutton/vibe-agent-toolkit#claude-marketplace
|
|
20
|
+
/plugin install vibe-agent-toolkit@vat-skills
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### For your project (shared with team)
|
|
24
|
+
|
|
25
|
+
Add `--scope project` to write to `.claude/settings.json` (committed to git). Team members who clone the repo will be prompted to install the marketplace automatically.
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
claude plugin marketplace add jdutton/vibe-agent-toolkit#claude-marketplace --scope project
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Update
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
claude plugin marketplace update vat-skills
|
|
35
|
+
```
|
|
36
|
+
|
|
16
37
|
Then start a new Claude Code session. Skills appear as `/vibe-agent-toolkit:skill-name`.
|
|
17
38
|
|
|
39
|
+
### Pre-release channel
|
|
40
|
+
|
|
41
|
+
To track the latest pre-release builds, use the `-next` branch instead:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
claude plugin marketplace add jdutton/vibe-agent-toolkit#claude-marketplace-next
|
|
45
|
+
```
|
|
46
|
+
|
|
18
47
|
## Skills
|
|
19
48
|
|
|
20
49
|
| Skill | When to use |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibe-agent-toolkit/vat-development-agents",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.28-rc.1",
|
|
4
4
|
"description": "VAT development agents - dogfooding the vibe-agent-toolkit",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"keywords": [
|
|
@@ -64,13 +64,13 @@
|
|
|
64
64
|
"postinstall": "vat claude plugin install --npm-postinstall || exit 0"
|
|
65
65
|
},
|
|
66
66
|
"dependencies": {
|
|
67
|
-
"@vibe-agent-toolkit/agent-schema": "0.1.
|
|
68
|
-
"@vibe-agent-toolkit/cli": "0.1.
|
|
67
|
+
"@vibe-agent-toolkit/agent-schema": "0.1.28-rc.1",
|
|
68
|
+
"@vibe-agent-toolkit/cli": "0.1.28-rc.1",
|
|
69
69
|
"yaml": "^2.8.2"
|
|
70
70
|
},
|
|
71
71
|
"devDependencies": {
|
|
72
72
|
"@types/node": "^25.0.3",
|
|
73
|
-
"@vibe-agent-toolkit/resource-compiler": "0.1.
|
|
73
|
+
"@vibe-agent-toolkit/resource-compiler": "0.1.28-rc.1",
|
|
74
74
|
"ts-patch": "^3.2.1",
|
|
75
75
|
"typescript": "^5.7.3"
|
|
76
76
|
},
|