@knowledgine/cli 0.2.0 → 0.3.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 (265) hide show
  1. package/dist/commands/capture.d.ts +13 -0
  2. package/dist/commands/capture.d.ts.map +1 -1
  3. package/dist/commands/capture.js +113 -12
  4. package/dist/commands/capture.js.map +1 -1
  5. package/dist/commands/demo.d.ts.map +1 -1
  6. package/dist/commands/demo.js +23 -19
  7. package/dist/commands/demo.js.map +1 -1
  8. package/dist/commands/deprecation-check.d.ts +7 -0
  9. package/dist/commands/deprecation-check.d.ts.map +1 -0
  10. package/dist/commands/deprecation-check.js +75 -0
  11. package/dist/commands/deprecation-check.js.map +1 -0
  12. package/dist/commands/explain.d.ts +10 -0
  13. package/dist/commands/explain.d.ts.map +1 -0
  14. package/dist/commands/explain.js +252 -0
  15. package/dist/commands/explain.js.map +1 -0
  16. package/dist/commands/feedback-suggest.d.ts +8 -0
  17. package/dist/commands/feedback-suggest.d.ts.map +1 -0
  18. package/dist/commands/feedback-suggest.js +43 -0
  19. package/dist/commands/feedback-suggest.js.map +1 -0
  20. package/dist/commands/feedback.d.ts +9 -0
  21. package/dist/commands/feedback.d.ts.map +1 -1
  22. package/dist/commands/feedback.js +57 -21
  23. package/dist/commands/feedback.js.map +1 -1
  24. package/dist/commands/ingest.d.ts +1 -0
  25. package/dist/commands/ingest.d.ts.map +1 -1
  26. package/dist/commands/ingest.js +96 -19
  27. package/dist/commands/ingest.js.map +1 -1
  28. package/dist/commands/init.d.ts +2 -0
  29. package/dist/commands/init.d.ts.map +1 -1
  30. package/dist/commands/init.js +126 -61
  31. package/dist/commands/init.js.map +1 -1
  32. package/dist/commands/plugins.d.ts.map +1 -1
  33. package/dist/commands/plugins.js +14 -13
  34. package/dist/commands/plugins.js.map +1 -1
  35. package/dist/commands/recall.d.ts +10 -0
  36. package/dist/commands/recall.d.ts.map +1 -0
  37. package/dist/commands/recall.js +199 -0
  38. package/dist/commands/recall.js.map +1 -0
  39. package/dist/commands/search.d.ts +3 -0
  40. package/dist/commands/search.d.ts.map +1 -1
  41. package/dist/commands/search.js +55 -13
  42. package/dist/commands/search.js.map +1 -1
  43. package/dist/commands/serve.d.ts +8 -0
  44. package/dist/commands/serve.d.ts.map +1 -0
  45. package/dist/commands/serve.js +60 -0
  46. package/dist/commands/serve.js.map +1 -0
  47. package/dist/commands/setup-rules.d.ts +27 -0
  48. package/dist/commands/setup-rules.d.ts.map +1 -0
  49. package/dist/commands/setup-rules.js +309 -0
  50. package/dist/commands/setup-rules.js.map +1 -0
  51. package/dist/commands/setup-skills.d.ts +55 -0
  52. package/dist/commands/setup-skills.d.ts.map +1 -0
  53. package/dist/commands/setup-skills.js +356 -0
  54. package/dist/commands/setup-skills.js.map +1 -0
  55. package/dist/commands/setup.d.ts +62 -5
  56. package/dist/commands/setup.d.ts.map +1 -1
  57. package/dist/commands/setup.js +358 -104
  58. package/dist/commands/setup.js.map +1 -1
  59. package/dist/commands/start.d.ts.map +1 -1
  60. package/dist/commands/start.js +27 -20
  61. package/dist/commands/start.js.map +1 -1
  62. package/dist/commands/status.d.ts.map +1 -1
  63. package/dist/commands/status.js +81 -53
  64. package/dist/commands/status.js.map +1 -1
  65. package/dist/commands/suggest.d.ts +11 -0
  66. package/dist/commands/suggest.d.ts.map +1 -0
  67. package/dist/commands/suggest.js +255 -0
  68. package/dist/commands/suggest.js.map +1 -0
  69. package/dist/commands/tool.d.ts.map +1 -1
  70. package/dist/commands/tool.js +5 -5
  71. package/dist/commands/tool.js.map +1 -1
  72. package/dist/commands/undeprecate.d.ts +5 -0
  73. package/dist/commands/undeprecate.d.ts.map +1 -0
  74. package/dist/commands/undeprecate.js +27 -0
  75. package/dist/commands/undeprecate.js.map +1 -0
  76. package/dist/commands/upgrade.d.ts.map +1 -1
  77. package/dist/commands/upgrade.js +64 -18
  78. package/dist/commands/upgrade.js.map +1 -1
  79. package/dist/index.js +92 -20
  80. package/dist/index.js.map +1 -1
  81. package/dist/lib/content-extractor.d.ts +8 -0
  82. package/dist/lib/content-extractor.d.ts.map +1 -0
  83. package/dist/lib/content-extractor.js +50 -0
  84. package/dist/lib/content-extractor.js.map +1 -0
  85. package/dist/lib/diff-parser.d.ts +14 -0
  86. package/dist/lib/diff-parser.d.ts.map +1 -0
  87. package/dist/lib/diff-parser.js +108 -0
  88. package/dist/lib/diff-parser.js.map +1 -0
  89. package/dist/lib/entity-extractor.d.ts +17 -0
  90. package/dist/lib/entity-extractor.d.ts.map +1 -0
  91. package/dist/lib/entity-extractor.js +23 -0
  92. package/dist/lib/entity-extractor.js.map +1 -0
  93. package/dist/lib/formatter.d.ts.map +1 -1
  94. package/dist/lib/formatter.js +31 -32
  95. package/dist/lib/formatter.js.map +1 -1
  96. package/dist/lib/indexer.d.ts +2 -0
  97. package/dist/lib/indexer.d.ts.map +1 -1
  98. package/dist/lib/indexer.js +2 -0
  99. package/dist/lib/indexer.js.map +1 -1
  100. package/dist/lib/ingest-watcher.d.ts.map +1 -1
  101. package/dist/lib/ingest-watcher.js +2 -0
  102. package/dist/lib/ingest-watcher.js.map +1 -1
  103. package/dist/lib/plugin-loader.d.ts.map +1 -1
  104. package/dist/lib/plugin-loader.js +3 -1
  105. package/dist/lib/plugin-loader.js.map +1 -1
  106. package/dist/lib/progress.d.ts +8 -0
  107. package/dist/lib/progress.d.ts.map +1 -1
  108. package/dist/lib/progress.js +45 -6
  109. package/dist/lib/progress.js.map +1 -1
  110. package/dist/lib/ui/box.d.ts +7 -0
  111. package/dist/lib/ui/box.d.ts.map +1 -0
  112. package/dist/lib/ui/box.js +19 -0
  113. package/dist/lib/ui/box.js.map +1 -0
  114. package/dist/lib/ui/error-formatter.d.ts +8 -0
  115. package/dist/lib/ui/error-formatter.d.ts.map +1 -0
  116. package/dist/lib/ui/error-formatter.js +19 -0
  117. package/dist/lib/ui/error-formatter.js.map +1 -0
  118. package/dist/lib/ui/index.d.ts +7 -0
  119. package/dist/lib/ui/index.d.ts.map +1 -0
  120. package/dist/lib/ui/index.js +7 -0
  121. package/dist/lib/ui/index.js.map +1 -0
  122. package/dist/lib/ui/output.d.ts +2 -0
  123. package/dist/lib/ui/output.d.ts.map +1 -0
  124. package/dist/lib/ui/output.js +4 -0
  125. package/dist/lib/ui/output.js.map +1 -0
  126. package/dist/lib/ui/spinner.d.ts +4 -0
  127. package/dist/lib/ui/spinner.d.ts.map +1 -0
  128. package/dist/lib/ui/spinner.js +5 -0
  129. package/dist/lib/ui/spinner.js.map +1 -0
  130. package/dist/lib/ui/table.d.ts +9 -0
  131. package/dist/lib/ui/table.d.ts.map +1 -0
  132. package/dist/lib/ui/table.js +28 -0
  133. package/dist/lib/ui/table.js.map +1 -0
  134. package/dist/lib/ui/theme.d.ts +21 -0
  135. package/dist/lib/ui/theme.d.ts.map +1 -0
  136. package/dist/lib/ui/theme.js +29 -0
  137. package/dist/lib/ui/theme.js.map +1 -0
  138. package/dist/lib/unknown-command-handler.d.ts +14 -0
  139. package/dist/lib/unknown-command-handler.d.ts.map +1 -0
  140. package/dist/lib/unknown-command-handler.js +25 -0
  141. package/dist/lib/unknown-command-handler.js.map +1 -0
  142. package/dist/lib/url-validator.d.ts.map +1 -1
  143. package/dist/lib/url-validator.js +5 -1
  144. package/dist/lib/url-validator.js.map +1 -1
  145. package/dist/templates/rules/antigravity.d.ts +6 -0
  146. package/dist/templates/rules/antigravity.d.ts.map +1 -0
  147. package/dist/templates/rules/antigravity.js +30 -0
  148. package/dist/templates/rules/antigravity.js.map +1 -0
  149. package/dist/templates/rules/claude-code.d.ts +6 -0
  150. package/dist/templates/rules/claude-code.d.ts.map +1 -0
  151. package/dist/templates/rules/claude-code.js +32 -0
  152. package/dist/templates/rules/claude-code.js.map +1 -0
  153. package/dist/templates/rules/cline.d.ts +6 -0
  154. package/dist/templates/rules/cline.d.ts.map +1 -0
  155. package/dist/templates/rules/cline.js +35 -0
  156. package/dist/templates/rules/cline.js.map +1 -0
  157. package/dist/templates/rules/codex.d.ts +6 -0
  158. package/dist/templates/rules/codex.d.ts.map +1 -0
  159. package/dist/templates/rules/codex.js +37 -0
  160. package/dist/templates/rules/codex.js.map +1 -0
  161. package/dist/templates/rules/continue.d.ts +6 -0
  162. package/dist/templates/rules/continue.d.ts.map +1 -0
  163. package/dist/templates/rules/continue.js +31 -0
  164. package/dist/templates/rules/continue.js.map +1 -0
  165. package/dist/templates/rules/core-rules.d.ts +6 -0
  166. package/dist/templates/rules/core-rules.d.ts.map +1 -0
  167. package/dist/templates/rules/core-rules.js +33 -0
  168. package/dist/templates/rules/core-rules.js.map +1 -0
  169. package/dist/templates/rules/cursor.d.ts +6 -0
  170. package/dist/templates/rules/cursor.d.ts.map +1 -0
  171. package/dist/templates/rules/cursor.js +29 -0
  172. package/dist/templates/rules/cursor.js.map +1 -0
  173. package/dist/templates/rules/gemini.d.ts +6 -0
  174. package/dist/templates/rules/gemini.d.ts.map +1 -0
  175. package/dist/templates/rules/gemini.js +30 -0
  176. package/dist/templates/rules/gemini.js.map +1 -0
  177. package/dist/templates/rules/github-copilot.d.ts +6 -0
  178. package/dist/templates/rules/github-copilot.d.ts.map +1 -0
  179. package/dist/templates/rules/github-copilot.js +42 -0
  180. package/dist/templates/rules/github-copilot.js.map +1 -0
  181. package/dist/templates/rules/index.d.ts +13 -0
  182. package/dist/templates/rules/index.d.ts.map +1 -0
  183. package/dist/templates/rules/index.js +13 -0
  184. package/dist/templates/rules/index.js.map +1 -0
  185. package/dist/templates/rules/opencode.d.ts +6 -0
  186. package/dist/templates/rules/opencode.d.ts.map +1 -0
  187. package/dist/templates/rules/opencode.js +30 -0
  188. package/dist/templates/rules/opencode.js.map +1 -0
  189. package/dist/templates/rules/windsurf.d.ts +6 -0
  190. package/dist/templates/rules/windsurf.d.ts.map +1 -0
  191. package/dist/templates/rules/windsurf.js +24 -0
  192. package/dist/templates/rules/windsurf.js.map +1 -0
  193. package/dist/templates/rules/zed.d.ts +6 -0
  194. package/dist/templates/rules/zed.d.ts.map +1 -0
  195. package/dist/templates/rules/zed.js +34 -0
  196. package/dist/templates/rules/zed.js.map +1 -0
  197. package/dist/templates/skills/index.d.ts +26 -0
  198. package/dist/templates/skills/index.d.ts.map +1 -0
  199. package/dist/templates/skills/index.js +75 -0
  200. package/dist/templates/skills/index.js.map +1 -0
  201. package/dist/templates/skills/knowledgine-capture/references.d.ts +2 -0
  202. package/dist/templates/skills/knowledgine-capture/references.d.ts.map +1 -0
  203. package/dist/templates/skills/knowledgine-capture/references.js +414 -0
  204. package/dist/templates/skills/knowledgine-capture/references.js.map +1 -0
  205. package/dist/templates/skills/knowledgine-capture/skill-md.d.ts +2 -0
  206. package/dist/templates/skills/knowledgine-capture/skill-md.d.ts.map +1 -0
  207. package/dist/templates/skills/knowledgine-capture/skill-md.js +97 -0
  208. package/dist/templates/skills/knowledgine-capture/skill-md.js.map +1 -0
  209. package/dist/templates/skills/knowledgine-debrief/references.d.ts +2 -0
  210. package/dist/templates/skills/knowledgine-debrief/references.d.ts.map +1 -0
  211. package/dist/templates/skills/knowledgine-debrief/references.js +140 -0
  212. package/dist/templates/skills/knowledgine-debrief/references.js.map +1 -0
  213. package/dist/templates/skills/knowledgine-debrief/skill-md.d.ts +2 -0
  214. package/dist/templates/skills/knowledgine-debrief/skill-md.d.ts.map +1 -0
  215. package/dist/templates/skills/knowledgine-debrief/skill-md.js +74 -0
  216. package/dist/templates/skills/knowledgine-debrief/skill-md.js.map +1 -0
  217. package/dist/templates/skills/knowledgine-explain/references.d.ts +2 -0
  218. package/dist/templates/skills/knowledgine-explain/references.d.ts.map +1 -0
  219. package/dist/templates/skills/knowledgine-explain/references.js +183 -0
  220. package/dist/templates/skills/knowledgine-explain/references.js.map +1 -0
  221. package/dist/templates/skills/knowledgine-explain/skill-md.d.ts +2 -0
  222. package/dist/templates/skills/knowledgine-explain/skill-md.d.ts.map +1 -0
  223. package/dist/templates/skills/knowledgine-explain/skill-md.js +89 -0
  224. package/dist/templates/skills/knowledgine-explain/skill-md.js.map +1 -0
  225. package/dist/templates/skills/knowledgine-feedback/references.d.ts +2 -0
  226. package/dist/templates/skills/knowledgine-feedback/references.d.ts.map +1 -0
  227. package/dist/templates/skills/knowledgine-feedback/references.js +214 -0
  228. package/dist/templates/skills/knowledgine-feedback/references.js.map +1 -0
  229. package/dist/templates/skills/knowledgine-feedback/skill-md.d.ts +2 -0
  230. package/dist/templates/skills/knowledgine-feedback/skill-md.d.ts.map +1 -0
  231. package/dist/templates/skills/knowledgine-feedback/skill-md.js +107 -0
  232. package/dist/templates/skills/knowledgine-feedback/skill-md.js.map +1 -0
  233. package/dist/templates/skills/knowledgine-ingest/references.d.ts +2 -0
  234. package/dist/templates/skills/knowledgine-ingest/references.d.ts.map +1 -0
  235. package/dist/templates/skills/knowledgine-ingest/references.js +243 -0
  236. package/dist/templates/skills/knowledgine-ingest/references.js.map +1 -0
  237. package/dist/templates/skills/knowledgine-ingest/skill-md.d.ts +2 -0
  238. package/dist/templates/skills/knowledgine-ingest/skill-md.d.ts.map +1 -0
  239. package/dist/templates/skills/knowledgine-ingest/skill-md.js +80 -0
  240. package/dist/templates/skills/knowledgine-ingest/skill-md.js.map +1 -0
  241. package/dist/templates/skills/knowledgine-recall/references.d.ts +2 -0
  242. package/dist/templates/skills/knowledgine-recall/references.d.ts.map +1 -0
  243. package/dist/templates/skills/knowledgine-recall/references.js +207 -0
  244. package/dist/templates/skills/knowledgine-recall/references.js.map +1 -0
  245. package/dist/templates/skills/knowledgine-recall/skill-md.d.ts +2 -0
  246. package/dist/templates/skills/knowledgine-recall/skill-md.d.ts.map +1 -0
  247. package/dist/templates/skills/knowledgine-recall/skill-md.js +86 -0
  248. package/dist/templates/skills/knowledgine-recall/skill-md.js.map +1 -0
  249. package/dist/templates/skills/knowledgine-suggest/references.d.ts +2 -0
  250. package/dist/templates/skills/knowledgine-suggest/references.d.ts.map +1 -0
  251. package/dist/templates/skills/knowledgine-suggest/references.js +121 -0
  252. package/dist/templates/skills/knowledgine-suggest/references.js.map +1 -0
  253. package/dist/templates/skills/knowledgine-suggest/skill-md.d.ts +2 -0
  254. package/dist/templates/skills/knowledgine-suggest/skill-md.d.ts.map +1 -0
  255. package/dist/templates/skills/knowledgine-suggest/skill-md.js +94 -0
  256. package/dist/templates/skills/knowledgine-suggest/skill-md.js.map +1 -0
  257. package/fixtures/demo/notes/api-design-decisions.md +7 -2
  258. package/fixtures/demo/notes/auth-debugging.md +8 -0
  259. package/fixtures/demo/notes/ci-cd-pipeline.md +7 -0
  260. package/fixtures/demo/notes/code-review-notes.md +7 -0
  261. package/fixtures/demo/notes/database-optimization.md +8 -0
  262. package/fixtures/demo/notes/docker-troubleshooting.md +7 -1
  263. package/fixtures/demo/notes/react-performance.md +7 -6
  264. package/fixtures/demo/notes/typescript-migration.md +13 -4
  265. package/package.json +13 -4
