@vibe-agent-toolkit/cli 0.1.41-rc.7 → 0.1.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. package/dist/bin/vat +24 -1
  2. package/dist/bin/vat.js +24 -1
  3. package/dist/bin/vat.js.map +1 -1
  4. package/dist/bin.js +23 -2
  5. package/dist/bin.js.map +1 -1
  6. package/dist/commands/agent/list.d.ts +11 -0
  7. package/dist/commands/agent/list.d.ts.map +1 -1
  8. package/dist/commands/agent/list.js +30 -11
  9. package/dist/commands/agent/list.js.map +1 -1
  10. package/dist/commands/audit/distributed-tree.d.ts +172 -0
  11. package/dist/commands/audit/distributed-tree.d.ts.map +1 -0
  12. package/dist/commands/audit/distributed-tree.js +319 -0
  13. package/dist/commands/audit/distributed-tree.js.map +1 -0
  14. package/dist/commands/audit.d.ts +69 -1
  15. package/dist/commands/audit.d.ts.map +1 -1
  16. package/dist/commands/audit.js +525 -174
  17. package/dist/commands/audit.js.map +1 -1
  18. package/dist/commands/build.d.ts +14 -0
  19. package/dist/commands/build.d.ts.map +1 -1
  20. package/dist/commands/build.js +103 -26
  21. package/dist/commands/build.js.map +1 -1
  22. package/dist/commands/claude/marketplace/git-publish.d.ts.map +1 -1
  23. package/dist/commands/claude/marketplace/git-publish.js +21 -3
  24. package/dist/commands/claude/marketplace/git-publish.js.map +1 -1
  25. package/dist/commands/claude/marketplace/validate.d.ts +125 -0
  26. package/dist/commands/claude/marketplace/validate.d.ts.map +1 -1
  27. package/dist/commands/claude/marketplace/validate.js +251 -44
  28. package/dist/commands/claude/marketplace/validate.js.map +1 -1
  29. package/dist/commands/claude/org/stubs.d.ts +9 -1
  30. package/dist/commands/claude/org/stubs.d.ts.map +1 -1
  31. package/dist/commands/claude/org/stubs.js +11 -3
  32. package/dist/commands/claude/org/stubs.js.map +1 -1
  33. package/dist/commands/claude/plugin/build.d.ts +34 -4
  34. package/dist/commands/claude/plugin/build.d.ts.map +1 -1
  35. package/dist/commands/claude/plugin/build.js +187 -16
  36. package/dist/commands/claude/plugin/build.js.map +1 -1
  37. package/dist/commands/claude/plugin/plugin-files.d.ts.map +1 -1
  38. package/dist/commands/claude/plugin/plugin-files.js +6 -2
  39. package/dist/commands/claude/plugin/plugin-files.js.map +1 -1
  40. package/dist/commands/claude/plugin/plugin-json-merge.d.ts.map +1 -1
  41. package/dist/commands/claude/plugin/plugin-json-merge.js +15 -0
  42. package/dist/commands/claude/plugin/plugin-json-merge.js.map +1 -1
  43. package/dist/commands/claude/plugin/tree-copy.d.ts +40 -0
  44. package/dist/commands/claude/plugin/tree-copy.d.ts.map +1 -1
  45. package/dist/commands/claude/plugin/tree-copy.js +100 -4
  46. package/dist/commands/claude/plugin/tree-copy.js.map +1 -1
  47. package/dist/commands/corpus/report.d.ts +22 -4
  48. package/dist/commands/corpus/report.d.ts.map +1 -1
  49. package/dist/commands/corpus/report.js +1 -0
  50. package/dist/commands/corpus/report.js.map +1 -1
  51. package/dist/commands/corpus/runner.d.ts +16 -1
  52. package/dist/commands/corpus/runner.d.ts.map +1 -1
  53. package/dist/commands/corpus/runner.js +40 -22
  54. package/dist/commands/corpus/runner.js.map +1 -1
  55. package/dist/commands/doctor.js +1 -1
  56. package/dist/commands/doctor.js.map +1 -1
  57. package/dist/commands/inventory.d.ts +2 -0
  58. package/dist/commands/inventory.d.ts.map +1 -1
  59. package/dist/commands/inventory.js +45 -4
  60. package/dist/commands/inventory.js.map +1 -1
  61. package/dist/commands/phase-utils.d.ts +183 -14
  62. package/dist/commands/phase-utils.d.ts.map +1 -1
  63. package/dist/commands/phase-utils.js +294 -29
  64. package/dist/commands/phase-utils.js.map +1 -1
  65. package/dist/commands/positional-args.d.ts +36 -0
  66. package/dist/commands/positional-args.d.ts.map +1 -0
  67. package/dist/commands/positional-args.js +52 -0
  68. package/dist/commands/positional-args.js.map +1 -0
  69. package/dist/commands/rag/query-command.d.ts +40 -0
  70. package/dist/commands/rag/query-command.d.ts.map +1 -1
  71. package/dist/commands/rag/query-command.js +47 -20
  72. package/dist/commands/rag/query-command.js.map +1 -1
  73. package/dist/commands/resources/index.d.ts.map +1 -1
  74. package/dist/commands/resources/index.js +27 -9
  75. package/dist/commands/resources/index.js.map +1 -1
  76. package/dist/commands/resources/scan.d.ts +37 -0
  77. package/dist/commands/resources/scan.d.ts.map +1 -1
  78. package/dist/commands/resources/scan.js +47 -32
  79. package/dist/commands/resources/scan.js.map +1 -1
  80. package/dist/commands/resources/validate.d.ts +136 -1
  81. package/dist/commands/resources/validate.d.ts.map +1 -1
  82. package/dist/commands/resources/validate.js +105 -66
  83. package/dist/commands/resources/validate.js.map +1 -1
  84. package/dist/commands/skill/review-checklist.d.ts.map +1 -1
  85. package/dist/commands/skill/review-checklist.js +5 -0
  86. package/dist/commands/skill/review-checklist.js.map +1 -1
  87. package/dist/commands/skill/review.d.ts.map +1 -1
  88. package/dist/commands/skill/review.js +7 -3
  89. package/dist/commands/skill/review.js.map +1 -1
  90. package/dist/commands/skill/test/run.d.ts +1 -1
  91. package/dist/commands/skill/test/run.d.ts.map +1 -1
  92. package/dist/commands/skill/test/run.js +8 -6
  93. package/dist/commands/skill/test/run.js.map +1 -1
  94. package/dist/commands/skills/build.d.ts +349 -11
  95. package/dist/commands/skills/build.d.ts.map +1 -1
  96. package/dist/commands/skills/build.js +901 -97
  97. package/dist/commands/skills/build.js.map +1 -1
  98. package/dist/commands/skills/command-helpers.d.ts +6 -10
  99. package/dist/commands/skills/command-helpers.d.ts.map +1 -1
  100. package/dist/commands/skills/command-helpers.js +6 -22
  101. package/dist/commands/skills/command-helpers.js.map +1 -1
  102. package/dist/commands/skills/list.d.ts +18 -0
  103. package/dist/commands/skills/list.d.ts.map +1 -1
  104. package/dist/commands/skills/list.js +41 -15
  105. package/dist/commands/skills/list.js.map +1 -1
  106. package/dist/commands/skills/package.d.ts +15 -0
  107. package/dist/commands/skills/package.d.ts.map +1 -1
  108. package/dist/commands/skills/package.js +30 -20
  109. package/dist/commands/skills/package.js.map +1 -1
  110. package/dist/commands/skills/scope-guard.d.ts +64 -0
  111. package/dist/commands/skills/scope-guard.d.ts.map +1 -0
  112. package/dist/commands/skills/scope-guard.js +86 -0
  113. package/dist/commands/skills/scope-guard.js.map +1 -0
  114. package/dist/commands/skills/validate-command.d.ts.map +1 -1
  115. package/dist/commands/skills/validate-command.js +41 -7
  116. package/dist/commands/skills/validate-command.js.map +1 -1
  117. package/dist/commands/skills/validate.d.ts +44 -3
  118. package/dist/commands/skills/validate.d.ts.map +1 -1
  119. package/dist/commands/skills/validate.js +217 -53
  120. package/dist/commands/skills/validate.js.map +1 -1
  121. package/dist/commands/validate.d.ts +18 -0
  122. package/dist/commands/validate.d.ts.map +1 -1
  123. package/dist/commands/validate.js +89 -68
  124. package/dist/commands/validate.js.map +1 -1
  125. package/dist/commands/verify.d.ts +113 -6
  126. package/dist/commands/verify.d.ts.map +1 -1
  127. package/dist/commands/verify.js +440 -123
  128. package/dist/commands/verify.js.map +1 -1
  129. package/dist/index.d.ts +1 -1
  130. package/dist/index.d.ts.map +1 -1
  131. package/dist/index.js +7 -1
  132. package/dist/index.js.map +1 -1
  133. package/dist/skill-resolution/index.d.ts +1 -1
  134. package/dist/skill-resolution/index.d.ts.map +1 -1
  135. package/dist/skill-resolution/index.js +1 -1
  136. package/dist/skill-resolution/index.js.map +1 -1
  137. package/dist/skill-resolution/packaging-config.d.ts +15 -2
  138. package/dist/skill-resolution/packaging-config.d.ts.map +1 -1
  139. package/dist/skill-resolution/packaging-config.js +39 -2
  140. package/dist/skill-resolution/packaging-config.js.map +1 -1
  141. package/dist/utils/command-error.d.ts +34 -1
  142. package/dist/utils/command-error.d.ts.map +1 -1
  143. package/dist/utils/command-error.js +32 -1
  144. package/dist/utils/command-error.js.map +1 -1
  145. package/dist/utils/help-loader.d.ts +6 -2
  146. package/dist/utils/help-loader.d.ts.map +1 -1
  147. package/dist/utils/help-loader.js +9 -16
  148. package/dist/utils/help-loader.js.map +1 -1
  149. package/dist/utils/issue-rendering.d.ts +130 -0
  150. package/dist/utils/issue-rendering.d.ts.map +1 -1
  151. package/dist/utils/issue-rendering.js +147 -0
  152. package/dist/utils/issue-rendering.js.map +1 -1
  153. package/dist/utils/issue-severity.d.ts +51 -0
  154. package/dist/utils/issue-severity.d.ts.map +1 -0
  155. package/dist/utils/issue-severity.js +63 -0
  156. package/dist/utils/issue-severity.js.map +1 -0
  157. package/dist/utils/output.d.ts +54 -5
  158. package/dist/utils/output.d.ts.map +1 -1
  159. package/dist/utils/output.js +111 -17
  160. package/dist/utils/output.js.map +1 -1
  161. package/dist/utils/relativize-paths.d.ts +45 -0
  162. package/dist/utils/relativize-paths.d.ts.map +1 -0
  163. package/dist/utils/relativize-paths.js +67 -0
  164. package/dist/utils/relativize-paths.js.map +1 -0
  165. package/dist/utils/resource-loader.d.ts +21 -2
  166. package/dist/utils/resource-loader.d.ts.map +1 -1
  167. package/dist/utils/resource-loader.js +85 -11
  168. package/dist/utils/resource-loader.js.map +1 -1
  169. package/dist/utils/skill-packaging-config.d.ts +22 -1
  170. package/dist/utils/skill-packaging-config.d.ts.map +1 -1
  171. package/dist/utils/skill-packaging-config.js +26 -0
  172. package/dist/utils/skill-packaging-config.js.map +1 -1
  173. package/dist/utils/verdict-helpers.d.ts +4 -3
  174. package/dist/utils/verdict-helpers.d.ts.map +1 -1
  175. package/dist/utils/verdict-helpers.js +6 -13
  176. package/dist/utils/verdict-helpers.js.map +1 -1
  177. package/dist/version.d.ts +22 -2
  178. package/dist/version.d.ts.map +1 -1
  179. package/dist/version.js +31 -2
  180. package/dist/version.js.map +1 -1
  181. package/docs/index.md +12 -0
  182. package/docs/rag.md +9 -4
  183. package/docs/resources.md +30 -14
  184. package/docs/skills.md +25 -7
  185. package/package.json +12 -12
