vskill 0.1.0

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 (59) hide show
  1. package/README.md +49 -0
  2. package/dist/agents/agents-registry.d.ts +57 -0
  3. package/dist/agents/agents-registry.js +511 -0
  4. package/dist/agents/agents-registry.js.map +1 -0
  5. package/dist/api/client.d.ts +50 -0
  6. package/dist/api/client.js +50 -0
  7. package/dist/api/client.js.map +1 -0
  8. package/dist/commands/add.d.ts +7 -0
  9. package/dist/commands/add.js +126 -0
  10. package/dist/commands/add.js.map +1 -0
  11. package/dist/commands/find.d.ts +1 -0
  12. package/dist/commands/find.js +42 -0
  13. package/dist/commands/find.js.map +1 -0
  14. package/dist/commands/init.d.ts +1 -0
  15. package/dist/commands/init.js +39 -0
  16. package/dist/commands/init.js.map +1 -0
  17. package/dist/commands/list.d.ts +6 -0
  18. package/dist/commands/list.js +79 -0
  19. package/dist/commands/list.js.map +1 -0
  20. package/dist/commands/scan.d.ts +1 -0
  21. package/dist/commands/scan.js +99 -0
  22. package/dist/commands/scan.js.map +1 -0
  23. package/dist/commands/submit.d.ts +5 -0
  24. package/dist/commands/submit.js +34 -0
  25. package/dist/commands/submit.js.map +1 -0
  26. package/dist/commands/update.d.ts +5 -0
  27. package/dist/commands/update.js +114 -0
  28. package/dist/commands/update.js.map +1 -0
  29. package/dist/commands/version.d.ts +1 -0
  30. package/dist/commands/version.js +11 -0
  31. package/dist/commands/version.js.map +1 -0
  32. package/dist/index.d.ts +2 -0
  33. package/dist/index.js +68 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/lockfile/index.d.ts +2 -0
  36. package/dist/lockfile/index.js +2 -0
  37. package/dist/lockfile/index.js.map +1 -0
  38. package/dist/lockfile/lockfile.d.ts +23 -0
  39. package/dist/lockfile/lockfile.js +70 -0
  40. package/dist/lockfile/lockfile.js.map +1 -0
  41. package/dist/lockfile/types.d.ts +14 -0
  42. package/dist/lockfile/types.js +5 -0
  43. package/dist/lockfile/types.js.map +1 -0
  44. package/dist/scanner/index.d.ts +4 -0
  45. package/dist/scanner/index.js +3 -0
  46. package/dist/scanner/index.js.map +1 -0
  47. package/dist/scanner/patterns.d.ts +25 -0
  48. package/dist/scanner/patterns.js +347 -0
  49. package/dist/scanner/patterns.js.map +1 -0
  50. package/dist/scanner/pipeline/submission-pipeline.d.ts +100 -0
  51. package/dist/scanner/pipeline/submission-pipeline.js +173 -0
  52. package/dist/scanner/pipeline/submission-pipeline.js.map +1 -0
  53. package/dist/scanner/tier1.d.ts +23 -0
  54. package/dist/scanner/tier1.js +83 -0
  55. package/dist/scanner/tier1.js.map +1 -0
  56. package/dist/utils/output.d.ts +15 -0
  57. package/dist/utils/output.js +87 -0
  58. package/dist/utils/output.js.map +1 -0
  59. package/package.json +51 -0