@@ -0,0 +1,356 @@
1
+ import { join } from "path";
2
+ import { existsSync, writeFileSync, mkdirSync } from "fs";
3
+ import * as p from "@clack/prompts";
4
+ import { colors, symbols } from "../lib/ui/index.js";
5
+ import { SKILL_NAMES, getSkillTemplate } from "../templates/skills/index.js";
6
+ // ---------------------------------------------------------------------------
7
+ // Targets
8
+ // ---------------------------------------------------------------------------
9
+ // Sentinel used for unsupported targets — getSkillDir should never be called
10
+ // on them, but TypeScript requires the field to be present.
11
+ const unsupportedSkillDir = (_root) => {
12
+ throw new Error("This target does not support skills.");
13
+ };
14
+ export const SKILL_TARGETS = [
15
+ {
16
+ value: "claude-code",
17
+ label: "Claude Code",
18
+ description: "CLI agent for developers",
19
+ supported: true,
20
+ getSkillDir: (root) => join(root, ".claude", "skills"),
21
+ },
22
+ {
23
+ value: "codex",
24
+ label: "Codex CLI",
25
+ description: "OpenAI's coding agent",
26
+ supported: true,
27
+ getSkillDir: (root) => join(root, "skills"),
28
+ },
29
+ {
30
+ value: "cursor",
31
+ label: "Cursor",
32
+ description: "AI-first code editor",
33
+ supported: true,
34
+ getSkillDir: (root) => join(root, ".cursor", "skills"),
35
+ },
36
+ {
37
+ value: "windsurf",
38
+ label: "Windsurf",
39
+ description: "Codeium's AI IDE",
40
+ supported: true,
41
+ getSkillDir: (root) => join(root, ".windsurf", "skills"),
42
+ },
43
+ {
44
+ value: "cline",
45
+ label: "Cline",
46
+ description: "Cline VS Code extension",
47
+ supported: true,
48
+ getSkillDir: (root) => join(root, ".cline", "skills"),
49
+ },
50
+ {
51
+ value: "github-copilot",
52
+ label: "GitHub Copilot CLI",
53
+ description: "AI pair programmer CLI",
54
+ supported: true,
55
+ getSkillDir: (root) => join(root, ".copilot", "skills"),
56
+ sharedDir: "copilot-skills",
57
+ },
58
+ {
59
+ value: "vscode",
60
+ label: "VS Code",
61
+ description: "GitHub Copilot MCP",
62
+ supported: true,
63
+ getSkillDir: (root) => join(root, ".copilot", "skills"),
64
+ sharedDir: "copilot-skills",
65
+ },
66
+ {
67
+ value: "gemini",
68
+ label: "Gemini CLI",
69
+ description: "Google's AI coding agent",
70
+ supported: true,
71
+ getSkillDir: (root) => join(root, ".gemini", "skills"),
72
+ sharedDir: "gemini-skills",
73
+ },
74
+ {
75
+ value: "opencode",
76
+ label: "OpenCode",
77
+ description: "opencode.ai MCP configuration",
78
+ supported: true,
79
+ getSkillDir: (root) => join(root, ".opencode", "skills"),
80
+ },
81
+ {
82
+ value: "antigravity",
83
+ label: "Antigravity",
84
+ description: "Google's AI development platform",
85
+ supported: true,
86
+ getSkillDir: (root) => join(root, ".gemini", "skills"),
87
+ sharedDir: "gemini-skills",
88
+ },
89
+ {
90
+ value: "continue",
91
+ label: "Continue",
92
+ description: "Continue.dev MCP configuration",
93
+ supported: false,
94
+ getSkillDir: unsupportedSkillDir,
95
+ },
96
+ {
97
+ value: "zed",
98
+ label: "Zed",
99
+ description: "High-performance editor",
100
+ supported: false,
101
+ getSkillDir: unsupportedSkillDir,
102
+ },
103
+ {
104
+ value: "claude-desktop",
105
+ label: "Claude Desktop",
106
+ description: "Anthropic's desktop app",
107
+ supported: false,
108
+ getSkillDir: unsupportedSkillDir,
109
+ },
110
+ ];
111
+ // ---------------------------------------------------------------------------
112
+ // writeSkills
113
+ // ---------------------------------------------------------------------------
114
+ /**
115
+ * Writes skill files (SKILL.md + references/) for a single target agent.
116
+ *
117
+ * When `dryRun` is true, the function computes what would be written and
118
+ * returns the result without touching the filesystem.
119
+ *
120
+ * When `force` is false (default) and the skill directory already exists,
121
+ * the write is skipped.
122
+ */
123
+ export function writeSkills(target, projectRoot, skillNames, options) {
124
+ const { dryRun = false, force = false } = options;
125
+ const skillDir = target.getSkillDir(projectRoot);
126
+ // Guard: skip if the skill dir exists and force is not set
127
+ if (!force && existsSync(skillDir)) {
128
+ return {
129
+ target: target.label,
130
+ status: "skipped",
131
+ skillDir,
132
+ skillCount: 0,
133
+ note: "skill directory already exists; use --force to overwrite",
134
+ };
135
+ }
136
+ if (dryRun) {
137
+ return {
138
+ target: target.label,
139
+ status: "ok",
140
+ skillDir,
141
+ skillCount: skillNames.length,
142
+ note: "dry-run: no files written",
143
+ };
144
+ }
145
+ try {
146
+ let writtenCount = 0;
147
+ for (const name of skillNames) {
148
+ const template = getSkillTemplate(name);
149
+ const skillNameDir = join(skillDir, name);
150
+ const refsDir = join(skillNameDir, "references");
151
+ mkdirSync(skillNameDir, { recursive: true });
152
+ writeFileSync(join(skillNameDir, "SKILL.md"), template.skillMd, "utf-8");
153
+ mkdirSync(refsDir, { recursive: true });
154
+ for (const [filename, content] of Object.entries(template.references)) {
155
+ writeFileSync(join(refsDir, filename), content, "utf-8");
156
+ }
157
+ writtenCount++;
158
+ }
159
+ return {
160
+ target: target.label,
161
+ status: "ok",
162
+ skillDir,
163
+ skillCount: writtenCount,
164
+ };
165
+ }
166
+ catch (error) {
167
+ return {
168
+ target: target.label,
169
+ status: "fail",
170
+ skillDir,
171
+ skillCount: 0,
172
+ error: error instanceof Error ? error.message : String(error),
173
+ };
174
+ }
175
+ }
176
+ // ---------------------------------------------------------------------------
177
+ // interactiveSkillsSetup
178
+ // ---------------------------------------------------------------------------
179
+ /**
180
+ * Interactive wizard for the "Skills" step of `kg setup`.
181
+ *
182
+ * @param projectRoot - Absolute path to the project root.
183
+ * @param preselectedMcpTargets - Agent values already chosen in the MCP step,
184
+ * used to pre-populate the multiselect.
185
+ */
186
+ export async function interactiveSkillsSetup(projectRoot, preselectedMcpTargets) {
187
+ // Step 1: ask whether to install skills at all
188
+ const shouldInstall = await p.confirm({
189
+ message: "Install knowledgine skills to your AI tools?",
190
+ });
191
+ if (p.isCancel(shouldInstall) || !shouldInstall) {
192
+ return [];
193
+ }
194
+ // Step 2: select target agents
195
+ const supportedTargets = SKILL_TARGETS.filter((t) => t.supported);
196
+ const preselected = new Set(preselectedMcpTargets ?? []);
197
+ const selectedTargetsRaw = await p.multiselect({
198
+ message: "Which AI tools should receive the skills? (space to select, enter to confirm)",
199
+ options: SKILL_TARGETS.map((t) => ({
200
+ value: t.value,
201
+ label: t.label,
202
+ hint: t.supported ? t.description : `${t.description} (not supported yet)`,
203
+ })).filter((opt) => supportedTargets.some((st) => st.value === opt.value)),
204
+ initialValues: supportedTargets.filter((t) => preselected.has(t.value)).map((t) => t.value),
205
+ required: true,
206
+ });
207
+ if (p.isCancel(selectedTargetsRaw)) {
208
+ p.cancel("Skills setup cancelled.");
209
+ return [];
210
+ }
211
+ const selectedTargetValues = selectedTargetsRaw;
212
+ // Step 3: choose skill set (all or individual selection)
213
+ const installMode = await p.select({
214
+ message: "Which skills to install?",
215
+ options: [
216
+ {
217
+ value: "all",
218
+ label: "All (recommended)",
219
+ hint: `${SKILL_NAMES.length} skills`,
220
+ },
221
+ {
222
+ value: "select",
223
+ label: "Select individually...",
224
+ },
225
+ ],
226
+ });
227
+ if (p.isCancel(installMode)) {
228
+ p.cancel("Skills setup cancelled.");
229
+ return [];
230
+ }
231
+ let skillsToInstall;
232
+ if (installMode === "select") {
233
+ const selectedSkillsRaw = await p.multiselect({
234
+ message: "Which skills to install? (space to select, enter to confirm)",
235
+ options: SKILL_NAMES.map((name) => ({ value: name, label: name })),
236
+ required: true,
237
+ });
238
+ if (p.isCancel(selectedSkillsRaw)) {
239
+ p.cancel("Skills setup cancelled.");
240
+ return [];
241
+ }
242
+ skillsToInstall = selectedSkillsRaw;
243
+ }
244
+ else {
245
+ skillsToInstall = [...SKILL_NAMES];
246
+ }
247
+ // Step 4: write skills, deduplicating shared directories
248
+ const results = [];
249
+ const writtenSharedDirs = new Set();
250
+ for (const targetValue of selectedTargetValues) {
251
+ const target = SKILL_TARGETS.find((t) => t.value === targetValue);
252
+ if (!target)
253
+ continue;
254
+ // Dedup: agents sharing the same physical directory (e.g. github-copilot + vscode)
255
+ if (target.sharedDir) {
256
+ if (writtenSharedDirs.has(target.sharedDir)) {
257
+ results.push({
258
+ target: target.label,
259
+ status: "skipped",
260
+ skillDir: target.getSkillDir(projectRoot),
261
+ skillCount: 0,
262
+ note: `shared with ${target.sharedDir} (already written)`,
263
+ });
264
+ continue;
265
+ }
266
+ writtenSharedDirs.add(target.sharedDir);
267
+ }
268
+ const s = p.spinner();
269
+ s.start(`Installing skills for ${target.label}...`);
270
+ const result = writeSkills(target, projectRoot, skillsToInstall, { force: false });
271
+ if (result.status === "ok") {
272
+ s.stop(`${symbols.success} ${colors.success(target.label)} — ${result.skillCount} skill(s) installed`);
273
+ }
274
+ else if (result.status === "skipped") {
275
+ s.stop(`${symbols.warning} ${colors.warning(target.label)} — skipped: ${result.note}`);
276
+ }
277
+ else {
278
+ s.stop(`${symbols.error} ${colors.error(target.label)} — failed: ${result.error}`);
279
+ }
280
+ results.push(result);
281
+ }
282
+ // Summary note
283
+ const ok = results.filter((r) => r.status === "ok");
284
+ const skipped = results.filter((r) => r.status === "skipped");
285
+ const failed = results.filter((r) => r.status === "fail");
286
+ const summaryLines = [];
287
+ for (const r of ok) {
288
+ summaryLines.push(`${symbols.success} ${r.target} ${colors.dim(r.skillDir)} (${r.skillCount} skills)`);
289
+ }
290
+ for (const r of skipped) {
291
+ summaryLines.push(`${symbols.warning} ${r.target} ${colors.dim(r.note ?? "skipped")}`);
292
+ }
293
+ for (const r of failed) {
294
+ summaryLines.push(`${symbols.error} ${r.target} ${colors.dim(r.error ?? "unknown error")}`);
295
+ }
296
+ if (summaryLines.length > 0) {
297
+ const title = failed.length > 0
298
+ ? `Skills: ${ok.length} installed, ${skipped.length} skipped, ${failed.length} failed`
299
+ : `Skills installed (${ok.length} agents)`;
300
+ p.note(summaryLines.join("\n"), title);
301
+ }
302
+ return results;
303
+ }
304
+ // ---------------------------------------------------------------------------
305
+ // nonInteractiveSkillsSetup
306
+ // ---------------------------------------------------------------------------
307
+ /**
308
+ * Non-interactive (scripted) variant used when `--target` is specified on the
309
+ * command line.
310
+ *
311
+ * @param target - Agent value string (e.g. "claude-code").
312
+ * @param projectRoot - Absolute path to the project root.
313
+ * @param options.write - When false (default) only prints a preview.
314
+ */
315
+ export function nonInteractiveSkillsSetup(target, projectRoot, options) {
316
+ const skillTarget = SKILL_TARGETS.find((t) => t.value === target);
317
+ if (!skillTarget) {
318
+ console.error(`${symbols.error} Unknown target: ${target}. Supported: ${SKILL_TARGETS.filter((t) => t.supported)
319
+ .map((t) => t.value)
320
+ .join(", ")}`);
321
+ process.exitCode = 1;
322
+ return;
323
+ }
324
+ if (!skillTarget.supported) {
325
+ console.error(`${symbols.error} Skills are not yet supported for ${skillTarget.label}.`);
326
+ process.exitCode = 1;
327
+ return;
328
+ }
329
+ const skillDir = skillTarget.getSkillDir(projectRoot);
330
+ if (!options.write) {
331
+ // Preview mode: list what would be written
332
+ console.error(`\n${colors.bold("Skills preview")} for ${colors.accent(skillTarget.label)}\n`);
333
+ console.error(`${colors.hint("Skill directory:")} ${skillDir}\n`);
334
+ for (const name of SKILL_NAMES) {
335
+ const template = getSkillTemplate(name);
336
+ const refCount = Object.keys(template.references).length;
337
+ console.error(` ${symbols.bullet} ${name} ${colors.dim(`(SKILL.md + ${refCount} reference file(s))`)}`);
338
+ }
339
+ console.error("");
340
+ console.error(`${symbols.arrow} ${colors.hint(`To write: kg setup skills --target ${target} --write`)}`);
341
+ return;
342
+ }
343
+ // Write mode
344
+ const result = writeSkills(skillTarget, projectRoot, [...SKILL_NAMES], { force: false });
345
+ if (result.status === "ok") {
346
+ console.error(`${symbols.success} ${colors.success(`Skills written to ${result.skillDir}`)} (${result.skillCount} skills)`);
347
+ }
348
+ else if (result.status === "skipped") {
349
+ console.error(`${symbols.warning} ${colors.warning("Skipped:")} ${result.note}`);
350
+ }
351
+ else {
352
+ console.error(`${symbols.error} ${colors.error("Failed:")} ${result.error}`);
353
+ process.exitCode = 1;
354
+ }
355
+ }
356
+ //# sourceMappingURL=setup-skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-skills.js","sourceRoot":"","sources":["../../src/commands/setup-skills.ts"],"names":[],"mappings":"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"}
@@ -3,12 +3,69 @@ export interface SetupOptions {
3
3
  path?: string;
4
4
  dryRun?: boolean;
5
5
  write?: boolean;
6
+ rules?: boolean;
7
+ skills?: boolean;
6
8
  }
