@vibe-agent-toolkit/vat-development-agents 0.1.32-rc.4 → 0.1.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/.claude/plugins/marketplaces/vat-skills/CHANGELOG.md +37 -4
  2. package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/.claude-plugin/plugin.json +1 -1
  3. package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/vat-adoption-and-configuration/SKILL.md +179 -0
  4. package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/{authoring → vat-agent-authoring}/SKILL.md +16 -134
  5. package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/{audit → vat-audit}/SKILL.md +1 -1
  6. package/dist/{skills/org-admin → .claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/vat-enterprise-org}/SKILL.md +3 -3
  7. package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/{resources → vat-knowledge-resources}/SKILL.md +1 -1
  8. package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/vat-rag/SKILL.md +104 -0
  9. package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/vat-skill-authoring/SKILL.md +156 -0
  10. package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/{distribution → vat-skill-distribution}/SKILL.md +3 -2
  11. package/dist/{skills/authoring/resources/skill-quality-checklist.md → .claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/vat-skill-review/SKILL.md} +16 -1
  12. package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/vibe-agent-toolkit/SKILL.md +40 -189
  13. package/dist/generated/resources/skills/CLAUDE.d.ts +28 -0
  14. package/dist/generated/resources/skills/CLAUDE.js +60 -0
  15. package/dist/generated/resources/skills/SKILL.d.ts +2 -10
  16. package/dist/generated/resources/skills/SKILL.js +14 -54
  17. package/dist/generated/resources/skills/vat-adoption-and-configuration.d.ts +29 -0
  18. package/dist/generated/resources/skills/vat-adoption-and-configuration.js +53 -0
  19. package/dist/generated/resources/skills/vat-agent-authoring.d.ts +0 -2
  20. package/dist/generated/resources/skills/vat-agent-authoring.js +9 -19
  21. package/dist/generated/resources/skills/vat-audit.js +1 -1
  22. package/dist/generated/resources/skills/{vat-claude-org-admin.js → vat-enterprise-org.js} +3 -3
  23. package/dist/generated/resources/skills/{vat-resources.js → vat-knowledge-resources.js} +1 -1
  24. package/dist/generated/resources/skills/{vat-install-architecture.d.ts → vat-rag.d.ts} +6 -7
  25. package/dist/generated/resources/skills/vat-rag.js +43 -0
  26. package/dist/generated/resources/skills/{vat-debugging.d.ts → vat-skill-authoring.d.ts} +7 -7
  27. package/dist/generated/resources/skills/vat-skill-authoring.js +48 -0
  28. package/dist/generated/resources/skills/{vat-skills-distribution.js → vat-skill-distribution.js} +4 -4
  29. package/dist/generated/resources/skills/{skill-quality-checklist.d.ts → vat-skill-review.d.ts} +5 -1
  30. package/dist/generated/resources/skills/{skill-quality-checklist.js → vat-skill-review.js} +10 -2
  31. package/dist/skills/vat-adoption-and-configuration/SKILL.md +179 -0
  32. package/dist/skills/{authoring → vat-agent-authoring}/SKILL.md +16 -134
  33. package/dist/skills/{audit → vat-audit}/SKILL.md +1 -1
  34. package/dist/{.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/org-admin → skills/vat-enterprise-org}/SKILL.md +3 -3
  35. package/dist/skills/{resources → vat-knowledge-resources}/SKILL.md +1 -1
  36. package/dist/skills/vat-rag/SKILL.md +104 -0
  37. package/dist/skills/vat-skill-authoring/SKILL.md +156 -0
  38. package/dist/skills/{distribution → vat-skill-distribution}/SKILL.md +3 -2
  39. package/dist/{.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/authoring/resources/skill-quality-checklist.md → skills/vat-skill-review/SKILL.md} +16 -1
  40. package/dist/skills/vibe-agent-toolkit/SKILL.md +40 -189
  41. package/package.json +13 -11
  42. package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/debugging/SKILL.md +0 -111
  43. package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/distribution/resources/vat-install-architecture.md +0 -229
  44. package/dist/.claude/plugins/marketplaces/vat-skills/plugins/vibe-agent-toolkit/skills/install/SKILL.md +0 -229
  45. package/dist/generated/resources/skills/vat-debugging.js +0 -48
  46. package/dist/generated/resources/skills/vat-install-architecture.js +0 -48
  47. package/dist/skills/debugging/SKILL.md +0 -111
  48. package/dist/skills/distribution/resources/vat-install-architecture.md +0 -229
  49. package/dist/skills/install/SKILL.md +0 -229
  50. /package/dist/generated/resources/skills/{vat-claude-org-admin.d.ts → vat-enterprise-org.d.ts} +0 -0
  51. /package/dist/generated/resources/skills/{vat-resources.d.ts → vat-knowledge-resources.d.ts} +0 -0
  52. /package/dist/generated/resources/skills/{vat-skills-distribution.d.ts → vat-skill-distribution.d.ts} +0 -0
