skillsauth 2.0.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/README.md +246 -79
  2. package/dist/__tests__/agents.test.d.ts +2 -0
  3. package/dist/__tests__/agents.test.d.ts.map +1 -0
  4. package/dist/__tests__/agents.test.js +48 -0
  5. package/dist/__tests__/agents.test.js.map +1 -0
  6. package/dist/__tests__/installer.test.d.ts +2 -0
  7. package/dist/__tests__/installer.test.d.ts.map +1 -0
  8. package/dist/__tests__/installer.test.js +126 -0
  9. package/dist/__tests__/installer.test.js.map +1 -0
  10. package/dist/__tests__/lockfile.test.d.ts +2 -0
  11. package/dist/__tests__/lockfile.test.d.ts.map +1 -0
  12. package/dist/__tests__/lockfile.test.js +76 -0
  13. package/dist/__tests__/lockfile.test.js.map +1 -0
  14. package/dist/__tests__/plugin-manifest.test.d.ts +2 -0
  15. package/dist/__tests__/plugin-manifest.test.d.ts.map +1 -0
  16. package/dist/__tests__/plugin-manifest.test.js +150 -0
  17. package/dist/__tests__/plugin-manifest.test.js.map +1 -0
  18. package/dist/__tests__/slug.test.d.ts +2 -0
  19. package/dist/__tests__/slug.test.d.ts.map +1 -0
  20. package/dist/__tests__/slug.test.js +34 -0
  21. package/dist/__tests__/slug.test.js.map +1 -0
  22. package/dist/commands/add-local.d.ts +14 -0
  23. package/dist/commands/add-local.d.ts.map +1 -0
  24. package/dist/commands/add-local.js +234 -0
  25. package/dist/commands/add-local.js.map +1 -0
  26. package/dist/commands/add.d.ts +7 -2
  27. package/dist/commands/add.d.ts.map +1 -1
  28. package/dist/commands/add.js +68 -32
  29. package/dist/commands/add.js.map +1 -1
  30. package/dist/commands/check.d.ts +7 -0
  31. package/dist/commands/check.d.ts.map +1 -0
  32. package/dist/commands/check.js +57 -0
  33. package/dist/commands/check.js.map +1 -0
  34. package/dist/commands/find.d.ts +7 -0
  35. package/dist/commands/find.d.ts.map +1 -0
  36. package/dist/commands/find.js +60 -0
  37. package/dist/commands/find.js.map +1 -0
  38. package/dist/commands/init.d.ts +7 -0
  39. package/dist/commands/init.d.ts.map +1 -0
  40. package/dist/commands/init.js +146 -0
  41. package/dist/commands/init.js.map +1 -0
  42. package/dist/commands/installed.d.ts +1 -0
  43. package/dist/commands/installed.d.ts.map +1 -1
  44. package/dist/commands/installed.js +4 -0
  45. package/dist/commands/installed.js.map +1 -1
  46. package/dist/commands/remove.d.ts.map +1 -1
  47. package/dist/commands/remove.js +5 -0
  48. package/dist/commands/remove.js.map +1 -1
  49. package/dist/index.js +91 -12
  50. package/dist/index.js.map +1 -1
  51. package/dist/lib/agents.d.ts +8 -0
  52. package/dist/lib/agents.d.ts.map +1 -1
  53. package/dist/lib/agents.js +57 -5
  54. package/dist/lib/agents.js.map +1 -1
  55. package/dist/lib/api.js +2 -2
  56. package/dist/lib/installer.d.ts +12 -1
  57. package/dist/lib/installer.d.ts.map +1 -1
  58. package/dist/lib/installer.js +151 -27
  59. package/dist/lib/installer.js.map +1 -1
  60. package/dist/lib/plugin-manifest.d.ts +21 -0
  61. package/dist/lib/plugin-manifest.d.ts.map +1 -0
  62. package/dist/lib/plugin-manifest.js +144 -0
  63. package/dist/lib/plugin-manifest.js.map +1 -0
  64. package/dist/types.d.ts +2 -1
  65. package/dist/types.d.ts.map +1 -1
  66. package/dist/types.js +40 -1
  67. package/dist/types.js.map +1 -1
  68. package/dist/utils/constants.d.ts +7 -14
  69. package/dist/utils/constants.d.ts.map +1 -1
  70. package/dist/utils/constants.js +50 -13
  71. package/dist/utils/constants.js.map +1 -1
  72. package/dist/utils/display.d.ts.map +1 -1
  73. package/dist/utils/display.js +2 -6
  74. package/dist/utils/display.js.map +1 -1
  75. package/dist/utils/slug.d.ts +4 -0
  76. package/dist/utils/slug.d.ts.map +1 -0
  77. package/dist/utils/slug.js +6 -0
  78. package/dist/utils/slug.js.map +1 -0
  79. package/package.json +61 -37