@@ -0,0 +1,319 @@
1
+ /**
2
+ * "Is this tree repository SOURCE, or an artifact somebody published?"
3
+ *
4
+ * `vat audit` needs an answer before it can run the presence-side detectors —
5
+ * `PACKAGED_AGENT_INSTRUCTION_FILE` above all — because the same `CLAUDE.md`
6
+ * means opposite things on the two sides of that line. Sitting beside a source
7
+ * `SKILL.md` in a working repo it is ordinary repo guidance that ships nowhere;
8
+ * sitting in a built bundle or an installed plugin it demonstrably travelled to
9
+ * a consumer.
10
+ *
11
+ * ## The discriminator this replaced, and why it was wrong
12
+ *
13
+ * The first answer was "does the project's `vibe-agent-toolkit.config.yaml`
14
+ * declare this SKILL.md, matched by absolute path?" — no match meant the tree
15
+ * had been handed to us. Two ordinary cases falsify that inference, and both
16
+ * were observed on adopter fixtures:
17
+ *
18
+ * - **A repo that has not adopted VAT at all** has no config, so nothing is
19
+ * declared. `vat audit` on a fresh repo is the first command a new user runs,
20
+ * and it greeted them with a warning whose first remedy is "remove the file,
21
+ * or move it outside the directory that is packaged" — about guidance that
22
+ * ships nowhere.
23
+ * - **An adopting repo whose `include` globs do not enumerate every skill
24
+ * directory in the tree** — drafts, vendored copies, test fixtures. Not being
25
+ * named by a glob is not evidence of publication.
26
+ *
27
+ * ## What replaced it
28
+ *
29
+ * Two observable facts about where the file actually LIVES, in this order:
30
+ *
31
+ * 1. **Inside a Claude install root** (`plugins/`, `skills/`, `marketplaces/`
32
+ * under `$CLAUDE_CONFIG_DIR` or `~/.claude`) — the directories whose entire
33
+ * purpose is holding artifacts an installer put there. This clause wins over
34
+ * the git test below, and it must: Claude Code installs a marketplace by
35
+ * `git clone`, so an installed tree's files are TRACKED SOURCE — of somebody
36
+ * else's repository. For a git-distributed plugin, tracked source *is* what
37
+ * ships, which is precisely how a scaffold template like Anthropic's
38
+ * `dataverse` `templates/CLAUDE.md` reaches every consumer. Judging that tree
39
+ * by tracked-ness would silence the dominant audited population.
40
+ *
41
+ * Both halves of that sentence are statements about somebody else's product,
42
+ * and clause 1 outranking clause 2 rests on them. No test in this repo can
43
+ * contradict either — they can only be re-read:
44
+ *
45
+ * @vendor-claim reviewed=2026-08-02 verify=Install a marketplace with /plugin marketplace add and confirm ~/.claude/plugins/marketplaces/<name> is a git working copy; confirm dataverse still ships templates/CLAUDE.md
46
+ *
47
+ * 2. **Not git-visible source** — the `SKILL.md` is gitignored, or it lies
48
+ * outside any git repository. A built `dist/` bundle is gitignored; an
49
+ * unpacked tarball is outside a repo; a working tree's skill is neither.
50
+ *
51
+ * Neither clause consults the project's config, and neither is CONDITIONAL on it:
52
+ * `vat audit` asks this question in its config-aware lane exactly as it does in
53
+ * its wild one. The config-declaration test was not merely replaced inside this
54
+ * module — it also had to stop gating whether this module is reached, or it
55
+ * survives at the caller in its purest form, where it can only suppress.
56
+ *
57
+ * Untracked-but-not-ignored is deliberately SOURCE, not "distributed": that is
58
+ * a skill the author has written and not yet committed, and treating authoring
59
+ * in progress as a distribution artifact would make the first audit of a new
60
+ * skill the loudest one. `GitTracker`'s active set (`git ls-files --cached
61
+ * --others --exclude-standard`) answers exactly this three-way question in O(1),
62
+ * which is why this module reuses it rather than adding a second git-status path.
63
+ *
64
+ * Deliberately NOT inferred from a `dist/` path substring or from a bundle's
65
+ * frontmatter `name`: both assert a cause the code cannot observe, and adopter
66
+ * output directories vary. Location under an install root is not that kind of
67
+ * guess — it is the same directory constant the `--user` scan itself is defined
68
+ * by, resolved from {@link getClaudeUserPaths}.
69
+ *
70
+ * ## Known limits, both deliberate
71
+ *
72
+ * - A skill the author writes IN PLACE under `~/.claude/skills/` and keeps in a
73
+ * dotfiles repo is reported, because it is indistinguishable by location from
74
+ * an installed one. The install root is what a consumer's Claude reads from;
75
+ * a skill living there is being consumed either way.
76
+ * - A third-party skills repo audited by `vat audit <git-url>` is a clone, so
77
+ * its skills read as source and stay silent. That is consistent: auditing
78
+ * somebody's repo source is the same situation as auditing your own. A
79
+ * third-party *plugin* still reports, because the plugin lane crawls the whole
80
+ * plugin tree independently of this classifier.
81
+ *
82
+ * ## When git cannot be consulted
83
+ *
84
+ * Clause 2 is only as good as git's willingness to answer, and `gitLsFiles`
85
+ * returns the same `null` for a missing binary, a corrupt `.git` and an
86
+ * unreadable one. That `null` used to arrive here as "not ignored" — i.e. source,
87
+ * i.e. silence — so the detector switched itself off and the run still reported
88
+ * `status: success` with nothing to indicate why. This module therefore has a
89
+ * third answer, `'indeterminate'`, and reports it (see
90
+ * {@link distributedTreeFindings}) rather than guessing in either direction.
91
+ */
92
+ import { detectPackagedAgentInstructionFiles, materializeIssue } from '@vibe-agent-toolkit/agent-skills';
93
+ import { getClaudeUserPaths } from '@vibe-agent-toolkit/claude-marketplace';
94
+ import { gitFindRoot, GitTracker, issueLocation, normalizePath, safePath, toForwardSlash, } from '@vibe-agent-toolkit/utils';
95
+ /** Cache of (gitRoot → initialized GitTracker) to avoid re-spawning ls-files. */
96
+ const gitTrackerCache = new Map();
97
+ /**
98
+ * Get (or build) the pre-populated tracker for one git root.
99
+ *
100
+ * Shared with `resolveScanContext` in audit.ts so a run pays for `git ls-files`
101
+ * once per repository, whether the caller wants scan-time gitignore filtering or
102
+ * the provenance answer below.
103
+ */
104
+ export async function getOrCreateGitTracker(gitRoot) {
105
+ const cached = gitTrackerCache.get(gitRoot);
106
+ if (cached !== undefined) {
107
+ return cached;
108
+ }
109
+ const tracker = new GitTracker(gitRoot);
110
+ await tracker.initialize();
111
+ gitTrackerCache.set(gitRoot, tracker);
112
+ return tracker;
113
+ }
114
+ /**
115
+ * Cache of (canonical SKILL.md path → verdict).
116
+ *
117
+ * The walk asks the same question about the same skill twice: once to decide
118
+ * whether this skill's crawl OWNS the subtree below it (see
119
+ * {@link crawlOwnsSubtree}) and once when the crawl runs. Both answers derive
120
+ * from filesystem and git state, which is fixed for the duration of one audit —
121
+ * so it is memoized rather than re-derived, and cleared alongside the tracker it
122
+ * is derived from, which is what every reset path already calls.
123
+ */
124
+ const provenanceCache = new Map();
125
+ /** Clear the per-root tracker cache (see `resetAuditCaches`). */
126
+ export function resetGitTrackerCache() {
127
+ gitTrackerCache.clear();
128
+ provenanceCache.clear();
129
+ }
130
+ /**
131
+ * The silent verdict, spelled once.
132
+ *
133
+ * Three call sites now test for it — the two clauses that return it and
134
+ * {@link crawlOwnsSubtree}, which is defined as "not this" — and a verdict
135
+ * literal that drifts in one of them fails open.
136
+ */
137
+ const REPO_SOURCE = 'repo-source';
138
+ /**
139
+ * One canonical, forward-slashed spelling of a path — symlinks resolved, and on a
140
+ * case-insensitive filesystem (macOS, NTFS) the case as it is stored on disk.
141
+ *
142
+ * Every comparison in this module goes through it, and both sides of every
143
+ * comparison do, because two unrelated defects follow from comparing paths as the
144
+ * caller happened to spell them:
145
+ *
146
+ * - `~/.claude` is very often a SYMLINK into a dotfiles checkout. Auditing that
147
+ * checkout by its real path missed the install-root clause entirely: the same
148
+ * physical files, two verdicts, decided by which spelling was typed.
149
+ * - `GitTracker`'s active set is keyed by exact string while the `existsSync`
150
+ * qualifier beside it is case-INsensitive, so `<repo>/Skills/demo/SKILL.md`
151
+ * read as "absent from the set and present on disk" ⇒ ignored ⇒ distributed:
152
+ * a false finding against tracked source, reachable by tab-completion.
153
+ *
154
+ * Canonicalising the SKILL.md before deriving the git root is what keeps the
155
+ * second fix honest — the tracker's own keys are built from the root it is given,
156
+ * so a canonical lookup against a non-canonical root would miss every time.
157
+ */
158
+ function canonicalPath(filePath) {
159
+ return toForwardSlash(normalizePath(safePath.resolve(filePath)));
160
+ }
161
+ /**
162
+ * True when `absolutePath` is `root` or lies beneath it.
163
+ *
164
+ * Both sides are put through {@link toForwardSlash} first: a Windows caller can
165
+ * hand us a backslash path, and a prefix test across mixed separators reports a
166
+ * sibling directory as "outside" — the exact shape that would quietly turn this
167
+ * whole clause off on one platform.
168
+ *
169
+ * Exported because `audit.ts` asks the same containment question of the same
170
+ * kind of path when deciding which crawl owns a subtree; a second spelling of a
171
+ * prefix test is how the separator bug gets reintroduced on one side only.
172
+ */
173
+ export function isWithin(root, absolutePath) {
174
+ const normalizedRoot = toForwardSlash(root);
175
+ const normalizedPath = toForwardSlash(absolutePath);
176
+ return normalizedPath === normalizedRoot || normalizedPath.startsWith(`${normalizedRoot}/`);
177
+ }
178
+ /**
179
+ * Is this path inside one of the directories Claude installs packages INTO?
180
+ *
181
+ * Resolved per call, never memoized at module load: `CLAUDE_CONFIG_DIR` is an
182
+ * environment variable the operator (and every test fixture) is entitled to
183
+ * change between runs, and a cached answer would describe the wrong machine.
184
+ */
185
+ function isUnderClaudeInstallRoot(canonicalAbsolutePath) {
186
+ const { pluginsDir, skillsDir, marketplacesDir } = getClaudeUserPaths();
187
+ // marketplacesDir is nested under pluginsDir; listed anyway so the set reads as
188
+ // the three install destinations rather than as an accident of layout.
189
+ return [pluginsDir, skillsDir, marketplacesDir].some((dir) => isWithin(canonicalPath(dir), canonicalAbsolutePath));
190
+ }
191
+ /**
192
+ * Classify the tree holding `skillMdPath`. See this module's header for the
193
+ * reasoning behind each clause and the order they are applied in.
194
+ */
195
+ export async function classifyScannedSkillTree(skillMdPath) {
196
+ const absolute = canonicalPath(skillMdPath);
197
+ const memoized = provenanceCache.get(absolute);
198
+ if (memoized !== undefined) {
199
+ return memoized;
200
+ }
201
+ const verdict = await classifyUncached(absolute);
202
+ provenanceCache.set(absolute, verdict);
203
+ return verdict;
204
+ }
205
+ /** {@link classifyScannedSkillTree}'s clauses, on an already-canonical path. */
206
+ async function classifyUncached(absolute) {
207
+ if (isUnderClaudeInstallRoot(absolute)) {
208
+ return 'distributed';
209
+ }
210
+ const gitRoot = gitFindRoot(safePath.resolve(absolute, '..'));
211
+ if (gitRoot === null) {
212
+ return 'distributed';
213
+ }
214
+ const tracker = await getOrCreateGitTracker(gitRoot);
215
+ // Fail CLOSED. `isIgnoredByActiveSet` cannot distinguish "git says this file is
216
+ // tracked" from "git was never asked", and both come back `false` ⇒
217
+ // `'repo-source'` ⇒ silence. So the detector used to switch itself off — with a
218
+ // green status and no diagnostic — whenever `git` was missing from `PATH` or the
219
+ // repository's `.git` was corrupt or unreadable. Ask whether git answered before
220
+ // reading anything into its answer.
221
+ if (!tracker.isUsable()) {
222
+ return 'indeterminate';
223
+ }
224
+ return tracker.isIgnoredByActiveSet(absolute) ? 'distributed' : REPO_SOURCE;
225
+ }
226
+ /**
227
+ * Will a crawl rooted at this SKILL.md's directory actually report the WHOLE
228
+ * subtree beneath it — nested skills included?
229
+ *
230
+ * The question the directory walk needs before it descends, and it is not the
231
+ * same as "is there a SKILL.md here". {@link distributedTreeFindings} matches at
232
+ * any depth, so a distributed (or unclassifiable) skill's crawl covers every
233
+ * descendant and they must stand down or one file is counted once per ancestor.
234
+ * A `repo-source` skill's crawl does not run at all, so standing its descendants
235
+ * down would convert a double count into silence — and provenance is NOT
236
+ * monotone down a tree: a gitignored bundle can sit inside a tracked source
237
+ * skill, and a scan rooted above `<claudeDir>/skills` reaches an install root
238
+ * from outside one.
239
+ */
240
+ export async function crawlOwnsSubtree(skillMdPath) {
241
+ return (await classifyScannedSkillTree(skillMdPath)) !== REPO_SOURCE;
242
+ }
243
+ /**
244
+ * The tree's own directory, spelled as a location a reader can act on.
245
+ *
246
+ * `issueLocation` is `path.relative`, so it answers `''` when the subject IS the
247
+ * anchor — and that is not an exotic case here, it is the ORDINARY
248
+ * `vat audit <bundle-path>` invocation: the audited target and the tree are the
249
+ * same directory. `''` then reached the report as `location: ""` and, interpolated
250
+ * into the detail below, produced `( (1 agent-instruction file(s) …))` — an empty
251
+ * positional part that reads as a rendering bug. `.` is that same directory
252
+ * spelled as something a consumer can open, resolve and glob.
253
+ *
254
+ * Fixed HERE rather than inside `issueLocation` deliberately. `issueLocation` is
255
+ * a relativizer shared by ~20 producers, and only its CALLER knows whether "the
256
+ * anchor root itself" is a subject its findings can have; for the producers that
257
+ * anchor a file against a containing directory, subject-equals-anchor cannot
258
+ * happen at all. The sibling `Location: (validation.allow.<CODE>)` findings look
259
+ * like this defect and are NOT it: those are `ALLOW_UNUSED`/`ALLOW_EXPIRED` meta
260
+ * issues that carry no `location` whatsoever (only a `field` pointing into the
261
+ * project config), which `formatIssueAnchor` renders as `(field)` on purpose.
262
+ *
263
+ * @see `anchoredPath` in `agent-skills/src/files-config.ts` and the `|| '.'` in
264
+ * `cli/src/commands/claude/plugin/plugin-files.ts` — the same fallback, spelled
265
+ * twice already. Consolidating all three into one utils-level helper is a wider
266
+ * change than this fix.
267
+ */
268
+ function treeLocation(treeRoot, locationRoot) {
269
+ return issueLocation(treeRoot, locationRoot) || '.';
270
+ }
271
+ /**
272
+ * The agent-instruction files present in a skill's own directory, when that
273
+ * directory is a distributed tree. Empty otherwise — including when the caller
274
+ * says a plugin lane already owns this subtree.
275
+ *
276
+ * `[]` declared dests, from BOTH callers, including the config-aware one that does
277
+ * hold a `files:` block. The parameter takes skill-OUTPUT-relative dests, and the
278
+ * tree crawled here is not an output tree — it is wherever the SKILL.md lives, so
279
+ * a `dest` and a path relative to this root are two different coordinate systems.
280
+ * Feeding dests in would exempt by accidental basename agreement and mislabel it
281
+ * as intent. `vat verify` is the lane that maps a built bundle back to the config
282
+ * that produced it, with both sides in output coordinates, and it applies the
283
+ * explicit-`files:` exemption there — which is what
284
+ * `PACKAGED_AGENT_INSTRUCTION_FILE`'s own remediation already tells readers.
285
+ *
286
+ * @param crawlTree `false` when a plugin lane already crawled this subtree.
287
+ * REQUIRED and never defaulted, because the wrong answer is silent in both
288
+ * directions: a skill nested inside a plugin is already crawled by
289
+ * `validatePlugin` at any depth, so crawling again reports one file twice,
290
+ * while omitting it for a standalone bundle is the blindness this pass exists
291
+ * to end.
292
+ */
293
+ export async function distributedTreeFindings(skillPath, locationRoot, crawlTree) {
294
+ if (!crawlTree)
295
+ return [];
296
+ const provenance = await classifyScannedSkillTree(skillPath);
297
+ if (provenance === REPO_SOURCE)
298
+ return [];
299
+ const treeRoot = safePath.resolve(skillPath, '..');
300
+ const present = detectPackagedAgentInstructionFiles(treeRoot, locationRoot, []);
301
+ if (provenance === 'distributed')
302
+ return present;
303
+ // Provenance is unknown. Report the unknown, not the files: calling them
304
+ // packaged would assert that they travelled to a consumer, which is exactly the
305
+ // fact that could not be established. And say nothing at all when the tree holds
306
+ // none — with nothing to classify, no answer was lost, and a healthy git would
307
+ // have been silent here too. That keeps the notice proportional to the actual
308
+ // ambiguity instead of warning once per skill across a git-less container.
309
+ if (present.length === 0)
310
+ return [];
311
+ const location = treeLocation(treeRoot, locationRoot);
312
+ return [
313
+ materializeIssue('TREE_PROVENANCE_INDETERMINATE', {
314
+ location,
315
+ detail: `${location} (${present.length} agent-instruction file(s) found, unclassified)`,
316
+ }),
317
+ ];
318
+ }
319
+ //# sourceMappingURL=distributed-tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"distributed-tree.js","sourceRoot":"","sources":["../../../src/commands/audit/distributed-tree.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0FG;AAGH,OAAO,EAAE,mCAAmC,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzG,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EACL,WAAW,EACX,UAAU,EACV,aAAa,EACb,aAAa,EACb,QAAQ,EACR,cAAc,GACf,MAAM,2BAA2B,CAAC;AAEnC,iFAAiF;AACjF,MAAM,eAAe,GAA4B,IAAI,GAAG,EAAE,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAAe;IACzD,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;IAC3B,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACtC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,eAAe,GAAqC,IAAI,GAAG,EAAE,CAAC;AAEpE,iEAAiE;AACjE,MAAM,UAAU,oBAAoB;IAClC,eAAe,CAAC,KAAK,EAAE,CAAC;IACxB,eAAe,CAAC,KAAK,EAAE,CAAC;AAC1B,CAAC;AAeD;;;;;;GAMG;AACH,MAAM,WAAW,GAAwB,aAAa,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAS,aAAa,CAAC,QAAgB;IACrC,OAAO,cAAc,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,YAAoB;IACzD,MAAM,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,cAAc,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;IACpD,OAAO,cAAc,KAAK,cAAc,IAAI,cAAc,CAAC,UAAU,CAAC,GAAG,cAAc,GAAG,CAAC,CAAC;AAC9F,CAAC;AAED;;;;;;GAMG;AACH,SAAS,wBAAwB,CAAC,qBAA6B;IAC7D,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,GAAG,kBAAkB,EAAE,CAAC;IACxE,gFAAgF;IAChF,uEAAuE;IACvE,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAC3D,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,qBAAqB,CAAC,CACpD,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,WAAmB;IAChE,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACjD,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACvC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gFAAgF;AAChF,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IAC9C,IAAI,wBAAwB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;IAC9D,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACrD,gFAAgF;IAChF,oEAAoE;IACpE,gFAAgF;IAChF,iFAAiF;IACjF,iFAAiF;IACjF,oCAAoC;IACpC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;QACxB,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,OAAO,OAAO,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC;AAC9E,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,WAAmB;IACxD,OAAO,CAAC,MAAM,wBAAwB,CAAC,WAAW,CAAC,CAAC,KAAK,WAAW,CAAC;AACvE,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,SAAS,YAAY,CAAC,QAAgB,EAAE,YAAoB;IAC1D,OAAO,aAAa,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,GAAG,CAAC;AACtD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,SAAiB,EACjB,YAAoB,EACpB,SAAkB;IAElB,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAC1B,MAAM,UAAU,GAAG,MAAM,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAC7D,IAAI,UAAU,KAAK,WAAW;QAAE,OAAO,EAAE,CAAC;IAE1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,mCAAmC,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;IAChF,IAAI,UAAU,KAAK,aAAa;QAAE,OAAO,OAAO,CAAC;IAEjD,yEAAyE;IACzE,gFAAgF;IAChF,iFAAiF;IACjF,+EAA+E;IAC/E,8EAA8E;IAC9E,2EAA2E;IAC3E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACpC,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACtD,OAAO;QACL,gBAAgB,CAAC,+BAA+B,EAAE;YAChD,QAAQ;YACR,MAAM,EAAE,GAAG,QAAQ,KAAK,OAAO,CAAC,MAAM,iDAAiD;SACxF,CAAC;KACH,CAAC;AACJ,CAAC"}
@@ -31,6 +31,32 @@ export interface VATProjectContext {
31
31
  * Top-level command: vat audit [path]
32
32
  */
33
33
  export declare function createAuditCommand(): Command;
34
+ /**
35
+ * Which of the Claude install roots a `--user` run actually walks.
36
+ *
37
+ * The three roots read as siblings and are NOT: `marketplacesDir` is
38
+ * `<claudeDir>/plugins/marketplaces`, i.e. INSIDE `pluginsDir`. A recursive walk
39
+ * of `plugins/` already reaches every installed marketplace, so scanning
40
+ * `marketplaces/` afterwards audited each marketplace-installed plugin and skill
41
+ * a SECOND time, in a second result, under the identical `path:`. On one real
42
+ * machine that turned 7 distinct agent-instruction files into 12 reported rows —
43
+ * and it inflates every finding class, not one code, because the whole subject
44
+ * is re-audited rather than one detector re-firing.
45
+ *
46
+ * The containment test is `isWithin`, the same one the provenance classifier
47
+ * uses, so "inside" means the same thing on both sides and on Windows.
48
+ *
49
+ * Gated on `recursive`, and that is not defensive dressing: under
50
+ * `--no-recursive` a walk of `plugins/` stops at its top level and never reaches
51
+ * `marketplaces/`, so dropping the nested root there would replace a double
52
+ * count with no coverage at all.
53
+ *
54
+ * Pure, and exported for that reason: the shape of the defect is "the list of
55
+ * roots was wrong", which is assertable as a list.
56
+ *
57
+ * @internal Exported for unit testing only — not part of the public CLI API.
58
+ */
59
+ export declare function userScanTargets(candidates: readonly string[], recursive: boolean): string[];
34
60
  /**
35
61
  * The invocation scan root: the ONE base every `path` and `location` in a
36
62
  * report is expressed relative to.
@@ -78,6 +104,11 @@ export declare function getValidationResults(scanPath: string, recursive: boolea
78
104
  * Non-plugin results are skipped silently.
79
105
  * When effectiveSettings is provided, also runs settings conflict detection.
80
106
  *
107
+ * `locationRoot` is the invocation scan root: the ONE base every emitted
108
+ * evidence `location.file` is relative to. One audit run spans many plugin
109
+ * directories, so anchoring evidence at each plugin would mix coordinate
110
+ * systems in a single document.
111
+ *
81
112
  * When vatContext is provided, config-layer `targets` declarations are
82
113
  * threaded through to the analyzer so `vat audit .` inside a VAT project
83
114
  * matches `vat skills validate` verdicts. See
@@ -85,7 +116,7 @@ export declare function getValidationResults(scanPath: string, recursive: boolea
85
116
  *
86
117
  * @internal Exported for integration testing only — not part of the public CLI API.
87
118
  */
88
- export declare function runCompatAnalysis(results: ValidationResult[], logger: ReturnType<typeof createLogger>, effectiveSettings?: EffectiveSettings, vatContext?: VATProjectContext | null): Promise<Map<string, CompatibilityResult>>;
119
+ export declare function runCompatAnalysis(results: ValidationResult[], logger: ReturnType<typeof createLogger>, locationRoot: string, effectiveSettings?: EffectiveSettings, vatContext?: VATProjectContext | null): Promise<Map<string, CompatibilityResult>>;
89
120
  declare function calculateSummary(results: ValidationResult[], startTime: number, compatMap: Map<string, CompatibilityResult> | undefined, verbose: boolean, root: string): {
90
121
  files: (ValidationResult & {
91
122
  compatibility?: CompatibilityResult;
@@ -96,6 +127,43 @@ declare function calculateSummary(results: ValidationResult[], startTime: number
96
127
  duration: string;
97
128
  root: string;
98
129
  };
130
+ /**
131
+ * The stderr findings report for a set of audit results — the HUMAN channel.
132
+ *
133
+ * Deliberately NOT the YAML document. `vat audit` publishes a machine-readable
134
+ * report on stdout that CI and tooling parse, and that document carries every
135
+ * finding at every verbosity; this stream is read by a person, and on a 90-skill
136
+ * corpus it printed 26,480 lines, 3,480 of them occurrences of a single
137
+ * high-cardinality warning code. The two channels answer different questions, so
138
+ * only this one collapses.
139
+ *
140
+ * Which findings render in full is not decided here — it is
141
+ * {@link issuesToRenderAtVerbosity}, shared with the other findings-reporting
142
+ * verbs so `vat audit`, `vat skills validate` and `vat skills build` cannot drift
143
+ * onto three answers again. Errors always render; warnings and info collapse
144
+ * unless `verbose`; allow-listed findings never render.
145
+ *
146
+ * The severity breakdown on each file's heading is load-bearing, not decoration.
147
+ * For a warning-only file at default verbosity that heading is the ENTIRE report
148
+ * for that file, so dropping the counts would turn the collapse into silence —
149
+ * the failure direction `issue-rendering.ts` exists to prevent. The trailing
150
+ * line names the collapsed total and both ways to see it, for the same reason.
151
+ *
152
+ * That trailing line points at THIS audit's YAML report, deliberately — do not
153
+ * broaden it back into a claim about "the YAML report" in general. It is only
154
+ * true of the verbs that emit full `issues:` arrays, and which verbs those are
155
+ * has changed: `vat skills build` now publishes them too, so the sentence is
156
+ * shared rather than re-spelled (see `formatCollapsedFindingsHint`, which takes
157
+ * the report name for exactly this reason). Any verb that publishes counts alone
158
+ * must still not use it — there, it would send a CI consumer to a document that
159
+ * cannot answer the question.
160
+ *
161
+ * Pure: takes results, returns lines. It reads `issues` and never rewrites it,
162
+ * because `runAuditAtPath` builds the YAML document from the very same array.
163
+ *
164
+ * @internal Exported for unit testing only — not part of the public CLI API.
165
+ */
166
+ export declare function formatAuditFindingsLines(results: readonly ValidationResult[], root: string, verbose: boolean): string[];
99
167
  /**
100
168
  * Reset all module-level audit caches. Must be called at the start of every
101
169
  * independent audit invocation so in-process callers (CLI entrypoint AND
@@ -1 +1 @@
1
- {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/commands/audit.ts"],"names":[],"mappings":"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"}