@@ -1,229 +0,0 @@
1
- ---
2
- name: install
3
- description: VAT skill/plugin install and uninstall architecture — what's supported, what isn't, and the full design vision across file-based, cloud, MDM, and enterprise-CI methods. Read before designing any install/uninstall feature.
4
- ---
5
-
6
- # VAT Skill Install & Uninstall: Architecture and Vision
7
-
8
- ## The Problem Space
9
-
10
- Skills and plugins need to reach users' Claude installations through several distinct
11
- delivery channels. Each channel has different operators (developers, IT, Anthropic),
12
- different trust levels, and different UX requirements. VAT today only covers one of
13
- these channels.
14
-
15
- This document defines the full landscape, what VAT currently supports, what it does
16
- not, and the architectural direction for each gap.
17
-
18
- ---
19
-
20
- ## Install Method Landscape
21
-
22
- | Method | Operator | Current State | Notes |
23
- |--------|----------|---------------|-------|
24
- | **File-based: Code CLI** | Developer / IT | ✅ Supported | `~/.claude/plugins/` — only supported method |
25
- | **File-based: Claude Desktop** | Developer / IT | ❌ Not supported | Different config path; same file structure expected |
26
- | **npm postinstall** | IT / end-user | ✅ Supported | Requires `vibe-agent-toolkit` as runtime dep |
27
- | **Managed settings file** | IT / Enterprise | ✅ Partial | `vat verify` validates; deployment is out of scope |
28
- | **MDM-driven npm install** | IT | ✅ Works (via postinstall) | Jamf/SCCM/Intune runs `npm install -g` |
29
- | **Anthropic Cloud / claude.ai org** | Org admin | ❌ Not supported | No API available; future Anthropic feature |
30
- | **GitHub CI enterprise push** | IT / DevOps | ❌ Not supported | VAT design vision — see below |
31
- | **Shared network registry** | IT | ❌ Not supported | Internal npm registry approach |
32
-
33
- ---
34
-
35
- ## What VAT Currently Supports
36
-
37
- ### File-based install: Claude Code CLI only
38
-
39
- `vat skills install` and `vat skills uninstall` operate exclusively on:
40
- ```
41
- ~/.claude/
42
- ├── plugins/
43
- │ ├── marketplaces/<marketplace>/plugins/<plugin>/ ← plugin files
44
- │ ├── cache/<marketplace>/<plugin>/<version>/ ← version cache
45
- │ ├── known_marketplaces.json
46
- │ └── installed_plugins.json
47
- ├── skills/ ← legacy skills (no plugin system)
48
- └── settings.json ← enabledPlugins, permissions
49
- ```
50
-
51
- This is the **Claude Code CLI** configuration directory. It is the only path VAT
52
- resolves. Claude Desktop uses a different path (see below) and is out of scope.
53
-
54
- ### Install sources (all resolve to the file-based method above)
55
-
56
- ```bash
57
- # npm package (downloads, extracts, copies plugin tree)
58
- vat skills install npm:@myorg/my-skills
59
-
60
- # Local directory (copies plugin tree from local path)
61
- vat skills install ./path/to/package
62
-
63
- # ZIP file
64
- vat skills install ./my-skills.zip
65
-
66
- # npm postinstall hook (triggered by npm install -g)
67
- # package.json: "postinstall": "node ./node_modules/vibe-agent-toolkit/bin/vat claude plugin install --npm-postinstall"
68
- ```
69
-
70
- ### Uninstall (current state)
71
-
72
- `vat skills uninstall` removes skills from `~/.claude/skills/` only. It does NOT
73
- remove plugin-system installs (the `~/.claude/plugins/` tree).
74
-
75
- **A full `vat plugins uninstall` command does not yet exist.** See design notes below.
76
-
77
- ---
78
-
79
- ## What VAT Does NOT Support (and Why)
80
-
81
- ### Claude Desktop file-based installs
82
-
83
- Claude Desktop on macOS uses `~/Library/Application Support/Claude/` rather than
84
- `~/.claude/`. On Windows it uses `%APPDATA%\Claude\`.
85
-
86
- **Why not supported today**: VAT's `getClaudeUserPaths()` is hardcoded to `~/.claude/`.
87
- Extending it requires detecting which applications are installed and resolving both
88
- paths. This is well-understood work with no architectural unknowns.
89
-
90
- **Architectural note**: When implemented, both paths should be handled by a single
91
- `getClaudeInstallTargets()` function returning multiple targets. CLI commands gain a
92
- `--target code-cli|desktop|all` flag. Default is `code-cli` until Desktop path
93
- handling is verified stable.
94
-
95
- ### Anthropic Cloud / claude.ai organization-level skills
96
-
97
- Anthropic operates a cloud-based skill system for claude.ai. Organization admins can
98
- manage skills for all users through the admin console. VAT has no integration with
99
- this system today because Anthropic has not published a public API for programmatic
100
- management.
101
-
102
- **Architectural note**: When Anthropic publishes an org management API, VAT should
103
- add `vat skills publish --target claude-ai` as a first-class install method. The
104
- `dist/` artifacts from `vat build` are format-compatible with this target. The gap
105
- is authentication and the API itself.
106
-
107
- ### GitHub CI enterprise push (vision)
108
-
109
- The goal: a GitHub Actions workflow in a skills repository automatically deploys
110
- skills to all users in an enterprise whenever a new version is merged to main.
111
-
112
- This is a multi-layer problem with several viable approaches:
113
-
114
- #### Approach A: MDM-integrated npm publish (recommended near-term)
115
- ```
116
- GitHub Actions on release →
117
- npm publish @myorg/my-skills →
118
- MDM policy (Jamf/SCCM/Intune) detects new package version →
119
- Runs: npm install -g @myorg/my-skills
120
- → postinstall hook installs plugin to user's ~/.claude/
121
- ```
122
- VAT already supports this end-to-end. The MDM layer is outside VAT's scope and is
123
- configured by IT using standard MDM software management policies. The VAT piece is
124
- complete; IT must configure the npm-to-MDM trigger.
125
-
126
- #### Approach B: Managed settings deployment (near-term, no MDM required)
127
- ```
128
- GitHub Actions on release →
129
- vat build &&
130
- Generates managed-settings.json with plugin enablement →
131
- Deploys managed-settings.json to shared network path or cloud storage →
132
- Claude Code reads managed-settings.json at startup
133
- ```
134
- `vat verify` validates `managed-settings.json` today. The deployment step is IT's
135
- responsibility. This approach requires no per-machine npm install; Claude Code reads
136
- the settings file directly if it is placed at the expected path or if the path is
137
- configured.
138
-
139
- **Gap**: VAT does not yet have a `vat claude deploy` command that handles the push
140
- step. Adding this would require IT to configure cloud storage credentials once.
141
-
142
- #### Approach C: Anthropic org API (long-term, requires Anthropic)
143
- ```
144
- GitHub Actions on release →
145
- vat skills publish --target claude-ai --org myorg →
146
- Anthropic API activates skills for all org users in claude.ai
147
- ```
148
- Blocked on Anthropic publishing an org management API. VAT's `dist/` output format
149
- is already designed for this target.
150
-
151
- ---
152
-
153
- ## `vat plugins uninstall` — Design Intent
154
-
155
- A `vat plugins uninstall <plugin>@<marketplace>` command should exist but does not yet.
156
-
157
- ### What it must reverse
158
-
159
- Uninstalling a plugin installed via the file-based method requires reversing 5 artifacts:
160
-
161
- 1. Delete `~/.claude/plugins/marketplaces/<marketplace>/plugins/<plugin>/`
162
- 2. Delete `~/.claude/plugins/cache/<marketplace>/<plugin>/<version>/`
163
- 3. Remove `<plugin>@<marketplace>` from `installed_plugins.json`
164
- 4. Remove `<marketplace>` from `known_marketplaces.json` if no plugins remain
165
- 5. Remove `enabledPlugins[<plugin>@<marketplace>]` from `settings.json`
166
-
167
- ### Design decisions
168
-
169
- - **Idempotent**: exit 0 if plugin not found — safe for IT automation scripts
170
- - **Not-VAT-installed case**: if plugin directory exists but no registry entries, delete
171
- the directory and clean settings.json; emit a warning that the plugin was not
172
- installed via VAT
173
- - **`--dry-run`**: show what would be deleted without deleting (follow `vat skills uninstall` pattern)
174
- - **`--target`**: code-cli | desktop | all (default: code-cli until Desktop is implemented)
175
- - **`vat plugins list`**: companion command to show installed plugins — needed for
176
- discoverability before uninstalling
177
-
178
- ### Implementation location
179
-
180
- Per the CLI "dumb orchestration" principle:
181
- - Logic: `packages/claude-marketplace/src/install/plugin-uninstall.ts` (new file alongside plugin-registry.ts)
182
- - CLI: `packages/cli/src/commands/plugins/uninstall.ts` (thin wrapper)
183
- - New command group: `vat plugins` with subcommands `list` and `uninstall`
184
-
185
- ---
186
-
187
- ## Guidance for Adopters
188
-
189
- ### For end-user / IT-managed deployments (recommended)
190
-
191
- Add `vibe-agent-toolkit` as a **runtime dependency** (not devDependencies) and use
192
- the local node_modules binary in postinstall. Never assume `vat` is globally installed.
193
-
194
- ```json
195
- {
196
- "dependencies": { "vibe-agent-toolkit": "latest" },
197
- "scripts": {
198
- "postinstall": "node ./node_modules/vibe-agent-toolkit/bin/vat claude plugin install --npm-postinstall || exit 0"
199
- }
200
- }
201
- ```
202
-
203
- IT runs: `npm install -g @myorg/my-skills` — no other tools required on the user's machine.
204
-
205
- For private GitHub Packages registries, IT pre-configures `.npmrc` with a read-only
206
- token for the `@myorg` scope. End users do not need to know about registries or tokens.
207
-
208
- ### For developer self-install
209
-
210
- ```bash
211
- npx vibe-agent-toolkit skills install npm:@myorg/my-skills
212
- ```
213
-
214
- ### For enterprise CI (near-term best option)
215
-
216
- Use Approach A (MDM-integrated npm publish) or Approach B (managed-settings deployment).
217
- Both work today with no additional VAT features.
218
-
219
- ---
220
-
221
- ## What Is Out of Scope for VAT
222
-
223
- VAT is a **packaging and local install tool**. The following are permanently out of scope:
224
-
225
- - MDM software management configuration (Jamf, SCCM, Intune policies)
226
- - Internal npm registry setup and authentication management
227
- - Anthropic cloud API authentication or org provisioning
228
- - Per-user credential management for private registries
229
- - Claude Desktop configuration (until Desktop and Code CLI paths converge)
@@ -1,229 +0,0 @@
1
- ---
2
- name: install
3
- description: VAT skill/plugin install and uninstall architecture — what's supported, what isn't, and the full design vision across file-based, cloud, MDM, and enterprise-CI methods. Read before designing any install/uninstall feature.
4
- ---
5
-
6
- # VAT Skill Install & Uninstall: Architecture and Vision
7
-
8
- ## The Problem Space
9
-
10
- Skills and plugins need to reach users' Claude installations through several distinct
11
- delivery channels. Each channel has different operators (developers, IT, Anthropic),
12
- different trust levels, and different UX requirements. VAT today only covers one of
13
- these channels.
14
-
15
- This document defines the full landscape, what VAT currently supports, what it does
16
- not, and the architectural direction for each gap.
17
-
18
- ---
19
-
20
- ## Install Method Landscape
21
-
22
- | Method | Operator | Current State | Notes |
23
- |--------|----------|---------------|-------|
24
- | **File-based: Code CLI** | Developer / IT | ✅ Supported | `~/.claude/plugins/` — only supported method |
25
- | **File-based: Claude Desktop** | Developer / IT | ❌ Not supported | Different config path; same file structure expected |
26
- | **npm postinstall** | IT / end-user | ✅ Supported | Requires `vibe-agent-toolkit` as runtime dep |
27
- | **Managed settings file** | IT / Enterprise | ✅ Partial | `vat verify` validates; deployment is out of scope |
28
- | **MDM-driven npm install** | IT | ✅ Works (via postinstall) | Jamf/SCCM/Intune runs `npm install -g` |
29
- | **Anthropic Cloud / claude.ai org** | Org admin | ❌ Not supported | No API available; future Anthropic feature |
30
- | **GitHub CI enterprise push** | IT / DevOps | ❌ Not supported | VAT design vision — see below |
31
- | **Shared network registry** | IT | ❌ Not supported | Internal npm registry approach |
32
-
33
- ---
34
-
35
- ## What VAT Currently Supports
36
-
37
- ### File-based install: Claude Code CLI only
38
-
39
- `vat skills install` and `vat skills uninstall` operate exclusively on:
40
- ```
41
- ~/.claude/
42
- ├── plugins/
43
- │ ├── marketplaces/<marketplace>/plugins/<plugin>/ ← plugin files
44
- │ ├── cache/<marketplace>/<plugin>/<version>/ ← version cache
45
- │ ├── known_marketplaces.json
46
- │ └── installed_plugins.json
47
- ├── skills/ ← legacy skills (no plugin system)
48
- └── settings.json ← enabledPlugins, permissions
49
- ```
50
-
51
- This is the **Claude Code CLI** configuration directory. It is the only path VAT
52
- resolves. Claude Desktop uses a different path (see below) and is out of scope.
53
-
54
- ### Install sources (all resolve to the file-based method above)
55
-
56
- ```bash
57
- # npm package (downloads, extracts, copies plugin tree)
58
- vat skills install npm:@myorg/my-skills
59
-
60
- # Local directory (copies plugin tree from local path)
61
- vat skills install ./path/to/package
62
-
63
- # ZIP file
64
- vat skills install ./my-skills.zip
65
-
66
- # npm postinstall hook (triggered by npm install -g)
67
- # package.json: "postinstall": "node ./node_modules/vibe-agent-toolkit/bin/vat claude plugin install --npm-postinstall"
68
- ```
69
-
70
- ### Uninstall (current state)
71
-
72
- `vat skills uninstall` removes skills from `~/.claude/skills/` only. It does NOT
73
- remove plugin-system installs (the `~/.claude/plugins/` tree).
74
-
75
- **A full `vat plugins uninstall` command does not yet exist.** See design notes below.
76
-
77
- ---
78
-
79
- ## What VAT Does NOT Support (and Why)
80
-
81
- ### Claude Desktop file-based installs
82
-
83
- Claude Desktop on macOS uses `~/Library/Application Support/Claude/` rather than
84
- `~/.claude/`. On Windows it uses `%APPDATA%\Claude\`.
85
-
86
- **Why not supported today**: VAT's `getClaudeUserPaths()` is hardcoded to `~/.claude/`.
87
- Extending it requires detecting which applications are installed and resolving both
88
- paths. This is well-understood work with no architectural unknowns.
89
-
90
- **Architectural note**: When implemented, both paths should be handled by a single
91
- `getClaudeInstallTargets()` function returning multiple targets. CLI commands gain a
92
- `--target code-cli|desktop|all` flag. Default is `code-cli` until Desktop path
93
- handling is verified stable.
94
-
95
- ### Anthropic Cloud / claude.ai organization-level skills
96
-
97
- Anthropic operates a cloud-based skill system for claude.ai. Organization admins can
98
- manage skills for all users through the admin console. VAT has no integration with
99
- this system today because Anthropic has not published a public API for programmatic
100
- management.
101
-
102
- **Architectural note**: When Anthropic publishes an org management API, VAT should
103
- add `vat skills publish --target claude-ai` as a first-class install method. The
104
- `dist/` artifacts from `vat build` are format-compatible with this target. The gap
105
- is authentication and the API itself.
106
-
107
- ### GitHub CI enterprise push (vision)
108
-
109
- The goal: a GitHub Actions workflow in a skills repository automatically deploys
110
- skills to all users in an enterprise whenever a new version is merged to main.
111
-
112
- This is a multi-layer problem with several viable approaches:
113
-
114
- #### Approach A: MDM-integrated npm publish (recommended near-term)
115
- ```
116
- GitHub Actions on release →
117
- npm publish @myorg/my-skills →
118
- MDM policy (Jamf/SCCM/Intune) detects new package version →
119
- Runs: npm install -g @myorg/my-skills
120
- → postinstall hook installs plugin to user's ~/.claude/
121
- ```
122
- VAT already supports this end-to-end. The MDM layer is outside VAT's scope and is
123
- configured by IT using standard MDM software management policies. The VAT piece is
124
- complete; IT must configure the npm-to-MDM trigger.
125
-
126
- #### Approach B: Managed settings deployment (near-term, no MDM required)
127
- ```
128
- GitHub Actions on release →
129
- vat build &&
130
- Generates managed-settings.json with plugin enablement →
131
- Deploys managed-settings.json to shared network path or cloud storage →
132
- Claude Code reads managed-settings.json at startup
133
- ```
134
- `vat verify` validates `managed-settings.json` today. The deployment step is IT's
135
- responsibility. This approach requires no per-machine npm install; Claude Code reads
136
- the settings file directly if it is placed at the expected path or if the path is
137
- configured.
138
-
139
- **Gap**: VAT does not yet have a `vat claude deploy` command that handles the push
140
- step. Adding this would require IT to configure cloud storage credentials once.
141
-
142
- #### Approach C: Anthropic org API (long-term, requires Anthropic)
143
- ```
144
- GitHub Actions on release →
145
- vat skills publish --target claude-ai --org myorg →
146
- Anthropic API activates skills for all org users in claude.ai
147
- ```
148
- Blocked on Anthropic publishing an org management API. VAT's `dist/` output format
149
- is already designed for this target.
150
-
151
- ---
152
-
153
- ## `vat plugins uninstall` — Design Intent
154
-
155
- A `vat plugins uninstall <plugin>@<marketplace>` command should exist but does not yet.
156
-
157
- ### What it must reverse
158
-
159
- Uninstalling a plugin installed via the file-based method requires reversing 5 artifacts:
160
-
161
- 1. Delete `~/.claude/plugins/marketplaces/<marketplace>/plugins/<plugin>/`
162
- 2. Delete `~/.claude/plugins/cache/<marketplace>/<plugin>/<version>/`
163
- 3. Remove `<plugin>@<marketplace>` from `installed_plugins.json`
164
- 4. Remove `<marketplace>` from `known_marketplaces.json` if no plugins remain
165
- 5. Remove `enabledPlugins[<plugin>@<marketplace>]` from `settings.json`
166
-
167
- ### Design decisions
168
-
169
- - **Idempotent**: exit 0 if plugin not found — safe for IT automation scripts
170
- - **Not-VAT-installed case**: if plugin directory exists but no registry entries, delete
171
- the directory and clean settings.json; emit a warning that the plugin was not
172
- installed via VAT
173
- - **`--dry-run`**: show what would be deleted without deleting (follow `vat skills uninstall` pattern)
174
- - **`--target`**: code-cli | desktop | all (default: code-cli until Desktop is implemented)
175
- - **`vat plugins list`**: companion command to show installed plugins — needed for
176
- discoverability before uninstalling
177
-
178
- ### Implementation location
179
-
180
- Per the CLI "dumb orchestration" principle:
181
- - Logic: `packages/claude-marketplace/src/install/plugin-uninstall.ts` (new file alongside plugin-registry.ts)
182
- - CLI: `packages/cli/src/commands/plugins/uninstall.ts` (thin wrapper)
183
- - New command group: `vat plugins` with subcommands `list` and `uninstall`
184
-
185
- ---
186
-
187
- ## Guidance for Adopters
188
-
189
- ### For end-user / IT-managed deployments (recommended)
190
-
191
- Add `vibe-agent-toolkit` as a **runtime dependency** (not devDependencies) and use
192
- the local node_modules binary in postinstall. Never assume `vat` is globally installed.
193
-
194
- ```json
195
- {
196
- "dependencies": { "vibe-agent-toolkit": "latest" },
197
- "scripts": {
198
- "postinstall": "node ./node_modules/vibe-agent-toolkit/bin/vat claude plugin install --npm-postinstall || exit 0"
199
- }
200
- }
201
- ```
202
-
203
- IT runs: `npm install -g @myorg/my-skills` — no other tools required on the user's machine.
204
-
205
- For private GitHub Packages registries, IT pre-configures `.npmrc` with a read-only
206
- token for the `@myorg` scope. End users do not need to know about registries or tokens.
207
-
208
- ### For developer self-install
209
-
210
- ```bash
211
- npx vibe-agent-toolkit skills install npm:@myorg/my-skills
212
- ```
213
-
214
- ### For enterprise CI (near-term best option)
215
-
216
- Use Approach A (MDM-integrated npm publish) or Approach B (managed-settings deployment).
217
- Both work today with no additional VAT features.
218
-
219
- ---
220
-
221
- ## What Is Out of Scope for VAT
222
-
223
- VAT is a **packaging and local install tool**. The following are permanently out of scope:
224
-
225
- - MDM software management configuration (Jamf, SCCM, Intune policies)
226
- - Internal npm registry setup and authentication management
227
- - Anthropic cloud API authentication or org provisioning
228
- - Per-user credential management for private registries
229
- - Claude Desktop configuration (until Desktop and Code CLI paths converge)
@@ -1,48 +0,0 @@
1
- /**
2
- * Generated from markdown file - DO NOT EDIT
3
- */
4
-
5
- export const meta = {
6
- name: "debugging",
7
- description: "Debug unexpected VAT behavior, reproduce bugs, test local vibe-agent-toolkit changes in adopter projects (VAT_ROOT_DIR), write failing tests before fixing, and validate fixes with the full build pipeline before publishing"
8
- };
9
-
10
- export const text = "\n# Debugging & Testing VAT Fixes\n\nUse this skill when VAT itself is behaving unexpectedly, you suspect a VAT bug,\nor you need to test a local code change to vibe-agent-toolkit in another project.\n\n## Step 1: Confirm the Version\n\nFirst, confirm which version of VAT is running:\n\n\`\`\`bash\n# In the adopter project\ncat node_modules/@vibe-agent-toolkit/cli/package.json | grep \'\"version\"\'\n\n# Or check the binary directly\nvat --version\n\`\`\`\n\nIf the installed version is behind the monorepo, you may need \`VAT_ROOT_DIR\` (see below)\nto test with the local build instead.\n\n## Step 2: Enable Debug Output\n\n\`\`\`bash\nVAT_DEBUG=1 vat <command>\n\`\`\`\n\n\`VAT_DEBUG=1\` prints context detection info, binary path resolution, and config loading\ndetails. Use it to confirm which config file and which binary are actually being used.\n\nOther useful env vars:\n- \`VAT_TEST_ROOT=/path\` — Override the project root VAT uses (skips \`.git\` detection)\n- \`VAT_TEST_CONFIG=/path/to/config.yaml\` — Override the config file path\n\n## Step 3: Reproduce With the Local Monorepo Build\n\nTo test a fix from your local vibe-agent-toolkit checkout in an adopter project\n(e.g. lfa-cc-marketplace) **without publishing to npm**:\n\n### Option A: VAT_ROOT_DIR (recommended)\n\n\`\`\`bash\n# In your shell (or .env.local in the adopter project)\nexport VAT_ROOT_DIR=/path/to/vibe-agent-toolkit\n\n# Build the monorepo first — always required\ncd /path/to/vibe-agent-toolkit && bun run build\n\n# Now any vat command in the adopter project uses your local build\ncd /path/to/adopter-project\nvat resources validate .\n\`\`\`\n\nThe globally-installed \`vat\` wrapper detects \`VAT_ROOT_DIR\` and re-dispatches\nto \`$VAT_ROOT_DIR/packages/cli/dist/bin.js\`.\n\n### Option B: Direct path (no global install needed)\n\n\`\`\`bash\n# Build first\ncd /path/to/vibe-agent-toolkit && bun run build\n\n# Then invoke directly\nnode /path/to/vibe-agent-toolkit/packages/cli/dist/bin/vat.js resources validate .\n\`\`\`\n\n## Step 4: Write a Failing Test Before Fixing\n\nBefore changing VAT source code, write a test that reproduces the bug:\n\n- **Unit bug** → add a test in \`packages/<package>/test/\`\n- **CLI behavior** → add an integration test in \`packages/cli/test/integration/\`\n- **End-to-end workflow** → add a system test in \`packages/cli/test/system/\`\n\nSee [docs/writing-tests.md](../../../../docs/writing-tests.md) for test patterns and\nthe unit/integration/system classification guide.\n\n## Step 5: Validate Before Committing\n\nAfter fixing, run the full pipeline from the monorepo root:\n\n\`\`\`bash\nbun run validate\n\`\`\`\n\nThis runs unit → integration → system tests with caching. If tests pass, the fix\nis safe to commit. Do not commit until \`bun run validate\` passes.\n\n## Quick Diagnosis Checklist\n\n| Symptom | First thing to check |\n|---|---|\n| \`vat\` command not found | \`npm install -g vibe-agent-toolkit\` |\n| Wrong results in adopter project | Confirm installed version matches expected RC |\n| Fix applied but adopter still wrong | Did you \`bun run build\` after the change? |\n| Validation slow every time | \`git rev-parse --git-dir\` — are you in a git repo? |\n| Config not loading | \`VAT_DEBUG=1 vat <command>\` to see which config is found |\n| Test passes locally, fails CI | Windows path separator? Use \`toForwardSlash()\` from \`@vibe-agent-toolkit/utils\` |\n\n## See Also\n\n- [docs/debug-and-test-vat-fixes.md](../../../../docs/debug-and-test-vat-fixes.md) — Full reference\n- [docs/writing-tests.md](../../../../docs/writing-tests.md) — Test patterns and classification\n- [packages/cli/CLAUDE.md](../../../cli/CLAUDE.md) — CLI development guidelines\n";
11
-
12
- export const fragments = {
13
- step1ConfirmTheVersion: {
14
- header: "## Step 1: Confirm the Version",
15
- body: "First, confirm which version of VAT is running:\n\n\`\`\`bash\n# In the adopter project\ncat node_modules/@vibe-agent-toolkit/cli/package.json | grep \'\"version\"\'\n\n# Or check the binary directly\nvat --version\n\`\`\`\n\nIf the installed version is behind the monorepo, you may need \`VAT_ROOT_DIR\` (see below)\nto test with the local build instead.",
16
- text: "## Step 1: Confirm the Version\n\nFirst, confirm which version of VAT is running:\n\n\`\`\`bash\n# In the adopter project\ncat node_modules/@vibe-agent-toolkit/cli/package.json | grep \'\"version\"\'\n\n# Or check the binary directly\nvat --version\n\`\`\`\n\nIf the installed version is behind the monorepo, you may need \`VAT_ROOT_DIR\` (see below)\nto test with the local build instead."
17
- },
18
- step2EnableDebugOutput: {
19
- header: "## Step 2: Enable Debug Output",
20
- body: "\`\`\`bash\nVAT_DEBUG=1 vat <command>\n\`\`\`\n\n\`VAT_DEBUG=1\` prints context detection info, binary path resolution, and config loading\ndetails. Use it to confirm which config file and which binary are actually being used.\n\nOther useful env vars:\n- \`VAT_TEST_ROOT=/path\` — Override the project root VAT uses (skips \`.git\` detection)\n- \`VAT_TEST_CONFIG=/path/to/config.yaml\` — Override the config file path",
21
- text: "## Step 2: Enable Debug Output\n\n\`\`\`bash\nVAT_DEBUG=1 vat <command>\n\`\`\`\n\n\`VAT_DEBUG=1\` prints context detection info, binary path resolution, and config loading\ndetails. Use it to confirm which config file and which binary are actually being used.\n\nOther useful env vars:\n- \`VAT_TEST_ROOT=/path\` — Override the project root VAT uses (skips \`.git\` detection)\n- \`VAT_TEST_CONFIG=/path/to/config.yaml\` — Override the config file path"
22
- },
23
- step3ReproduceWithTheLocalMonorepoBuild: {
24
- header: "## Step 3: Reproduce With the Local Monorepo Build",
25
- body: "To test a fix from your local vibe-agent-toolkit checkout in an adopter project\n(e.g. lfa-cc-marketplace) **without publishing to npm**:\n\n### Option A: VAT_ROOT_DIR (recommended)\n\n\`\`\`bash\n# In your shell (or .env.local in the adopter project)\nexport VAT_ROOT_DIR=/path/to/vibe-agent-toolkit\n\n# Build the monorepo first — always required\ncd /path/to/vibe-agent-toolkit && bun run build\n\n# Now any vat command in the adopter project uses your local build\ncd /path/to/adopter-project\nvat resources validate .\n\`\`\`\n\nThe globally-installed \`vat\` wrapper detects \`VAT_ROOT_DIR\` and re-dispatches\nto \`$VAT_ROOT_DIR/packages/cli/dist/bin.js\`.\n\n### Option B: Direct path (no global install needed)\n\n\`\`\`bash\n# Build first\ncd /path/to/vibe-agent-toolkit && bun run build\n\n# Then invoke directly\nnode /path/to/vibe-agent-toolkit/packages/cli/dist/bin/vat.js resources validate .\n\`\`\`",
26
- text: "## Step 3: Reproduce With the Local Monorepo Build\n\nTo test a fix from your local vibe-agent-toolkit checkout in an adopter project\n(e.g. lfa-cc-marketplace) **without publishing to npm**:\n\n### Option A: VAT_ROOT_DIR (recommended)\n\n\`\`\`bash\n# In your shell (or .env.local in the adopter project)\nexport VAT_ROOT_DIR=/path/to/vibe-agent-toolkit\n\n# Build the monorepo first — always required\ncd /path/to/vibe-agent-toolkit && bun run build\n\n# Now any vat command in the adopter project uses your local build\ncd /path/to/adopter-project\nvat resources validate .\n\`\`\`\n\nThe globally-installed \`vat\` wrapper detects \`VAT_ROOT_DIR\` and re-dispatches\nto \`$VAT_ROOT_DIR/packages/cli/dist/bin.js\`.\n\n### Option B: Direct path (no global install needed)\n\n\`\`\`bash\n# Build first\ncd /path/to/vibe-agent-toolkit && bun run build\n\n# Then invoke directly\nnode /path/to/vibe-agent-toolkit/packages/cli/dist/bin/vat.js resources validate .\n\`\`\`"
27
- },
28
- step4WriteAFailingTestBeforeFixing: {
29
- header: "## Step 4: Write a Failing Test Before Fixing",
30
- body: "Before changing VAT source code, write a test that reproduces the bug:\n\n- **Unit bug** → add a test in \`packages/<package>/test/\`\n- **CLI behavior** → add an integration test in \`packages/cli/test/integration/\`\n- **End-to-end workflow** → add a system test in \`packages/cli/test/system/\`\n\nSee [docs/writing-tests.md](../../../../docs/writing-tests.md) for test patterns and\nthe unit/integration/system classification guide.",
31
- text: "## Step 4: Write a Failing Test Before Fixing\n\nBefore changing VAT source code, write a test that reproduces the bug:\n\n- **Unit bug** → add a test in \`packages/<package>/test/\`\n- **CLI behavior** → add an integration test in \`packages/cli/test/integration/\`\n- **End-to-end workflow** → add a system test in \`packages/cli/test/system/\`\n\nSee [docs/writing-tests.md](../../../../docs/writing-tests.md) for test patterns and\nthe unit/integration/system classification guide."
32
- },
33
- step5ValidateBeforeCommitting: {
34
- header: "## Step 5: Validate Before Committing",
35
- body: "After fixing, run the full pipeline from the monorepo root:\n\n\`\`\`bash\nbun run validate\n\`\`\`\n\nThis runs unit → integration → system tests with caching. If tests pass, the fix\nis safe to commit. Do not commit until \`bun run validate\` passes.",
36
- text: "## Step 5: Validate Before Committing\n\nAfter fixing, run the full pipeline from the monorepo root:\n\n\`\`\`bash\nbun run validate\n\`\`\`\n\nThis runs unit → integration → system tests with caching. If tests pass, the fix\nis safe to commit. Do not commit until \`bun run validate\` passes."
37
- },
38
- quickDiagnosisChecklist: {
39
- header: "## Quick Diagnosis Checklist",
40
- body: "| Symptom | First thing to check |\n|---|---|\n| \`vat\` command not found | \`npm install -g vibe-agent-toolkit\` |\n| Wrong results in adopter project | Confirm installed version matches expected RC |\n| Fix applied but adopter still wrong | Did you \`bun run build\` after the change? |\n| Validation slow every time | \`git rev-parse --git-dir\` — are you in a git repo? |\n| Config not loading | \`VAT_DEBUG=1 vat <command>\` to see which config is found |\n| Test passes locally, fails CI | Windows path separator? Use \`toForwardSlash()\` from \`@vibe-agent-toolkit/utils\` |",
41
- text: "## Quick Diagnosis Checklist\n\n| Symptom | First thing to check |\n|---|---|\n| \`vat\` command not found | \`npm install -g vibe-agent-toolkit\` |\n| Wrong results in adopter project | Confirm installed version matches expected RC |\n| Fix applied but adopter still wrong | Did you \`bun run build\` after the change? |\n| Validation slow every time | \`git rev-parse --git-dir\` — are you in a git repo? |\n| Config not loading | \`VAT_DEBUG=1 vat <command>\` to see which config is found |\n| Test passes locally, fails CI | Windows path separator? Use \`toForwardSlash()\` from \`@vibe-agent-toolkit/utils\` |"
42
- },
43
- seeAlso: {
44
- header: "## See Also",
45
- body: "- [docs/debug-and-test-vat-fixes.md](../../../../docs/debug-and-test-vat-fixes.md) — Full reference\n- [docs/writing-tests.md](../../../../docs/writing-tests.md) — Test patterns and classification\n- [packages/cli/CLAUDE.md](../../../cli/CLAUDE.md) — CLI development guidelines",
46
- text: "## See Also\n\n- [docs/debug-and-test-vat-fixes.md](../../../../docs/debug-and-test-vat-fixes.md) — Full reference\n- [docs/writing-tests.md](../../../../docs/writing-tests.md) — Test patterns and classification\n- [packages/cli/CLAUDE.md](../../../cli/CLAUDE.md) — CLI development guidelines"
47
- }
48
- };
@@ -1,48 +0,0 @@
1
- /**
2
- * Generated from markdown file - DO NOT EDIT
3
- */
4
-
5
- export const meta = {
6
- name: "install",
7
- description: "VAT skill/plugin install and uninstall architecture — what\'s supported, what isn\'t, and the full design vision across file-based, cloud, MDM, and enterprise-CI methods. Read before designing any install/uninstall feature."
8
- };
9
-
10
- export const text = "\n# VAT Skill Install & Uninstall: Architecture and Vision\n\n## The Problem Space\n\nSkills and plugins need to reach users\' Claude installations through several distinct\ndelivery channels. Each channel has different operators (developers, IT, Anthropic),\ndifferent trust levels, and different UX requirements. VAT today only covers one of\nthese channels.\n\nThis document defines the full landscape, what VAT currently supports, what it does\nnot, and the architectural direction for each gap.\n\n---\n\n## Install Method Landscape\n\n| Method | Operator | Current State | Notes |\n|--------|----------|---------------|-------|\n| **File-based: Code CLI** | Developer / IT | ✅ Supported | \`~/.claude/plugins/\` — only supported method |\n| **File-based: Claude Desktop** | Developer / IT | ❌ Not supported | Different config path; same file structure expected |\n| **npm postinstall** | IT / end-user | ✅ Supported | Requires \`vibe-agent-toolkit\` as runtime dep |\n| **Managed settings file** | IT / Enterprise | ✅ Partial | \`vat verify\` validates; deployment is out of scope |\n| **MDM-driven npm install** | IT | ✅ Works (via postinstall) | Jamf/SCCM/Intune runs \`npm install -g\` |\n| **Anthropic Cloud / claude.ai org** | Org admin | ❌ Not supported | No API available; future Anthropic feature |\n| **GitHub CI enterprise push** | IT / DevOps | ❌ Not supported | VAT design vision — see below |\n| **Shared network registry** | IT | ❌ Not supported | Internal npm registry approach |\n\n---\n\n## What VAT Currently Supports\n\n### File-based install: Claude Code CLI only\n\n\`vat skills install\` and \`vat skills uninstall\` operate exclusively on:\n\`\`\`\n~/.claude/\n├── plugins/\n│ ├── marketplaces/<marketplace>/plugins/<plugin>/ ← plugin files\n│ ├── cache/<marketplace>/<plugin>/<version>/ ← version cache\n│ ├── known_marketplaces.json\n│ └── installed_plugins.json\n├── skills/ ← legacy skills (no plugin system)\n└── settings.json ← enabledPlugins, permissions\n\`\`\`\n\nThis is the **Claude Code CLI** configuration directory. It is the only path VAT\nresolves. Claude Desktop uses a different path (see below) and is out of scope.\n\n### Install sources (all resolve to the file-based method above)\n\n\`\`\`bash\n# npm package (downloads, extracts, copies plugin tree)\nvat skills install npm:@myorg/my-skills\n\n# Local directory (copies plugin tree from local path)\nvat skills install ./path/to/package\n\n# ZIP file\nvat skills install ./my-skills.zip\n\n# npm postinstall hook (triggered by npm install -g)\n# package.json: \"postinstall\": \"node ./node_modules/vibe-agent-toolkit/bin/vat claude plugin install --npm-postinstall\"\n\`\`\`\n\n### Uninstall (current state)\n\n\`vat skills uninstall\` removes skills from \`~/.claude/skills/\` only. It does NOT\nremove plugin-system installs (the \`~/.claude/plugins/\` tree).\n\n**A full \`vat plugins uninstall\` command does not yet exist.** See design notes below.\n\n---\n\n## What VAT Does NOT Support (and Why)\n\n### Claude Desktop file-based installs\n\nClaude Desktop on macOS uses \`~/Library/Application Support/Claude/\` rather than\n\`~/.claude/\`. On Windows it uses \`%APPDATA%\\Claude\\\`.\n\n**Why not supported today**: VAT\'s \`getClaudeUserPaths()\` is hardcoded to \`~/.claude/\`.\nExtending it requires detecting which applications are installed and resolving both\npaths. This is well-understood work with no architectural unknowns.\n\n**Architectural note**: When implemented, both paths should be handled by a single\n\`getClaudeInstallTargets()\` function returning multiple targets. CLI commands gain a\n\`--target code-cli|desktop|all\` flag. Default is \`code-cli\` until Desktop path\nhandling is verified stable.\n\n### Anthropic Cloud / claude.ai organization-level skills\n\nAnthropic operates a cloud-based skill system for claude.ai. Organization admins can\nmanage skills for all users through the admin console. VAT has no integration with\nthis system today because Anthropic has not published a public API for programmatic\nmanagement.\n\n**Architectural note**: When Anthropic publishes an org management API, VAT should\nadd \`vat skills publish --target claude-ai\` as a first-class install method. The\n\`dist/\` artifacts from \`vat build\` are format-compatible with this target. The gap\nis authentication and the API itself.\n\n### GitHub CI enterprise push (vision)\n\nThe goal: a GitHub Actions workflow in a skills repository automatically deploys\nskills to all users in an enterprise whenever a new version is merged to main.\n\nThis is a multi-layer problem with several viable approaches:\n\n#### Approach A: MDM-integrated npm publish (recommended near-term)\n\`\`\`\nGitHub Actions on release →\n npm publish @myorg/my-skills →\n MDM policy (Jamf/SCCM/Intune) detects new package version →\n Runs: npm install -g @myorg/my-skills\n → postinstall hook installs plugin to user\'s ~/.claude/\n\`\`\`\nVAT already supports this end-to-end. The MDM layer is outside VAT\'s scope and is\nconfigured by IT using standard MDM software management policies. The VAT piece is\ncomplete; IT must configure the npm-to-MDM trigger.\n\n#### Approach B: Managed settings deployment (near-term, no MDM required)\n\`\`\`\nGitHub Actions on release →\n vat build &&\n Generates managed-settings.json with plugin enablement →\n Deploys managed-settings.json to shared network path or cloud storage →\n Claude Code reads managed-settings.json at startup\n\`\`\`\n\`vat verify\` validates \`managed-settings.json\` today. The deployment step is IT\'s\nresponsibility. This approach requires no per-machine npm install; Claude Code reads\nthe settings file directly if it is placed at the expected path or if the path is\nconfigured.\n\n**Gap**: VAT does not yet have a \`vat claude deploy\` command that handles the push\nstep. Adding this would require IT to configure cloud storage credentials once.\n\n#### Approach C: Anthropic org API (long-term, requires Anthropic)\n\`\`\`\nGitHub Actions on release →\n vat skills publish --target claude-ai --org myorg →\n Anthropic API activates skills for all org users in claude.ai\n\`\`\`\nBlocked on Anthropic publishing an org management API. VAT\'s \`dist/\` output format\nis already designed for this target.\n\n---\n\n## \`vat plugins uninstall\` — Design Intent\n\nA \`vat plugins uninstall <plugin>@<marketplace>\` command should exist but does not yet.\n\n### What it must reverse\n\nUninstalling a plugin installed via the file-based method requires reversing 5 artifacts:\n\n1. Delete \`~/.claude/plugins/marketplaces/<marketplace>/plugins/<plugin>/\`\n2. Delete \`~/.claude/plugins/cache/<marketplace>/<plugin>/<version>/\`\n3. Remove \`<plugin>@<marketplace>\` from \`installed_plugins.json\`\n4. Remove \`<marketplace>\` from \`known_marketplaces.json\` if no plugins remain\n5. Remove \`enabledPlugins[<plugin>@<marketplace>]\` from \`settings.json\`\n\n### Design decisions\n\n- **Idempotent**: exit 0 if plugin not found — safe for IT automation scripts\n- **Not-VAT-installed case**: if plugin directory exists but no registry entries, delete\n the directory and clean settings.json; emit a warning that the plugin was not\n installed via VAT\n- **\`--dry-run\`**: show what would be deleted without deleting (follow \`vat skills uninstall\` pattern)\n- **\`--target\`**: code-cli | desktop | all (default: code-cli until Desktop is implemented)\n- **\`vat plugins list\`**: companion command to show installed plugins — needed for\n discoverability before uninstalling\n\n### Implementation location\n\nPer the CLI \"dumb orchestration\" principle:\n- Logic: \`packages/claude-marketplace/src/install/plugin-uninstall.ts\` (new file alongside plugin-registry.ts)\n- CLI: \`packages/cli/src/commands/plugins/uninstall.ts\` (thin wrapper)\n- New command group: \`vat plugins\` with subcommands \`list\` and \`uninstall\`\n\n---\n\n## Guidance for Adopters\n\n### For end-user / IT-managed deployments (recommended)\n\nAdd \`vibe-agent-toolkit\` as a **runtime dependency** (not devDependencies) and use\nthe local node_modules binary in postinstall. Never assume \`vat\` is globally installed.\n\n\`\`\`json\n{\n \"dependencies\": { \"vibe-agent-toolkit\": \"latest\" },\n \"scripts\": {\n \"postinstall\": \"node ./node_modules/vibe-agent-toolkit/bin/vat claude plugin install --npm-postinstall || exit 0\"\n }\n}\n\`\`\`\n\nIT runs: \`npm install -g @myorg/my-skills\` — no other tools required on the user\'s machine.\n\nFor private GitHub Packages registries, IT pre-configures \`.npmrc\` with a read-only\ntoken for the \`@myorg\` scope. End users do not need to know about registries or tokens.\n\n### For developer self-install\n\n\`\`\`bash\nnpx vibe-agent-toolkit skills install npm:@myorg/my-skills\n\`\`\`\n\n### For enterprise CI (near-term best option)\n\nUse Approach A (MDM-integrated npm publish) or Approach B (managed-settings deployment).\nBoth work today with no additional VAT features.\n\n---\n\n## What Is Out of Scope for VAT\n\nVAT is a **packaging and local install tool**. The following are permanently out of scope:\n\n- MDM software management configuration (Jamf, SCCM, Intune policies)\n- Internal npm registry setup and authentication management\n- Anthropic cloud API authentication or org provisioning\n- Per-user credential management for private registries\n- Claude Desktop configuration (until Desktop and Code CLI paths converge)\n";
11
-
12
- export const fragments = {
13
- theProblemSpace: {
14
- header: "## The Problem Space",
15
- body: "Skills and plugins need to reach users\' Claude installations through several distinct\ndelivery channels. Each channel has different operators (developers, IT, Anthropic),\ndifferent trust levels, and different UX requirements. VAT today only covers one of\nthese channels.\n\nThis document defines the full landscape, what VAT currently supports, what it does\nnot, and the architectural direction for each gap.\n\n---",
16
- text: "## The Problem Space\n\nSkills and plugins need to reach users\' Claude installations through several distinct\ndelivery channels. Each channel has different operators (developers, IT, Anthropic),\ndifferent trust levels, and different UX requirements. VAT today only covers one of\nthese channels.\n\nThis document defines the full landscape, what VAT currently supports, what it does\nnot, and the architectural direction for each gap.\n\n---"
17
- },
18
- installMethodLandscape: {
19
- header: "## Install Method Landscape",
20
- body: "| Method | Operator | Current State | Notes |\n|--------|----------|---------------|-------|\n| **File-based: Code CLI** | Developer / IT | ✅ Supported | \`~/.claude/plugins/\` — only supported method |\n| **File-based: Claude Desktop** | Developer / IT | ❌ Not supported | Different config path; same file structure expected |\n| **npm postinstall** | IT / end-user | ✅ Supported | Requires \`vibe-agent-toolkit\` as runtime dep |\n| **Managed settings file** | IT / Enterprise | ✅ Partial | \`vat verify\` validates; deployment is out of scope |\n| **MDM-driven npm install** | IT | ✅ Works (via postinstall) | Jamf/SCCM/Intune runs \`npm install -g\` |\n| **Anthropic Cloud / claude.ai org** | Org admin | ❌ Not supported | No API available; future Anthropic feature |\n| **GitHub CI enterprise push** | IT / DevOps | ❌ Not supported | VAT design vision — see below |\n| **Shared network registry** | IT | ❌ Not supported | Internal npm registry approach |\n\n---",
21
- text: "## Install Method Landscape\n\n| Method | Operator | Current State | Notes |\n|--------|----------|---------------|-------|\n| **File-based: Code CLI** | Developer / IT | ✅ Supported | \`~/.claude/plugins/\` — only supported method |\n| **File-based: Claude Desktop** | Developer / IT | ❌ Not supported | Different config path; same file structure expected |\n| **npm postinstall** | IT / end-user | ✅ Supported | Requires \`vibe-agent-toolkit\` as runtime dep |\n| **Managed settings file** | IT / Enterprise | ✅ Partial | \`vat verify\` validates; deployment is out of scope |\n| **MDM-driven npm install** | IT | ✅ Works (via postinstall) | Jamf/SCCM/Intune runs \`npm install -g\` |\n| **Anthropic Cloud / claude.ai org** | Org admin | ❌ Not supported | No API available; future Anthropic feature |\n| **GitHub CI enterprise push** | IT / DevOps | ❌ Not supported | VAT design vision — see below |\n| **Shared network registry** | IT | ❌ Not supported | Internal npm registry approach |\n\n---"
22
- },
23
- whatVatCurrentlySupports: {
24
- header: "## What VAT Currently Supports",
25
- body: "### File-based install: Claude Code CLI only\n\n\`vat skills install\` and \`vat skills uninstall\` operate exclusively on:\n\`\`\`\n~/.claude/\n├── plugins/\n│ ├── marketplaces/<marketplace>/plugins/<plugin>/ ← plugin files\n│ ├── cache/<marketplace>/<plugin>/<version>/ ← version cache\n│ ├── known_marketplaces.json\n│ └── installed_plugins.json\n├── skills/ ← legacy skills (no plugin system)\n└── settings.json ← enabledPlugins, permissions\n\`\`\`\n\nThis is the **Claude Code CLI** configuration directory. It is the only path VAT\nresolves. Claude Desktop uses a different path (see below) and is out of scope.\n\n### Install sources (all resolve to the file-based method above)\n\n\`\`\`bash\n# npm package (downloads, extracts, copies plugin tree)\nvat skills install npm:@myorg/my-skills\n\n# Local directory (copies plugin tree from local path)\nvat skills install ./path/to/package\n\n# ZIP file\nvat skills install ./my-skills.zip\n\n# npm postinstall hook (triggered by npm install -g)\n# package.json: \"postinstall\": \"node ./node_modules/vibe-agent-toolkit/bin/vat claude plugin install --npm-postinstall\"\n\`\`\`\n\n### Uninstall (current state)\n\n\`vat skills uninstall\` removes skills from \`~/.claude/skills/\` only. It does NOT\nremove plugin-system installs (the \`~/.claude/plugins/\` tree).\n\n**A full \`vat plugins uninstall\` command does not yet exist.** See design notes below.\n\n---",
26
- text: "## What VAT Currently Supports\n\n### File-based install: Claude Code CLI only\n\n\`vat skills install\` and \`vat skills uninstall\` operate exclusively on:\n\`\`\`\n~/.claude/\n├── plugins/\n│ ├── marketplaces/<marketplace>/plugins/<plugin>/ ← plugin files\n│ ├── cache/<marketplace>/<plugin>/<version>/ ← version cache\n│ ├── known_marketplaces.json\n│ └── installed_plugins.json\n├── skills/ ← legacy skills (no plugin system)\n└── settings.json ← enabledPlugins, permissions\n\`\`\`\n\nThis is the **Claude Code CLI** configuration directory. It is the only path VAT\nresolves. Claude Desktop uses a different path (see below) and is out of scope.\n\n### Install sources (all resolve to the file-based method above)\n\n\`\`\`bash\n# npm package (downloads, extracts, copies plugin tree)\nvat skills install npm:@myorg/my-skills\n\n# Local directory (copies plugin tree from local path)\nvat skills install ./path/to/package\n\n# ZIP file\nvat skills install ./my-skills.zip\n\n# npm postinstall hook (triggered by npm install -g)\n# package.json: \"postinstall\": \"node ./node_modules/vibe-agent-toolkit/bin/vat claude plugin install --npm-postinstall\"\n\`\`\`\n\n### Uninstall (current state)\n\n\`vat skills uninstall\` removes skills from \`~/.claude/skills/\` only. It does NOT\nremove plugin-system installs (the \`~/.claude/plugins/\` tree).\n\n**A full \`vat plugins uninstall\` command does not yet exist.** See design notes below.\n\n---"
27
- },
28
- whatVatDoesNotSupportAndWhy: {
29
- header: "## What VAT Does NOT Support (and Why)",
30
- body: "### Claude Desktop file-based installs\n\nClaude Desktop on macOS uses \`~/Library/Application Support/Claude/\` rather than\n\`~/.claude/\`. On Windows it uses \`%APPDATA%\\Claude\\\`.\n\n**Why not supported today**: VAT\'s \`getClaudeUserPaths()\` is hardcoded to \`~/.claude/\`.\nExtending it requires detecting which applications are installed and resolving both\npaths. This is well-understood work with no architectural unknowns.\n\n**Architectural note**: When implemented, both paths should be handled by a single\n\`getClaudeInstallTargets()\` function returning multiple targets. CLI commands gain a\n\`--target code-cli|desktop|all\` flag. Default is \`code-cli\` until Desktop path\nhandling is verified stable.\n\n### Anthropic Cloud / claude.ai organization-level skills\n\nAnthropic operates a cloud-based skill system for claude.ai. Organization admins can\nmanage skills for all users through the admin console. VAT has no integration with\nthis system today because Anthropic has not published a public API for programmatic\nmanagement.\n\n**Architectural note**: When Anthropic publishes an org management API, VAT should\nadd \`vat skills publish --target claude-ai\` as a first-class install method. The\n\`dist/\` artifacts from \`vat build\` are format-compatible with this target. The gap\nis authentication and the API itself.\n\n### GitHub CI enterprise push (vision)\n\nThe goal: a GitHub Actions workflow in a skills repository automatically deploys\nskills to all users in an enterprise whenever a new version is merged to main.\n\nThis is a multi-layer problem with several viable approaches:\n\n#### Approach A: MDM-integrated npm publish (recommended near-term)\n\`\`\`\nGitHub Actions on release →\n npm publish @myorg/my-skills →\n MDM policy (Jamf/SCCM/Intune) detects new package version →\n Runs: npm install -g @myorg/my-skills\n → postinstall hook installs plugin to user\'s ~/.claude/\n\`\`\`\nVAT already supports this end-to-end. The MDM layer is outside VAT\'s scope and is\nconfigured by IT using standard MDM software management policies. The VAT piece is\ncomplete; IT must configure the npm-to-MDM trigger.\n\n#### Approach B: Managed settings deployment (near-term, no MDM required)\n\`\`\`\nGitHub Actions on release →\n vat build &&\n Generates managed-settings.json with plugin enablement →\n Deploys managed-settings.json to shared network path or cloud storage →\n Claude Code reads managed-settings.json at startup\n\`\`\`\n\`vat verify\` validates \`managed-settings.json\` today. The deployment step is IT\'s\nresponsibility. This approach requires no per-machine npm install; Claude Code reads\nthe settings file directly if it is placed at the expected path or if the path is\nconfigured.\n\n**Gap**: VAT does not yet have a \`vat claude deploy\` command that handles the push\nstep. Adding this would require IT to configure cloud storage credentials once.\n\n#### Approach C: Anthropic org API (long-term, requires Anthropic)\n\`\`\`\nGitHub Actions on release →\n vat skills publish --target claude-ai --org myorg →\n Anthropic API activates skills for all org users in claude.ai\n\`\`\`\nBlocked on Anthropic publishing an org management API. VAT\'s \`dist/\` output format\nis already designed for this target.\n\n---",
31
- text: "## What VAT Does NOT Support (and Why)\n\n### Claude Desktop file-based installs\n\nClaude Desktop on macOS uses \`~/Library/Application Support/Claude/\` rather than\n\`~/.claude/\`. On Windows it uses \`%APPDATA%\\Claude\\\`.\n\n**Why not supported today**: VAT\'s \`getClaudeUserPaths()\` is hardcoded to \`~/.claude/\`.\nExtending it requires detecting which applications are installed and resolving both\npaths. This is well-understood work with no architectural unknowns.\n\n**Architectural note**: When implemented, both paths should be handled by a single\n\`getClaudeInstallTargets()\` function returning multiple targets. CLI commands gain a\n\`--target code-cli|desktop|all\` flag. Default is \`code-cli\` until Desktop path\nhandling is verified stable.\n\n### Anthropic Cloud / claude.ai organization-level skills\n\nAnthropic operates a cloud-based skill system for claude.ai. Organization admins can\nmanage skills for all users through the admin console. VAT has no integration with\nthis system today because Anthropic has not published a public API for programmatic\nmanagement.\n\n**Architectural note**: When Anthropic publishes an org management API, VAT should\nadd \`vat skills publish --target claude-ai\` as a first-class install method. The\n\`dist/\` artifacts from \`vat build\` are format-compatible with this target. The gap\nis authentication and the API itself.\n\n### GitHub CI enterprise push (vision)\n\nThe goal: a GitHub Actions workflow in a skills repository automatically deploys\nskills to all users in an enterprise whenever a new version is merged to main.\n\nThis is a multi-layer problem with several viable approaches:\n\n#### Approach A: MDM-integrated npm publish (recommended near-term)\n\`\`\`\nGitHub Actions on release →\n npm publish @myorg/my-skills →\n MDM policy (Jamf/SCCM/Intune) detects new package version →\n Runs: npm install -g @myorg/my-skills\n → postinstall hook installs plugin to user\'s ~/.claude/\n\`\`\`\nVAT already supports this end-to-end. The MDM layer is outside VAT\'s scope and is\nconfigured by IT using standard MDM software management policies. The VAT piece is\ncomplete; IT must configure the npm-to-MDM trigger.\n\n#### Approach B: Managed settings deployment (near-term, no MDM required)\n\`\`\`\nGitHub Actions on release →\n vat build &&\n Generates managed-settings.json with plugin enablement →\n Deploys managed-settings.json to shared network path or cloud storage →\n Claude Code reads managed-settings.json at startup\n\`\`\`\n\`vat verify\` validates \`managed-settings.json\` today. The deployment step is IT\'s\nresponsibility. This approach requires no per-machine npm install; Claude Code reads\nthe settings file directly if it is placed at the expected path or if the path is\nconfigured.\n\n**Gap**: VAT does not yet have a \`vat claude deploy\` command that handles the push\nstep. Adding this would require IT to configure cloud storage credentials once.\n\n#### Approach C: Anthropic org API (long-term, requires Anthropic)\n\`\`\`\nGitHub Actions on release →\n vat skills publish --target claude-ai --org myorg →\n Anthropic API activates skills for all org users in claude.ai\n\`\`\`\nBlocked on Anthropic publishing an org management API. VAT\'s \`dist/\` output format\nis already designed for this target.\n\n---"
32
- },
33
- vatPluginsUninstall-DesignIntent: {
34
- header: "## \`vat plugins uninstall\` — Design Intent",
35
- body: "A \`vat plugins uninstall <plugin>@<marketplace>\` command should exist but does not yet.\n\n### What it must reverse\n\nUninstalling a plugin installed via the file-based method requires reversing 5 artifacts:\n\n1. Delete \`~/.claude/plugins/marketplaces/<marketplace>/plugins/<plugin>/\`\n2. Delete \`~/.claude/plugins/cache/<marketplace>/<plugin>/<version>/\`\n3. Remove \`<plugin>@<marketplace>\` from \`installed_plugins.json\`\n4. Remove \`<marketplace>\` from \`known_marketplaces.json\` if no plugins remain\n5. Remove \`enabledPlugins[<plugin>@<marketplace>]\` from \`settings.json\`\n\n### Design decisions\n\n- **Idempotent**: exit 0 if plugin not found — safe for IT automation scripts\n- **Not-VAT-installed case**: if plugin directory exists but no registry entries, delete\n the directory and clean settings.json; emit a warning that the plugin was not\n installed via VAT\n- **\`--dry-run\`**: show what would be deleted without deleting (follow \`vat skills uninstall\` pattern)\n- **\`--target\`**: code-cli | desktop | all (default: code-cli until Desktop is implemented)\n- **\`vat plugins list\`**: companion command to show installed plugins — needed for\n discoverability before uninstalling\n\n### Implementation location\n\nPer the CLI \"dumb orchestration\" principle:\n- Logic: \`packages/claude-marketplace/src/install/plugin-uninstall.ts\` (new file alongside plugin-registry.ts)\n- CLI: \`packages/cli/src/commands/plugins/uninstall.ts\` (thin wrapper)\n- New command group: \`vat plugins\` with subcommands \`list\` and \`uninstall\`\n\n---",
36
- text: "## \`vat plugins uninstall\` — Design Intent\n\nA \`vat plugins uninstall <plugin>@<marketplace>\` command should exist but does not yet.\n\n### What it must reverse\n\nUninstalling a plugin installed via the file-based method requires reversing 5 artifacts:\n\n1. Delete \`~/.claude/plugins/marketplaces/<marketplace>/plugins/<plugin>/\`\n2. Delete \`~/.claude/plugins/cache/<marketplace>/<plugin>/<version>/\`\n3. Remove \`<plugin>@<marketplace>\` from \`installed_plugins.json\`\n4. Remove \`<marketplace>\` from \`known_marketplaces.json\` if no plugins remain\n5. Remove \`enabledPlugins[<plugin>@<marketplace>]\` from \`settings.json\`\n\n### Design decisions\n\n- **Idempotent**: exit 0 if plugin not found — safe for IT automation scripts\n- **Not-VAT-installed case**: if plugin directory exists but no registry entries, delete\n the directory and clean settings.json; emit a warning that the plugin was not\n installed via VAT\n- **\`--dry-run\`**: show what would be deleted without deleting (follow \`vat skills uninstall\` pattern)\n- **\`--target\`**: code-cli | desktop | all (default: code-cli until Desktop is implemented)\n- **\`vat plugins list\`**: companion command to show installed plugins — needed for\n discoverability before uninstalling\n\n### Implementation location\n\nPer the CLI \"dumb orchestration\" principle:\n- Logic: \`packages/claude-marketplace/src/install/plugin-uninstall.ts\` (new file alongside plugin-registry.ts)\n- CLI: \`packages/cli/src/commands/plugins/uninstall.ts\` (thin wrapper)\n- New command group: \`vat plugins\` with subcommands \`list\` and \`uninstall\`\n\n---"
37
- },
38
- guidanceForAdopters: {
39
- header: "## Guidance for Adopters",
40
- body: "### For end-user / IT-managed deployments (recommended)\n\nAdd \`vibe-agent-toolkit\` as a **runtime dependency** (not devDependencies) and use\nthe local node_modules binary in postinstall. Never assume \`vat\` is globally installed.\n\n\`\`\`json\n{\n \"dependencies\": { \"vibe-agent-toolkit\": \"latest\" },\n \"scripts\": {\n \"postinstall\": \"node ./node_modules/vibe-agent-toolkit/bin/vat claude plugin install --npm-postinstall || exit 0\"\n }\n}\n\`\`\`\n\nIT runs: \`npm install -g @myorg/my-skills\` — no other tools required on the user\'s machine.\n\nFor private GitHub Packages registries, IT pre-configures \`.npmrc\` with a read-only\ntoken for the \`@myorg\` scope. End users do not need to know about registries or tokens.\n\n### For developer self-install\n\n\`\`\`bash\nnpx vibe-agent-toolkit skills install npm:@myorg/my-skills\n\`\`\`\n\n### For enterprise CI (near-term best option)\n\nUse Approach A (MDM-integrated npm publish) or Approach B (managed-settings deployment).\nBoth work today with no additional VAT features.\n\n---",
41
- text: "## Guidance for Adopters\n\n### For end-user / IT-managed deployments (recommended)\n\nAdd \`vibe-agent-toolkit\` as a **runtime dependency** (not devDependencies) and use\nthe local node_modules binary in postinstall. Never assume \`vat\` is globally installed.\n\n\`\`\`json\n{\n \"dependencies\": { \"vibe-agent-toolkit\": \"latest\" },\n \"scripts\": {\n \"postinstall\": \"node ./node_modules/vibe-agent-toolkit/bin/vat claude plugin install --npm-postinstall || exit 0\"\n }\n}\n\`\`\`\n\nIT runs: \`npm install -g @myorg/my-skills\` — no other tools required on the user\'s machine.\n\nFor private GitHub Packages registries, IT pre-configures \`.npmrc\` with a read-only\ntoken for the \`@myorg\` scope. End users do not need to know about registries or tokens.\n\n### For developer self-install\n\n\`\`\`bash\nnpx vibe-agent-toolkit skills install npm:@myorg/my-skills\n\`\`\`\n\n### For enterprise CI (near-term best option)\n\nUse Approach A (MDM-integrated npm publish) or Approach B (managed-settings deployment).\nBoth work today with no additional VAT features.\n\n---"
42
- },
43
- whatIsOutOfScopeForVat: {
44
- header: "## What Is Out of Scope for VAT",
45
- body: "VAT is a **packaging and local install tool**. The following are permanently out of scope:\n\n- MDM software management configuration (Jamf, SCCM, Intune policies)\n- Internal npm registry setup and authentication management\n- Anthropic cloud API authentication or org provisioning\n- Per-user credential management for private registries\n- Claude Desktop configuration (until Desktop and Code CLI paths converge)",
46
- text: "## What Is Out of Scope for VAT\n\nVAT is a **packaging and local install tool**. The following are permanently out of scope:\n\n- MDM software management configuration (Jamf, SCCM, Intune policies)\n- Internal npm registry setup and authentication management\n- Anthropic cloud API authentication or org provisioning\n- Per-user credential management for private registries\n- Claude Desktop configuration (until Desktop and Code CLI paths converge)"
47
- }
48
- };