@vibe-agent-toolkit/cli 0.2.0-rc.7 → 0.2.0-rc.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -1
- package/dist/bin/vat +34 -19
- package/dist/bin/vat.js +34 -19
- package/dist/bin/vat.js.map +1 -1
- package/dist/bin.js +5 -2
- package/dist/bin.js.map +1 -1
- package/dist/commands/agent/build.d.ts.map +1 -1
- package/dist/commands/agent/build.js +2 -1
- package/dist/commands/agent/build.js.map +1 -1
- package/dist/commands/agent/import.d.ts.map +1 -1
- package/dist/commands/agent/import.js +3 -2
- package/dist/commands/agent/import.js.map +1 -1
- package/dist/commands/agent/install-path.d.ts +36 -0
- package/dist/commands/agent/install-path.d.ts.map +1 -0
- package/dist/commands/agent/install-path.js +44 -0
- package/dist/commands/agent/install-path.js.map +1 -0
- package/dist/commands/agent/install.d.ts.map +1 -1
- package/dist/commands/agent/install.js +22 -10
- package/dist/commands/agent/install.js.map +1 -1
- package/dist/commands/agent/installed.d.ts.map +1 -1
- package/dist/commands/agent/installed.js +22 -12
- package/dist/commands/agent/installed.js.map +1 -1
- package/dist/commands/agent/list.d.ts.map +1 -1
- package/dist/commands/agent/list.js +2 -1
- package/dist/commands/agent/list.js.map +1 -1
- package/dist/commands/agent/run.d.ts.map +1 -1
- package/dist/commands/agent/run.js +2 -1
- package/dist/commands/agent/run.js.map +1 -1
- package/dist/commands/agent/uninstall.d.ts.map +1 -1
- package/dist/commands/agent/uninstall.js +13 -6
- package/dist/commands/agent/uninstall.js.map +1 -1
- package/dist/commands/agent/validate.d.ts.map +1 -1
- package/dist/commands/agent/validate.js +3 -2
- package/dist/commands/agent/validate.js.map +1 -1
- package/dist/commands/ard/emit.d.ts +72 -23
- package/dist/commands/ard/emit.d.ts.map +1 -1
- package/dist/commands/ard/emit.js +109 -56
- package/dist/commands/ard/emit.js.map +1 -1
- package/dist/commands/ard/index.d.ts +1 -1
- package/dist/commands/ard/index.d.ts.map +1 -1
- package/dist/commands/ard/index.js +4 -3
- package/dist/commands/ard/index.js.map +1 -1
- package/dist/commands/audit/distributed-tree.d.ts.map +1 -1
- package/dist/commands/audit/distributed-tree.js +9 -6
- package/dist/commands/audit/distributed-tree.js.map +1 -1
- package/dist/commands/audit/provenance.d.ts.map +1 -1
- package/dist/commands/audit/provenance.js +4 -3
- package/dist/commands/audit/provenance.js.map +1 -1
- package/dist/commands/audit/scan-population.d.ts +158 -0
- package/dist/commands/audit/scan-population.d.ts.map +1 -0
- package/dist/commands/audit/scan-population.js +292 -0
- package/dist/commands/audit/scan-population.js.map +1 -0
- package/dist/commands/audit-settings.d.ts.map +1 -1
- package/dist/commands/audit-settings.js +6 -5
- package/dist/commands/audit-settings.js.map +1 -1
- package/dist/commands/audit.d.ts +16 -14
- package/dist/commands/audit.d.ts.map +1 -1
- package/dist/commands/audit.js +304 -389
- package/dist/commands/audit.js.map +1 -1
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +25 -24
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/cache/clear.d.ts +17 -3
- package/dist/commands/cache/clear.d.ts.map +1 -1
- package/dist/commands/cache/clear.js +34 -13
- package/dist/commands/cache/clear.js.map +1 -1
- package/dist/commands/cache/index.d.ts.map +1 -1
- package/dist/commands/cache/index.js +19 -10
- package/dist/commands/cache/index.js.map +1 -1
- package/dist/commands/claude/context.d.ts +2 -2
- package/dist/commands/claude/context.d.ts.map +1 -1
- package/dist/commands/claude/context.js +7 -6
- package/dist/commands/claude/context.js.map +1 -1
- package/dist/commands/claude/index.d.ts +12 -11
- package/dist/commands/claude/index.d.ts.map +1 -1
- package/dist/commands/claude/index.js +14 -16
- package/dist/commands/claude/index.js.map +1 -1
- package/dist/commands/claude/marketplace/changelog-utils.d.ts +1 -1
- package/dist/commands/claude/marketplace/changelog-utils.d.ts.map +1 -1
- package/dist/commands/claude/marketplace/changelog-utils.js +1 -2
- package/dist/commands/claude/marketplace/changelog-utils.js.map +1 -1
- package/dist/commands/claude/marketplace/git-publish.d.ts.map +1 -1
- package/dist/commands/claude/marketplace/git-publish.js +22 -12
- package/dist/commands/claude/marketplace/git-publish.js.map +1 -1
- package/dist/commands/claude/marketplace/license-utils.d.ts.map +1 -1
- package/dist/commands/claude/marketplace/license-utils.js +0 -1
- package/dist/commands/claude/marketplace/license-utils.js.map +1 -1
- package/dist/commands/claude/marketplace/publish-tree.d.ts.map +1 -1
- package/dist/commands/claude/marketplace/publish-tree.js +0 -6
- package/dist/commands/claude/marketplace/publish-tree.js.map +1 -1
- package/dist/commands/claude/marketplace/publish.d.ts.map +1 -1
- package/dist/commands/claude/marketplace/publish.js +2 -1
- package/dist/commands/claude/marketplace/publish.js.map +1 -1
- package/dist/commands/claude/marketplace/validate.d.ts.map +1 -1
- package/dist/commands/claude/marketplace/validate.js +26 -16
- package/dist/commands/claude/marketplace/validate.js.map +1 -1
- package/dist/commands/claude/org/api-keys.d.ts +0 -3
- package/dist/commands/claude/org/api-keys.d.ts.map +1 -1
- package/dist/commands/claude/org/api-keys.js +2 -1
- package/dist/commands/claude/org/api-keys.js.map +1 -1
- package/dist/commands/claude/org/helpers.d.ts +17 -22
- package/dist/commands/claude/org/helpers.d.ts.map +1 -1
- package/dist/commands/claude/org/helpers.js +6 -22
- package/dist/commands/claude/org/helpers.js.map +1 -1
- package/dist/commands/claude/org/invites.d.ts +0 -3
- package/dist/commands/claude/org/invites.d.ts.map +1 -1
- package/dist/commands/claude/org/invites.js +3 -2
- package/dist/commands/claude/org/invites.js.map +1 -1
- package/dist/commands/claude/org/skills.d.ts +19 -1
- package/dist/commands/claude/org/skills.d.ts.map +1 -1
- package/dist/commands/claude/org/skills.js +147 -111
- package/dist/commands/claude/org/skills.js.map +1 -1
- package/dist/commands/claude/org/users.d.ts +0 -3
- package/dist/commands/claude/org/users.d.ts.map +1 -1
- package/dist/commands/claude/org/users.js +3 -2
- package/dist/commands/claude/org/users.js.map +1 -1
- package/dist/commands/claude/org/workspaces.d.ts +0 -3
- package/dist/commands/claude/org/workspaces.d.ts.map +1 -1
- package/dist/commands/claude/org/workspaces.js +6 -5
- package/dist/commands/claude/org/workspaces.js.map +1 -1
- package/dist/commands/claude/plugin/build.d.ts.map +1 -1
- package/dist/commands/claude/plugin/build.js +23 -52
- package/dist/commands/claude/plugin/build.js.map +1 -1
- package/dist/commands/claude/plugin/helpers.d.ts.map +1 -1
- package/dist/commands/claude/plugin/helpers.js +0 -6
- package/dist/commands/claude/plugin/helpers.js.map +1 -1
- package/dist/commands/claude/plugin/install.d.ts +12 -0
- package/dist/commands/claude/plugin/install.d.ts.map +1 -1
- package/dist/commands/claude/plugin/install.js +71 -60
- package/dist/commands/claude/plugin/install.js.map +1 -1
- package/dist/commands/claude/plugin/list.d.ts.map +1 -1
- package/dist/commands/claude/plugin/list.js +3 -2
- package/dist/commands/claude/plugin/list.js.map +1 -1
- package/dist/commands/claude/plugin/plugin-changelog.d.ts.map +1 -1
- package/dist/commands/claude/plugin/plugin-changelog.js +0 -2
- package/dist/commands/claude/plugin/plugin-changelog.js.map +1 -1
- package/dist/commands/claude/plugin/plugin-files.d.ts.map +1 -1
- package/dist/commands/claude/plugin/plugin-files.js +3 -6
- package/dist/commands/claude/plugin/plugin-files.js.map +1 -1
- package/dist/commands/claude/plugin/plugin-validators.d.ts.map +1 -1
- package/dist/commands/claude/plugin/plugin-validators.js +3 -6
- package/dist/commands/claude/plugin/plugin-validators.js.map +1 -1
- package/dist/commands/claude/plugin/tree-copy.d.ts +2 -1
- package/dist/commands/claude/plugin/tree-copy.d.ts.map +1 -1
- package/dist/commands/claude/plugin/tree-copy.js +15 -14
- package/dist/commands/claude/plugin/tree-copy.js.map +1 -1
- package/dist/commands/claude/plugin/uninstall.d.ts.map +1 -1
- package/dist/commands/claude/plugin/uninstall.js +4 -4
- package/dist/commands/claude/plugin/uninstall.js.map +1 -1
- package/dist/commands/consistency-check.d.ts +17 -15
- package/dist/commands/consistency-check.d.ts.map +1 -1
- package/dist/commands/consistency-check.js +149 -104
- package/dist/commands/consistency-check.js.map +1 -1
- package/dist/commands/corpus/report.d.ts.map +1 -1
- package/dist/commands/corpus/report.js +1 -2
- package/dist/commands/corpus/report.js.map +1 -1
- package/dist/commands/corpus/runner.d.ts.map +1 -1
- package/dist/commands/corpus/runner.js +2 -6
- package/dist/commands/corpus/runner.js.map +1 -1
- package/dist/commands/corpus/scan.d.ts.map +1 -1
- package/dist/commands/corpus/scan.js +2 -3
- package/dist/commands/corpus/scan.js.map +1 -1
- package/dist/commands/corpus/seed.d.ts +4 -4
- package/dist/commands/corpus/seed.d.ts.map +1 -1
- package/dist/commands/corpus/seed.js +1 -3
- package/dist/commands/corpus/seed.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +55 -37
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/inventory.d.ts.map +1 -1
- package/dist/commands/inventory.js +6 -7
- package/dist/commands/inventory.js.map +1 -1
- package/dist/commands/mcp/list-collections.d.ts.map +1 -1
- package/dist/commands/mcp/list-collections.js +2 -1
- package/dist/commands/mcp/list-collections.js.map +1 -1
- package/dist/commands/mcp/serve.d.ts.map +1 -1
- package/dist/commands/mcp/serve.js +3 -2
- package/dist/commands/mcp/serve.js.map +1 -1
- package/dist/commands/okf/index.d.ts.map +1 -1
- package/dist/commands/okf/index.js +14 -2
- package/dist/commands/okf/index.js.map +1 -1
- package/dist/commands/okf/validate.d.ts +157 -48
- package/dist/commands/okf/validate.d.ts.map +1 -1
- package/dist/commands/okf/validate.js +109 -76
- package/dist/commands/okf/validate.js.map +1 -1
- package/dist/commands/phase-utils.d.ts +11 -10
- package/dist/commands/phase-utils.d.ts.map +1 -1
- package/dist/commands/phase-utils.js +30 -14
- package/dist/commands/phase-utils.js.map +1 -1
- package/dist/commands/positional-args.d.ts.map +1 -1
- package/dist/commands/positional-args.js +2 -1
- package/dist/commands/positional-args.js.map +1 -1
- package/dist/commands/rag/clear-command.d.ts.map +1 -1
- package/dist/commands/rag/clear-command.js +2 -1
- package/dist/commands/rag/clear-command.js.map +1 -1
- package/dist/commands/rag/index-command.d.ts.map +1 -1
- package/dist/commands/rag/index-command.js +4 -1
- package/dist/commands/rag/index-command.js.map +1 -1
- package/dist/commands/rag/query-command.d.ts.map +1 -1
- package/dist/commands/rag/query-command.js +2 -1
- package/dist/commands/rag/query-command.js.map +1 -1
- package/dist/commands/rag/stats-command.d.ts.map +1 -1
- package/dist/commands/rag/stats-command.js +2 -1
- package/dist/commands/rag/stats-command.js.map +1 -1
- package/dist/commands/resources/check-progress.d.ts +6 -0
- package/dist/commands/resources/check-progress.d.ts.map +1 -1
- package/dist/commands/resources/check-progress.js +15 -4
- package/dist/commands/resources/check-progress.js.map +1 -1
- package/dist/commands/resources/check-supervisor.d.ts.map +1 -1
- package/dist/commands/resources/check-supervisor.js +14 -7
- package/dist/commands/resources/check-supervisor.js.map +1 -1
- package/dist/commands/resources/check.d.ts +315 -205
- package/dist/commands/resources/check.d.ts.map +1 -1
- package/dist/commands/resources/check.js +368 -327
- package/dist/commands/resources/check.js.map +1 -1
- package/dist/commands/resources/index.d.ts.map +1 -1
- package/dist/commands/resources/index.js +159 -39
- package/dist/commands/resources/index.js.map +1 -1
- package/dist/commands/resources/query.d.ts +2 -2
- package/dist/commands/resources/query.d.ts.map +1 -1
- package/dist/commands/resources/query.js +24 -18
- package/dist/commands/resources/query.js.map +1 -1
- package/dist/commands/resources/scan.d.ts.map +1 -1
- package/dist/commands/resources/scan.js +4 -8
- package/dist/commands/resources/scan.js.map +1 -1
- package/dist/commands/resources/validate.d.ts +1 -1
- package/dist/commands/resources/validate.d.ts.map +1 -1
- package/dist/commands/resources/validate.js +0 -1
- package/dist/commands/resources/validate.js.map +1 -1
- package/dist/commands/skill/review-checklist.d.ts +3 -2
- package/dist/commands/skill/review-checklist.d.ts.map +1 -1
- package/dist/commands/skill/review-checklist.js +4 -2
- package/dist/commands/skill/review-checklist.js.map +1 -1
- package/dist/commands/skill/review.d.ts +247 -0
- package/dist/commands/skill/review.d.ts.map +1 -1
- package/dist/commands/skill/review.js +90 -60
- package/dist/commands/skill/review.js.map +1 -1
- package/dist/commands/skill/test/configure.d.ts.map +1 -1
- package/dist/commands/skill/test/configure.js +0 -1
- package/dist/commands/skill/test/configure.js.map +1 -1
- package/dist/commands/skill/test/run.d.ts +12 -6
- package/dist/commands/skill/test/run.d.ts.map +1 -1
- package/dist/commands/skill/test/run.js +120 -65
- package/dist/commands/skill/test/run.js.map +1 -1
- package/dist/commands/skills/build.d.ts +83 -3
- package/dist/commands/skills/build.d.ts.map +1 -1
- package/dist/commands/skills/build.js +162 -40
- package/dist/commands/skills/build.js.map +1 -1
- package/dist/commands/skills/install.d.ts +2 -1
- package/dist/commands/skills/install.d.ts.map +1 -1
- package/dist/commands/skills/install.js +20 -30
- package/dist/commands/skills/install.js.map +1 -1
- package/dist/commands/skills/list.d.ts.map +1 -1
- package/dist/commands/skills/list.js +14 -18
- package/dist/commands/skills/list.js.map +1 -1
- package/dist/commands/skills/package.d.ts +1 -1
- package/dist/commands/skills/package.d.ts.map +1 -1
- package/dist/commands/skills/package.js +6 -8
- package/dist/commands/skills/package.js.map +1 -1
- package/dist/commands/skills/scope-guard.d.ts.map +1 -1
- package/dist/commands/skills/scope-guard.js +2 -4
- package/dist/commands/skills/scope-guard.js.map +1 -1
- package/dist/commands/skills/shared.d.ts.map +1 -1
- package/dist/commands/skills/shared.js +2 -4
- package/dist/commands/skills/shared.js.map +1 -1
- package/dist/commands/skills/skill-discovery.d.ts +15 -13
- package/dist/commands/skills/skill-discovery.d.ts.map +1 -1
- package/dist/commands/skills/skill-discovery.js +23 -5
- package/dist/commands/skills/skill-discovery.js.map +1 -1
- package/dist/commands/skills/source-resolvers.d.ts +15 -0
- package/dist/commands/skills/source-resolvers.d.ts.map +1 -1
- package/dist/commands/skills/source-resolvers.js +25 -4
- package/dist/commands/skills/source-resolvers.js.map +1 -1
- package/dist/commands/validate.d.ts +1 -1
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +39 -14
- package/dist/commands/validate.js.map +1 -1
- package/dist/commands/verify.d.ts +17 -5
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +161 -104
- package/dist/commands/verify.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/report-schemas.d.ts +45 -0
- package/dist/report-schemas.d.ts.map +1 -0
- package/dist/report-schemas.js +100 -0
- package/dist/report-schemas.js.map +1 -0
- package/dist/skill-resolution/classify.js +2 -2
- package/dist/skill-resolution/classify.js.map +1 -1
- package/dist/skill-resolution/resolve-skill-reference.d.ts.map +1 -1
- package/dist/skill-resolution/resolve-skill-reference.js +50 -55
- package/dist/skill-resolution/resolve-skill-reference.js.map +1 -1
- package/dist/utils/agent-discovery.d.ts.map +1 -1
- package/dist/utils/agent-discovery.js +22 -11
- package/dist/utils/agent-discovery.js.map +1 -1
- package/dist/utils/agent-runner.d.ts.map +1 -1
- package/dist/utils/agent-runner.js +0 -1
- package/dist/utils/agent-runner.js.map +1 -1
- package/dist/utils/claude-context-lens.d.ts +34 -0
- package/dist/utils/claude-context-lens.d.ts.map +1 -0
- package/dist/utils/claude-context-lens.js +39 -0
- package/dist/utils/claude-context-lens.js.map +1 -0
- package/dist/utils/command-error.d.ts +63 -62
- package/dist/utils/command-error.d.ts.map +1 -1
- package/dist/utils/command-error.js +80 -76
- package/dist/utils/command-error.js.map +1 -1
- package/dist/utils/config-loader.d.ts +2 -1
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-loader.js +3 -6
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/corpus-target.d.ts +5 -27
- package/dist/utils/corpus-target.d.ts.map +1 -1
- package/dist/utils/corpus-target.js +7 -33
- package/dist/utils/corpus-target.js.map +1 -1
- package/dist/utils/help-loader.d.ts.map +1 -1
- package/dist/utils/help-loader.js +0 -1
- package/dist/utils/help-loader.js.map +1 -1
- package/dist/utils/issue-rendering.d.ts +2 -2
- package/dist/utils/issue-rendering.js +2 -2
- package/dist/utils/optional-backend.d.ts.map +1 -1
- package/dist/utils/optional-backend.js +2 -1
- package/dist/utils/optional-backend.js.map +1 -1
- package/dist/utils/output.d.ts +9 -0
- package/dist/utils/output.d.ts.map +1 -1
- package/dist/utils/output.js +16 -0
- package/dist/utils/output.js.map +1 -1
- package/dist/utils/package-json.d.ts +24 -0
- package/dist/utils/package-json.d.ts.map +1 -0
- package/dist/utils/package-json.js +49 -0
- package/dist/utils/package-json.js.map +1 -0
- package/dist/utils/project-root-policy.d.ts.map +1 -1
- package/dist/utils/project-root-policy.js +0 -2
- package/dist/utils/project-root-policy.js.map +1 -1
- package/dist/utils/projection-lenses.d.ts +98 -0
- package/dist/utils/projection-lenses.d.ts.map +1 -0
- package/dist/utils/projection-lenses.js +203 -0
- package/dist/utils/projection-lenses.js.map +1 -0
- package/dist/utils/projection-query.d.ts +38 -14
- package/dist/utils/projection-query.d.ts.map +1 -1
- package/dist/utils/projection-query.js +78 -17
- package/dist/utils/projection-query.js.map +1 -1
- package/dist/utils/projection-store.d.ts +61 -42
- package/dist/utils/projection-store.d.ts.map +1 -1
- package/dist/utils/projection-store.js +155 -59
- package/dist/utils/projection-store.js.map +1 -1
- package/dist/utils/relation-limits.d.ts +50 -0
- package/dist/utils/relation-limits.d.ts.map +1 -0
- package/dist/utils/relation-limits.js +50 -0
- package/dist/utils/relation-limits.js.map +1 -0
- package/dist/utils/resource-loader.js +2 -2
- package/dist/utils/resource-loader.js.map +1 -1
- package/dist/utils/skill-discovery.d.ts.map +1 -1
- package/dist/utils/skill-discovery.js +2 -1
- package/dist/utils/skill-discovery.js.map +1 -1
- package/dist/utils/skill-packaging-config.d.ts +63 -1
- package/dist/utils/skill-packaging-config.d.ts.map +1 -1
- package/dist/utils/skill-packaging-config.js +56 -1
- package/dist/utils/skill-packaging-config.js.map +1 -1
- package/dist/utils/url-redact.d.ts.map +1 -1
- package/dist/utils/url-redact.js +4 -6
- package/dist/utils/url-redact.js.map +1 -1
- package/dist/utils/user-context-scanner.d.ts.map +1 -1
- package/dist/utils/user-context-scanner.js +0 -2
- package/dist/utils/user-context-scanner.js.map +1 -1
- package/dist/utils/validate-help-files.d.ts.map +1 -1
- package/dist/utils/validate-help-files.js +3 -4
- package/dist/utils/validate-help-files.js.map +1 -1
- package/dist/utils/vat-bin-path.d.ts.map +1 -1
- package/dist/utils/vat-bin-path.js +0 -1
- package/dist/utils/vat-bin-path.js.map +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -3
- package/dist/version.js.map +1 -1
- package/docs/audit.md +44 -53
- package/docs/doctor.md +1 -0
- package/docs/index.md +18 -10
- package/docs/rag.md +0 -1
- package/docs/resources.md +0 -1
- package/docs/skill-test.md +10 -9
- package/docs/skills.md +6 -7
- package/package.json +23 -28
- package/schemas/ard-emit.json +149 -0
- package/schemas/okf-validate.json +170 -0
- package/schemas/resources-check.json +229 -0
- package/schemas/skill-review.json +230 -0
- package/dist/commands/claude/budget.d.ts +0 -170
- package/dist/commands/claude/budget.d.ts.map +0 -1
- package/dist/commands/claude/budget.js +0 -464
- package/dist/commands/claude/budget.js.map +0 -1
- package/dist/utils/context-budget-issues.d.ts +0 -108
- package/dist/utils/context-budget-issues.d.ts.map +0 -1
- package/dist/utils/context-budget-issues.js +0 -280
- package/dist/utils/context-budget-issues.js.map +0 -1
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
* Most fields are a shallow override: a per-skill value replaces the default
|
|
10
10
|
* outright. `files:` is the exception — see below.
|
|
11
11
|
*/
|
|
12
|
-
import {
|
|
12
|
+
import { basename } from 'node:path';
|
|
13
|
+
import { mergeFilesConfig, } from '@vibe-agent-toolkit/agent-skills';
|
|
13
14
|
import { safePath } from '@vibe-agent-toolkit/utils';
|
|
14
15
|
/**
|
|
15
16
|
* Merge defaults with per-skill overrides, dropping undefined values.
|
|
@@ -43,6 +44,60 @@ export function mergeSkillPackagingConfig(defaults, perSkillOverrides) {
|
|
|
43
44
|
}
|
|
44
45
|
return packagingConfig;
|
|
45
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* THE `skills.config` entry a plugin-local skill packages under, for both lanes that
|
|
49
|
+
* ask: the Claude plugin build that packages it and `vat verify` that checks what it
|
|
50
|
+
* packaged. Keyed by the skill's declared name; its directory path under the plugin's
|
|
51
|
+
* `skills/` (`group/nested`) and that path's trailing segment are fallbacks for a
|
|
52
|
+
* config keyed by directory. Two lookups were two effective configs for one skill —
|
|
53
|
+
* verify checked `files:` dests and severity overrides the build never applied.
|
|
54
|
+
*/
|
|
55
|
+
export function pluginLocalSkillConfigEntry(config, skill) {
|
|
56
|
+
return config?.[skill.skillName] ?? config?.[skill.skillDirPath] ?? config?.[basename(skill.skillDirPath)];
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Is this skill distributed through the POOL (`dist/skills/<name>`)?
|
|
60
|
+
*
|
|
61
|
+
* THE predicate for `publish`, read off the MERGED config so that
|
|
62
|
+
* `skills.defaults.publish` counts; every lane that decides whether a pool bundle
|
|
63
|
+
* is built, expected or assigned asks this and nothing else. The consistency
|
|
64
|
+
* check used to read `skills.config.<name>.publish` alone, so a project-wide
|
|
65
|
+
* `skills.defaults.publish: false` parsed and changed nothing — and `vat build`
|
|
66
|
+
* and `vat verify` never read the flag at all: two contracts for one key.
|
|
67
|
+
*
|
|
68
|
+
* `publish: false` names an IN-PLACE skill: validated at source by `vat validate`
|
|
69
|
+
* / `vat skills validate`, never bundled by `vat build`, never expected by
|
|
70
|
+
* `vat verify`. Default `true`.
|
|
71
|
+
*
|
|
72
|
+
* `publish` scopes the POOL only. A plugin-local skill (a git-tracked skill directory
|
|
73
|
+
* under a plugin's `skills/` — see `indexPluginLocalSkills`) ships with its
|
|
74
|
+
* plugin by LOCATION: the claude phase packages it and verify expects it whatever
|
|
75
|
+
* this returns. A skill that is both discovered by `skills.include` and
|
|
76
|
+
* plugin-local therefore skips the pool with `publish: false` and still ships in
|
|
77
|
+
* its plugin.
|
|
78
|
+
*
|
|
79
|
+
* `publish` is a distribution flag, not a packaging knob — the packaging
|
|
80
|
+
* validator never reads it — so it is declared on the project-config schema and
|
|
81
|
+
* carried through the merge generically like every other key; it is read here
|
|
82
|
+
* off the merged record rather than off a typed field of the validator's config.
|
|
83
|
+
*/
|
|
84
|
+
export function isSkillPublished(packaging) {
|
|
85
|
+
const { publish } = packaging;
|
|
86
|
+
return publish ?? true;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Classify one discovered skill — {@link isSkillPublished} over its merged config, then
|
|
90
|
+
* plugin-local by the directory holding its `SKILL.md` (`pluginLocal`, from
|
|
91
|
+
* `indexPluginLocalSkills`: the skill dirs the plugin build actually packages). A
|
|
92
|
+
* plugin-local skill is never `in-place`: it ships with its plugin, so every lane that
|
|
93
|
+
* reports in-place skills (`vat build`, `vat verify`, the consistency check) asks this,
|
|
94
|
+
* not the flag alone.
|
|
95
|
+
*/
|
|
96
|
+
export function publishScope(skill, packaging, pluginLocal) {
|
|
97
|
+
if (isSkillPublished(packaging))
|
|
98
|
+
return 'pool';
|
|
99
|
+
return pluginLocal.locationOf(skill.sourcePath) === undefined ? 'in-place' : 'plugin-only';
|
|
100
|
+
}
|
|
46
101
|
/**
|
|
47
102
|
* The PROJECT's declared eval suites: one {@link DeclaredEvalSuite} per discovered
|
|
48
103
|
* skill, from the same discovery + merge every lane already runs.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-packaging-config.js","sourceRoot":"","sources":["../../src/utils/skill-packaging-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"skill-packaging-config.js","sourceRoot":"","sources":["../../src/utils/skill-packaging-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,EACL,gBAAgB,GAIjB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,yBAAyB,CACvC,QAA6C,EAC7C,iBAAsD;IAEtD,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,iBAAiB,EAAE,CAAC;IACrD,MAAM,eAAe,GAAyB,EAAE,CAAC;IACjD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACvB,eAA2C,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,QAAQ,EAAE,CAAC,OAAO,CAAkC,CAAC;IAC1E,MAAM,aAAa,GAAG,iBAAiB,EAAE,CAAC,OAAO,CAAkC,CAAC;IACpF,IAAI,YAAY,KAAK,SAAS,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAC9D,MAAM,WAAW,GAAG,gBAAgB,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QAClE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,eAAe,CAAC,KAAK,GAAG,WAAW,CAAC;QACtC,CAAC;IACH,CAAC;IAED,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,2BAA2B,CACzC,MAA+C,EAC/C,KAAoE;IAEpE,OAAO,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,MAAM,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;AAC7G,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAA+B;IAC9D,MAAM,EAAE,OAAO,EAAE,GAAG,SAAkC,CAAC;IACvD,OAAO,OAAO,IAAI,IAAI,CAAC;AACzB,CAAC;AAcD;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAC1B,KAA6B,EAC7B,SAA+B,EAC/B,WAAkC;IAElC,IAAI,gBAAgB,CAAC,SAAS,CAAC;QAAE,OAAO,MAAM,CAAC;IAC/C,OAAO,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC;AAC7F,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,yBAAyB,CACvC,YAAsC,EACtC,UAA+D;IAE/D,IAAI,YAAY,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IAC1C,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,YAAY,CAAC;IAC1D,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAChC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC;QAClD,MAAM,EAAE,yBAAyB,CAC/B,QAA+C,EAC/C,cAAc,EAAE,CAAC,KAAK,CAAC,IAAI,CAAwC,CACpE;KACF,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url-redact.d.ts","sourceRoot":"","sources":["../../src/utils/url-redact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"url-redact.d.ts","sourceRoot":"","sources":["../../src/utils/url-redact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAaxD"}
|
package/dist/utils/url-redact.js
CHANGED
|
@@ -26,13 +26,11 @@
|
|
|
26
26
|
* @returns The input with any URL-format credentials removed.
|
|
27
27
|
*/
|
|
28
28
|
export function redactUrlCredentials(url) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
catch {
|
|
29
|
+
// Not a URL: nothing to redact. Asked as a question rather than caught as a
|
|
30
|
+
// throw, so the only thing that reads as "not a URL" is exactly that.
|
|
31
|
+
if (!URL.canParse(url))
|
|
34
32
|
return url;
|
|
35
|
-
|
|
33
|
+
const parsed = new URL(url);
|
|
36
34
|
if (parsed.username === '' && parsed.password === '') {
|
|
37
35
|
return url;
|
|
38
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"url-redact.js","sourceRoot":"","sources":["../../src/utils/url-redact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,
|
|
1
|
+
{"version":3,"file":"url-redact.js","sourceRoot":"","sources":["../../src/utils/url-redact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,4EAA4E;IAC5E,sEAAsE;IACtE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IACnC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAE5B,IAAI,MAAM,CAAC,QAAQ,KAAK,EAAE,IAAI,MAAM,CAAC,QAAQ,KAAK,EAAE,EAAE,CAAC;QACrD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC3B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-context-scanner.d.ts","sourceRoot":"","sources":["../../src/utils/user-context-scanner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAGxE;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAC/C,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B;;;;;OAKG;IACH,UAAU,EAAE,gBAAgB,EAAE,CAAC;CAChC,CAAC,
|
|
1
|
+
{"version":3,"file":"user-context-scanner.d.ts","sourceRoot":"","sources":["../../src/utils/user-context-scanner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAGxE;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAC/C,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B;;;;;OAKG;IACH,UAAU,EAAE,gBAAgB,EAAE,CAAC;CAChC,CAAC,CAqCD"}
|
|
@@ -30,7 +30,6 @@ export async function scanUserContext() {
|
|
|
30
30
|
const unreadable = [];
|
|
31
31
|
// Scan plugins directory (SKILL.md and .claude-plugin directories)
|
|
32
32
|
let plugins = [];
|
|
33
|
-
// eslint-disable-next-line security/detect-non-literal-fs-filename -- User's home directory is safe
|
|
34
33
|
if (existsSync(pluginsDir)) {
|
|
35
34
|
const pluginsScan = await scan({
|
|
36
35
|
path: pluginsDir,
|
|
@@ -42,7 +41,6 @@ export async function scanUserContext() {
|
|
|
42
41
|
}
|
|
43
42
|
// Scan skills directory (SKILL.md files)
|
|
44
43
|
let skills = [];
|
|
45
|
-
// eslint-disable-next-line security/detect-non-literal-fs-filename -- User's home directory is safe
|
|
46
44
|
if (existsSync(skillsDir)) {
|
|
47
45
|
const skillsScan = await scan({
|
|
48
46
|
path: skillsDir,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-context-scanner.js","sourceRoot":"","sources":["../../src/utils/user-context-scanner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,IAAI,EAAmB,MAAM,+BAA+B,CAAC;AAItE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IAYnC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,kBAAkB,EAAE,CAAC;IACvD,MAAM,UAAU,GAAuB,EAAE,CAAC;IAE1C,mEAAmE;IACnE,IAAI,OAAO,GAAiB,EAAE,CAAC;IAC/B,
|
|
1
|
+
{"version":3,"file":"user-context-scanner.js","sourceRoot":"","sources":["../../src/utils/user-context-scanner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,IAAI,EAAmB,MAAM,+BAA+B,CAAC;AAItE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IAYnC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,kBAAkB,EAAE,CAAC;IACvD,MAAM,UAAU,GAAuB,EAAE,CAAC;IAE1C,mEAAmE;IACnE,IAAI,OAAO,GAAiB,EAAE,CAAC;IAC/B,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC;YAC7B,IAAI,EAAE,UAAU;YAChB,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,CAAC,aAAa,EAAE,sBAAsB,CAAC;SACjD,CAAC,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;QAC9B,UAAU,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;IAED,yCAAyC;IACzC,IAAI,MAAM,GAAiB,EAAE,CAAC;IAC9B,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC;YAC5B,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,CAAC,aAAa,CAAC;SACzB,CAAC,CAAC;QACH,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC;QAC5B,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC;IAED,uCAAuC;IACvC,MAAM,YAAY,GAAiB,EAAE,CAAC;IAEtC,OAAO;QACL,OAAO;QACP,MAAM;QACN,YAAY;QACZ,UAAU;KACX,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-help-files.d.ts","sourceRoot":"","sources":["../../src/utils/validate-help-files.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"validate-help-files.d.ts","sourceRoot":"","sources":["../../src/utils/validate-help-files.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA4CH;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAgDxC"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
import { existsSync, readdirSync } from 'node:fs';
|
|
9
9
|
import { dirname } from 'node:path';
|
|
10
10
|
import { fileURLToPath } from 'node:url';
|
|
11
|
+
import { ExitCode } from '@vibe-agent-toolkit/schema';
|
|
11
12
|
import { safePath } from '@vibe-agent-toolkit/utils';
|
|
12
13
|
import { isEntrypoint } from '@vibe-agent-toolkit/utils/process';
|
|
13
14
|
/**
|
|
@@ -55,7 +56,6 @@ export function validateHelpFiles() {
|
|
|
55
56
|
const missingFiles = [];
|
|
56
57
|
for (const filename of REQUIRED_HELP_FILES) {
|
|
57
58
|
const helpPath = safePath.join(docsDir, filename);
|
|
58
|
-
// eslint-disable-next-line security/detect-non-literal-fs-filename -- path is constructed from known safe components
|
|
59
59
|
if (!existsSync(helpPath)) {
|
|
60
60
|
missingFiles.push(filename);
|
|
61
61
|
}
|
|
@@ -68,7 +68,6 @@ export function validateHelpFiles() {
|
|
|
68
68
|
}
|
|
69
69
|
// Reverse direction: a doc nobody serves and nobody classified.
|
|
70
70
|
const required = new Set(REQUIRED_HELP_FILES);
|
|
71
|
-
// eslint-disable-next-line security/detect-non-literal-fs-filename -- docsDir is derived from this module's own location
|
|
72
71
|
const present = readdirSync(docsDir).filter(f => f.endsWith('.md'));
|
|
73
72
|
const unclassified = present.filter(f => !required.has(f) && !PROSE_ONLY_HELP_FILES.has(f));
|
|
74
73
|
if (unclassified.length > 0) {
|
|
@@ -101,12 +100,12 @@ if (isEntrypoint(import.meta.url)) {
|
|
|
101
100
|
try {
|
|
102
101
|
validateHelpFiles();
|
|
103
102
|
console.log('✓ All required help documentation files exist');
|
|
104
|
-
process.exit(
|
|
103
|
+
process.exit(ExitCode.OK);
|
|
105
104
|
}
|
|
106
105
|
catch (error) {
|
|
107
106
|
console.error('✗ Help file validation failed:');
|
|
108
107
|
console.error(error.message);
|
|
109
|
-
process.exit(
|
|
108
|
+
process.exit(ExitCode.FINDINGS);
|
|
110
109
|
}
|
|
111
110
|
}
|
|
112
111
|
//# sourceMappingURL=validate-help-files.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-help-files.js","sourceRoot":"","sources":["../../src/utils/validate-help-files.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEjE;;;;;;;GAOG;AACH,MAAM,mBAAmB,GAAG;IAC1B,UAAU,EAAO,iDAAiD;IAClE,cAAc,EAAG,kEAAkE;IACnF,QAAQ,EAAS,sDAAsD;IACvE,UAAU,EAAO,0DAA0D;CACnE,CAAC;AAEX;;;;;;;;;;GAUG;AACH,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IACpC,UAAU;IACV,WAAW;IACX,QAAQ;IACR,WAAW;IACX,eAAe;CAChB,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAEnD,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,KAAK,MAAM,QAAQ,IAAI,mBAAmB,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAClD,
|
|
1
|
+
{"version":3,"file":"validate-help-files.js","sourceRoot":"","sources":["../../src/utils/validate-help-files.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEjE;;;;;;;GAOG;AACH,MAAM,mBAAmB,GAAG;IAC1B,UAAU,EAAO,iDAAiD;IAClE,cAAc,EAAG,kEAAkE;IACnF,QAAQ,EAAS,sDAAsD;IACvE,UAAU,EAAO,0DAA0D;CACnE,CAAC;AAEX;;;;;;;;;;GAUG;AACH,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IACpC,UAAU;IACV,WAAW;IACX,QAAQ;IACR,WAAW;IACX,eAAe;CAChB,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAEnD,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,KAAK,MAAM,QAAQ,IAAI,mBAAmB,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnE,MAAM,IAAI,KAAK,CACb,+CAA+C,QAAQ,MAAM;YAC7D,uEAAuE;YACvE,8CAA8C,CAC/C,CAAC;IACJ,CAAC;IAED,gEAAgE;IAChE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAS,mBAAmB,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACpE,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5F,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnE,MAAM,IAAI,KAAK,CACb,2CAA2C,QAAQ,MAAM;YACzD,yEAAyE;YACzE,sEAAsE;YACtE,2EAA2E;YAC3E,8EAA8E;YAC9E,uEAAuE,CACxE,CAAC;IACJ,CAAC;IAED,MAAM,iBAAiB,GAAG,CAAC,GAAG,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACvF,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACb,2DAA2D;YAC3D,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACtD,+BAA+B,CAChC,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,IAAI,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAClC,IAAI,CAAC;QACH,iBAAiB,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAChD,OAAO,CAAC,KAAK,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vat-bin-path.d.ts","sourceRoot":"","sources":["../../src/utils/vat-bin-path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAUH;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"vat-bin-path.d.ts","sourceRoot":"","sources":["../../src/utils/vat-bin-path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAUH;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAM1C"}
|
|
@@ -40,7 +40,6 @@ const HERE = dirname(fileURLToPath(import.meta.url));
|
|
|
40
40
|
export function resolveVatBinPath() {
|
|
41
41
|
// Compiled tree: packages/cli/dist/utils/vat-bin-path.js → packages/cli/dist/bin.js
|
|
42
42
|
const compiled = safePath.resolve(HERE, '../bin.js');
|
|
43
|
-
// eslint-disable-next-line security/detect-non-literal-fs-filename -- internal path
|
|
44
43
|
if (existsSync(compiled))
|
|
45
44
|
return compiled;
|
|
46
45
|
// Source tree (vitest): packages/cli/src/utils/vat-bin-path.ts → packages/cli/dist/bin.js
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vat-bin-path.js","sourceRoot":"","sources":["../../src/utils/vat-bin-path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAErD;;;;GAIG;AACH,MAAM,UAAU,iBAAiB;IAC/B,oFAAoF;IACpF,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACrD,
|
|
1
|
+
{"version":3,"file":"vat-bin-path.js","sourceRoot":"","sources":["../../src/utils/vat-bin-path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAErD;;;;GAIG;AACH,MAAM,UAAU,iBAAiB;IAC/B,oFAAoF;IACpF,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACrD,IAAI,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC1C,0FAA0F;IAC1F,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;AACrD,CAAC"}
|
package/dist/version.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AAeH,eAAO,MAAM,OAAO,EAAE,MAA4B,CAAC;AAEnD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAuBD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,cAAc,GAAG,IAAI,EAC9B,UAAU,EAAE,MAAM,GACjB,MAAM,CAER"}
|
package/dist/version.js
CHANGED
|
@@ -7,9 +7,7 @@ import { fileURLToPath } from 'node:url';
|
|
|
7
7
|
import { safePath } from '@vibe-agent-toolkit/utils';
|
|
8
8
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
9
9
|
// Read version from package.json at build time
|
|
10
|
-
const packageJson = JSON.parse(
|
|
11
|
-
// eslint-disable-next-line security/detect-non-literal-fs-filename -- path resolved from known __dirname and constant package.json name
|
|
12
|
-
readFileSync(safePath.resolve(__dirname, '../package.json'), 'utf-8'));
|
|
10
|
+
const packageJson = JSON.parse(readFileSync(safePath.resolve(__dirname, '../package.json'), 'utf-8'));
|
|
13
11
|
export const version = packageJson.version;
|
|
14
12
|
/**
|
|
15
13
|
* The version line alone: `<ver>` plus whatever the cwd-derived context adds.
|
package/dist/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAG,OAAO,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,+CAA+C;AAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAG,OAAO,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,+CAA+C;AAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,CACtE,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAW,WAAW,CAAC,OAAO,CAAC;AAOnD;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,GAAW,EAAE,OAA8B;IACpE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,CAAC;IACb,CAAC;IAED,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,KAAK;YACR,OAAO,GAAG,GAAG,SAAS,OAAO,CAAC,IAAI,IAAI,SAAS,GAAG,CAAC;QACrD,KAAK,OAAO;YACV,OAAO,GAAG,GAAG,YAAY,OAAO,CAAC,IAAI,IAAI,SAAS,GAAG,CAAC;QACxD,KAAK,QAAQ;YACX,OAAO,GAAG,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,gBAAgB,CAC9B,GAAW,EACX,OAA8B,EAC9B,UAAkB;IAElB,OAAO,GAAG,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,eAAe,UAAU,EAAE,CAAC;AACvE,CAAC"}
|
package/docs/audit.md
CHANGED
|
@@ -28,7 +28,7 @@ vat audit [git-url-or-path] [options]
|
|
|
28
28
|
### Options
|
|
29
29
|
|
|
30
30
|
- `--user` - Audit user-level Claude plugins installation (`~/.claude/plugins`)
|
|
31
|
-
-
|
|
31
|
+
- `--no-recursive` - Scan the top level only (recursive scanning is the default; there is no `--recursive` flag)
|
|
32
32
|
- `--compat` - Run compatibility analysis for each plugin; adds a `compatibility:` block to its entry (see [Compatibility and settings blocks](#compatibility-and-settings-blocks))
|
|
33
33
|
- `--settings [file]` - Check each plugin against Claude settings (auto-discovered, or the given file); adds a `settings:` block. Requires `--compat`
|
|
34
34
|
- `--debug` - Enable debug logging (outputs to stderr)
|
|
@@ -207,19 +207,13 @@ hierarchical:
|
|
|
207
207
|
message: Skill exceeds recommended length
|
|
208
208
|
```
|
|
209
209
|
|
|
210
|
-
##
|
|
210
|
+
## `status` and the exit code
|
|
211
211
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
| The process exit code | **Whether the run completed** | `$?` |
|
|
218
|
-
|
|
219
|
-
So a tree with errors produces `status: error` beside **exit 0**, and both are
|
|
220
|
-
correct. That pair surprises people because `status` means something wider
|
|
221
|
-
everywhere else in this CLI, where it moves with the exit code. Here it does not,
|
|
222
|
-
because this command is a report rather than a gate.
|
|
212
|
+
The YAML `status` describes the findings — the worst actionable severity across
|
|
213
|
+
them — and the exit code follows it, exactly as in every other command of this
|
|
214
|
+
CLI. `vat audit` used to be the one exception ("advisory": exit 0 over
|
|
215
|
+
`status: error`), which a CI author reading the shared contract got wrong on
|
|
216
|
+
exactly this verb.
|
|
223
217
|
|
|
224
218
|
A run that audited **zero files** is refused, not passed. An existing directory
|
|
225
219
|
with nothing auditable in it — plugins that moved, a wrong subdirectory, an
|
|
@@ -227,26 +221,25 @@ excluded tree, files no lane recognises — used to publish `status: success`
|
|
|
227
221
|
beside `filesScanned: 0`, which is the same document a clean tree produces. It
|
|
228
222
|
now publishes `status: error` with one non-overridable `RESOURCE_CHECK_BROKEN`
|
|
229
223
|
finding under a top-level `issues:` key (the claim is about the run, so it is
|
|
230
|
-
not a `files[]` row and does not count toward `filesScanned`)
|
|
231
|
-
still `0`: the run completed; it just is not a verdict.
|
|
224
|
+
not a `files[]` row and does not count toward `filesScanned`), and exits `1`.
|
|
232
225
|
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
skill — so a typo'd glob fails the gate there instead of passing it.
|
|
226
|
+
What still sets audit apart from `vat skills validate` is not the exit code but
|
|
227
|
+
what it shows: audit ignores `validation.allow` (every finding is reported and
|
|
228
|
+
counted) and reads `validation.severity` from three scopes. `validation.severity`
|
|
229
|
+
is therefore the dial that decides what gates — set a code to `warning` and it
|
|
230
|
+
stops moving the exit code; set it to `ignore` and it disappears from the report.
|
|
239
231
|
|
|
240
232
|
## Exit Codes
|
|
241
233
|
|
|
242
|
-
|
|
234
|
+
The three-way contract every command shares:
|
|
243
235
|
|
|
244
|
-
- **0** -
|
|
245
|
-
- **
|
|
236
|
+
- **0** - The audit completed with nothing at error severity. Warnings and informational findings are in the report, not the exit code.
|
|
237
|
+
- **1** - The audit completed and reports `status: error`: at least one error-severity finding, or zero files audited. A directory or file INSIDE the tree that the scan could not read — permission denied, a vanished mount — is `SCAN_PATH_UNREADABLE` (warning): the run is degraded, not failed, every readable sibling is still validated, and the refused path is reported under `summary.pathsUnreadable` rather than counted in `filesScanned` — so a root with nothing readable audited zero files and is refused like an empty tree. A governing `vibe-agent-toolkit.config.yaml` that cannot be loaded, or whose `skills.include` reaches a directory the crawl cannot list, is warned about once on stderr and filed as `SCAN_PATH_UNREADABLE` on the config file or the directory; the skills it governs are validated config-free rather than dropped. Degrading beats destroying, and the report says where it degraded.
|
|
238
|
+
- **2** - The audit could not run at all, so there is no report to read: the path does not exist or is a file no audit lane recognises (the same ending `vat resources validate` and `vat skill review` give that argument), `--user` with no Claude config directory installed, a git URL that could not be cloned, an unknown flag, or an internal failure (a validator defect). An invalid config and a permission problem inside the tree are **not** exit 2 — they are findings, above.
|
|
246
239
|
|
|
247
240
|
## Validation Configuration
|
|
248
241
|
|
|
249
|
-
Audit honors `validation.severity` from `vibe-agent-toolkit.config.yaml`: setting a code to `ignore` hides it from the report, and every other level is applied as written — a code raised to `error` is reported as an error, a code lowered to `warning` as a warning. It changes **which findings are reported and at what severity**,
|
|
242
|
+
Audit honors `validation.severity` from `vibe-agent-toolkit.config.yaml`: setting a code to `ignore` hides it from the report, and every other level is applied as written — a code raised to `error` is reported as an error, a code lowered to `warning` as a warning. It changes **which findings are reported and at what severity**, and through them the exit code — a code at `error` gates, one lowered to `warning` does not (see [`status` and the exit code](#status-and-the-exit-code)). Audit does **not** apply `validation.allow` (per-path allow entries); for that, use `vat skills validate` or `vat skills build`.
|
|
250
243
|
|
|
251
244
|
Three scopes are read, least specific first — a more specific one naming the same code wins:
|
|
252
245
|
|
|
@@ -282,16 +275,15 @@ Errors prevent the resource from being used correctly:
|
|
|
282
275
|
- **Missing manifests/frontmatter**: Resource structure is invalid
|
|
283
276
|
- **Schema validation failures**: Manifest/frontmatter doesn't match expected format
|
|
284
277
|
- **Broken links**: Links to non-existent files (Skills only)
|
|
285
|
-
- **Reserved words in names**:
|
|
278
|
+
- **Reserved words in names**: `anthropic` or `claude` in a skill name (`RESERVED_WORD_IN_NAME`, a warning — Claude Code rejects non-certified skills using them)
|
|
286
279
|
- **XML tags in frontmatter**: XML-like tags in name/description (Skills only)
|
|
287
|
-
- **Windows-style backslashes**: Path separators should be forward slashes (Skills only)
|
|
288
280
|
|
|
289
281
|
### Warnings (Should Fix)
|
|
290
282
|
|
|
291
283
|
Warnings indicate potential issues but don't prevent usage:
|
|
292
284
|
|
|
293
285
|
- **Skill exceeds recommended length**: Over 5000 lines (Skills only)
|
|
294
|
-
- **
|
|
286
|
+
- **Capability observations**: Skill requires a runtime capability that isn't available on every surface — `CAPABILITY_BROWSER_AUTH`, `CAPABILITY_LOCAL_SHELL`, `CAPABILITY_EXTERNAL_CLI` (info); with `--compat`, the per-target verdicts `COMPAT_TARGET_INCOMPATIBLE` / `COMPAT_TARGET_NEEDS_REVIEW` (warning) and `COMPAT_TARGET_UNDECLARED` (info). See `docs/validation-codes.md`.
|
|
295
287
|
|
|
296
288
|
## Error Codes Reference
|
|
297
289
|
|
|
@@ -327,13 +319,12 @@ Warnings indicate potential issues but don't prevent usage:
|
|
|
327
319
|
| `SKILL_MISSING_NAME` | error | `name` field missing from frontmatter | Add `name` field |
|
|
328
320
|
| `SKILL_MISSING_DESCRIPTION` | error | `description` field missing from frontmatter | Add `description` field |
|
|
329
321
|
| `SKILL_NAME_INVALID` | error | Name contains invalid characters | Use only letters, numbers, hyphens, underscores |
|
|
330
|
-
| `SKILL_DESCRIPTION_TOO_LONG` | error | Description exceeds
|
|
322
|
+
| `SKILL_DESCRIPTION_TOO_LONG` | error | Description exceeds 1024 characters (the frontmatter schema limit; `SKILL_DESCRIPTION_OVER_CLAUDE_CODE_LIMIT` warns earlier at 250, where the Claude Code `/skills` listing truncates) | Shorten description |
|
|
331
323
|
| `RESERVED_WORD_IN_NAME` | warning | Name contains `anthropic` or `claude`; Claude Code rejects non-certified skills using these words | Rename the skill to avoid these words |
|
|
332
324
|
| `SKILL_NAME_XML_TAGS` | error | Name contains XML-like tags | Remove XML tags from name |
|
|
333
325
|
| `SKILL_DESCRIPTION_XML_TAGS` | error | Description contains XML-like tags | Remove XML tags from description |
|
|
334
326
|
| `SKILL_DESCRIPTION_EMPTY` | error | Description is empty or whitespace | Provide meaningful description |
|
|
335
327
|
| `SKILL_MISCONFIGURED_LOCATION` | error | Standalone skill in `~/.claude/plugins/` won't be recognized | Move to `~/.claude/skills/` for standalone skills, or add `.claude-plugin/plugin.json` for a proper plugin |
|
|
336
|
-
| `PATH_STYLE_WINDOWS` | error | Windows-style backslashes in paths | Use forward slashes (/) instead |
|
|
337
328
|
| `LINK_INTEGRITY_BROKEN` | error | Link to non-existent file | Fix or remove broken link |
|
|
338
329
|
|
|
339
330
|
### Skill Warnings
|
|
@@ -341,9 +332,12 @@ Warnings indicate potential issues but don't prevent usage:
|
|
|
341
332
|
| Code | Severity | Description | Fix |
|
|
342
333
|
|------|----------|-------------|-----|
|
|
343
334
|
| `SKILL_TOO_LONG` | warning | Skill exceeds 5000 lines | Consider splitting into multiple skills |
|
|
344
|
-
| `
|
|
345
|
-
| `
|
|
346
|
-
| `
|
|
335
|
+
| `CAPABILITY_BROWSER_AUTH` | info | Skill needs browser login (MSAL, SSO, OAuth) | See `docs/validation-codes.md#capability_browser_auth` |
|
|
336
|
+
| `CAPABILITY_LOCAL_SHELL` | info | Skill needs local shell/environment tools (Bash, Edit, Write, NotebookEdit) | See `docs/validation-codes.md#capability_local_shell` |
|
|
337
|
+
| `CAPABILITY_EXTERNAL_CLI` | info | Skill invokes an unbundled CLI (az, aws, gcloud, etc.) | See `docs/validation-codes.md#capability_external_cli` |
|
|
338
|
+
| `COMPAT_TARGET_INCOMPATIBLE` | warning | With `--compat`: a declared target cannot run the skill | See `docs/validation-codes.md#compat_target_incompatible` |
|
|
339
|
+
| `COMPAT_TARGET_NEEDS_REVIEW` | warning | With `--compat`: a declared target may not run the skill | See `docs/validation-codes.md#compat_target_needs_review` |
|
|
340
|
+
| `COMPAT_TARGET_UNDECLARED` | info | With `--compat`: the skill declares no `targets` | See `docs/validation-codes.md#compat_target_undeclared` |
|
|
347
341
|
|
|
348
342
|
### Format Detection Errors
|
|
349
343
|
|
|
@@ -361,10 +355,12 @@ Structured YAML report for programmatic parsing:
|
|
|
361
355
|
root: /abs/path/to/scan/root # The ONE absolute path in the document
|
|
362
356
|
status: success | warning | error
|
|
363
357
|
summary:
|
|
364
|
-
filesScanned: number
|
|
358
|
+
filesScanned: number # Files the audit READ — never a path it could not
|
|
365
359
|
filesPassed: number # Files with no ACTIONABLE issues (info-only counts as passed)
|
|
366
360
|
filesWithWarnings: number # Files whose worst actionable severity is warning
|
|
367
361
|
filesWithErrors: number # Files carrying at least one error
|
|
362
|
+
pathsUnreadable: number # `files[]` rows that are a refused path (SCAN_PATH_UNREADABLE),
|
|
363
|
+
# outside every count above: files.length === filesScanned + pathsUnreadable
|
|
368
364
|
issueCounts: # FINDINGS, not files — same field name and meaning
|
|
369
365
|
errors: number # as the `issueCounts` on each entry below,
|
|
370
366
|
warnings: number # plus the run-level `issues` when present
|
|
@@ -529,7 +525,7 @@ This scans:
|
|
|
529
525
|
Scan directory tree for all resources:
|
|
530
526
|
|
|
531
527
|
```bash
|
|
532
|
-
vat audit ./resources
|
|
528
|
+
vat audit ./resources
|
|
533
529
|
```
|
|
534
530
|
|
|
535
531
|
Finds and validates:
|
|
@@ -546,21 +542,17 @@ Use in CI pipeline:
|
|
|
546
542
|
#!/bin/bash
|
|
547
543
|
set -e
|
|
548
544
|
|
|
549
|
-
# Audit all resources
|
|
550
|
-
vat audit
|
|
551
|
-
|
|
552
|
-
# Check YAML status field — audit itself doesn't fail on validation errors
|
|
553
|
-
STATUS=$(grep '^status:' audit-report.yaml | awk '{print $2}')
|
|
554
|
-
if [ "$STATUS" = "error" ]; then
|
|
555
|
-
echo "Audit report contains validation errors"
|
|
545
|
+
# Audit all resources: exit 1 on an error-severity finding, 2 if the audit could not run
|
|
546
|
+
if ! vat audit > audit-report.yaml; then
|
|
547
|
+
echo "Audit found errors (or could not run) — see the report"
|
|
556
548
|
cat audit-report.yaml
|
|
557
549
|
exit 1
|
|
558
550
|
fi
|
|
559
551
|
|
|
560
|
-
echo "Audit clean — no
|
|
552
|
+
echo "Audit clean — no error-severity findings"
|
|
561
553
|
```
|
|
562
554
|
|
|
563
|
-
To gate
|
|
555
|
+
To gate with `validation.allow` honoured (audit ignores it), use `vat skills validate` instead:
|
|
564
556
|
|
|
565
557
|
```bash
|
|
566
558
|
#!/bin/bash
|
|
@@ -582,7 +574,7 @@ jobs:
|
|
|
582
574
|
- uses: actions/checkout@v4
|
|
583
575
|
- uses: oven-sh/setup-bun@v1
|
|
584
576
|
- run: npm install -g vibe-agent-toolkit
|
|
585
|
-
- run: vat audit
|
|
577
|
+
- run: vat audit
|
|
586
578
|
```
|
|
587
579
|
|
|
588
580
|
## Troubleshooting
|
|
@@ -601,7 +593,7 @@ jobs:
|
|
|
601
593
|
- Ensure plugin has `.claude-plugin/plugin.json` or `.claude-plugin/marketplace.json`
|
|
602
594
|
- Ensure registry files are named `installed_plugins.json` or `known_marketplaces.json`
|
|
603
595
|
- Ensure skill files are named `SKILL.md`
|
|
604
|
-
-
|
|
596
|
+
- Scanning is recursive by default; make sure you did not pass `--no-recursive`
|
|
605
597
|
|
|
606
598
|
### "Permission denied" on Windows
|
|
607
599
|
|
|
@@ -616,7 +608,7 @@ jobs:
|
|
|
616
608
|
**Solution**: Redirect stdout to file, only show stderr:
|
|
617
609
|
|
|
618
610
|
```bash
|
|
619
|
-
vat audit
|
|
611
|
+
vat audit > audit.yaml 2>&1
|
|
620
612
|
if [ $? -ne 0 ]; then
|
|
621
613
|
echo "Audit failed, see audit.yaml"
|
|
622
614
|
exit 1
|
|
@@ -706,10 +698,10 @@ governing context rather than a single top-level `projectRoot`:
|
|
|
706
698
|
reported as ungoverned (an audit finding, not a fatal error). This lets `vat
|
|
707
699
|
audit` work on external community trees, downloaded plugin bundles, and
|
|
708
700
|
monorepos with multiple sub-package configs.
|
|
709
|
-
- **Config**: accept defaults. Per-skill `validation.severity`
|
|
710
|
-
`
|
|
711
|
-
`
|
|
712
|
-
|
|
701
|
+
- **Config**: accept defaults. Per-skill `validation.severity` overrides come
|
|
702
|
+
from whichever `vibe-agent-toolkit.config.yaml` each skill walks up to;
|
|
703
|
+
`validation.allow` is not applied by audit (see the config section above).
|
|
704
|
+
The exit code follows the report's `status`, like every other command.
|
|
713
705
|
|
|
714
706
|
The per-skill walk-up is cached via a module-level two-layer cache and pre-warmed
|
|
715
707
|
during top-down descent for efficiency on large trees.
|
|
@@ -717,11 +709,10 @@ during top-down descent for efficiency on large trees.
|
|
|
717
709
|
See [Roots and Config — Canonical Concepts](../../../docs/concepts/roots-and-config.md)
|
|
718
710
|
for the `projectRoot` ladder and the audit walk-up model. See
|
|
719
711
|
[`docs/skill-quality-and-compatibility.md`](../../../docs/skill-quality-and-compatibility.md)
|
|
720
|
-
for VAT's
|
|
712
|
+
for VAT's audit stance.
|
|
721
713
|
|
|
722
714
|
## Related Commands
|
|
723
715
|
|
|
724
|
-
- `vat agent audit <path>` - Legacy skill-only audit (deprecated)
|
|
725
716
|
- `vat doctor` - Check environment and installation health
|
|
726
717
|
- `vat resources validate` - Validate markdown resources (links, anchors)
|
|
727
718
|
|
package/docs/doctor.md
CHANGED
|
@@ -35,6 +35,7 @@ providing actionable suggestions for any problems found.
|
|
|
35
35
|
**Exit Codes:**
|
|
36
36
|
- `0` - No check failed (an undetermined check is reported in the output, not fatal)
|
|
37
37
|
- `1` - One or more checks failed
|
|
38
|
+
- `2` - Doctor itself could not run (an internal failure, an unknown flag); no verdict was produced
|
|
38
39
|
|
|
39
40
|
**Output:** Human-friendly formatted text with emojis. The summary always prints the
|
|
40
41
|
full outcome distribution and, when the concise view hides checks, how many it hid —
|
package/docs/index.md
CHANGED
|
@@ -106,6 +106,7 @@ Diagnose vat setup and environment health
|
|
|
106
106
|
|
|
107
107
|
- `0` - No check failed (a check that could not be determined is reported as ❓, not fatal)
|
|
108
108
|
- `1` - One or more checks failed
|
|
109
|
+
- `2` - Doctor itself could not run (an internal failure; no verdict was produced)
|
|
109
110
|
|
|
110
111
|
**Creates/modifies:** None (read-only diagnostics)
|
|
111
112
|
|
|
@@ -169,7 +170,7 @@ Execute agent locally for testing
|
|
|
169
170
|
**Exit codes:**
|
|
170
171
|
|
|
171
172
|
- `0` - Execution succeeded
|
|
172
|
-
- `
|
|
173
|
+
- `2` - Execution failed (the agent could not run, or threw)
|
|
173
174
|
|
|
174
175
|
**Creates/modifies:** Depends on agent behavior
|
|
175
176
|
|
|
@@ -198,9 +199,8 @@ Run a packaged skill's eval suite in a headless, context-isolated Claude session
|
|
|
198
199
|
**Exit codes:**
|
|
199
200
|
|
|
200
201
|
- `0` - Run completed, all expectations passed
|
|
201
|
-
- `1` -
|
|
202
|
-
- `2` -
|
|
203
|
-
- `3` - Bootstrap failure
|
|
202
|
+
- `1` - Run completed and at least one eval failed
|
|
203
|
+
- `2` - The harness could not run; a `Reason: internal | preflight | bootstrap` line on stderr says why
|
|
204
204
|
- `4` - Eval failure (run completed, expectations did not all pass)
|
|
205
205
|
|
|
206
206
|
**Creates/modifies:** A harness directory (removed unless `--keep`)
|
|
@@ -237,7 +237,8 @@ Create vector embeddings for semantic search over documentation
|
|
|
237
237
|
**Exit codes:**
|
|
238
238
|
|
|
239
239
|
- `0` - Indexing succeeded
|
|
240
|
-
- `1` - Indexing
|
|
240
|
+
- `1` - Indexing completed but some resources could not be indexed (the report names them)
|
|
241
|
+
- `2` - Indexing could not run (no provider, unreadable config)
|
|
241
242
|
|
|
242
243
|
**Creates/modifies:**
|
|
243
244
|
|
|
@@ -268,7 +269,7 @@ Search indexed documentation semantically
|
|
|
268
269
|
**Exit codes:**
|
|
269
270
|
|
|
270
271
|
- `0` - Search succeeded
|
|
271
|
-
- `
|
|
272
|
+
- `2` - Search could not run (no index, query error)
|
|
272
273
|
|
|
273
274
|
**Creates/modifies:** None (read-only query)
|
|
274
275
|
|
|
@@ -428,7 +429,6 @@ its policy. The full matrix and rationale live in
|
|
|
428
429
|
Place `vibe-agent-toolkit.config.yaml` at project root:
|
|
429
430
|
|
|
430
431
|
```yaml
|
|
431
|
-
version: 1
|
|
432
432
|
resources:
|
|
433
433
|
include:
|
|
434
434
|
- "docs/**/*.md"
|
|
@@ -440,9 +440,17 @@ resources:
|
|
|
440
440
|
|
|
441
441
|
## Exit Code Summary
|
|
442
442
|
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
- `
|
|
443
|
+
One contract, every command:
|
|
444
|
+
|
|
445
|
+
- `0` - **OK.** The command ran and found nothing at error severity. Warnings and informational findings are in the document, not the exit code (a command that offers `--strict` promotes warnings).
|
|
446
|
+
- `1` - **Findings.** The command ran to completion and what it examined failed its gate: an error-severity finding, a failed eval, a broken link, a partial index.
|
|
447
|
+
- `2` - **Error.** The command could not do its job: a usage mistake (unknown flag or verb, a retired `--only`), a root path that does not exist or is not something the verb can act on, an unreadable config, a missing dependency, an internal failure (a crash anywhere in a command ends on `2`, never on Node's default `1`). Where a verb has more than one such cause it says which on stderr (`vat skill test run` prints `Reason: …`) — never in a fourth exit code. A path INSIDE a tree that the command cannot read is a finding, not an error: `vat audit` degrades it to `SCAN_PATH_UNREADABLE` and exits `0` or `1` on what it could read.
|
|
448
|
+
|
|
449
|
+
A CI wrapper reads `$?` the same way for every verb:
|
|
450
|
+
|
|
451
|
+
```bash
|
|
452
|
+
case $? in 0) ;; 1) echo findings ;; *) echo broken; exit 1 ;; esac
|
|
453
|
+
```
|
|
446
454
|
|
|
447
455
|
## Output Formats
|
|
448
456
|
|
package/docs/rag.md
CHANGED