@doist/twist-cli 1.1.0 → 1.2.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.
- package/dist/__tests__/skill.test.js +93 -25
- package/dist/__tests__/skill.test.js.map +1 -1
- package/dist/lib/skills/create-installer.d.ts +9 -0
- package/dist/lib/skills/create-installer.d.ts.map +1 -0
- package/dist/lib/skills/create-installer.js +52 -0
- package/dist/lib/skills/create-installer.js.map +1 -0
- package/dist/lib/skills/index.d.ts +1 -0
- package/dist/lib/skills/index.d.ts.map +1 -1
- package/dist/lib/skills/index.js +21 -13
- package/dist/lib/skills/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/lib/skills/claude-code.d.ts +0 -15
- package/dist/lib/skills/claude-code.d.ts.map +0 -1
- package/dist/lib/skills/claude-code.js +0 -50
- package/dist/lib/skills/claude-code.js.map +0 -1
|
@@ -11,9 +11,9 @@ vi.mock('chalk', () => ({
|
|
|
11
11
|
},
|
|
12
12
|
}));
|
|
13
13
|
import { registerSkillCommand } from '../commands/skill.js';
|
|
14
|
-
import { ClaudeCodeInstaller } from '../lib/skills/claude-code.js';
|
|
15
14
|
import { SKILL_CONTENT } from '../lib/skills/content.js';
|
|
16
|
-
import {
|
|
15
|
+
import { createInstaller } from '../lib/skills/create-installer.js';
|
|
16
|
+
import { getInstaller, listAgentNames, listAgents, skillInstallers } from '../lib/skills/index.js';
|
|
17
17
|
function createProgram() {
|
|
18
18
|
const program = new Command();
|
|
19
19
|
program.exitOverride();
|
|
@@ -26,61 +26,101 @@ describe('skill registry', () => {
|
|
|
26
26
|
expect(installer).not.toBeNull();
|
|
27
27
|
expect(installer?.name).toBe('claude-code');
|
|
28
28
|
});
|
|
29
|
+
it('returns codex installer', () => {
|
|
30
|
+
const installer = getInstaller('codex');
|
|
31
|
+
expect(installer).not.toBeNull();
|
|
32
|
+
expect(installer?.name).toBe('codex');
|
|
33
|
+
});
|
|
34
|
+
it('returns cursor installer', () => {
|
|
35
|
+
const installer = getInstaller('cursor');
|
|
36
|
+
expect(installer).not.toBeNull();
|
|
37
|
+
expect(installer?.name).toBe('cursor');
|
|
38
|
+
});
|
|
29
39
|
it('returns null for unknown agent', () => {
|
|
30
40
|
const installer = getInstaller('unknown-agent');
|
|
31
41
|
expect(installer).toBeNull();
|
|
32
42
|
});
|
|
33
|
-
it('lists available agents', () => {
|
|
43
|
+
it('lists all available agents', () => {
|
|
34
44
|
const names = listAgentNames();
|
|
35
45
|
expect(names).toContain('claude-code');
|
|
46
|
+
expect(names).toContain('codex');
|
|
47
|
+
expect(names).toContain('cursor');
|
|
36
48
|
});
|
|
37
49
|
});
|
|
38
|
-
describe('
|
|
50
|
+
describe('installer paths', () => {
|
|
51
|
+
const cases = [
|
|
52
|
+
{ agent: 'claude-code', dir: '.claude', desc: 'Claude Code skill for Twist CLI' },
|
|
53
|
+
{ agent: 'codex', dir: '.codex', desc: 'Codex skill for Twist CLI' },
|
|
54
|
+
{ agent: 'cursor', dir: '.cursor', desc: 'Cursor skill for Twist CLI' },
|
|
55
|
+
];
|
|
56
|
+
for (const { agent, dir, desc } of cases) {
|
|
57
|
+
describe(agent, () => {
|
|
58
|
+
const installer = skillInstallers[agent];
|
|
59
|
+
it('has correct name and description', () => {
|
|
60
|
+
expect(installer.name).toBe(agent);
|
|
61
|
+
expect(installer.description).toBe(desc);
|
|
62
|
+
});
|
|
63
|
+
it(`returns global path containing ${dir}/skills`, () => {
|
|
64
|
+
const globalPath = installer.getInstallPath({ local: false });
|
|
65
|
+
expect(globalPath).toContain(dir);
|
|
66
|
+
expect(globalPath).toContain('skills');
|
|
67
|
+
expect(globalPath).toContain('twist-cli');
|
|
68
|
+
expect(globalPath).toContain('SKILL.md');
|
|
69
|
+
});
|
|
70
|
+
it('returns local path containing cwd', () => {
|
|
71
|
+
const localPath = installer.getInstallPath({ local: true });
|
|
72
|
+
expect(localPath).toContain(dir);
|
|
73
|
+
expect(localPath).toContain('skills');
|
|
74
|
+
expect(localPath).toContain('twist-cli');
|
|
75
|
+
expect(localPath).toContain('SKILL.md');
|
|
76
|
+
expect(localPath).toContain(process.cwd());
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
describe('installer operations', () => {
|
|
39
82
|
let testDir;
|
|
40
|
-
let installer;
|
|
41
83
|
const originalCwd = process.cwd();
|
|
42
84
|
beforeEach(async () => {
|
|
43
85
|
testDir = join(tmpdir(), `twist-cli-test-${Date.now()}`);
|
|
44
86
|
await mkdir(testDir, { recursive: true });
|
|
45
87
|
process.chdir(testDir);
|
|
46
|
-
installer = new ClaudeCodeInstaller();
|
|
47
88
|
});
|
|
48
89
|
afterEach(async () => {
|
|
49
90
|
process.chdir(originalCwd);
|
|
50
91
|
await rm(testDir, { recursive: true, force: true });
|
|
51
92
|
});
|
|
52
|
-
it('
|
|
53
|
-
const
|
|
54
|
-
expect(path).toContain('.claude/skills/twist-cli/SKILL.md');
|
|
55
|
-
expect(path).toContain('twist-cli-test-');
|
|
56
|
-
});
|
|
57
|
-
it('reports not installed initially (local)', async () => {
|
|
58
|
-
const installed = await installer.isInstalled({ local: true });
|
|
59
|
-
expect(installed).toBe(false);
|
|
60
|
-
});
|
|
61
|
-
it('installs skill locally', async () => {
|
|
93
|
+
it('installs and reads skill content', async () => {
|
|
94
|
+
const installer = skillInstallers['claude-code'];
|
|
62
95
|
await installer.install({ local: true });
|
|
63
|
-
const installed = await installer.isInstalled({ local: true });
|
|
64
|
-
expect(installed).toBe(true);
|
|
65
96
|
const skillPath = installer.getInstallPath({ local: true });
|
|
66
97
|
const content = await readFile(skillPath, 'utf-8');
|
|
67
98
|
expect(content).toBe(SKILL_CONTENT);
|
|
68
99
|
});
|
|
100
|
+
it('reports not installed initially', async () => {
|
|
101
|
+
const installer = skillInstallers['codex'];
|
|
102
|
+
const installed = await installer.isInstalled({ local: true });
|
|
103
|
+
expect(installed).toBe(false);
|
|
104
|
+
});
|
|
69
105
|
it('throws when installing without force if exists', async () => {
|
|
106
|
+
const installer = skillInstallers['cursor'];
|
|
70
107
|
await installer.install({ local: true });
|
|
71
108
|
await expect(installer.install({ local: true })).rejects.toThrow(/already installed.*Use --force/);
|
|
72
109
|
});
|
|
73
110
|
it('allows force install over existing', async () => {
|
|
111
|
+
const installer = skillInstallers['claude-code'];
|
|
74
112
|
await installer.install({ local: true });
|
|
75
113
|
await expect(installer.install({ local: true, force: true })).resolves.not.toThrow();
|
|
76
114
|
});
|
|
77
115
|
it('uninstalls skill', async () => {
|
|
116
|
+
const installer = skillInstallers['codex'];
|
|
78
117
|
await installer.install({ local: true });
|
|
79
118
|
await installer.uninstall({ local: true });
|
|
80
119
|
const installed = await installer.isInstalled({ local: true });
|
|
81
120
|
expect(installed).toBe(false);
|
|
82
121
|
});
|
|
83
122
|
it('throws when uninstalling non-existent skill', async () => {
|
|
123
|
+
const installer = skillInstallers['cursor'];
|
|
84
124
|
await expect(installer.uninstall({ local: true })).rejects.toThrow(/not installed/);
|
|
85
125
|
});
|
|
86
126
|
});
|
|
@@ -98,14 +138,16 @@ describe('listAgents', () => {
|
|
|
98
138
|
});
|
|
99
139
|
it('returns agent info with installed status', async () => {
|
|
100
140
|
const agents = await listAgents(true);
|
|
101
|
-
expect(agents.length).
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
141
|
+
expect(agents.length).toBe(3);
|
|
142
|
+
for (const name of ['claude-code', 'codex', 'cursor']) {
|
|
143
|
+
const agent = agents.find((a) => a.name === name);
|
|
144
|
+
expect(agent).toBeDefined();
|
|
145
|
+
expect(agent?.installed).toBe(false);
|
|
146
|
+
expect(agent?.path).toBeNull();
|
|
147
|
+
}
|
|
106
148
|
});
|
|
107
149
|
it('shows installed path when installed', async () => {
|
|
108
|
-
const installer =
|
|
150
|
+
const installer = skillInstallers['claude-code'];
|
|
109
151
|
await installer.install({ local: true });
|
|
110
152
|
const agents = await listAgents(true);
|
|
111
153
|
const claudeCode = agents.find((a) => a.name === 'claude-code');
|
|
@@ -145,8 +187,24 @@ describe('skill command', () => {
|
|
|
145
187
|
const stats = await stat(skillPath);
|
|
146
188
|
expect(stats.isFile()).toBe(true);
|
|
147
189
|
});
|
|
190
|
+
it('installs codex agent locally', async () => {
|
|
191
|
+
const program = createProgram();
|
|
192
|
+
await program.parseAsync(['node', 'tw', 'skill', 'install', 'codex', '--local']);
|
|
193
|
+
expect(consoleSpy).toHaveBeenCalledWith('✓', expect.stringContaining('Installed'));
|
|
194
|
+
const skillPath = join(testDir, '.codex', 'skills', 'twist-cli', 'SKILL.md');
|
|
195
|
+
const stats = await stat(skillPath);
|
|
196
|
+
expect(stats.isFile()).toBe(true);
|
|
197
|
+
});
|
|
198
|
+
it('installs cursor agent locally', async () => {
|
|
199
|
+
const program = createProgram();
|
|
200
|
+
await program.parseAsync(['node', 'tw', 'skill', 'install', 'cursor', '--local']);
|
|
201
|
+
expect(consoleSpy).toHaveBeenCalledWith('✓', expect.stringContaining('Installed'));
|
|
202
|
+
const skillPath = join(testDir, '.cursor', 'skills', 'twist-cli', 'SKILL.md');
|
|
203
|
+
const stats = await stat(skillPath);
|
|
204
|
+
expect(stats.isFile()).toBe(true);
|
|
205
|
+
});
|
|
148
206
|
it('uninstalls agent', async () => {
|
|
149
|
-
const installer =
|
|
207
|
+
const installer = skillInstallers['claude-code'];
|
|
150
208
|
await installer.install({ local: true });
|
|
151
209
|
const program = createProgram();
|
|
152
210
|
await program.parseAsync(['node', 'tw', 'skill', 'uninstall', 'claude-code', '--local']);
|
|
@@ -162,4 +220,14 @@ describe('skill command', () => {
|
|
|
162
220
|
exitSpy.mockRestore();
|
|
163
221
|
});
|
|
164
222
|
});
|
|
223
|
+
describe('install detection', () => {
|
|
224
|
+
it('throws when agent directory does not exist', async () => {
|
|
225
|
+
const installer = createInstaller({
|
|
226
|
+
name: 'fake-agent',
|
|
227
|
+
description: 'Fake agent',
|
|
228
|
+
dirName: '.nonexistent-agent-dir-xyz',
|
|
229
|
+
});
|
|
230
|
+
await expect(installer.install({ local: false })).rejects.toThrow('fake-agent does not appear to be installed');
|
|
231
|
+
});
|
|
232
|
+
});
|
|
165
233
|
//# sourceMappingURL=skill.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill.test.js","sourceRoot":"","sources":["../../src/__tests__/skill.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skill.test.js","sourceRoot":"","sources":["../../src/__tests__/skill.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { SkillInstaller } from './types.js';
|
|
2
|
+
interface InstallerConfig {
|
|
3
|
+
name: string;
|
|
4
|
+
description: string;
|
|
5
|
+
dirName: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function createInstaller(config: InstallerConfig): SkillInstaller;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=create-installer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-installer.d.ts","sourceRoot":"","sources":["../../../src/lib/skills/create-installer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAkB,cAAc,EAAoB,MAAM,YAAY,CAAA;AAElF,UAAU,eAAe;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,cAAc,CA0DvE"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { mkdir, rm, stat, writeFile } from 'node:fs/promises';
|
|
2
|
+
import { homedir } from 'node:os';
|
|
3
|
+
import { dirname, join } from 'node:path';
|
|
4
|
+
import { SKILL_CONTENT, SKILL_NAME } from './content.js';
|
|
5
|
+
export function createInstaller(config) {
|
|
6
|
+
function getInstallPath(options) {
|
|
7
|
+
const base = options.local ? process.cwd() : homedir();
|
|
8
|
+
return join(base, config.dirName, 'skills', SKILL_NAME, 'SKILL.md');
|
|
9
|
+
}
|
|
10
|
+
return {
|
|
11
|
+
name: config.name,
|
|
12
|
+
description: config.description,
|
|
13
|
+
getInstallPath,
|
|
14
|
+
async isInstalled(options) {
|
|
15
|
+
try {
|
|
16
|
+
await stat(getInstallPath(options));
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
async install(options) {
|
|
24
|
+
if (!options.local) {
|
|
25
|
+
const agentDir = join(homedir(), config.dirName);
|
|
26
|
+
try {
|
|
27
|
+
await stat(agentDir);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
throw new Error(`${config.name} does not appear to be installed (${agentDir} not found)`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const skillPath = getInstallPath(options);
|
|
34
|
+
const exists = await this.isInstalled(options);
|
|
35
|
+
if (exists && !options.force) {
|
|
36
|
+
throw new Error(`Skill already installed at ${skillPath}. Use --force to overwrite.`);
|
|
37
|
+
}
|
|
38
|
+
await mkdir(dirname(skillPath), { recursive: true });
|
|
39
|
+
await writeFile(skillPath, SKILL_CONTENT);
|
|
40
|
+
},
|
|
41
|
+
async uninstall(options) {
|
|
42
|
+
const skillPath = getInstallPath(options);
|
|
43
|
+
const exists = await this.isInstalled(options);
|
|
44
|
+
if (!exists) {
|
|
45
|
+
throw new Error(`Skill not installed at ${skillPath}`);
|
|
46
|
+
}
|
|
47
|
+
const skillDir = dirname(skillPath);
|
|
48
|
+
await rm(skillDir, { recursive: true });
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=create-installer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-installer.js","sourceRoot":"","sources":["../../../src/lib/skills/create-installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AASxD,MAAM,UAAU,eAAe,CAAC,MAAuB;IACnD,SAAS,cAAc,CAAC,OAA4B;QAChD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;QACtD,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;IACvE,CAAC;IAED,OAAO;QACH,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,WAAW,EAAE,MAAM,CAAC,WAAW;QAE/B,cAAc;QAEd,KAAK,CAAC,WAAW,CAAC,OAA4B;YAC1C,IAAI,CAAC;gBACD,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;gBACnC,OAAO,IAAI,CAAA;YACf,CAAC;YAAC,MAAM,CAAC;gBACL,OAAO,KAAK,CAAA;YAChB,CAAC;QACL,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,OAAuB;YACjC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;gBAChD,IAAI,CAAC;oBACD,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAA;gBACxB,CAAC;gBAAC,MAAM,CAAC;oBACL,MAAM,IAAI,KAAK,CACX,GAAG,MAAM,CAAC,IAAI,qCAAqC,QAAQ,aAAa,CAC3E,CAAA;gBACL,CAAC;YACL,CAAC;YAED,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;YACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;YAE9C,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CACX,8BAA8B,SAAS,6BAA6B,CACvE,CAAA;YACL,CAAC;YAED,MAAM,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YACpD,MAAM,SAAS,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;QAC7C,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,OAAyB;YACrC,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;YACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;YAE9C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CAAC,0BAA0B,SAAS,EAAE,CAAC,CAAA;YAC1D,CAAC;YAED,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;YACnC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC3C,CAAC;KACJ,CAAA;AACL,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { AgentInfo, SkillInstaller } from './types.js';
|
|
2
|
+
export declare const skillInstallers: Record<string, SkillInstaller>;
|
|
2
3
|
export declare function getInstaller(name: string): SkillInstaller | null;
|
|
3
4
|
export declare function listAgentNames(): string[];
|
|
4
5
|
export declare function listAgents(local: boolean): Promise<AgentInfo[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/skills/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/skills/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE3D,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAgB1D,CAAA;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAEhE;AAED,wBAAgB,cAAc,IAAI,MAAM,EAAE,CAEzC;AAED,wBAAsB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAerE;AAED,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA"}
|
package/dist/lib/skills/index.js
CHANGED
|
@@ -1,27 +1,35 @@
|
|
|
1
|
-
import {
|
|
2
|
-
const
|
|
3
|
-
'claude-code': (
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { createInstaller } from './create-installer.js';
|
|
2
|
+
export const skillInstallers = {
|
|
3
|
+
'claude-code': createInstaller({
|
|
4
|
+
name: 'claude-code',
|
|
5
|
+
description: 'Claude Code skill for Twist CLI',
|
|
6
|
+
dirName: '.claude',
|
|
7
|
+
}),
|
|
8
|
+
codex: createInstaller({
|
|
9
|
+
name: 'codex',
|
|
10
|
+
description: 'Codex skill for Twist CLI',
|
|
11
|
+
dirName: '.codex',
|
|
12
|
+
}),
|
|
13
|
+
cursor: createInstaller({
|
|
14
|
+
name: 'cursor',
|
|
15
|
+
description: 'Cursor skill for Twist CLI',
|
|
16
|
+
dirName: '.cursor',
|
|
17
|
+
}),
|
|
7
18
|
};
|
|
8
19
|
export function getInstaller(name) {
|
|
9
|
-
|
|
10
|
-
return factory ? factory() : null;
|
|
20
|
+
return skillInstallers[name] ?? null;
|
|
11
21
|
}
|
|
12
22
|
export function listAgentNames() {
|
|
13
|
-
return Object.keys(
|
|
23
|
+
return Object.keys(skillInstallers);
|
|
14
24
|
}
|
|
15
25
|
export async function listAgents(local) {
|
|
16
26
|
const agents = [];
|
|
17
27
|
for (const name of listAgentNames()) {
|
|
18
|
-
const installer =
|
|
19
|
-
if (!installer)
|
|
20
|
-
continue;
|
|
28
|
+
const installer = skillInstallers[name];
|
|
21
29
|
const installed = await installer.isInstalled({ local });
|
|
22
30
|
agents.push({
|
|
23
31
|
name,
|
|
24
|
-
description:
|
|
32
|
+
description: installer.description,
|
|
25
33
|
installed,
|
|
26
34
|
path: installed ? installer.getInstallPath({ local }) : null,
|
|
27
35
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/skills/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/skills/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAGvD,MAAM,CAAC,MAAM,eAAe,GAAmC;IAC3D,aAAa,EAAE,eAAe,CAAC;QAC3B,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,iCAAiC;QAC9C,OAAO,EAAE,SAAS;KACrB,CAAC;IACF,KAAK,EAAE,eAAe,CAAC;QACnB,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,2BAA2B;QACxC,OAAO,EAAE,QAAQ;KACpB,CAAC;IACF,MAAM,EAAE,eAAe,CAAC;QACpB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,4BAA4B;QACzC,OAAO,EAAE,SAAS;KACrB,CAAC;CACL,CAAA;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACrC,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,CAAA;AACxC,CAAC;AAED,MAAM,UAAU,cAAc;IAC1B,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAc;IAC3C,MAAM,MAAM,GAAgB,EAAE,CAAA;IAE9B,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;QACvC,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;QACxD,MAAM,CAAC,IAAI,CAAC;YACR,IAAI;YACJ,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,SAAS;YACT,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;SAC/D,CAAC,CAAA;IACN,CAAC;IAED,OAAO,MAAM,CAAA;AACjB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { InstallOptions, SkillInstaller, UninstallOptions } from './types.js';
|
|
2
|
-
export declare class ClaudeCodeInstaller implements SkillInstaller {
|
|
3
|
-
name: string;
|
|
4
|
-
description: string;
|
|
5
|
-
getInstallPath(options: {
|
|
6
|
-
local?: boolean;
|
|
7
|
-
}): string;
|
|
8
|
-
isInstalled(options: {
|
|
9
|
-
local?: boolean;
|
|
10
|
-
}): Promise<boolean>;
|
|
11
|
-
install(options: InstallOptions): Promise<void>;
|
|
12
|
-
uninstall(options: UninstallOptions): Promise<void>;
|
|
13
|
-
}
|
|
14
|
-
export declare function getSkillDescription(): string;
|
|
15
|
-
//# sourceMappingURL=claude-code.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../../src/lib/skills/claude-code.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAUlF,qBAAa,mBAAoB,YAAW,cAAc;IACtD,IAAI,SAAgB;IACpB,WAAW,SAAgD;IAE3D,cAAc,CAAC,OAAO,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,MAAM;IAK9C,WAAW,CAAC,OAAO,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAU3D,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAY/C,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;CAW5D;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { mkdir, rm, stat, writeFile } from 'node:fs/promises';
|
|
2
|
-
import { homedir } from 'node:os';
|
|
3
|
-
import { dirname, join } from 'node:path';
|
|
4
|
-
import { SKILL_CONTENT, SKILL_DESCRIPTION, SKILL_NAME } from './content.js';
|
|
5
|
-
function getGlobalSkillsDir() {
|
|
6
|
-
return join(homedir(), '.claude', 'skills');
|
|
7
|
-
}
|
|
8
|
-
function getLocalSkillsDir() {
|
|
9
|
-
return join(process.cwd(), '.claude', 'skills');
|
|
10
|
-
}
|
|
11
|
-
export class ClaudeCodeInstaller {
|
|
12
|
-
name = 'claude-code';
|
|
13
|
-
description = 'Claude Code skill for Twist CLI integration';
|
|
14
|
-
getInstallPath(options) {
|
|
15
|
-
const baseDir = options.local ? getLocalSkillsDir() : getGlobalSkillsDir();
|
|
16
|
-
return join(baseDir, SKILL_NAME, 'SKILL.md');
|
|
17
|
-
}
|
|
18
|
-
async isInstalled(options) {
|
|
19
|
-
const skillPath = this.getInstallPath(options);
|
|
20
|
-
try {
|
|
21
|
-
await stat(skillPath);
|
|
22
|
-
return true;
|
|
23
|
-
}
|
|
24
|
-
catch {
|
|
25
|
-
return false;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
async install(options) {
|
|
29
|
-
const skillPath = this.getInstallPath(options);
|
|
30
|
-
const exists = await this.isInstalled(options);
|
|
31
|
-
if (exists && !options.force) {
|
|
32
|
-
throw new Error(`Skill already installed at ${skillPath}. Use --force to overwrite.`);
|
|
33
|
-
}
|
|
34
|
-
await mkdir(dirname(skillPath), { recursive: true });
|
|
35
|
-
await writeFile(skillPath, SKILL_CONTENT);
|
|
36
|
-
}
|
|
37
|
-
async uninstall(options) {
|
|
38
|
-
const skillPath = this.getInstallPath(options);
|
|
39
|
-
const exists = await this.isInstalled(options);
|
|
40
|
-
if (!exists) {
|
|
41
|
-
throw new Error(`Skill not installed at ${skillPath}`);
|
|
42
|
-
}
|
|
43
|
-
const skillDir = dirname(skillPath);
|
|
44
|
-
await rm(skillDir, { recursive: true });
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
export function getSkillDescription() {
|
|
48
|
-
return SKILL_DESCRIPTION;
|
|
49
|
-
}
|
|
50
|
-
//# sourceMappingURL=claude-code.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../src/lib/skills/claude-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAG3E,SAAS,kBAAkB;IACvB,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;AAC/C,CAAC;AAED,SAAS,iBAAiB;IACtB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;AACnD,CAAC;AAED,MAAM,OAAO,mBAAmB;IAC5B,IAAI,GAAG,aAAa,CAAA;IACpB,WAAW,GAAG,6CAA6C,CAAA;IAE3D,cAAc,CAAC,OAA4B;QACvC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAA;QAC1E,OAAO,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;IAChD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAA4B;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAC9C,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,SAAS,CAAC,CAAA;YACrB,OAAO,IAAI,CAAA;QACf,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,KAAK,CAAA;QAChB,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAuB;QACjC,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QAE9C,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,8BAA8B,SAAS,6BAA6B,CAAC,CAAA;QACzF,CAAC;QAED,MAAM,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACpD,MAAM,SAAS,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IAC7C,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAyB;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QAE9C,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,0BAA0B,SAAS,EAAE,CAAC,CAAA;QAC1D,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;QACnC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC3C,CAAC;CACJ;AAED,MAAM,UAAU,mBAAmB;IAC/B,OAAO,iBAAiB,CAAA;AAC5B,CAAC"}
|