package/README.md ADDED
@@ -0,0 +1,49 @@
1
+ # vskill
2
+
3
+ **Secure multi-platform AI skill installer.** Scan before you install.
4
+
5
+ ```bash
6
+ npx vskill add owner/repo
7
+ ```
8
+
9
+ ## Why?
10
+
11
+ - **36.82% of AI skills have security flaws** ([Snyk ToxicSkills](https://snyk.io/blog/toxicskills-malicious-ai-agent-skills-clawhub/))
12
+ - Zero versioning on major platforms — updates can inject malware silently
13
+ - No pre-install scanning — you're trusting blindly
14
+
15
+ vskill fixes this with **three-tier verification** and **version-pinned trust**.
16
+
17
+ ## Commands
18
+
19
+ ```bash
20
+ vskill add <owner/repo> # Install skill after security scan
21
+ vskill scan <source> # Scan without installing
22
+ vskill list # Show installed skills with status
23
+ vskill submit <source> # Submit for verification on verified-skill.com
24
+ vskill update # Update with diff scanning
25
+ ```
26
+
27
+ ## 39 Agent Platforms
28
+
29
+ Works across Claude Code, Cursor, GitHub Copilot, Windsurf, Codex, Gemini CLI, Cline, Amp, Roo Code, and 30 more.
30
+
31
+ ## Three-Tier Verification
32
+
33
+ | Tier | Method | Badge |
34
+ |------|--------|-------|
35
+ | **Scanned** | 37 deterministic pattern checks | Basic Trust |
36
+ | **Verified** | Scanner + LLM intent analysis | Recommended |
37
+ | **Certified** | Full manual security review | Highest Trust |
38
+
39
+ ## Version Pinning
40
+
41
+ Every install creates a `vskill.lock` with SHA, scan date, and tier. Updates run diff scanning — new patterns flagged before install.
42
+
43
+ ## Registry
44
+
45
+ Browse verified skills at [verified-skill.com](https://verified-skill.com).
46
+
47
+ ## License
48
+
49
+ MIT
@@ -0,0 +1,57 @@
1
+ /**
2
+ * 39-Agent Registry for vskill CLI
3
+ *
4
+ * Complete registry of all AI coding agents that support the Agent Skills format.
5
+ * Source: skills@1.3.9 npm package (vercel-labs/skills)
6
+ *
7
+ * @see research/agent-registry-data-model.md for full design documentation
8
+ */
9
+ /** Unique identifier for each of the 39 supported agents */
10
+ export type AgentId = 'amp' | 'antigravity' | 'augment' | 'claude-code' | 'openclaw' | 'cline' | 'codebuddy' | 'codex' | 'command-code' | 'continue' | 'crush' | 'cursor' | 'droid' | 'gemini-cli' | 'github-copilot' | 'goose' | 'junie' | 'iflow-cli' | 'kilo' | 'kimi-cli' | 'kiro-cli' | 'kode' | 'mcpjam' | 'mistral-vibe' | 'mux' | 'opencode' | 'openhands' | 'pi' | 'qoder' | 'qwen-code' | 'replit' | 'roo' | 'trae' | 'trae-cn' | 'windsurf' | 'zencoder' | 'neovate' | 'pochi' | 'adal';
11
+ /** Feature support matrix for SKILL.md capabilities */
12
+ export interface FeatureSupport {
13
+ /** Basic SKILL.md parsing (always true) */
14
+ basicSkills: boolean;
15
+ /** Support for allowed-tools frontmatter */
16
+ allowedTools: boolean;
17
+ /** Support for context: fork (Claude Code only) */
18
+ contextFork: boolean;
19
+ /** Support for pre/post execution hooks */
20
+ hooks: boolean;
21
+ }
22
+ /** Complete agent definition */
23
+ export interface AgentDefinition {
24
+ /** Unique agent identifier */
25
+ id: AgentId;
26
+ /** Human-readable display name */
27
+ displayName: string;
28
+ /** Project-level skills directory relative to cwd */
29
+ localSkillsDir: string;
30
+ /** Global skills directory (absolute path pattern) */
31
+ globalSkillsDir: string;
32
+ /** Whether this agent uses .agents/skills */
33
+ isUniversal: boolean;
34
+ /** Whether shown in universal agents list */
35
+ showInUniversalList: boolean;
36
+ /** Detection logic — returns true if agent is installed */
37
+ detectInstalled: () => Promise<boolean>;
38
+ /** Environment variables that affect path resolution */
39
+ envVars?: string[];
40
+ /** Parent company or organization */
41
+ parentCompany?: string;
42
+ /** Feature support matrix */
43
+ featureSupport: FeatureSupport;
44
+ /** Special notes about this agent */
45
+ notes?: string;
46
+ }
47
+ export declare const AGENTS_REGISTRY: readonly AgentDefinition[];
48
+ /** Get all universal agents */
49
+ export declare function getUniversalAgents(): AgentDefinition[];
50
+ /** Get all non-universal agents */
51
+ export declare function getNonUniversalAgents(): AgentDefinition[];
52
+ /** Find an agent by ID */
53
+ export declare function getAgent(id: AgentId): AgentDefinition | undefined;
54
+ /** Detect all installed agents */
55
+ export declare function detectInstalledAgents(): Promise<AgentDefinition[]>;
56
+ /** Total agent count */
57
+ export declare const TOTAL_AGENTS: number;
@@ -0,0 +1,511 @@
1
+ /**
2
+ * 39-Agent Registry for vskill CLI
3
+ *
4
+ * Complete registry of all AI coding agents that support the Agent Skills format.
5
+ * Source: skills@1.3.9 npm package (vercel-labs/skills)
6
+ *
7
+ * @see research/agent-registry-data-model.md for full design documentation
8
+ */
9
+ import { existsSync } from 'node:fs';
10
+ import { join } from 'node:path';
11
+ import { homedir } from 'node:os';
12
+ // ---------------------------------------------------------------------------
13
+ // Helpers
14
+ // ---------------------------------------------------------------------------
15
+ const home = homedir();
16
+ const xdgConfig = process.env.XDG_CONFIG_HOME || join(home, '.config');
17
+ const claudeConfig = process.env.CLAUDE_CONFIG_DIR || join(home, '.claude');
18
+ const codexHome = process.env.CODEX_HOME || join(home, '.codex');
19
+ function exists(...segments) {
20
+ return existsSync(join(...segments));
21
+ }
22
+ const DEFAULT_FEATURES = {
23
+ basicSkills: true,
24
+ allowedTools: true,
25
+ contextFork: false,
26
+ hooks: false,
27
+ };
28
+ // ---------------------------------------------------------------------------
29
+ // Registry
30
+ // ---------------------------------------------------------------------------
31
+ export const AGENTS_REGISTRY = [
32
+ // ═══ Universal Agents (7) ═══
33
+ {
34
+ id: 'amp',
35
+ displayName: 'Amp',
36
+ localSkillsDir: '.agents/skills',
37
+ globalSkillsDir: join(xdgConfig, 'agents/skills'),
38
+ isUniversal: true,
39
+ showInUniversalList: true,
40
+ detectInstalled: async () => exists(xdgConfig, 'amp'),
41
+ envVars: ['XDG_CONFIG_HOME'],
42
+ parentCompany: 'Amp (Sourcegraph)',
43
+ featureSupport: { ...DEFAULT_FEATURES },
44
+ },
45
+ {
46
+ id: 'codex',
47
+ displayName: 'Codex',
48
+ localSkillsDir: '.agents/skills',
49
+ globalSkillsDir: join(codexHome, 'skills'),
50
+ isUniversal: true,
51
+ showInUniversalList: true,
52
+ detectInstalled: async () => exists(codexHome) || exists('/etc/codex'),
53
+ envVars: ['CODEX_HOME'],
54
+ parentCompany: 'OpenAI',
55
+ featureSupport: { ...DEFAULT_FEATURES },
56
+ },
57
+ {
58
+ id: 'gemini-cli',
59
+ displayName: 'Gemini CLI',
60
+ localSkillsDir: '.agents/skills',
61
+ globalSkillsDir: join(home, '.gemini/skills'),
62
+ isUniversal: true,
63
+ showInUniversalList: true,
64
+ detectInstalled: async () => exists(home, '.gemini'),
65
+ parentCompany: 'Google',
66
+ featureSupport: { ...DEFAULT_FEATURES },
67
+ },
68
+ {
69
+ id: 'github-copilot',
70
+ displayName: 'GitHub Copilot',
71
+ localSkillsDir: '.agents/skills',
72
+ globalSkillsDir: join(home, '.copilot/skills'),
73
+ isUniversal: true,
74
+ showInUniversalList: true,
75
+ detectInstalled: async () => exists(process.cwd(), '.github') || exists(home, '.copilot'),
76
+ parentCompany: 'Microsoft',
77
+ featureSupport: { ...DEFAULT_FEATURES },
78
+ notes: 'Detection checks .github dir (common false positive)',
79
+ },
80
+ {
81
+ id: 'kimi-cli',
82
+ displayName: 'Kimi Code CLI',
83
+ localSkillsDir: '.agents/skills',
84
+ globalSkillsDir: join(home, '.config/agents/skills'),
85
+ isUniversal: true,
86
+ showInUniversalList: true,
87
+ detectInstalled: async () => exists(home, '.kimi'),
88
+ parentCompany: 'Moonshot AI',
89
+ featureSupport: { ...DEFAULT_FEATURES },
90
+ },
91
+ {
92
+ id: 'opencode',
93
+ displayName: 'OpenCode',
94
+ localSkillsDir: '.agents/skills',
95
+ globalSkillsDir: join(xdgConfig, 'opencode/skills'),
96
+ isUniversal: true,
97
+ showInUniversalList: true,
98
+ detectInstalled: async () => exists(xdgConfig, 'opencode') || exists(home, '.claude/skills'),
99
+ envVars: ['XDG_CONFIG_HOME'],
100
+ parentCompany: 'sst (open source)',
101
+ featureSupport: { ...DEFAULT_FEATURES },
102
+ notes: 'Cross-detects Claude Code skills directory as fallback',
103
+ },
104
+ {
105
+ id: 'replit',
106
+ displayName: 'Replit',
107
+ localSkillsDir: '.agents/skills',
108
+ globalSkillsDir: join(xdgConfig, 'agents/skills'),
109
+ isUniversal: true,
110
+ showInUniversalList: false,
111
+ detectInstalled: async () => exists(process.cwd(), '.agents'),
112
+ envVars: ['XDG_CONFIG_HOME'],
113
+ parentCompany: 'Replit',
114
+ featureSupport: { ...DEFAULT_FEATURES },
115
+ notes: 'Hidden universal agent (showInUniversalList: false)',
116
+ },
117
+ // ═══ Non-Universal Agents (32) ═══
118
+ {
119
+ id: 'antigravity',
120
+ displayName: 'Antigravity',
121
+ localSkillsDir: '.agent/skills',
122
+ globalSkillsDir: join(home, '.gemini/antigravity/skills'),
123
+ isUniversal: false,
124
+ showInUniversalList: false,
125
+ detectInstalled: async () => exists(process.cwd(), '.agent') || exists(home, '.gemini/antigravity'),
126
+ parentCompany: 'Google',
127
+ featureSupport: { ...DEFAULT_FEATURES },
128
+ notes: 'Singular .agent/skills (not .agents/skills)',
129
+ },
130
+ {
131
+ id: 'augment',
132
+ displayName: 'Augment',
133
+ localSkillsDir: '.augment/skills',
134
+ globalSkillsDir: join(home, '.augment/skills'),
135
+ isUniversal: false,
136
+ showInUniversalList: false,
137
+ detectInstalled: async () => exists(home, '.augment'),
138
+ parentCompany: 'Augment',
139
+ featureSupport: { ...DEFAULT_FEATURES },
140
+ },
141
+ {
142
+ id: 'claude-code',
143
+ displayName: 'Claude Code',
144
+ localSkillsDir: '.claude/skills',
145
+ globalSkillsDir: join(claudeConfig, 'skills'),
146
+ isUniversal: false,
147
+ showInUniversalList: false,
148
+ detectInstalled: async () => exists(claudeConfig),
149
+ envVars: ['CLAUDE_CONFIG_DIR'],
150
+ parentCompany: 'Anthropic',
151
+ featureSupport: { basicSkills: true, allowedTools: true, contextFork: true, hooks: true },
152
+ notes: 'Most feature-rich agent. Only one supporting context: fork.',
153
+ },
154
+ {
155
+ id: 'openclaw',
156
+ displayName: 'OpenClaw',
157
+ localSkillsDir: 'skills',
158
+ globalSkillsDir: join(home, '.openclaw/skills'),
159
+ isUniversal: false,
160
+ showInUniversalList: false,
161
+ detectInstalled: async () => exists(home, '.openclaw') || exists(home, '.clawdbot') || exists(home, '.moltbot'),
162
+ parentCompany: 'OpenClaw',
163
+ featureSupport: { ...DEFAULT_FEATURES },
164
+ notes: 'Bare skills/ dir. 3 legacy global names from rebranding.',
165
+ },
166
+ {
167
+ id: 'cline',
168
+ displayName: 'Cline',
169
+ localSkillsDir: '.cline/skills',
170
+ globalSkillsDir: join(home, '.cline/skills'),
171
+ isUniversal: false,
172
+ showInUniversalList: false,
173
+ detectInstalled: async () => exists(home, '.cline'),
174
+ parentCompany: 'Cline (open source)',
175
+ featureSupport: { basicSkills: true, allowedTools: true, contextFork: false, hooks: true },
176
+ notes: 'One of two agents supporting hooks (with Claude Code)',
177
+ },
178
+ {
179
+ id: 'codebuddy',
180
+ displayName: 'CodeBuddy',
181
+ localSkillsDir: '.codebuddy/skills',
182
+ globalSkillsDir: join(home, '.codebuddy/skills'),
183
+ isUniversal: false,
184
+ showInUniversalList: false,
185
+ detectInstalled: async () => exists(process.cwd(), '.codebuddy') || exists(home, '.codebuddy'),
186
+ parentCompany: 'CodeBuddy',
187
+ featureSupport: { ...DEFAULT_FEATURES },
188
+ },
189
+ {
190
+ id: 'command-code',
191
+ displayName: 'Command Code',
192
+ localSkillsDir: '.commandcode/skills',
193
+ globalSkillsDir: join(home, '.commandcode/skills'),
194
+ isUniversal: false,
195
+ showInUniversalList: false,
196
+ detectInstalled: async () => exists(home, '.commandcode'),
197
+ parentCompany: 'Command Code',
198
+ featureSupport: { ...DEFAULT_FEATURES },
199
+ },
200
+ {
201
+ id: 'continue',
202
+ displayName: 'Continue',
203
+ localSkillsDir: '.continue/skills',
204
+ globalSkillsDir: join(home, '.continue/skills'),
205
+ isUniversal: false,
206
+ showInUniversalList: false,
207
+ detectInstalled: async () => exists(process.cwd(), '.continue') || exists(home, '.continue'),
208
+ parentCompany: 'Continue (open source)',
209
+ featureSupport: { ...DEFAULT_FEATURES },
210
+ },
211
+ {
212
+ id: 'crush',
213
+ displayName: 'Crush',
214
+ localSkillsDir: '.crush/skills',
215
+ globalSkillsDir: join(home, '.config/crush/skills'),
216
+ isUniversal: false,
217
+ showInUniversalList: false,
218
+ detectInstalled: async () => exists(home, '.config/crush'),
219
+ parentCompany: 'Charmbracelet',
220
+ featureSupport: { ...DEFAULT_FEATURES },
221
+ },
222
+ {
223
+ id: 'cursor',
224
+ displayName: 'Cursor',
225
+ localSkillsDir: '.cursor/skills',
226
+ globalSkillsDir: join(home, '.cursor/skills'),
227
+ isUniversal: false,
228
+ showInUniversalList: false,
229
+ detectInstalled: async () => exists(home, '.cursor'),
230
+ parentCompany: 'Anysphere',
231
+ featureSupport: { ...DEFAULT_FEATURES },
232
+ },
233
+ {
234
+ id: 'droid',
235
+ displayName: 'Droid',
236
+ localSkillsDir: '.factory/skills',
237
+ globalSkillsDir: join(home, '.factory/skills'),
238
+ isUniversal: false,
239
+ showInUniversalList: false,
240
+ detectInstalled: async () => exists(home, '.factory'),
241
+ parentCompany: 'Factory AI',
242
+ featureSupport: { ...DEFAULT_FEATURES },
243
+ notes: 'Dir is .factory/ not .droid/',
244
+ },
245
+ {
246
+ id: 'goose',
247
+ displayName: 'Goose',
248
+ localSkillsDir: '.goose/skills',
249
+ globalSkillsDir: join(xdgConfig, 'goose/skills'),
250
+ isUniversal: false,
251
+ showInUniversalList: false,
252
+ detectInstalled: async () => exists(xdgConfig, 'goose'),
253
+ envVars: ['XDG_CONFIG_HOME'],
254
+ parentCompany: 'Block',
255
+ featureSupport: { ...DEFAULT_FEATURES },
256
+ },
257
+ {
258
+ id: 'junie',
259
+ displayName: 'Junie',
260
+ localSkillsDir: '.junie/skills',
261
+ globalSkillsDir: join(home, '.junie/skills'),
262
+ isUniversal: false,
263
+ showInUniversalList: false,
264
+ detectInstalled: async () => exists(home, '.junie'),
265
+ parentCompany: 'JetBrains',
266
+ featureSupport: { ...DEFAULT_FEATURES },
267
+ },
268
+ {
269
+ id: 'iflow-cli',
270
+ displayName: 'iFlow CLI',
271
+ localSkillsDir: '.iflow/skills',
272
+ globalSkillsDir: join(home, '.iflow/skills'),
273
+ isUniversal: false,
274
+ showInUniversalList: false,
275
+ detectInstalled: async () => exists(home, '.iflow'),
276
+ parentCompany: 'iFlow',
277
+ featureSupport: { ...DEFAULT_FEATURES },
278
+ },
279
+ {
280
+ id: 'kilo',
281
+ displayName: 'Kilo Code',
282
+ localSkillsDir: '.kilocode/skills',
283
+ globalSkillsDir: join(home, '.kilocode/skills'),
284
+ isUniversal: false,
285
+ showInUniversalList: false,
286
+ detectInstalled: async () => exists(home, '.kilocode'),
287
+ parentCompany: 'Kilo Code',
288
+ featureSupport: { ...DEFAULT_FEATURES },
289
+ },
290
+ {
291
+ id: 'kiro-cli',
292
+ displayName: 'Kiro CLI',
293
+ localSkillsDir: '.kiro/skills',
294
+ globalSkillsDir: join(home, '.kiro/skills'),
295
+ isUniversal: false,
296
+ showInUniversalList: false,
297
+ detectInstalled: async () => exists(home, '.kiro'),
298
+ parentCompany: 'Amazon (AWS)',
299
+ featureSupport: { basicSkills: true, allowedTools: false, contextFork: false, hooks: false },
300
+ notes: 'Does NOT support allowed-tools. Requires manual registration.',
301
+ },
302
+ {
303
+ id: 'kode',
304
+ displayName: 'Kode',
305
+ localSkillsDir: '.kode/skills',
306
+ globalSkillsDir: join(home, '.kode/skills'),
307
+ isUniversal: false,
308
+ showInUniversalList: false,
309
+ detectInstalled: async () => exists(home, '.kode'),
310
+ parentCompany: 'Kode',
311
+ featureSupport: { ...DEFAULT_FEATURES },
312
+ },
313
+ {
314
+ id: 'mcpjam',
315
+ displayName: 'MCPJam',
316
+ localSkillsDir: '.mcpjam/skills',
317
+ globalSkillsDir: join(home, '.mcpjam/skills'),
318
+ isUniversal: false,
319
+ showInUniversalList: false,
320
+ detectInstalled: async () => exists(home, '.mcpjam'),
321
+ parentCompany: 'MCPJam',
322
+ featureSupport: { ...DEFAULT_FEATURES },
323
+ },
324
+ {
325
+ id: 'mistral-vibe',
326
+ displayName: 'Mistral Vibe',
327
+ localSkillsDir: '.vibe/skills',
328
+ globalSkillsDir: join(home, '.vibe/skills'),
329
+ isUniversal: false,
330
+ showInUniversalList: false,
331
+ detectInstalled: async () => exists(home, '.vibe'),
332
+ parentCompany: 'Mistral AI',
333
+ featureSupport: { ...DEFAULT_FEATURES },
334
+ notes: 'Dir is .vibe/ not .mistral-vibe/',
335
+ },
336
+ {
337
+ id: 'mux',
338
+ displayName: 'Mux',
339
+ localSkillsDir: '.mux/skills',
340
+ globalSkillsDir: join(home, '.mux/skills'),
341
+ isUniversal: false,
342
+ showInUniversalList: false,
343
+ detectInstalled: async () => exists(home, '.mux'),
344
+ parentCompany: 'Mux',
345
+ featureSupport: { ...DEFAULT_FEATURES },
346
+ },
347
+ {
348
+ id: 'openhands',
349
+ displayName: 'OpenHands',
350
+ localSkillsDir: '.openhands/skills',
351
+ globalSkillsDir: join(home, '.openhands/skills'),
352
+ isUniversal: false,
353
+ showInUniversalList: false,
354
+ detectInstalled: async () => exists(home, '.openhands'),
355
+ parentCompany: 'All Hands AI (open source)',
356
+ featureSupport: { ...DEFAULT_FEATURES },
357
+ },
358
+ {
359
+ id: 'pi',
360
+ displayName: 'Pi',
361
+ localSkillsDir: '.pi/skills',
362
+ globalSkillsDir: join(home, '.pi/agent/skills'),
363
+ isUniversal: false,
364
+ showInUniversalList: false,
365
+ detectInstalled: async () => exists(home, '.pi/agent'),
366
+ parentCompany: 'Pi',
367
+ featureSupport: { ...DEFAULT_FEATURES },
368
+ notes: 'Nested global path: ~/.pi/agent/skills',
369
+ },
370
+ {
371
+ id: 'qoder',
372
+ displayName: 'Qoder',
373
+ localSkillsDir: '.qoder/skills',
374
+ globalSkillsDir: join(home, '.qoder/skills'),
375
+ isUniversal: false,
376
+ showInUniversalList: false,
377
+ detectInstalled: async () => exists(home, '.qoder'),
378
+ parentCompany: 'Qoder',
379
+ featureSupport: { ...DEFAULT_FEATURES },
380
+ },
381
+ {
382
+ id: 'qwen-code',
383
+ displayName: 'Qwen Code',
384
+ localSkillsDir: '.qwen/skills',
385
+ globalSkillsDir: join(home, '.qwen/skills'),
386
+ isUniversal: false,
387
+ showInUniversalList: false,
388
+ detectInstalled: async () => exists(home, '.qwen'),
389
+ parentCompany: 'Alibaba',
390
+ featureSupport: { ...DEFAULT_FEATURES },
391
+ notes: 'Dir is .qwen/ not .qwen-code/',
392
+ },
393
+ {
394
+ id: 'roo',
395
+ displayName: 'Roo Code',
396
+ localSkillsDir: '.roo/skills',
397
+ globalSkillsDir: join(home, '.roo/skills'),
398
+ isUniversal: false,
399
+ showInUniversalList: false,
400
+ detectInstalled: async () => exists(home, '.roo'),
401
+ parentCompany: 'Roo Code',
402
+ featureSupport: { ...DEFAULT_FEATURES },
403
+ },
404
+ {
405
+ id: 'trae',
406
+ displayName: 'Trae',
407
+ localSkillsDir: '.trae/skills',
408
+ globalSkillsDir: join(home, '.trae/skills'),
409
+ isUniversal: false,
410
+ showInUniversalList: false,
411
+ detectInstalled: async () => exists(home, '.trae'),
412
+ parentCompany: 'ByteDance',
413
+ featureSupport: { ...DEFAULT_FEATURES },
414
+ notes: 'Shares localSkillsDir with Trae CN',
415
+ },
416
+ {
417
+ id: 'trae-cn',
418
+ displayName: 'Trae CN',
419
+ localSkillsDir: '.trae/skills',
420
+ globalSkillsDir: join(home, '.trae-cn/skills'),
421
+ isUniversal: false,
422
+ showInUniversalList: false,
423
+ detectInstalled: async () => exists(home, '.trae-cn'),
424
+ parentCompany: 'ByteDance',
425
+ featureSupport: { ...DEFAULT_FEATURES },
426
+ notes: 'China variant. Shares localSkillsDir with Trae.',
427
+ },
428
+ {
429
+ id: 'windsurf',
430
+ displayName: 'Windsurf',
431
+ localSkillsDir: '.windsurf/skills',
432
+ globalSkillsDir: join(home, '.codeium/windsurf/skills'),
433
+ isUniversal: false,
434
+ showInUniversalList: false,
435
+ detectInstalled: async () => exists(home, '.codeium/windsurf'),
436
+ parentCompany: 'Codeium',
437
+ featureSupport: { ...DEFAULT_FEATURES },
438
+ notes: 'Global path under ~/.codeium/windsurf/',
439
+ },
440
+ {
441
+ id: 'zencoder',
442
+ displayName: 'Zencoder',
443
+ localSkillsDir: '.zencoder/skills',
444
+ globalSkillsDir: join(home, '.zencoder/skills'),
445
+ isUniversal: false,
446
+ showInUniversalList: false,
447
+ detectInstalled: async () => exists(home, '.zencoder'),
448
+ parentCompany: 'Zencoder',
449
+ featureSupport: { basicSkills: true, allowedTools: false, contextFork: false, hooks: false },
450
+ notes: 'Does NOT support allowed-tools',
451
+ },
452
+ {
453
+ id: 'neovate',
454
+ displayName: 'Neovate',
455
+ localSkillsDir: '.neovate/skills',
456
+ globalSkillsDir: join(home, '.neovate/skills'),
457
+ isUniversal: false,
458
+ showInUniversalList: false,
459
+ detectInstalled: async () => exists(home, '.neovate'),
460
+ parentCompany: 'Neovate',
461
+ featureSupport: { ...DEFAULT_FEATURES },
462
+ },
463
+ {
464
+ id: 'pochi',
465
+ displayName: 'Pochi',
466
+ localSkillsDir: '.pochi/skills',
467
+ globalSkillsDir: join(home, '.pochi/skills'),
468
+ isUniversal: false,
469
+ showInUniversalList: false,
470
+ detectInstalled: async () => exists(home, '.pochi'),
471
+ parentCompany: 'Pochi',
472
+ featureSupport: { ...DEFAULT_FEATURES },
473
+ },
474
+ {
475
+ id: 'adal',
476
+ displayName: 'AdaL',
477
+ localSkillsDir: '.adal/skills',
478
+ globalSkillsDir: join(home, '.adal/skills'),
479
+ isUniversal: false,
480
+ showInUniversalList: false,
481
+ detectInstalled: async () => exists(home, '.adal'),
482
+ parentCompany: 'AdaL',
483
+ featureSupport: { ...DEFAULT_FEATURES },
484
+ },
485
+ ];
486
+ // ---------------------------------------------------------------------------
487
+ // Utility Functions
488
+ // ---------------------------------------------------------------------------
489
+ /** Get all universal agents */
490
+ export function getUniversalAgents() {
491
+ return AGENTS_REGISTRY.filter(a => a.isUniversal);
492
+ }
493
+ /** Get all non-universal agents */
494
+ export function getNonUniversalAgents() {
495
+ return AGENTS_REGISTRY.filter(a => !a.isUniversal);
496
+ }
497
+ /** Find an agent by ID */
498
+ export function getAgent(id) {
499
+ return AGENTS_REGISTRY.find(a => a.id === id);
500
+ }
501
+ /** Detect all installed agents */
502
+ export async function detectInstalledAgents() {
503
+ const results = await Promise.all(AGENTS_REGISTRY.map(async (agent) => ({
504
+ agent,
505
+ installed: await agent.detectInstalled(),
506
+ })));
507
+ return results.filter(r => r.installed).map(r => r.agent);
508
+ }
509
+ /** Total agent count */
510
+ export const TOTAL_AGENTS = AGENTS_REGISTRY.length; // 39
511
+ //# sourceMappingURL=agents-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents-registry.js","sourceRoot":"","sources":["../../src/agents/agents-registry.ts"],"names":[],"mappings":"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"}