7
- interface SetupIO {
8
- input: NodeJS.ReadableStream;
9
- output: NodeJS.WritableStream;
9
+ export declare const TARGETS: readonly [{
10
+ readonly value: "claude-desktop";
11
+ readonly label: "Claude Desktop";
12
+ readonly description: "Anthropic's desktop app";
13
+ }, {
14
+ readonly value: "cursor";
15
+ readonly label: "Cursor";
16
+ readonly description: "AI-first code editor";
17
+ }, {
18
+ readonly value: "claude-code";
19
+ readonly label: "Claude Code";
20
+ readonly description: "CLI agent for developers";
21
+ }, {
22
+ readonly value: "windsurf";
23
+ readonly label: "Windsurf";
24
+ readonly description: "Codeium's AI IDE";
25
+ }, {
26
+ readonly value: "vscode";
27
+ readonly label: "VS Code";
28
+ readonly description: "GitHub Copilot MCP";
29
+ }, {
30
+ readonly value: "zed";
31
+ readonly label: "Zed";
32
+ readonly description: "High-performance editor";
33
+ }, {
34
+ readonly value: "codex";
35
+ readonly label: "Codex CLI";
36
+ readonly description: "OpenAI's coding agent";
37
+ }, {
38
+ readonly value: "github-copilot";
39
+ readonly label: "GitHub Copilot CLI";
40
+ readonly description: "AI pair programmer CLI";
41
+ }, {
42
+ readonly value: "gemini";
43
+ readonly label: "Gemini CLI";
44
+ readonly description: "Google's AI coding agent";
45
+ }, {
46
+ readonly value: "antigravity";
47
+ readonly label: "Antigravity";
48
+ readonly description: "Google's AI development platform";
49
+ }, {
50
+ readonly value: "opencode";
51
+ readonly label: "OpenCode";
52
+ readonly description: "opencode.ai MCP configuration";
53
+ }, {
54
+ readonly value: "cline";
55
+ readonly label: "Cline";
56
+ readonly description: "Cline VS Code extension MCP configuration";
57
+ }, {
58
+ readonly value: "continue";
59
+ readonly label: "Continue";
60
+ readonly description: "Continue.dev MCP configuration";
61
+ }];
62
+ export declare function getConfigPath(target: string): string;
63
+ export declare function getTargetLabel(target: string): string;
64
+ export declare const PROJECT_CONFIG_SUPPORT: Record<string, (projectRoot: string) => string>;
65
+ export interface SetupIO {
66
+ input?: NodeJS.ReadableStream;
67
+ output?: NodeJS.WritableStream;
10
68
  isTTY: boolean;
11
69
  }
12
- export declare function setupCommand(options: SetupOptions, io?: SetupIO): Promise<void>;
13
- export {};
70
+ export declare function setupCommand(options: SetupOptions, ioOrCommand?: SetupIO | unknown): Promise<void>;
14
71
  //# sourceMappingURL=setup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAmFD,UAAU,OAAO;IACf,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;IAC9B,KAAK,EAAE,OAAO,CAAC;CAChB;AAsCD,wBAAsB,YAAY,CAChC,OAAO,EAAE,YAAY,EACrB,EAAE,CAAC,EAAE,OAAO,GACX,OAAO,CAAC,IAAI,CAAC,CAyEf"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAWD,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAcV,CAAC;AAOX,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CA6FpD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGrD;AAqHD,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAMlF,CAAC;AAqJF,MAAM,WAAW,OAAO;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC/B,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,YAAY,CAChC,OAAO,EAAE,YAAY,EACrB,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,GAC9B,OAAO,CAAC,IAAI,CAAC,CAoIf"}