@@ -0,0 +1,144 @@
1
+ import { readFileSync, existsSync, readdirSync } from 'fs';
2
+ import { join, dirname, resolve, normalize, sep } from 'path';
3
+ /**
4
+ * Prevent path traversal: ensure target is within basePath.
5
+ */
6
+ function isContainedIn(targetPath, basePath) {
7
+ const normalizedBase = normalize(resolve(basePath));
8
+ const normalizedTarget = normalize(resolve(targetPath));
9
+ return normalizedTarget.startsWith(normalizedBase + sep) || normalizedTarget === normalizedBase;
10
+ }
11
+ function isValidRelativePath(path) {
12
+ return path.startsWith('./');
13
+ }
14
+ /**
15
+ * Discover SKILL.md files from plugin manifests and conventional directories
16
+ * within a local path. This supports:
17
+ *
18
+ * 1. `.claude-plugin/marketplace.json` (multi-plugin catalog)
19
+ * 2. `.claude-plugin/plugin.json` (single plugin)
20
+ * 3. `.cursor-plugin/plugin.json` (Cursor plugin)
21
+ * 4. Direct SKILL.md discovery in `skills/`, `.agents/skills/`, etc.
22
+ */
23
+ export function discoverPluginSkills(basePath) {
24
+ const absBase = resolve(basePath);
25
+ const skills = [];
26
+ const seen = new Set();
27
+ function addSkill(skillDir, pluginName, source) {
28
+ const skillMd = join(skillDir, 'SKILL.md');
29
+ if (!existsSync(skillMd))
30
+ return;
31
+ const normalizedDir = normalize(resolve(skillDir));
32
+ if (seen.has(normalizedDir))
33
+ return;
34
+ seen.add(normalizedDir);
35
+ const name = dirname(skillMd).split(sep).pop() ?? 'unknown';
36
+ skills.push({ name, path: normalizedDir, pluginName, source });
37
+ }
38
+ // 1. Claude Code marketplace.json
39
+ try {
40
+ const content = readFileSync(join(absBase, '.claude-plugin', 'marketplace.json'), 'utf-8');
41
+ const manifest = JSON.parse(content);
42
+ const pluginRoot = manifest.metadata?.pluginRoot;
43
+ const validPluginRoot = pluginRoot === undefined || isValidRelativePath(pluginRoot);
44
+ if (validPluginRoot) {
45
+ for (const plugin of manifest.plugins ?? []) {
46
+ if (typeof plugin.source !== 'string' && plugin.source !== undefined)
47
+ continue;
48
+ if (plugin.source !== undefined && !isValidRelativePath(plugin.source))
49
+ continue;
50
+ const pluginBase = join(absBase, pluginRoot ?? '', plugin.source ?? '');
51
+ if (!isContainedIn(pluginBase, absBase))
52
+ continue;
53
+ if (plugin.skills?.length) {
54
+ for (const sp of plugin.skills) {
55
+ if (!isValidRelativePath(sp))
56
+ continue;
57
+ const skillDir = dirname(join(pluginBase, sp));
58
+ if (isContainedIn(skillDir, absBase)) {
59
+ addSkill(skillDir, plugin.name, 'claude-plugin');
60
+ }
61
+ }
62
+ }
63
+ // Also scan skills/ subdirectory
64
+ scanSkillsDir(join(pluginBase, 'skills'), plugin.name, 'claude-plugin');
65
+ }
66
+ }
67
+ }
68
+ catch { /* no marketplace.json */ }
69
+ // 2. Claude Code plugin.json
70
+ try {
71
+ const content = readFileSync(join(absBase, '.claude-plugin', 'plugin.json'), 'utf-8');
72
+ const manifest = JSON.parse(content);
73
+ if (manifest.skills?.length) {
74
+ for (const sp of manifest.skills) {
75
+ if (!isValidRelativePath(sp))
76
+ continue;
77
+ const skillDir = dirname(join(absBase, sp));
78
+ if (isContainedIn(skillDir, absBase)) {
79
+ addSkill(skillDir, manifest.name, 'claude-plugin');
80
+ }
81
+ }
82
+ }
83
+ scanSkillsDir(join(absBase, 'skills'), manifest.name, 'claude-plugin');
84
+ }
85
+ catch { /* no plugin.json */ }
86
+ // 3. Cursor plugin.json
87
+ try {
88
+ const content = readFileSync(join(absBase, '.cursor-plugin', 'plugin.json'), 'utf-8');
89
+ const manifest = JSON.parse(content);
90
+ if (typeof manifest.skills === 'string') {
91
+ // Directory reference like "skills/"
92
+ scanSkillsDir(join(absBase, manifest.skills), manifest.name, 'cursor-plugin');
93
+ }
94
+ else if (Array.isArray(manifest.skills)) {
95
+ for (const sp of manifest.skills) {
96
+ const skillDir = dirname(join(absBase, sp));
97
+ if (isContainedIn(skillDir, absBase)) {
98
+ addSkill(skillDir, manifest.name, 'cursor-plugin');
99
+ }
100
+ }
101
+ }
102
+ else {
103
+ scanSkillsDir(join(absBase, 'skills'), manifest.name, 'cursor-plugin');
104
+ }
105
+ }
106
+ catch { /* no cursor plugin.json */ }
107
+ // 4. Conventional directory scan (no manifests needed)
108
+ const conventionalDirs = [
109
+ 'skills',
110
+ '.agents/skills',
111
+ '.claude/skills',
112
+ '.cursor/skills',
113
+ ];
114
+ for (const dir of conventionalDirs) {
115
+ scanSkillsDir(join(absBase, dir), undefined, 'directory');
116
+ }
117
+ function scanSkillsDir(dir, pluginName, source) {
118
+ if (!existsSync(dir))
119
+ return;
120
+ if (!isContainedIn(dir, absBase))
121
+ return;
122
+ try {
123
+ const entries = readdirSync(dir, { withFileTypes: true });
124
+ for (const entry of entries) {
125
+ if (!entry.isDirectory())
126
+ continue;
127
+ const skillDir = join(dir, entry.name);
128
+ addSkill(skillDir, pluginName, source);
129
+ }
130
+ }
131
+ catch { /* permission error or not a directory */ }
132
+ }
133
+ return skills;
134
+ }
135
+ /**
136
+ * Check whether a local path looks like it has plugin manifests or skill directories.
137
+ */
138
+ export function hasPluginManifests(basePath) {
139
+ const abs = resolve(basePath);
140
+ return (existsSync(join(abs, '.claude-plugin', 'marketplace.json')) ||
141
+ existsSync(join(abs, '.claude-plugin', 'plugin.json')) ||
142
+ existsSync(join(abs, '.cursor-plugin', 'plugin.json')));
143
+ }
144
+ //# sourceMappingURL=plugin-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-manifest.js","sourceRoot":"","sources":["../../src/lib/plugin-manifest.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -28,7 +28,8 @@ export interface SearchResponse {
28
28
  total: number;
