@doist/todoist-cli 1.3.0 → 1.4.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/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 +71 -0
- package/dist/lib/skills/create-installer.js.map +1 -0
- package/dist/lib/skills/index.d.ts.map +1 -1
- package/dist/lib/skills/index.js +16 -2
- package/dist/lib/skills/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/lib/skills/claude-code.d.ts +0 -3
- package/dist/lib/skills/claude-code.d.ts.map +0 -1
- package/dist/lib/skills/claude-code.js +0 -68
- package/dist/lib/skills/claude-code.js.map +0 -1
|
@@ -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,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhD,UAAU,eAAe;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;CAClB;AAYD,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,cAAc,CA+DvE"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { access, mkdir, readdir, rmdir, unlink, 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 generateSkillFile() {
|
|
6
|
+
const frontmatter = `---
|
|
7
|
+
name: ${SKILL_NAME}
|
|
8
|
+
description: ${SKILL_DESCRIPTION}
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
`;
|
|
12
|
+
return frontmatter + SKILL_CONTENT;
|
|
13
|
+
}
|
|
14
|
+
export function createInstaller(config) {
|
|
15
|
+
function getInstallPath(local) {
|
|
16
|
+
const base = local ? process.cwd() : homedir();
|
|
17
|
+
return join(base, config.dirName, 'skills', 'todoist-cli', 'SKILL.md');
|
|
18
|
+
}
|
|
19
|
+
return {
|
|
20
|
+
name: config.name,
|
|
21
|
+
description: config.description,
|
|
22
|
+
getInstallPath,
|
|
23
|
+
generateContent() {
|
|
24
|
+
return generateSkillFile();
|
|
25
|
+
},
|
|
26
|
+
async isInstalled(local) {
|
|
27
|
+
try {
|
|
28
|
+
await access(getInstallPath(local));
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
async install(local, force) {
|
|
36
|
+
const agentDir = join(homedir(), config.dirName);
|
|
37
|
+
try {
|
|
38
|
+
await access(agentDir);
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
throw new Error(`${config.name} does not appear to be installed (${agentDir} not found)`);
|
|
42
|
+
}
|
|
43
|
+
const filepath = getInstallPath(local);
|
|
44
|
+
const exists = await this.isInstalled(local);
|
|
45
|
+
if (exists && !force) {
|
|
46
|
+
throw new Error(`Skill file already exists at ${filepath}. Use --force to overwrite.`);
|
|
47
|
+
}
|
|
48
|
+
await mkdir(dirname(filepath), { recursive: true });
|
|
49
|
+
await writeFile(filepath, this.generateContent(), 'utf-8');
|
|
50
|
+
},
|
|
51
|
+
async uninstall(local) {
|
|
52
|
+
const filepath = getInstallPath(local);
|
|
53
|
+
const exists = await this.isInstalled(local);
|
|
54
|
+
if (!exists) {
|
|
55
|
+
throw new Error(`Skill file not found at ${filepath}`);
|
|
56
|
+
}
|
|
57
|
+
await unlink(filepath);
|
|
58
|
+
const dir = dirname(filepath);
|
|
59
|
+
try {
|
|
60
|
+
const files = await readdir(dir);
|
|
61
|
+
if (files.length === 0) {
|
|
62
|
+
await rmdir(dir);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
// Ignore errors when cleaning up empty directory
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
//# 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":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/skills/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhD,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/skills/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhD,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAgB1D,CAAA;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAEtE;AAED,wBAAgB,UAAU,IAAI,MAAM,EAAE,CAErC;AAED,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA"}
|
package/dist/lib/skills/index.js
CHANGED
|
@@ -1,6 +1,20 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createInstaller } from './create-installer.js';
|
|
2
2
|
export const skillInstallers = {
|
|
3
|
-
'claude-code':
|
|
3
|
+
'claude-code': createInstaller({
|
|
4
|
+
name: 'claude-code',
|
|
5
|
+
description: 'Claude Code skill for Todoist CLI',
|
|
6
|
+
dirName: '.claude',
|
|
7
|
+
}),
|
|
8
|
+
codex: createInstaller({
|
|
9
|
+
name: 'codex',
|
|
10
|
+
description: 'Codex skill for Todoist CLI',
|
|
11
|
+
dirName: '.codex',
|
|
12
|
+
}),
|
|
13
|
+
cursor: createInstaller({
|
|
14
|
+
name: 'cursor',
|
|
15
|
+
description: 'Cursor skill for Todoist CLI',
|
|
16
|
+
dirName: '.cursor',
|
|
17
|
+
}),
|
|
4
18
|
};
|
|
5
19
|
export function getInstaller(agent) {
|
|
6
20
|
return skillInstallers[agent];
|
|
@@ -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,mCAAmC;QAChD,OAAO,EAAE,SAAS;KACrB,CAAC;IACF,KAAK,EAAE,eAAe,CAAC;QACnB,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,6BAA6B;QAC1C,OAAO,EAAE,QAAQ;KACpB,CAAC;IACF,MAAM,EAAE,eAAe,CAAC;QACpB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,8BAA8B;QAC3C,OAAO,EAAE,SAAS;KACrB,CAAC;CACL,CAAA;AAED,MAAM,UAAU,YAAY,CAAC,KAAa;IACtC,OAAO,eAAe,CAAC,KAAK,CAAC,CAAA;AACjC,CAAC;AAED,MAAM,UAAU,UAAU;IACtB,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;AACvC,CAAC"}
|
package/package.json
CHANGED
|
@@ -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,MAAM,YAAY,CAAA;AAoBhD,eAAO,MAAM,mBAAmB,EAAE,cAuDjC,CAAA"}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { access, mkdir, readdir, rmdir, unlink, 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 generateSkillFile() {
|
|
6
|
-
const frontmatter = `---
|
|
7
|
-
name: ${SKILL_NAME}
|
|
8
|
-
description: ${SKILL_DESCRIPTION}
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
`;
|
|
12
|
-
return frontmatter + SKILL_CONTENT;
|
|
13
|
-
}
|
|
14
|
-
function getGlobalPath() {
|
|
15
|
-
return join(homedir(), '.claude', 'skills', 'todoist-cli', 'SKILL.md');
|
|
16
|
-
}
|
|
17
|
-
function getLocalPath() {
|
|
18
|
-
return join(process.cwd(), '.claude', 'skills', 'todoist-cli', 'SKILL.md');
|
|
19
|
-
}
|
|
20
|
-
export const claudeCodeInstaller = {
|
|
21
|
-
name: 'claude-code',
|
|
22
|
-
description: 'Claude Code skill for Todoist CLI',
|
|
23
|
-
getInstallPath(local) {
|
|
24
|
-
return local ? getLocalPath() : getGlobalPath();
|
|
25
|
-
},
|
|
26
|
-
generateContent() {
|
|
27
|
-
return generateSkillFile();
|
|
28
|
-
},
|
|
29
|
-
async isInstalled(local) {
|
|
30
|
-
const filepath = this.getInstallPath(local);
|
|
31
|
-
try {
|
|
32
|
-
await access(filepath);
|
|
33
|
-
return true;
|
|
34
|
-
}
|
|
35
|
-
catch {
|
|
36
|
-
return false;
|
|
37
|
-
}
|
|
38
|
-
},
|
|
39
|
-
async install(local, force) {
|
|
40
|
-
const filepath = this.getInstallPath(local);
|
|
41
|
-
const exists = await this.isInstalled(local);
|
|
42
|
-
if (exists && !force) {
|
|
43
|
-
throw new Error(`Skill file already exists at ${filepath}. Use --force to overwrite.`);
|
|
44
|
-
}
|
|
45
|
-
const dir = dirname(filepath);
|
|
46
|
-
await mkdir(dir, { recursive: true });
|
|
47
|
-
await writeFile(filepath, this.generateContent(), 'utf-8');
|
|
48
|
-
},
|
|
49
|
-
async uninstall(local) {
|
|
50
|
-
const filepath = this.getInstallPath(local);
|
|
51
|
-
const exists = await this.isInstalled(local);
|
|
52
|
-
if (!exists) {
|
|
53
|
-
throw new Error(`Skill file not found at ${filepath}`);
|
|
54
|
-
}
|
|
55
|
-
await unlink(filepath);
|
|
56
|
-
const dir = dirname(filepath);
|
|
57
|
-
try {
|
|
58
|
-
const files = await readdir(dir);
|
|
59
|
-
if (files.length === 0) {
|
|
60
|
-
await rmdir(dir);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
catch {
|
|
64
|
-
// Ignore errors when cleaning up empty directory
|
|
65
|
-
}
|
|
66
|
-
},
|
|
67
|
-
};
|
|
68
|
-
//# 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":"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"}
|