@juho0719/cckit 0.2.5 → 0.2.6

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 (33) hide show
  1. package/dist/agents-LI3AHTTX.js +10 -0
  2. package/dist/{chunk-3Y26YU4R.js → chunk-33CGM7PI.js} +7 -3
  3. package/dist/{chunk-5XOKKPAA.js → chunk-4NEXS2FY.js} +5 -0
  4. package/dist/{chunk-W7RWPDBH.js → chunk-52Q6TDAH.js} +7 -3
  5. package/dist/{chunk-E3INXQNO.js → chunk-6COBMJZ6.js} +5 -1
  6. package/dist/{chunk-SW3OJLHC.js → chunk-7VVGOZDZ.js} +5 -1
  7. package/dist/{chunk-K25UZZVG.js → chunk-FLBB3OH4.js} +5 -0
  8. package/dist/{chunk-ID643AV4.js → chunk-H4YDYF2X.js} +7 -3
  9. package/dist/{chunk-KEENFBLL.js → chunk-MSCXXA2X.js} +6 -2
  10. package/dist/{chunk-3GUKEMND.js → chunk-T5VPG46W.js} +5 -0
  11. package/dist/chunk-TLOORH3N.js +50 -0
  12. package/dist/{chunk-W63UKEIT.js → chunk-VN5S6JGZ.js} +5 -0
  13. package/dist/{chunk-EYY2IZ7N.js → chunk-ZBGGTONN.js} +7 -3
  14. package/dist/claudemd-NWG63O2G.js +8 -0
  15. package/dist/cli-KHRWBZPV.js +2735 -0
  16. package/dist/commands-UAOYWGUX.js +10 -0
  17. package/dist/hooks-NONUWI6V.js +10 -0
  18. package/dist/index.js +21 -17
  19. package/dist/mcps-ISPG3F7T.js +7 -0
  20. package/dist/{paths-FT6KBIRD.js → paths-B754SP2D.js} +2 -1
  21. package/dist/{registry-KRLOB4TH.js → registry-6CLDID6R.js} +3 -2
  22. package/dist/rules-GZEAGCSL.js +10 -0
  23. package/dist/skills-ML3QLXUK.js +9 -0
  24. package/dist/{uninstall-cli-GLYJG5V2.js → uninstall-cli-XU7E26JX.js} +14 -2
  25. package/package.json +1 -1
  26. package/dist/agents-AEKT67A6.js +0 -9
  27. package/dist/claudemd-KKQ2DL7P.js +0 -7
  28. package/dist/cli-KZYBSIXO.js +0 -314
  29. package/dist/commands-P5LILVZ5.js +0 -9
  30. package/dist/hooks-A2WQ2LGG.js +0 -9
  31. package/dist/mcps-67Q7TBGW.js +0 -6
  32. package/dist/rules-EFSJ3L3A.js +0 -9
  33. package/dist/skills-ULMW3UCM.js +0 -8
@@ -0,0 +1,10 @@
1
+ import {
2
+ installCommands
3
+ } from "./chunk-33CGM7PI.js";
4
+ import "./chunk-FLBB3OH4.js";
5
+ import "./chunk-T5VPG46W.js";
6
+ import "./chunk-4NEXS2FY.js";
7
+ import "./chunk-TLOORH3N.js";
8
+ export {
9
+ installCommands
10
+ };
@@ -0,0 +1,10 @@
1
+ import {
2
+ installHooks
3
+ } from "./chunk-52Q6TDAH.js";
4
+ import "./chunk-FLBB3OH4.js";
5
+ import "./chunk-T5VPG46W.js";
6
+ import "./chunk-4NEXS2FY.js";
7
+ import "./chunk-TLOORH3N.js";
8
+ export {
9
+ installHooks
10
+ };
package/dist/index.js CHANGED
@@ -1,6 +1,10 @@
1
1
  #!/usr/bin/env node
2
+ import {
3
+ init_esm_shims
4
+ } from "./chunk-TLOORH3N.js";
2
5
 
3
6
  // src/index.ts
7
+ init_esm_shims();
4
8
  import { readFileSync } from "fs";
5
9
  import { fileURLToPath } from "url";
6
10
  import { dirname, join } from "path";
