@take-out/cli 0.1.45-1773289062029 → 0.1.46
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/cjs/commands/skills.cjs +37 -133
- package/dist/cjs/commands/skills.js +32 -103
- package/dist/cjs/commands/skills.js.map +2 -2
- package/dist/esm/commands/skills.js +33 -108
- package/dist/esm/commands/skills.js.map +1 -1
- package/dist/esm/commands/skills.mjs +37 -133
- package/dist/esm/commands/skills.mjs.map +1 -1
- package/package.json +4 -4
- package/src/commands/skills.ts +45 -222
- package/types/commands/skills.d.ts.map +1 -1
|
@@ -37,111 +37,10 @@ module.exports = __toCommonJS(skills_exports);
|
|
|
37
37
|
var import_node_fs = require("node:fs"),
|
|
38
38
|
import_node_module = require("node:module"),
|
|
39
39
|
import_node_path = require("node:path"),
|
|
40
|
-
import_node_url = require("node:url"),
|
|
41
40
|
import_citty = require("citty"),
|
|
42
|
-
import_picocolors = __toESM(require("picocolors"), 1)
|
|
43
|
-
import_script_utils = require("../utils/script-utils.cjs");
|
|
41
|
+
import_picocolors = __toESM(require("picocolors"), 1);
|
|
44
42
|
const import_meta = {},
|
|
45
|
-
|
|
46
|
-
name: "onboard",
|
|
47
|
-
description: "setup wizard for new projects"
|
|
48
|
-
}, {
|
|
49
|
-
name: "docs",
|
|
50
|
-
description: "view documentation"
|
|
51
|
-
}, {
|
|
52
|
-
name: "env:setup",
|
|
53
|
-
description: "setup environment variables"
|
|
54
|
-
}, {
|
|
55
|
-
name: "run",
|
|
56
|
-
description: "run scripts in parallel"
|
|
57
|
-
}, {
|
|
58
|
-
name: "script",
|
|
59
|
-
description: "manage and run scripts"
|
|
60
|
-
}, {
|
|
61
|
-
name: "sync",
|
|
62
|
-
description: "sync fork with upstream takeout"
|
|
63
|
-
}, {
|
|
64
|
-
name: "changed",
|
|
65
|
-
description: "show changes since last sync"
|
|
66
|
-
}, {
|
|
67
|
-
name: "skills",
|
|
68
|
-
description: "manage claude code skills"
|
|
69
|
-
}, {
|
|
70
|
-
name: "completion",
|
|
71
|
-
description: "shell completion setup"
|
|
72
|
-
}];
|
|
73
|
-
function findScriptsPackageRoot() {
|
|
74
|
-
try {
|
|
75
|
-
const resolved = import_meta.resolve("@take-out/scripts/package.json"),
|
|
76
|
-
packageJsonPath = (0, import_node_url.fileURLToPath)(new URL(resolved));
|
|
77
|
-
return (0, import_node_path.join)(packageJsonPath, "..", "src");
|
|
78
|
-
} catch {
|
|
79
|
-
return null;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
function buildSummaryDescription(localScripts, builtInScripts) {
|
|
83
|
-
const categories = /* @__PURE__ */new Set(),
|
|
84
|
-
keywords = /* @__PURE__ */new Set();
|
|
85
|
-
for (const [name] of [...localScripts, ...builtInScripts]) keywords.add(name), name.includes("/") && categories.add(name.split("/")[0]);
|
|
86
|
-
for (const cmd of BUILTIN_COMMANDS) keywords.add(cmd.name);
|
|
87
|
-
return `CLI scripts and commands reference for the tko (takeout) CLI. Use when the user asks to run scripts, manage the project, or needs to know what commands are available. tko, takeout, CLI, scripts, commands, bun tko, project tasks, automation, ${[...categories].sort().join(", ")}, ${[...keywords].sort().join(", ")}`.slice(0, 2048);
|
|
88
|
-
}
|
|
89
|
-
function buildSummaryContent(localScripts, builtInScripts, metadata) {
|
|
90
|
-
const description = buildSummaryDescription(localScripts, builtInScripts),
|
|
91
|
-
lines = [];
|
|
92
|
-
lines.push("---"), lines.push("name: tko-scripts"), lines.push(`description: ${description}`), lines.push("---"), lines.push(""), lines.push("# tko CLI - scripts & commands"), lines.push(""), lines.push("run with `bun tko <command>` or `bun tko <script-name>`."), lines.push(""), lines.push("## built-in commands"), lines.push("");
|
|
93
|
-
for (const cmd of BUILTIN_COMMANDS) lines.push(` ${cmd.name} - ${cmd.description}`);
|
|
94
|
-
lines.push("");
|
|
95
|
-
const formatSection = (title, scripts) => {
|
|
96
|
-
if (scripts.size === 0) return;
|
|
97
|
-
const categories = /* @__PURE__ */new Map(),
|
|
98
|
-
rootScripts = [];
|
|
99
|
-
for (const [name] of scripts) if (name.includes("/")) {
|
|
100
|
-
const category = name.split("/")[0];
|
|
101
|
-
categories.has(category) || categories.set(category, []), categories.get(category).push(name);
|
|
102
|
-
} else rootScripts.push(name);
|
|
103
|
-
lines.push(`## ${title}`), lines.push("");
|
|
104
|
-
for (const name of rootScripts) {
|
|
105
|
-
const meta = metadata.get(name),
|
|
106
|
-
desc = meta?.description ? ` - ${meta.description}` : "",
|
|
107
|
-
args = meta?.args?.length ? ` [${meta.args.join(", ")}]` : "";
|
|
108
|
-
lines.push(` ${name}${desc}${args}`);
|
|
109
|
-
}
|
|
110
|
-
for (const [category, categoryScripts] of categories) {
|
|
111
|
-
lines.push(""), lines.push(` ${category}/`);
|
|
112
|
-
for (const name of categoryScripts) {
|
|
113
|
-
const shortName = name.substring(category.length + 1),
|
|
114
|
-
meta = metadata.get(name),
|
|
115
|
-
desc = meta?.description ? ` - ${meta.description}` : "",
|
|
116
|
-
args = meta?.args?.length ? ` [${meta.args.join(", ")}]` : "";
|
|
117
|
-
lines.push(` ${shortName}${desc}${args}`);
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
lines.push("");
|
|
121
|
-
};
|
|
122
|
-
return formatSection("local scripts", localScripts), formatSection("built-in scripts", builtInScripts), lines.push("## usage"), lines.push(""), lines.push("```bash"), lines.push("bun tko <command> # run a built-in command"), lines.push("bun tko <script-name> # execute direct script"), lines.push("bun tko <group> <script> # execute nested script (e.g. bun tko aws health)"), lines.push("bun tko run s1 s2 s3 # run multiple scripts in parallel"), lines.push("bun tko script new <path> # create a new script"), lines.push("```"), lines.push(""), lines.join(`
|
|
123
|
-
`);
|
|
124
|
-
}
|
|
125
|
-
async function generateSummary(cwd) {
|
|
126
|
-
const skillsDir = (0, import_node_path.join)(cwd, ".claude", "skills"),
|
|
127
|
-
skillDir = (0, import_node_path.join)(skillsDir, "tko-scripts"),
|
|
128
|
-
skillFile = (0, import_node_path.join)(skillDir, "SKILL.md"),
|
|
129
|
-
localScripts = (0, import_script_utils.discoverScripts)((0, import_script_utils.getLocalScriptsDir)()),
|
|
130
|
-
builtInDir = findScriptsPackageRoot(),
|
|
131
|
-
builtInScripts = builtInDir ? (0, import_script_utils.discoverScripts)(builtInDir) : /* @__PURE__ */new Map(),
|
|
132
|
-
allScripts = new Map([...localScripts, ...builtInScripts]),
|
|
133
|
-
metadata = await (0, import_script_utils.getAllScriptMetadata)(allScripts),
|
|
134
|
-
totalScripts = localScripts.size + builtInScripts.size;
|
|
135
|
-
console.info(import_picocolors.default.dim(`found ${totalScripts} scripts (${localScripts.size} local, ${builtInScripts.size} built-in) + ${BUILTIN_COMMANDS.length} commands`));
|
|
136
|
-
const content = buildSummaryContent(localScripts, builtInScripts, metadata);
|
|
137
|
-
try {
|
|
138
|
-
if ((0, import_node_fs.readFileSync)(skillFile, "utf-8") === content) return console.info(` ${import_picocolors.default.dim("tko-scripts")} ${import_picocolors.default.dim("unchanged")}`), !1;
|
|
139
|
-
} catch {}
|
|
140
|
-
return (0, import_node_fs.existsSync)(skillDir) || (0, import_node_fs.mkdirSync)(skillDir, {
|
|
141
|
-
recursive: !0
|
|
142
|
-
}), (0, import_node_fs.writeFileSync)(skillFile, content), console.info(` ${import_picocolors.default.green("\u2713")} tko-scripts`), !0;
|
|
143
|
-
}
|
|
144
|
-
const require2 = (0, import_node_module.createRequire)(import_meta.url);
|
|
43
|
+
require2 = (0, import_node_module.createRequire)(import_meta.url);
|
|
145
44
|
let DOCS_DIR;
|
|
146
45
|
try {
|
|
147
46
|
DOCS_DIR = (0, import_node_path.dirname)(require2.resolve("@take-out/docs/package.json"));
|
|
@@ -224,13 +123,10 @@ function collectAllDocs(cwd) {
|
|
|
224
123
|
}
|
|
225
124
|
async function generateDocSkills(cwd, clean) {
|
|
226
125
|
const skillsDir = (0, import_node_path.join)(cwd, ".claude", "skills"),
|
|
227
|
-
docs = collectAllDocs(cwd)
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
unchanged: 0
|
|
232
|
-
};
|
|
233
|
-
if (console.info(import_picocolors.default.dim(`found ${docs.length} documentation files`)), clean && (0, import_node_fs.existsSync)(skillsDir)) {
|
|
126
|
+
docs = collectAllDocs(cwd),
|
|
127
|
+
localDocsDir = (0, import_node_path.join)(cwd, "docs"),
|
|
128
|
+
expectedSkillNames = /* @__PURE__ */new Set();
|
|
129
|
+
if (docs.length === 0 ? console.info(import_picocolors.default.yellow("no documentation files found")) : console.info(import_picocolors.default.dim(`found ${docs.length} documentation files`)), clean && (0, import_node_fs.existsSync)(skillsDir)) {
|
|
234
130
|
const existing = (0, import_node_fs.readdirSync)(skillsDir);
|
|
235
131
|
for (const dir of existing) dir.startsWith(SKILL_PREFIX) && (0, import_node_fs.rmSync)((0, import_node_path.join)(skillsDir, dir), {
|
|
236
132
|
recursive: !0
|
|
@@ -241,7 +137,8 @@ async function generateDocSkills(cwd, clean) {
|
|
|
241
137
|
});
|
|
242
138
|
let symlinked = 0,
|
|
243
139
|
generated = 0,
|
|
244
|
-
unchanged = 0
|
|
140
|
+
unchanged = 0,
|
|
141
|
+
removed = 0;
|
|
245
142
|
const isDev = !!process.env.IS_TAMAGUI_DEV;
|
|
246
143
|
for (const doc of docs) {
|
|
247
144
|
const content = (0, import_node_fs.readFileSync)(doc.path, "utf-8");
|
|
@@ -249,8 +146,9 @@ async function generateDocSkills(cwd, clean) {
|
|
|
249
146
|
if (hasSkillFrontmatter(content)) {
|
|
250
147
|
const nameMatch = content.match(/^---\s*\nname:\s*([^\n]+)/m);
|
|
251
148
|
if (!nameMatch) continue;
|
|
252
|
-
const skillName = nameMatch[1].trim()
|
|
253
|
-
|
|
149
|
+
const skillName = nameMatch[1].trim();
|
|
150
|
+
expectedSkillNames.add(skillName);
|
|
151
|
+
const skillDir = (0, import_node_path.join)(skillsDir, skillName),
|
|
254
152
|
skillFile = (0, import_node_path.join)(skillDir, "SKILL.md");
|
|
255
153
|
(0, import_node_fs.existsSync)(skillDir) || (0, import_node_fs.mkdirSync)(skillDir, {
|
|
256
154
|
recursive: !0
|
|
@@ -266,8 +164,9 @@ async function generateDocSkills(cwd, clean) {
|
|
|
266
164
|
console.info(` ${import_picocolors.default.green("\u27F7")} ${skillName} ${sourceLabel} ${import_picocolors.default.dim("(symlink)")}`);
|
|
267
165
|
} else {
|
|
268
166
|
const baseName = toSkillName(doc.name),
|
|
269
|
-
skillName = `${SKILL_PREFIX}${baseName}
|
|
270
|
-
|
|
167
|
+
skillName = `${SKILL_PREFIX}${baseName}`;
|
|
168
|
+
expectedSkillNames.add(skillName);
|
|
169
|
+
const skillDir = (0, import_node_path.join)(skillsDir, skillName),
|
|
271
170
|
skillFile = (0, import_node_path.join)(skillDir, "SKILL.md");
|
|
272
171
|
(0, import_node_fs.existsSync)(skillDir) || (0, import_node_fs.mkdirSync)(skillDir, {
|
|
273
172
|
recursive: !0
|
|
@@ -294,26 +193,31 @@ ${content}
|
|
|
294
193
|
console.info(` ${import_picocolors.default.green("\u2713")} ${skillName} ${sourceLabel} ${import_picocolors.default.dim("(generated)")}`);
|
|
295
194
|
}
|
|
296
195
|
}
|
|
196
|
+
for (const dir of (0, import_node_fs.readdirSync)(skillsDir)) {
|
|
197
|
+
if (expectedSkillNames.has(dir)) continue;
|
|
198
|
+
const skillDir = (0, import_node_path.join)(skillsDir, dir),
|
|
199
|
+
skillFile = (0, import_node_path.join)(skillDir, "SKILL.md");
|
|
200
|
+
let shouldUnlink = !1;
|
|
201
|
+
try {
|
|
202
|
+
if ((0, import_node_fs.lstatSync)(skillFile).isSymbolicLink()) {
|
|
203
|
+
const linkTarget = (0, import_node_fs.readlinkSync)(skillFile),
|
|
204
|
+
resolvedTarget = (0, import_node_path.resolve)(skillDir, linkTarget);
|
|
205
|
+
shouldUnlink = resolvedTarget.startsWith(`${localDocsDir}/`) || !!DOCS_DIR && resolvedTarget.startsWith(`${DOCS_DIR}/`);
|
|
206
|
+
}
|
|
207
|
+
} catch {}
|
|
208
|
+
shouldUnlink && ((0, import_node_fs.unlinkSync)(skillFile), (0, import_node_fs.readdirSync)(skillDir).length === 0 && (0, import_node_fs.rmdirSync)(skillDir), removed++, console.info(` ${import_picocolors.default.red("\u2715")} ${dir} ${import_picocolors.default.dim("(removed stale symlink)")}`));
|
|
209
|
+
}
|
|
297
210
|
return {
|
|
298
211
|
symlinked,
|
|
299
212
|
generated,
|
|
300
|
-
unchanged
|
|
213
|
+
unchanged,
|
|
214
|
+
removed
|
|
301
215
|
};
|
|
302
216
|
}
|
|
303
|
-
const
|
|
304
|
-
meta: {
|
|
305
|
-
name: "scripts",
|
|
306
|
-
description: "Generate a skill summarizing all tko scripts and commands"
|
|
307
|
-
},
|
|
308
|
-
async run() {
|
|
309
|
-
const cwd = process.cwd();
|
|
310
|
-
console.info(), console.info(import_picocolors.default.bold(import_picocolors.default.cyan("Generate scripts skill"))), console.info(), await generateSummary(cwd), console.info();
|
|
311
|
-
}
|
|
312
|
-
}),
|
|
313
|
-
generateCommand = (0, import_citty.defineCommand)({
|
|
217
|
+
const generateCommand = (0, import_citty.defineCommand)({
|
|
314
218
|
meta: {
|
|
315
219
|
name: "generate",
|
|
316
|
-
description: "Generate
|
|
220
|
+
description: "Generate Claude Code skills from documentation"
|
|
317
221
|
},
|
|
318
222
|
args: {
|
|
319
223
|
clean: {
|
|
@@ -335,12 +239,13 @@ const scriptsCommand = (0, import_citty.defineCommand)({
|
|
|
335
239
|
console.info(), console.info(import_picocolors.default.bold(import_picocolors.default.cyan("Generate all skills"))), console.info();
|
|
336
240
|
let symlinked = 0,
|
|
337
241
|
generated = 0,
|
|
338
|
-
unchanged = 0
|
|
242
|
+
unchanged = 0,
|
|
243
|
+
removed = 0;
|
|
339
244
|
if (!args["skip-internal-docs"]) {
|
|
340
245
|
const docStats = await generateDocSkills(cwd, args.clean);
|
|
341
|
-
symlinked = docStats.symlinked, generated = docStats.generated, unchanged = docStats.unchanged, console.info();
|
|
246
|
+
symlinked = docStats.symlinked, generated = docStats.generated, unchanged = docStats.unchanged, removed = docStats.removed, console.info();
|
|
342
247
|
}
|
|
343
|
-
|
|
248
|
+
console.info(), console.info(import_picocolors.default.bold("summary:")), symlinked > 0 && console.info(` ${import_picocolors.default.green(`${symlinked} symlinked`)}`), generated > 0 && console.info(` ${import_picocolors.default.yellow(`${generated} generated`)} ${import_picocolors.default.dim("(add frontmatter to enable symlink)")}`), unchanged > 0 && console.info(` ${import_picocolors.default.dim(`${unchanged} unchanged`)}`), removed > 0 && console.info(` ${import_picocolors.default.red(`${removed} removed`)}`), console.info(import_picocolors.default.dim(` skills in ${skillsDir}`)), console.info();
|
|
344
249
|
}
|
|
345
250
|
}),
|
|
346
251
|
skillsCommand = (0, import_citty.defineCommand)({
|
|
@@ -349,7 +254,6 @@ const scriptsCommand = (0, import_citty.defineCommand)({
|
|
|
349
254
|
description: "Manage Claude Code skills"
|
|
350
255
|
},
|
|
351
256
|
subCommands: {
|
|
352
|
-
generate: generateCommand
|
|
353
|
-
scripts: scriptsCommand
|
|
257
|
+
generate: generateCommand
|
|
354
258
|
}
|
|
355
259
|
});
|
|
@@ -25,84 +25,8 @@ __export(skills_exports, {
|
|
|
25
25
|
skillsCommand: () => skillsCommand
|
|
26
26
|
});
|
|
27
27
|
module.exports = __toCommonJS(skills_exports);
|
|
28
|
-
var import_node_fs = require("node:fs"), import_node_module = require("node:module"), import_node_path = require("node:path"),
|
|
29
|
-
const import_meta = {},
|
|
30
|
-
{ name: "onboard", description: "setup wizard for new projects" },
|
|
31
|
-
{ name: "docs", description: "view documentation" },
|
|
32
|
-
{ name: "env:setup", description: "setup environment variables" },
|
|
33
|
-
{ name: "run", description: "run scripts in parallel" },
|
|
34
|
-
{ name: "script", description: "manage and run scripts" },
|
|
35
|
-
{ name: "sync", description: "sync fork with upstream takeout" },
|
|
36
|
-
{ name: "changed", description: "show changes since last sync" },
|
|
37
|
-
{ name: "skills", description: "manage claude code skills" },
|
|
38
|
-
{ name: "completion", description: "shell completion setup" }
|
|
39
|
-
];
|
|
40
|
-
function findScriptsPackageRoot() {
|
|
41
|
-
try {
|
|
42
|
-
const resolved = import_meta.resolve("@take-out/scripts/package.json"), packageJsonPath = (0, import_node_url.fileURLToPath)(new URL(resolved));
|
|
43
|
-
return (0, import_node_path.join)(packageJsonPath, "..", "src");
|
|
44
|
-
} catch {
|
|
45
|
-
return null;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
function buildSummaryDescription(localScripts, builtInScripts) {
|
|
49
|
-
const categories = /* @__PURE__ */ new Set(), keywords = /* @__PURE__ */ new Set();
|
|
50
|
-
for (const [name] of [...localScripts, ...builtInScripts])
|
|
51
|
-
keywords.add(name), name.includes("/") && categories.add(name.split("/")[0]);
|
|
52
|
-
for (const cmd of BUILTIN_COMMANDS)
|
|
53
|
-
keywords.add(cmd.name);
|
|
54
|
-
return `CLI scripts and commands reference for the tko (takeout) CLI. Use when the user asks to run scripts, manage the project, or needs to know what commands are available. tko, takeout, CLI, scripts, commands, bun tko, project tasks, automation, ${[...categories].sort().join(", ")}, ${[...keywords].sort().join(", ")}`.slice(0, 2048);
|
|
55
|
-
}
|
|
56
|
-
function buildSummaryContent(localScripts, builtInScripts, metadata) {
|
|
57
|
-
const description = buildSummaryDescription(localScripts, builtInScripts), lines = [];
|
|
58
|
-
lines.push("---"), lines.push("name: tko-scripts"), lines.push(`description: ${description}`), lines.push("---"), lines.push(""), lines.push("# tko CLI - scripts & commands"), lines.push(""), lines.push("run with `bun tko <command>` or `bun tko <script-name>`."), lines.push(""), lines.push("## built-in commands"), lines.push("");
|
|
59
|
-
for (const cmd of BUILTIN_COMMANDS)
|
|
60
|
-
lines.push(` ${cmd.name} - ${cmd.description}`);
|
|
61
|
-
lines.push("");
|
|
62
|
-
const formatSection = (title, scripts) => {
|
|
63
|
-
if (scripts.size === 0) return;
|
|
64
|
-
const categories = /* @__PURE__ */ new Map(), rootScripts = [];
|
|
65
|
-
for (const [name] of scripts)
|
|
66
|
-
if (name.includes("/")) {
|
|
67
|
-
const category = name.split("/")[0];
|
|
68
|
-
categories.has(category) || categories.set(category, []), categories.get(category).push(name);
|
|
69
|
-
} else
|
|
70
|
-
rootScripts.push(name);
|
|
71
|
-
lines.push(`## ${title}`), lines.push("");
|
|
72
|
-
for (const name of rootScripts) {
|
|
73
|
-
const meta = metadata.get(name), desc = meta?.description ? ` - ${meta.description}` : "", args = meta?.args?.length ? ` [${meta.args.join(", ")}]` : "";
|
|
74
|
-
lines.push(` ${name}${desc}${args}`);
|
|
75
|
-
}
|
|
76
|
-
for (const [category, categoryScripts] of categories) {
|
|
77
|
-
lines.push(""), lines.push(` ${category}/`);
|
|
78
|
-
for (const name of categoryScripts) {
|
|
79
|
-
const shortName = name.substring(category.length + 1), meta = metadata.get(name), desc = meta?.description ? ` - ${meta.description}` : "", args = meta?.args?.length ? ` [${meta.args.join(", ")}]` : "";
|
|
80
|
-
lines.push(` ${shortName}${desc}${args}`);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
lines.push("");
|
|
84
|
-
};
|
|
85
|
-
return formatSection("local scripts", localScripts), formatSection("built-in scripts", builtInScripts), lines.push("## usage"), lines.push(""), lines.push("```bash"), lines.push("bun tko <command> # run a built-in command"), lines.push("bun tko <script-name> # execute direct script"), lines.push(
|
|
86
|
-
"bun tko <group> <script> # execute nested script (e.g. bun tko aws health)"
|
|
87
|
-
), lines.push("bun tko run s1 s2 s3 # run multiple scripts in parallel"), lines.push("bun tko script new <path> # create a new script"), lines.push("```"), lines.push(""), lines.join(`
|
|
88
|
-
`);
|
|
89
|
-
}
|
|
90
|
-
async function generateSummary(cwd) {
|
|
91
|
-
const skillsDir = (0, import_node_path.join)(cwd, ".claude", "skills"), skillDir = (0, import_node_path.join)(skillsDir, "tko-scripts"), skillFile = (0, import_node_path.join)(skillDir, "SKILL.md"), localScripts = (0, import_script_utils.discoverScripts)((0, import_script_utils.getLocalScriptsDir)()), builtInDir = findScriptsPackageRoot(), builtInScripts = builtInDir ? (0, import_script_utils.discoverScripts)(builtInDir) : /* @__PURE__ */ new Map(), allScripts = new Map([...localScripts, ...builtInScripts]), metadata = await (0, import_script_utils.getAllScriptMetadata)(allScripts), totalScripts = localScripts.size + builtInScripts.size;
|
|
92
|
-
console.info(
|
|
93
|
-
import_picocolors.default.dim(
|
|
94
|
-
`found ${totalScripts} scripts (${localScripts.size} local, ${builtInScripts.size} built-in) + ${BUILTIN_COMMANDS.length} commands`
|
|
95
|
-
)
|
|
96
|
-
);
|
|
97
|
-
const content = buildSummaryContent(localScripts, builtInScripts, metadata);
|
|
98
|
-
try {
|
|
99
|
-
if ((0, import_node_fs.readFileSync)(skillFile, "utf-8") === content)
|
|
100
|
-
return console.info(` ${import_picocolors.default.dim("tko-scripts")} ${import_picocolors.default.dim("unchanged")}`), !1;
|
|
101
|
-
} catch {
|
|
102
|
-
}
|
|
103
|
-
return (0, import_node_fs.existsSync)(skillDir) || (0, import_node_fs.mkdirSync)(skillDir, { recursive: !0 }), (0, import_node_fs.writeFileSync)(skillFile, content), console.info(` ${import_picocolors.default.green("\u2713")} tko-scripts`), !0;
|
|
104
|
-
}
|
|
105
|
-
const require2 = (0, import_node_module.createRequire)(import_meta.url);
|
|
28
|
+
var import_node_fs = require("node:fs"), import_node_module = require("node:module"), import_node_path = require("node:path"), import_citty = require("citty"), import_picocolors = __toESM(require("picocolors"), 1);
|
|
29
|
+
const import_meta = {}, require2 = (0, import_node_module.createRequire)(import_meta.url);
|
|
106
30
|
let DOCS_DIR;
|
|
107
31
|
try {
|
|
108
32
|
DOCS_DIR = (0, import_node_path.dirname)(require2.resolve("@take-out/docs/package.json"));
|
|
@@ -170,16 +94,14 @@ function collectAllDocs(cwd) {
|
|
|
170
94
|
return docs;
|
|
171
95
|
}
|
|
172
96
|
async function generateDocSkills(cwd, clean) {
|
|
173
|
-
const skillsDir = (0, import_node_path.join)(cwd, ".claude", "skills"), docs = collectAllDocs(cwd);
|
|
174
|
-
if (docs.length === 0)
|
|
175
|
-
return console.info(import_picocolors.default.yellow("no documentation files found")), { symlinked: 0, generated: 0, unchanged: 0 };
|
|
176
|
-
if (console.info(import_picocolors.default.dim(`found ${docs.length} documentation files`)), clean && (0, import_node_fs.existsSync)(skillsDir)) {
|
|
97
|
+
const skillsDir = (0, import_node_path.join)(cwd, ".claude", "skills"), docs = collectAllDocs(cwd), localDocsDir = (0, import_node_path.join)(cwd, "docs"), expectedSkillNames = /* @__PURE__ */ new Set();
|
|
98
|
+
if (docs.length === 0 ? console.info(import_picocolors.default.yellow("no documentation files found")) : console.info(import_picocolors.default.dim(`found ${docs.length} documentation files`)), clean && (0, import_node_fs.existsSync)(skillsDir)) {
|
|
177
99
|
const existing = (0, import_node_fs.readdirSync)(skillsDir);
|
|
178
100
|
for (const dir of existing)
|
|
179
101
|
dir.startsWith(SKILL_PREFIX) && (0, import_node_fs.rmSync)((0, import_node_path.join)(skillsDir, dir), { recursive: !0 });
|
|
180
102
|
}
|
|
181
103
|
(0, import_node_fs.existsSync)(skillsDir) || (0, import_node_fs.mkdirSync)(skillsDir, { recursive: !0 });
|
|
182
|
-
let symlinked = 0, generated = 0, unchanged = 0;
|
|
104
|
+
let symlinked = 0, generated = 0, unchanged = 0, removed = 0;
|
|
183
105
|
const isDev = !!process.env.IS_TAMAGUI_DEV;
|
|
184
106
|
for (const doc of docs) {
|
|
185
107
|
const content = (0, import_node_fs.readFileSync)(doc.path, "utf-8");
|
|
@@ -187,7 +109,9 @@ async function generateDocSkills(cwd, clean) {
|
|
|
187
109
|
if (hasSkillFrontmatter(content)) {
|
|
188
110
|
const nameMatch = content.match(/^---\s*\nname:\s*([^\n]+)/m);
|
|
189
111
|
if (!nameMatch) continue;
|
|
190
|
-
const skillName = nameMatch[1].trim()
|
|
112
|
+
const skillName = nameMatch[1].trim();
|
|
113
|
+
expectedSkillNames.add(skillName);
|
|
114
|
+
const skillDir = (0, import_node_path.join)(skillsDir, skillName), skillFile = (0, import_node_path.join)(skillDir, "SKILL.md");
|
|
191
115
|
(0, import_node_fs.existsSync)(skillDir) || (0, import_node_fs.mkdirSync)(skillDir, { recursive: !0 });
|
|
192
116
|
const relativePath = (0, import_node_path.relative)(skillDir, doc.path);
|
|
193
117
|
let shouldCreate = !0;
|
|
@@ -202,7 +126,9 @@ async function generateDocSkills(cwd, clean) {
|
|
|
202
126
|
` ${import_picocolors.default.green("\u27F7")} ${skillName} ${sourceLabel} ${import_picocolors.default.dim("(symlink)")}`
|
|
203
127
|
);
|
|
204
128
|
} else {
|
|
205
|
-
const baseName = toSkillName(doc.name), skillName = `${SKILL_PREFIX}${baseName}
|
|
129
|
+
const baseName = toSkillName(doc.name), skillName = `${SKILL_PREFIX}${baseName}`;
|
|
130
|
+
expectedSkillNames.add(skillName);
|
|
131
|
+
const skillDir = (0, import_node_path.join)(skillsDir, skillName), skillFile = (0, import_node_path.join)(skillDir, "SKILL.md");
|
|
206
132
|
(0, import_node_fs.existsSync)(skillDir) || (0, import_node_fs.mkdirSync)(skillDir, { recursive: !0 });
|
|
207
133
|
const { title, description } = extractDocMeta(content), skillDescription = description ? `${title}. ${description}`.slice(0, 1024) : title.slice(0, 1024), skillContent = `---
|
|
208
134
|
name: ${skillName}
|
|
@@ -224,21 +150,25 @@ ${content}
|
|
|
224
150
|
);
|
|
225
151
|
}
|
|
226
152
|
}
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
const
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
153
|
+
for (const dir of (0, import_node_fs.readdirSync)(skillsDir)) {
|
|
154
|
+
if (expectedSkillNames.has(dir)) continue;
|
|
155
|
+
const skillDir = (0, import_node_path.join)(skillsDir, dir), skillFile = (0, import_node_path.join)(skillDir, "SKILL.md");
|
|
156
|
+
let shouldUnlink = !1;
|
|
157
|
+
try {
|
|
158
|
+
if ((0, import_node_fs.lstatSync)(skillFile).isSymbolicLink()) {
|
|
159
|
+
const linkTarget = (0, import_node_fs.readlinkSync)(skillFile), resolvedTarget = (0, import_node_path.resolve)(skillDir, linkTarget);
|
|
160
|
+
shouldUnlink = resolvedTarget.startsWith(`${localDocsDir}/`) || !!DOCS_DIR && resolvedTarget.startsWith(`${DOCS_DIR}/`);
|
|
161
|
+
}
|
|
162
|
+
} catch {
|
|
163
|
+
}
|
|
164
|
+
shouldUnlink && ((0, import_node_fs.unlinkSync)(skillFile), (0, import_node_fs.readdirSync)(skillDir).length === 0 && (0, import_node_fs.rmdirSync)(skillDir), removed++, console.info(` ${import_picocolors.default.red("\u2715")} ${dir} ${import_picocolors.default.dim("(removed stale symlink)")}`));
|
|
237
165
|
}
|
|
238
|
-
|
|
166
|
+
return { symlinked, generated, unchanged, removed };
|
|
167
|
+
}
|
|
168
|
+
const generateCommand = (0, import_citty.defineCommand)({
|
|
239
169
|
meta: {
|
|
240
170
|
name: "generate",
|
|
241
|
-
description: "Generate
|
|
171
|
+
description: "Generate Claude Code skills from documentation"
|
|
242
172
|
},
|
|
243
173
|
args: {
|
|
244
174
|
clean: {
|
|
@@ -255,14 +185,14 @@ const scriptsCommand = (0, import_citty.defineCommand)({
|
|
|
255
185
|
async run({ args }) {
|
|
256
186
|
const cwd = process.cwd(), skillsDir = (0, import_node_path.join)(cwd, ".claude", "skills");
|
|
257
187
|
console.info(), console.info(import_picocolors.default.bold(import_picocolors.default.cyan("Generate all skills"))), console.info();
|
|
258
|
-
let symlinked = 0, generated = 0, unchanged = 0;
|
|
188
|
+
let symlinked = 0, generated = 0, unchanged = 0, removed = 0;
|
|
259
189
|
if (!args["skip-internal-docs"]) {
|
|
260
190
|
const docStats = await generateDocSkills(cwd, args.clean);
|
|
261
|
-
symlinked = docStats.symlinked, generated = docStats.generated, unchanged = docStats.unchanged, console.info();
|
|
191
|
+
symlinked = docStats.symlinked, generated = docStats.generated, unchanged = docStats.unchanged, removed = docStats.removed, console.info();
|
|
262
192
|
}
|
|
263
|
-
|
|
193
|
+
console.info(), console.info(import_picocolors.default.bold("summary:")), symlinked > 0 && console.info(` ${import_picocolors.default.green(`${symlinked} symlinked`)}`), generated > 0 && console.info(
|
|
264
194
|
` ${import_picocolors.default.yellow(`${generated} generated`)} ${import_picocolors.default.dim("(add frontmatter to enable symlink)")}`
|
|
265
|
-
), unchanged > 0 && console.info(` ${import_picocolors.default.dim(`${unchanged} unchanged`)}`), console.info(import_picocolors.default.dim(` skills in ${skillsDir}`)), console.info();
|
|
195
|
+
), unchanged > 0 && console.info(` ${import_picocolors.default.dim(`${unchanged} unchanged`)}`), removed > 0 && console.info(` ${import_picocolors.default.red(`${removed} removed`)}`), console.info(import_picocolors.default.dim(` skills in ${skillsDir}`)), console.info();
|
|
266
196
|
}
|
|
267
197
|
}), skillsCommand = (0, import_citty.defineCommand)({
|
|
268
198
|
meta: {
|
|
@@ -270,8 +200,7 @@ const scriptsCommand = (0, import_citty.defineCommand)({
|
|
|
270
200
|
description: "Manage Claude Code skills"
|
|
271
201
|
},
|
|
272
202
|
subCommands: {
|
|
273
|
-
generate: generateCommand
|
|
274
|
-
scripts: scriptsCommand
|
|
203
|
+
generate: generateCommand
|
|
275
204
|
}
|
|
276
205
|
});
|
|
277
206
|
//# sourceMappingURL=skills.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/commands/skills.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,
|
|
5
|
-
"names": ["
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["require", "pc"]
|
|
6
6
|
}
|