29
29
  results: CLISkill[];
30
30
  }
31
- export type AgentType = 'claude-code' | 'cursor' | 'windsurf';
31
+ export declare const AGENT_IDS: readonly ["claude-code", "cursor", "windsurf", "codex", "copilot", "cline", "roo", "aider", "continue", "amp", "zed", "void", "pear", "trae", "aide", "augment", "supermaven", "tabnine", "cody", "qodo", "bito", "double", "codestory", "mentat", "goose", "otto", "sweep", "devin", "replit", "bolt", "v0", "lovable", "same", "manus", "opencode", "kilo-code", "gemini-cli", "agents"];
32
+ export type AgentType = (typeof AGENT_IDS)[number];
32
33
  export type InstallScope = 'local' | 'global';
33
34
  export interface InstalledSkill {
34
35
  slug: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,QAAQ,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,QAAQ,EAAE,CAAC;CACrB;AAED,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,QAAQ,GAAG,UAAU,CAAC;AAC9D,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE9C,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACxC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,QAAQ,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,QAAQ,EAAE,CAAC;CACrB;AAED,eAAO,MAAM,SAAS,4XAuCZ,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE9C,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACxC"}
package/dist/types.js CHANGED
@@ -1,2 +1,41 @@
1
- export {};
1
+ export const AGENT_IDS = [
2
+ 'claude-code',
3
+ 'cursor',
4
+ 'windsurf',
5
+ 'codex',
6
+ 'copilot',
7
+ 'cline',
8
+ 'roo',
9
+ 'aider',
10
+ 'continue',
11
+ 'amp',
12
+ 'zed',
13
+ 'void',
14
+ 'pear',
15
+ 'trae',
16
+ 'aide',
17
+ 'augment',
18
+ 'supermaven',
19
+ 'tabnine',
20
+ 'cody',
21
+ 'qodo',
22
+ 'bito',
23
+ 'double',
24
+ 'codestory',
25
+ 'mentat',
26
+ 'goose',
27
+ 'otto',
28
+ 'sweep',
29
+ 'devin',
30
+ 'replit',
31
+ 'bolt',
32
+ 'v0',
33
+ 'lovable',
34
+ 'same',
35
+ 'manus',
36
+ 'opencode',
37
+ 'kilo-code',
38
+ 'gemini-cli',
39
+ 'agents', // universal .agents/ convention
40
+ ];
2
41
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AA8BA,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,aAAa;IACb,QAAQ;IACR,UAAU;IACV,OAAO;IACP,SAAS;IACT,OAAO;IACP,KAAK;IACL,OAAO;IACP,UAAU;IACV,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,SAAS;IACT,YAAY;IACZ,SAAS;IACT,MAAM;IACN,MAAM;IACN,MAAM;IACN,QAAQ;IACR,WAAW;IACX,QAAQ;IACR,OAAO;IACP,MAAM;IACN,OAAO;IACP,OAAO;IACP,QAAQ;IACR,MAAM;IACN,IAAI;IACJ,SAAS;IACT,MAAM;IACN,OAAO;IACP,UAAU;IACV,WAAW;IACX,YAAY;IACZ,QAAQ,EAAS,gCAAgC;CACzC,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { AgentType } from '../types.js';
1
2
  export declare const API_BASE_URL: string;
2
3
  export declare const SKIP_PROMPTS: boolean;
3
4
  export declare const NO_ANALYTICS: boolean;
@@ -7,18 +8,10 @@ export declare const GLOBAL_DIR: string;
7
8
  export declare const GLOBAL_LOCK: string;
8
9
  export declare const LOCAL_LOCK = ".skillsauth-lock.json";
9
10
  export declare const LOCKFILE_VERSION = 1;
10
- export declare const AGENT_PATHS: {
11
- readonly 'claude-code': {
12
- readonly local: (slug: string) => string;
13
- readonly global: (slug: string) => string;
14
- };
15
- readonly cursor: {
16
- readonly local: (slug: string) => string;
17
- readonly global: (slug: string) => string;
18
- };
19
- readonly windsurf: {
20
- readonly local: (slug: string) => string;
21
- readonly global: (slug: string) => string;
22
- };
23
- };
11
+ interface AgentPathDef {
12
+ local: (slug: string) => string;
13
+ global: (slug: string) => string;
14
+ }
15
+ export declare const AGENT_PATHS: Record<AgentType, AgentPathDef>;
16
+ export {};
24
17
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,YAAY,QAAwE,CAAC;AAClG,eAAO,MAAM,YAAY,SAA2C,CAAC;AACrE,eAAO,MAAM,YAAY,SAAoD,CAAC;AAC9E,eAAO,MAAM,KAAK,SAA6C,CAAC;AAChE,eAAO,MAAM,QAAQ,QAAY,CAAC;AAClC,eAAO,MAAM,UAAU,QAAgC,CAAC;AACxD,eAAO,MAAM,WAAW,QAAgC,CAAC;AACzD,eAAO,MAAM,UAAU,0BAA0B,CAAC;AAClD,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC,eAAO,MAAM,WAAW;;+BAEN,MAAM;gCACL,MAAM;;;+BAGP,MAAM;gCACL,MAAM;;;+BAGP,MAAM;gCACL,MAAM;;CAEf,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,eAAO,MAAM,YAAY,QAAwE,CAAC;AAClG,eAAO,MAAM,YAAY,SAA2C,CAAC;AACrE,eAAO,MAAM,YAAY,SAAoD,CAAC;AAC9E,eAAO,MAAM,KAAK,SAA6C,CAAC;AAChE,eAAO,MAAM,QAAQ,QAAY,CAAC;AAClC,eAAO,MAAM,UAAU,QAAgC,CAAC;AACxD,eAAO,MAAM,WAAW,QAAgC,CAAC;AACzD,eAAO,MAAM,UAAU,0BAA0B,CAAC;AAClD,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC,UAAU,YAAY;IACpB,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAChC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CAClC;AAgBD,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,YAAY,CAuCvD,CAAC"}
@@ -1,6 +1,5 @@
1
1
  import { homedir } from 'os';
2
2
  import { join } from 'path';
3
- // Production default: https://skillsauth.com/api/cli; override with SKILLSAUTH_API_URL (e.g. http://localhost:3000/api/cli for dev).
4
3
  export const API_BASE_URL = process.env['SKILLSAUTH_API_URL'] ?? 'https://skillsauth.com/api/cli';
5
4
  export const SKIP_PROMPTS = process.env['SKILLSAUTH_YES'] === 'true';
6
5
  export const NO_ANALYTICS = process.env['SKILLSAUTH_NO_ANALYTICS'] === 'true';
@@ -10,18 +9,56 @@ export const GLOBAL_DIR = join(HOME_DIR, '.skillsauth');
10
9
  export const GLOBAL_LOCK = join(GLOBAL_DIR, 'lock.json');
11
10
  export const LOCAL_LOCK = '.skillsauth-lock.json';
12
11
  export const LOCKFILE_VERSION = 1;
12
+ function skillDir(dotDir) {
13
+ return {
14
+ local: (slug) => `.${dotDir}/skills/${slug}/SKILL.md`,
15
+ global: (slug) => join(HOME_DIR, `.${dotDir}/skills/${slug}/SKILL.md`),
16
+ };
17
+ }
18
+ function memoryFile(dotDir) {
19
+ return {
20
+ local: (slug) => `.${dotDir}/memories/${slug}.md`,
21
+ global: (slug) => join(HOME_DIR, `.${dotDir}/memories/${slug}.md`),
22
+ };
23
+ }
13
24
  export const AGENT_PATHS = {
14
- 'claude-code': {
15
- local: (slug) => `.claude/skills/${slug}/SKILL.md`,
16
- global: (slug) => join(HOME_DIR, `.claude/skills/${slug}/SKILL.md`),
17
- },
18
- 'cursor': {
19
- local: (slug) => `.cursor/skills/${slug}/SKILL.md`,
20
- global: (slug) => join(HOME_DIR, `.cursor/skills/${slug}/SKILL.md`),
21
- },
22
- 'windsurf': {
23
- local: (slug) => `.windsurf/memories/${slug}.md`,
24
- global: (slug) => join(HOME_DIR, `.windsurf/memories/${slug}.md`),
25
- },
25
+ 'claude-code': skillDir('claude'),
26
+ 'cursor': skillDir('cursor'),
27
+ 'windsurf': memoryFile('windsurf'),
28
+ 'codex': skillDir('codex'),
29
+ 'copilot': skillDir('github'),
30
+ 'cline': skillDir('cline'),
31
+ 'roo': skillDir('roo'),
32
+ 'aider': skillDir('aider'),
33
+ 'continue': skillDir('continue'),
34
+ 'amp': skillDir('amp'),
35
+ 'zed': skillDir('zed'),
36
+ 'void': skillDir('void'),
37
+ 'pear': skillDir('pear'),
38
+ 'trae': skillDir('trae'),
39
+ 'aide': skillDir('aide'),
40
+ 'augment': skillDir('augment'),
41
+ 'supermaven': skillDir('supermaven'),
42
+ 'tabnine': skillDir('tabnine'),
43
+ 'cody': skillDir('cody'),
44
+ 'qodo': skillDir('qodo'),
45
+ 'bito': skillDir('bito'),
46
+ 'double': skillDir('double'),
47
+ 'codestory': skillDir('codestory'),
48
+ 'mentat': skillDir('mentat'),
49
+ 'goose': skillDir('goose'),
50
+ 'otto': skillDir('otto'),
51
+ 'sweep': skillDir('sweep'),
52
+ 'devin': skillDir('devin'),
53
+ 'replit': skillDir('replit'),
54
+ 'bolt': skillDir('bolt'),
55
+ 'v0': skillDir('v0'),
56
+ 'lovable': skillDir('lovable'),
57
+ 'same': skillDir('same'),
58
+ 'manus': skillDir('manus'),
59
+ 'opencode': skillDir('opencode'),
60
+ 'kilo-code': skillDir('kilo-code'),
61
+ 'gemini-cli': skillDir('gemini'),
62
+ 'agents': skillDir('agents'),
26
63
  };
27
64
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,qIAAqI;AACrI,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,gCAAgC,CAAC;AAClG,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,MAAM,CAAC;AACrE,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,KAAK,MAAM,CAAC;AAC9E,MAAM,CAAC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,MAAM,CAAC;AAChE,MAAM,CAAC,MAAM,QAAQ,GAAG,OAAO,EAAE,CAAC;AAClC,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AACxD,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,UAAU,GAAG,uBAAuB,CAAC;AAClD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAElC,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,aAAa,EAAE;QACb,KAAK,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,kBAAkB,IAAI,WAAW;QAC1D,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,IAAI,WAAW,CAAC;KAC5E;IACD,QAAQ,EAAE;QACR,KAAK,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,kBAAkB,IAAI,WAAW;QAC1D,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,IAAI,WAAW,CAAC;KAC5E;IACD,UAAU,EAAE;QACV,KAAK,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,sBAAsB,IAAI,KAAK;QACxD,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,sBAAsB,IAAI,KAAK,CAAC;KAC1E;CACO,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../src/utils/display.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE5D,eAAO,MAAM,UAAU,GAAI,GAAG,MAAM,KAAG,IAAuD,CAAC;AAC/F,eAAO,MAAM,YAAY,GAAI,GAAG,MAAM,KAAG,IAA4C,CAAC;AACtF,eAAO,MAAM,YAAY,GAAI,GAAG,MAAM,KAAG,IAA6C,CAAC;AACvF,eAAO,MAAM,SAAS,QAAO,IAAqD,CAAC;AAEnF,wBAAgB,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAW3D;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,cAAc,GAAG,IAAI,CAUzD;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,CAQhD"}
1
+ {"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../src/utils/display.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG5D,eAAO,MAAM,UAAU,GAAI,GAAG,MAAM,KAAG,IAAuD,CAAC;AAC/F,eAAO,MAAM,YAAY,GAAI,GAAG,MAAM,KAAG,IAA4C,CAAC;AACtF,eAAO,MAAM,YAAY,GAAI,GAAG,MAAM,KAAG,IAA6C,CAAC;AACvF,eAAO,MAAM,SAAS,QAAO,IAAqD,CAAC;AAEnF,wBAAgB,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAW3D;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,cAAc,GAAG,IAAI,CAKzD;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,CAQhD"}
@@ -1,4 +1,5 @@
1
1
  import chalk from 'chalk';
2
+ import { getDisplayName } from '../lib/agents.js';
2
3
  export const printError = (m) => console.error(chalk.red(' ✗ ') + chalk.red(m));
3
4
  export const printSuccess = (m) => console.log(chalk.green(' ✓ ') + m);
4
5
  export const printWarning = (m) => console.log(chalk.yellow(' ⚠ ') + m);
@@ -13,12 +14,7 @@ export function printSkillRow(s, i) {
13
14
  }
14
15
  export function printInstalledRow(s) {
15
16
  const name = chalk.white.bold(s.slug.padEnd(36));
16
- const agentLabels = {
17
- 'claude-code': 'Claude',
18
- cursor: 'Cursor',
19
- windsurf: 'Windsurf',
20
- };
21
- const agents = s.agents.map((a) => chalk.cyan(agentLabels[a] ?? a)).join(', ');
17
+ const agents = s.agents.map((a) => chalk.cyan(getDisplayName(a))).join(', ');
22
18
  const version = chalk.dim(`v${s.version}`);
23
19
  console.log(` ${name} ${version} ${agents}`);
24
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"display.js","sourceRoot":"","sources":["../../src/utils/display.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"display.js","sourceRoot":"","sources":["../../src/utils/display.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ /** Slugs from the API use lowercase letters, digits, and hyphens only. */
2
+ export declare const SKILL_SLUG_PATTERN: RegExp;
3
+ export declare function isSafeSkillSlug(slug: string): boolean;
4
+ //# sourceMappingURL=slug.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slug.d.ts","sourceRoot":"","sources":["../../src/utils/slug.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,eAAO,MAAM,kBAAkB,QAA+B,CAAC;AAE/D,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD"}
@@ -0,0 +1,6 @@
1
+ /** Slugs from the API use lowercase letters, digits, and hyphens only. */
2
+ export const SKILL_SLUG_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
3
+ export function isSafeSkillSlug(slug) {
4
+ return SKILL_SLUG_PATTERN.test(slug);
5
+ }
6
+ //# sourceMappingURL=slug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slug.js","sourceRoot":"","sources":["../../src/utils/slug.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,MAAM,CAAC,MAAM,kBAAkB,GAAG,4BAA4B,CAAC;AAE/D,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC"}
package/package.json CHANGED
@@ -1,37 +1,61 @@
1
- {
2
- "name": "skillsauth",
3
- "version": "2.0.0",
4
- "description": "Install verified AI agent skills from the SkillsAuth marketplace",
5
- "type": "module",
6
- "bin": "./dist/index.js",
7
- "files": ["dist/**/*", "README.md"],
8
- "scripts": {
9
- "build": "tsc",
10
- "dev": "tsx watch src/index.ts",
11
- "prepublishOnly": "npm run build",
12
- "test": "vitest run"
13
- },
14
- "engines": { "node": ">=18.0.0" },
15
- "keywords": ["ai", "agents", "claude", "cursor", "skills", "skillsauth", "windsurf"],
16
- "author": "SkillsAuth",
17
- "license": "MIT",
18
- "repository": {
19
- "type": "git",
20
- "url": "https://github.com/beinghimansh/skillsauth"
21
- },
22
- "homepage": "https://skillsauth.com",
23
- "publishConfig": {
24
- "registry": "https://registry.npmjs.org/"
25
- },
26
- "dependencies": {
27
- "@clack/prompts": "^0.9.0",
28
- "chalk": "^5.3.0",
29
- "commander": "^12.1.0"
30
- },
31
- "devDependencies": {
32
- "typescript": "^5.5.0",
33
- "@types/node": "^22.0.0",
34
- "tsx": "^4.0.0",
35
- "vitest": "^2.0.0"
36
- }
37
- }
1
+ {
2
+ "name": "skillsauth",
3
+ "version": "3.0.1",
4
+ "description": "Install verified AI agent skills from the SkillsAuth marketplace",
5
+ "type": "module",
6
+ "bin": {
7
+ "skillsauth": "./dist/index.js"
8
+ },
9
+ "files": [
10
+ "dist/**/*",
11
+ "README.md"
12
+ ],
13
+ "engines": {
14
+ "node": ">=18.0.0"
15
+ },
16
+ "keywords": [
17
+ "ai",
18
+ "agents",
19
+ "skills",
20
+ "skillsauth",
21
+ "claude",
22
+ "cursor",
23
+ "windsurf",
24
+ "codex",
25
+ "copilot",
26
+ "cline",
27
+ "aider",
28
+ "roo",
29
+ "amp",
30
+ "gemini-cli",
31
+ "devin",
32
+ "bolt",
33
+ "lovable"
34
+ ],
35
+ "author": "SkillsAuth",
36
+ "license": "MIT",
37
+ "repository": {
38
+ "type": "git",
39
+ "url": "https://github.com/beinghimansh/skillsauth"
40
+ },
41
+ "homepage": "https://skillsauth.com",
42
+ "publishConfig": {
43
+ "registry": "https://registry.npmjs.org/"
44
+ },
45
+ "dependencies": {
46
+ "@clack/prompts": "^0.9.0",
47
+ "chalk": "^5.3.0",
48
+ "commander": "^12.1.0"
49
+ },
50
+ "devDependencies": {
51
+ "typescript": "^5.5.0",
52
+ "@types/node": "^22.0.0",
53
+ "tsx": "^4.0.0",
54
+ "vitest": "^2.0.0"
55
+ },
56
+ "scripts": {
57
+ "build": "tsc",
58
+ "dev": "tsx watch src/index.ts",
59
+ "test": "vitest run"
60
+ }
61
+ }