@@ -36,7 +40,7 @@ Options:
36
40
  async function installAll(scope) {
37
41
  const chalk = (await import("chalk")).default;
38
42
  const ora = (await import("ora")).default;
39
- const { getGlobalDir, getProjectDir } = await import("./paths-FT6KBIRD.js");
43
+ const { getGlobalDir, getProjectDir } = await import("./paths-B754SP2D.js");
40
44
  const { join: join2 } = await import("path");
41
45
  const targetDir = scope === "global" ? getGlobalDir() : getProjectDir();
42
46
  console.log(chalk.cyan(`
@@ -60,20 +64,20 @@ Installing all to ${targetDir}...
60
64
  { installMcps },
61
65
  { installClaudemd }
62
66
  ] = await Promise.all([
63
- import("./registry-KRLOB4TH.js"),
64
- import("./registry-KRLOB4TH.js"),
65
- import("./registry-KRLOB4TH.js"),
66
- import("./registry-KRLOB4TH.js"),
67
- import("./registry-KRLOB4TH.js"),
68
- import("./registry-KRLOB4TH.js"),
69
- import("./registry-KRLOB4TH.js"),
70
- import("./agents-AEKT67A6.js"),
71
- import("./skills-ULMW3UCM.js"),
72
- import("./commands-P5LILVZ5.js"),
73
- import("./hooks-A2WQ2LGG.js"),
74
- import("./rules-EFSJ3L3A.js"),
75
- import("./mcps-67Q7TBGW.js"),
76
- import("./claudemd-KKQ2DL7P.js")
67
+ import("./registry-6CLDID6R.js"),
68
+ import("./registry-6CLDID6R.js"),
69
+ import("./registry-6CLDID6R.js"),
70
+ import("./registry-6CLDID6R.js"),
71
+ import("./registry-6CLDID6R.js"),
72
+ import("./registry-6CLDID6R.js"),
73
+ import("./registry-6CLDID6R.js"),
74
+ import("./agents-LI3AHTTX.js"),
75
+ import("./skills-ML3QLXUK.js"),
76
+ import("./commands-UAOYWGUX.js"),
77
+ import("./hooks-NONUWI6V.js"),
78
+ import("./rules-GZEAGCSL.js"),
79
+ import("./mcps-ISPG3F7T.js"),
80
+ import("./claudemd-NWG63O2G.js")
77
81
  ]);
78
82
  const [agents, skills, commands, hooks, ruleCategories, mcps, claudemds] = await Promise.all([
79
83
  getAgents(),
@@ -124,7 +128,7 @@ async function main() {
124
128
  return;
125
129
  }
126
130
  if (args.includes("--uninstall") || args.includes("-u")) {
127
- const { runUninstallCli } = await import("./uninstall-cli-GLYJG5V2.js");
131
+ const { runUninstallCli } = await import("./uninstall-cli-XU7E26JX.js");
128
132
  await runUninstallCli();
129
133
  return;
130
134
  }
@@ -134,7 +138,7 @@ async function main() {
134
138
  await installAll(scope);
135
139
  return;
136
140
  }
137
- const { runCli } = await import("./cli-KZYBSIXO.js");
141
+ const { runCli } = await import("./cli-KHRWBZPV.js");
138
142
  await runCli();
139
143
  }
140
144
  main().catch((err) => {
@@ -0,0 +1,7 @@
1
+ import {
2
+ installMcps
3
+ } from "./chunk-VN5S6JGZ.js";
4
+ import "./chunk-TLOORH3N.js";
5
+ export {
6
+ installMcps
7
+ };
@@ -2,7 +2,8 @@ import {
2
2
  getAssetsDir,
3
3
  getGlobalDir,
4
4
  getProjectDir
5
- } from "./chunk-5XOKKPAA.js";
5
+ } from "./chunk-4NEXS2FY.js";
6
+ import "./chunk-TLOORH3N.js";
6
7
  export {
7
8
  getAssetsDir,
8
9
  getGlobalDir,
@@ -6,8 +6,9 @@ import {
6
6
  getMcpServers,
7
7
  getRuleCategories,
8
8
  getSkills
9
- } from "./chunk-E3INXQNO.js";
10
- import "./chunk-5XOKKPAA.js";
9
+ } from "./chunk-6COBMJZ6.js";
10
+ import "./chunk-4NEXS2FY.js";
11
+ import "./chunk-TLOORH3N.js";
11
12
  export {
12
13
  getAgents,
13
14
  getClaudemdItems,
@@ -0,0 +1,10 @@
1
+ import {
2
+ installRules
3
+ } from "./chunk-H4YDYF2X.js";
4
+ import "./chunk-FLBB3OH4.js";
5
+ import "./chunk-T5VPG46W.js";
6
+ import "./chunk-4NEXS2FY.js";
7
+ import "./chunk-TLOORH3N.js";
8
+ export {
9
+ installRules
10
+ };
@@ -0,0 +1,9 @@
1
+ import {
2
+ installSkills
3
+ } from "./chunk-MSCXXA2X.js";
4
+ import "./chunk-T5VPG46W.js";
5
+ import "./chunk-4NEXS2FY.js";
6
+ import "./chunk-TLOORH3N.js";
7
+ export {
8
+ installSkills
9
+ };
@@ -6,19 +6,24 @@ import {
6
6
  getMcpServers,
7
7
  getRuleCategories,
8
8
  getSkills
9
- } from "./chunk-E3INXQNO.js";
9
+ } from "./chunk-6COBMJZ6.js";
10
10
  import {
11
11
  getAssetsDir,
12
12
  getGlobalDir,
13
13
  getProjectDir
14
- } from "./chunk-5XOKKPAA.js";
14
+ } from "./chunk-4NEXS2FY.js";
15
+ import {
16
+ init_esm_shims
17
+ } from "./chunk-TLOORH3N.js";
15
18
 
16
19
  // src/uninstall-cli.ts
20
+ init_esm_shims();
17
21
  import { checkbox, select, confirm } from "@inquirer/prompts";
18
22
  import chalk from "chalk";
19
23
  import ora from "ora";
20
24
 
21
25
  // src/scanner.ts
26
+ init_esm_shims();
22
27
  import { readdir, readFile, access } from "fs/promises";
23
28
  import { constants } from "fs";
24
29
  import { join } from "path";
@@ -133,6 +138,7 @@ async function getInstalledMcps(scope) {
133
138
  }
134
139
 
135
140
  // src/uninstallers/agents.ts
141
+ init_esm_shims();
136
142
  import { join as join2 } from "path";
137
143
  import { rm, access as access2 } from "fs/promises";
138
144
  import { constants as constants2 } from "fs";
@@ -149,6 +155,7 @@ async function uninstallAgents(agents, targetDir) {
149
155
  }
150
156
 
151
157
  // src/uninstallers/skills.ts
158
+ init_esm_shims();
152
159
  import { join as join3 } from "path";
153
160
  import { rm as rm2, access as access3 } from "fs/promises";
154
161
  import { constants as constants3 } from "fs";
@@ -165,6 +172,7 @@ async function uninstallSkills(skills, targetDir) {
165
172
  }
166
173
 
167
174
  // src/uninstallers/commands.ts
175
+ init_esm_shims();
168
176
  import { join as join4 } from "path";
169
177
  import { rm as rm3, access as access4 } from "fs/promises";
170
178
  import { constants as constants4 } from "fs";
@@ -181,6 +189,7 @@ async function uninstallCommands(commands, targetDir) {
181
189
  }
182
190
 
183
191
  // src/uninstallers/hooks.ts
192
+ init_esm_shims();
184
193
  import { join as join5 } from "path";
185
194
  import { rm as rm4, readFile as readFile2, writeFile, access as access5 } from "fs/promises";
186
195
  import { constants as constants5 } from "fs";
@@ -228,6 +237,7 @@ async function uninstallHooks(hooks, targetDir) {
228
237
  }
229
238
 
230
239
  // src/uninstallers/rules.ts
240
+ init_esm_shims();
231
241
  import { readdir as readdir2, rm as rm5 } from "fs/promises";
232
242
  import { join as join6 } from "path";
233
243
  async function uninstallRules(categories, targetDir) {
@@ -266,6 +276,7 @@ async function uninstallRules(categories, targetDir) {
266
276
  }
267
277
 
268
278
  // src/uninstallers/mcps.ts
279
+ init_esm_shims();
269
280
  import { join as join7 } from "path";
270
281
  import { readFile as readFile3, writeFile as writeFile2, access as access6 } from "fs/promises";
271
282
  import { constants as constants6 } from "fs";
@@ -294,6 +305,7 @@ async function uninstallMcps(serverNames, scope) {
294
305
  }
295
306
 
296
307
  // src/uninstallers/claudemd.ts
308
+ init_esm_shims();
297
309
  import { readFile as readFile4, writeFile as writeFile3, access as access7 } from "fs/promises";
298
310
  import { constants as constants7 } from "fs";
299
311
  import { join as join8 } from "path";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@juho0719/cckit",
3
- "version": "0.2.5",
3
+ "version": "0.2.6",
4
4
  "description": "Claude Code Harness Installer - Interactive CLI for installing Claude Code agents, skills, commands, hooks, rules, and MCP servers",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,9 +0,0 @@
1
- import {
2
- installAgents
3
- } from "./chunk-EYY2IZ7N.js";
4
- import "./chunk-K25UZZVG.js";
5
- import "./chunk-3GUKEMND.js";
6
- import "./chunk-5XOKKPAA.js";
7
- export {
8
- installAgents
9
- };
@@ -1,7 +0,0 @@
1
- import {
2
- installClaudemd
3
- } from "./chunk-SW3OJLHC.js";
4
- import "./chunk-5XOKKPAA.js";
5
- export {
6
- installClaudemd
7
- };
@@ -1,314 +0,0 @@
1
- import {
2
- installMcps
3
- } from "./chunk-W63UKEIT.js";
4
- import {
5
- installClaudemd
6
- } from "./chunk-SW3OJLHC.js";
7
- import {
8
- getAgents,
9
- getClaudemdItems,
10
- getCommands,
11
- getHooks,
12
- getMcpServers,
13
- getRuleCategories,
14
- getSkills
15
- } from "./chunk-E3INXQNO.js";
16
- import {
17
- installAgents
18
- } from "./chunk-EYY2IZ7N.js";
19
- import {
20
- installSkills
21
- } from "./chunk-KEENFBLL.js";
22
- import {
23
- installCommands
24
- } from "./chunk-3Y26YU4R.js";
25
- import {
26
- installHooks
27
- } from "./chunk-W7RWPDBH.js";
28
- import {
29
- installRules
30
- } from "./chunk-ID643AV4.js";
31
- import {
32
- backupIfExists
33
- } from "./chunk-K25UZZVG.js";
34
- import {
35
- copyFileUtil
36
- } from "./chunk-3GUKEMND.js";
37
- import {
38
- getAssetsDir,
39
- getGlobalDir,
40
- getProjectDir
41
- } from "./chunk-5XOKKPAA.js";
42
-
43
- // src/cli.ts
44
- import { checkbox, select, input, confirm } from "@inquirer/prompts";
45
- import chalk from "chalk";
46
- import ora from "ora";
47
- import { join as join2 } from "path";
48
-
49
- // src/installers/statusline.ts
50
- import { join } from "path";
51
- import { chmod } from "fs/promises";
52
- async function installStatusline() {
53
- const src = join(getAssetsDir(), "statusline", "statusline.sh");
54
- const dest = join(getGlobalDir(), "statusline.sh");
55
- await backupIfExists(dest);
56
- await copyFileUtil(src, dest);
57
- await chmod(dest, 493);
58
- }
59
-
60
- // src/cli.ts
61
- function printBanner() {
62
- console.log(
63
- chalk.cyan.bold(`
64
- \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557
65
- \u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u2588\u2588\u2551 \u2588\u2588\u2554\u255D\u2588\u2588\u2551\u255A\u2550\u2550\u2588\u2588\u2554\u2550\u2550\u255D
66
- \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2551 \u2588\u2588\u2551
67
- \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2551
68
- \u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551
69
- \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D
70
- `)
71
- );
72
- console.log(chalk.gray(" Claude Code Harness Installer\n"));
73
- }
74
- async function runCli() {
75
- printBanner();
76
- const scopeAnswer = await select({
77
- message: "Install scope:",
78
- choices: [
79
- {
80
- name: `Global ${chalk.gray("~/.claude/")}`,
81
- value: "global"
82
- },
83
- {
84
- name: `Project ${chalk.gray("./.claude/")}`,
85
- value: "project"
86
- }
87
- ]
88
- });
89
- const scope = scopeAnswer;
90
- const targetDir = scope === "global" ? getGlobalDir() : getProjectDir();
91
- const selectedCategories = await checkbox({
92
- message: "Select categories to install:",
93
- choices: [
94
- { name: "Agents - AI sub-agents", value: "agents" },
95
- { name: "Skills - Reusable skill prompts", value: "skills" },
96
- { name: "Commands - Slash commands", value: "commands" },
97
- { name: "Hooks - Post-tool hooks", value: "hooks" },
98
- { name: "Rules - CLAUDE.md rules", value: "rules" },
99
- { name: "MCPs - MCP server configs", value: "mcps" },
100
- { name: "ClaudeMd - Behavioral guidelines", value: "claudemd" },
101
- { name: "Statusline - Terminal statusline script", value: "statusline" }
102
- ]
103
- });
104
- if (selectedCategories.length === 0) {
105
- console.log(chalk.yellow("\nNo categories selected. Exiting."));
106
- return;
107
- }
108
- const plan = {
109
- scope,
110
- agents: [],
111
- skills: [],
112
- commands: [],
113
- hooks: [],
114
- ruleCategories: [],
115
- mcps: [],
116
- mcpEnvValues: /* @__PURE__ */ new Map(),
117
- claudemds: [],
118
- statusline: false
119
- };
120
- const skippedMcps = /* @__PURE__ */ new Map();
121
- if (selectedCategories.includes("agents")) {
122
- const allAgents = await getAgents();
123
- plan.agents = await checkbox({
124
- message: "Select agents:",
125
- choices: allAgents.map((a) => ({
126
- name: `${chalk.bold(a.name.padEnd(30))} ${chalk.gray(a.description.slice(0, 60))}`,
127
- value: a,
128
- checked: false
129
- }))
130
- });
131
- }
132
- if (selectedCategories.includes("skills")) {
133
- const allSkills = await getSkills();
134
- plan.skills = await checkbox({
135
- message: "Select skills:",
136
- choices: allSkills.map((s) => ({
137
- name: `${chalk.bold(s.name.padEnd(35))} ${chalk.gray(s.description.slice(0, 55))}`,
138
- value: s,
139
- checked: false
140
- }))
141
- });
142
- }
143
- if (selectedCategories.includes("commands")) {
144
- const allCommands = await getCommands();
145
- plan.commands = await checkbox({
146
- message: "Select commands:",
147
- choices: allCommands.map((c) => ({
148
- name: `${chalk.bold(c.name.padEnd(25))} ${chalk.gray(c.description.slice(0, 65))}`,
149
- value: c,
150
- checked: false
151
- }))
152
- });
153
- }
154
- if (selectedCategories.includes("hooks")) {
155
- const allHooks = await getHooks();
156
- plan.hooks = await checkbox({
157
- message: "Select hooks:",
158
- choices: allHooks.map((h) => ({
159
- name: `${chalk.bold(h.name.padEnd(35))} ${chalk.gray(h.description.slice(0, 55))}`,
160
- value: h,
161
- checked: false
162
- }))
163
- });
164
- }
165
- if (selectedCategories.includes("rules")) {
166
- const allCategories = await getRuleCategories();
167
- plan.ruleCategories = await checkbox({
168
- message: "Select rule categories:",
169
- choices: allCategories.map((rc) => ({
170
- name: `${chalk.bold(rc.category.padEnd(20))} ${chalk.gray(`(${rc.files.length} files)`)}`,
171
- value: rc.category,
172
- checked: false
173
- }))
174
- });
175
- }
176
- if (selectedCategories.includes("claudemd")) {
177
- const allClaudemds = await getClaudemdItems();
178
- plan.claudemds = await checkbox({
179
- message: "Select claudemd items:",
180
- choices: allClaudemds.map((c) => ({
181
- name: `${chalk.bold(c.name.padEnd(35))} ${chalk.gray(c.description.slice(0, 55))}`,
182
- value: c,
183
- checked: false
184
- }))
185
- });
186
- }
187
- if (selectedCategories.includes("statusline")) {
188
- plan.statusline = true;
189
- }
190
- if (selectedCategories.includes("mcps")) {
191
- const allMcps = await getMcpServers();
192
- plan.mcps = await checkbox({
193
- message: "Select MCP servers:",
194
- choices: allMcps.map((m) => ({
195
- name: `${chalk.bold(m.name.padEnd(30))} ${chalk.gray(m.description.slice(0, 55))}`,
196
- value: m,
197
- checked: false
198
- }))
199
- });
200
- for (const server of plan.mcps) {
201
- if (server.type === "http" || server.envVars.length === 0) continue;
202
- console.log(chalk.yellow(`
203
- ${server.name} requires environment variables:`));
204
- const envMap = {};
205
- const skippedKeys = [];
206
- for (const envKey of server.envVars) {
207
- const action = await select({
208
- message: ` How do you want to set ${chalk.bold(envKey)}?`,
209
- choices: [
210
- { name: "Enter value now", value: "enter" },
211
- { name: `Skip ${chalk.gray(`(keep placeholder: YOUR_${envKey}_HERE)`)}`, value: "skip" }
212
- ]
213
- });
214
- if (action === "skip") {
215
- skippedKeys.push(envKey);
216
- } else {
217
- const value = await input({
218
- message: ` ${envKey}:`,
219
- default: ""
220
- });
221
- if (value) envMap[envKey] = value;
222
- }
223
- }
224
- plan.mcpEnvValues.set(server.name, envMap);
225
- if (skippedKeys.length > 0) {
226
- skippedMcps.set(server.name, skippedKeys);
227
- }
228
- }
229
- }
230
- console.log(chalk.bold("\n Installation Summary"));
231
- console.log(chalk.gray(" \u2500".repeat(40)));
232
- console.log(` Scope : ${chalk.cyan(scope)} (${targetDir})`);
233
- if (plan.agents.length) console.log(` Agents : ${plan.agents.map((a) => a.name).join(", ")}`);
234
- if (plan.skills.length) console.log(` Skills : ${plan.skills.map((s) => s.name).join(", ")}`);
235
- if (plan.commands.length) console.log(` Commands: ${plan.commands.map((c) => c.name).join(", ")}`);
236
- if (plan.hooks.length) console.log(` Hooks : ${plan.hooks.map((h) => h.name).join(", ")}`);
237
- if (plan.ruleCategories.length) console.log(` Rules : ${plan.ruleCategories.join(", ")}`);
238
- if (plan.mcps.length) console.log(` MCPs : ${plan.mcps.map((m) => m.name).join(", ")}`);
239
- if (plan.claudemds.length) console.log(` ClaudeMd : ${plan.claudemds.map((c) => c.name).join(", ")}`);
240
- if (plan.statusline) console.log(` Statusline: statusline.sh \u2192 ~/.claude/statusline.sh`);
241
- console.log("");
242
- const totalItems = plan.agents.length + plan.skills.length + plan.commands.length + plan.hooks.length + plan.ruleCategories.length + plan.mcps.length + plan.claudemds.length + (plan.statusline ? 1 : 0);
243
- if (totalItems === 0) {
244
- console.log(chalk.yellow(" Nothing selected. Exiting."));
245
- return;
246
- }
247
- const ok = await confirm({ message: "Proceed with installation?", default: true });
248
- if (!ok) {
249
- console.log(chalk.yellow("\n Aborted."));
250
- return;
251
- }
252
- console.log("");
253
- const spinner = ora("Installing...").start();
254
- try {
255
- if (plan.agents.length) {
256
- spinner.text = "Installing agents...";
257
- await installAgents(plan.agents, targetDir);
258
- }
259
- if (plan.skills.length) {
260
- spinner.text = "Installing skills...";
261
- await installSkills(plan.skills, targetDir);
262
- }
263
- if (plan.commands.length) {
264
- spinner.text = "Installing commands...";
265
- await installCommands(plan.commands, targetDir);
266
- }
267
- if (plan.hooks.length) {
268
- spinner.text = "Installing hooks...";
269
- await installHooks(plan.hooks, targetDir);
270
- }
271
- if (plan.ruleCategories.length) {
272
- spinner.text = "Installing rules...";
273
- await installRules(plan.ruleCategories, targetDir);
274
- }
275
- if (plan.mcps.length) {
276
- spinner.text = "Installing MCP servers...";
277
- await installMcps(plan.mcps, plan.scope, plan.mcpEnvValues);
278
- }
279
- if (plan.claudemds.length) {
280
- spinner.text = "Installing claudemd...";
281
- await installClaudemd(plan.claudemds, targetDir);
282
- }
283
- if (plan.statusline) {
284
- spinner.text = "Installing statusline...";
285
- await installStatusline();
286
- }
287
- spinner.succeed(chalk.green("Installation complete!"));
288
- console.log("");
289
- if (plan.agents.length) console.log(` ${chalk.green("\u2713")} ${plan.agents.length} agent(s) \u2192 ${join2(targetDir, "agents")}`);
290
- if (plan.skills.length) console.log(` ${chalk.green("\u2713")} ${plan.skills.length} skill(s) \u2192 ${join2(targetDir, "skills")}`);
291
- if (plan.commands.length) console.log(` ${chalk.green("\u2713")} ${plan.commands.length} command(s) \u2192 ${join2(targetDir, "commands")}`);
292
- if (plan.hooks.length) console.log(` ${chalk.green("\u2713")} ${plan.hooks.length} hook(s) \u2192 ${join2(targetDir, "hooks")}`);
293
- if (plan.ruleCategories.length) console.log(` ${chalk.green("\u2713")} Rules copied \u2192 ${join2(targetDir, "rules")}`);
294
- if (plan.mcps.length) console.log(` ${chalk.green("\u2713")} ${plan.mcps.length} MCP server(s) \u2192 ${scope === "global" ? "~/.claude.json" : "./.claude.json"}`);
295
- if (plan.claudemds.length) console.log(` ${chalk.green("\u2713")} ClaudeMd appended \u2192 ${join2(targetDir, "CLAUDE.md")}`);
296
- if (plan.statusline) console.log(` ${chalk.green("\u2713")} Statusline installed \u2192 ~/.claude/statusline.sh`);
297
- console.log("");
298
- if (skippedMcps.size > 0) {
299
- console.log(chalk.yellow(" \u26A0 The following MCP servers have placeholder env vars:"));
300
- for (const [serverName, keys] of skippedMcps) {
301
- console.log(` ${chalk.bold("-")} ${serverName} ${chalk.gray(`(${keys.join(", ")})`)} `);
302
- }
303
- const configPath = scope === "global" ? "~/.claude.json" : "./.claude.json";
304
- console.log(chalk.gray(` \u2192 Edit ${configPath} to set the actual values`));
305
- console.log("");
306
- }
307
- } catch (err) {
308
- spinner.fail(chalk.red("Installation failed"));
309
- throw err;
310
- }
311
- }
312
- export {
313
- runCli
314
- };
@@ -1,9 +0,0 @@
1
- import {
2
- installCommands
3
- } from "./chunk-3Y26YU4R.js";
4
- import "./chunk-K25UZZVG.js";
5
- import "./chunk-3GUKEMND.js";
6
- import "./chunk-5XOKKPAA.js";
7
- export {
8
- installCommands
9
- };
@@ -1,9 +0,0 @@
1
- import {
2
- installHooks
3
- } from "./chunk-W7RWPDBH.js";
4
- import "./chunk-K25UZZVG.js";
5
- import "./chunk-3GUKEMND.js";
6
- import "./chunk-5XOKKPAA.js";
7
- export {
8
- installHooks
9
- };
@@ -1,6 +0,0 @@
1
- import {
2
- installMcps
3
- } from "./chunk-W63UKEIT.js";
4
- export {
5
- installMcps
6
- };
@@ -1,9 +0,0 @@
1
- import {
2
- installRules
3
- } from "./chunk-ID643AV4.js";
4
- import "./chunk-K25UZZVG.js";
5
- import "./chunk-3GUKEMND.js";
6
- import "./chunk-5XOKKPAA.js";
7
- export {
8
- installRules
9
- };
@@ -1,8 +0,0 @@
1
- import {
2
- installSkills
3
- } from "./chunk-KEENFBLL.js";
4
- import "./chunk-3GUKEMND.js";
5
- import "./chunk-5XOKKPAA.js";
6
- export {
7
- installSkills
8
- };