@juho0719/cckit 0.2.3 → 0.2.5
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/assets/hooks/agent-track.sh +53 -0
- package/assets/hooks/auto-commit-push.sh +123 -0
- package/assets/hooks/on-prompt-start.sh +6 -0
- package/assets/hooks/skill-track.sh +26 -0
- package/assets/hooks/subagent-notify.sh +20 -0
- package/assets/skills/plan-viewer/SKILL.md +162 -0
- package/assets/skills/plan-viewer/scripts/frame-template.html +266 -0
- package/assets/skills/plan-viewer/scripts/helper.js +84 -0
- package/assets/skills/plan-viewer/scripts/server.js +334 -0
- package/assets/skills/plan-viewer/scripts/start-server.sh +122 -0
- package/assets/skills/plan-viewer/scripts/stop-server.sh +27 -0
- package/assets/skills/plan-viewer/spec-reviewer-prompt.md +47 -0
- package/assets/skills/plan-viewer/visual-guide.md +234 -0
- package/assets/skills/scaffold/SKILL.md +119 -0
- package/assets/skills/scaffold/presets.md +94 -0
- package/assets/skills/scaffold/scripts/common.sh +73 -0
- package/assets/skills/scaffold/scripts/monorepo.sh +449 -0
- package/assets/skills/scaffold/scripts/nextjs-fullstack.sh +305 -0
- package/assets/statusline/statusline.sh +186 -0
- package/dist/{chunk-OLLOS3GG.js → chunk-E3INXQNO.js} +38 -8
- package/dist/{chunk-SLVASXTF.js → chunk-W7RWPDBH.js} +13 -3
- package/dist/{cli-6WQMAFNA.js → cli-KZYBSIXO.js} +43 -14
- package/dist/{hooks-S73JTX2I.js → hooks-A2WQ2LGG.js} +1 -1
- package/dist/index.js +10 -10
- package/dist/{registry-BU55RMHU.js → registry-KRLOB4TH.js} +1 -1
- package/dist/{uninstall-cli-7XGNDIUC.js → uninstall-cli-GLYJG5V2.js} +2 -2
- package/package.json +1 -1
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
getMcpServers,
|
|
13
13
|
getRuleCategories,
|
|
14
14
|
getSkills
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-E3INXQNO.js";
|
|
16
16
|
import {
|
|
17
17
|
installAgents
|
|
18
18
|
} from "./chunk-EYY2IZ7N.js";
|
|
@@ -24,13 +24,18 @@ import {
|
|
|
24
24
|
} from "./chunk-3Y26YU4R.js";
|
|
25
25
|
import {
|
|
26
26
|
installHooks
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-W7RWPDBH.js";
|
|
28
28
|
import {
|
|
29
29
|
installRules
|
|
30
30
|
} from "./chunk-ID643AV4.js";
|
|
31
|
-
import "./chunk-K25UZZVG.js";
|
|
32
|
-
import "./chunk-3GUKEMND.js";
|
|
33
31
|
import {
|
|
32
|
+
backupIfExists
|
|
33
|
+
} from "./chunk-K25UZZVG.js";
|
|
34
|
+
import {
|
|
35
|
+
copyFileUtil
|
|
36
|
+
} from "./chunk-3GUKEMND.js";
|
|
37
|
+
import {
|
|
38
|
+
getAssetsDir,
|
|
34
39
|
getGlobalDir,
|
|
35
40
|
getProjectDir
|
|
36
41
|
} from "./chunk-5XOKKPAA.js";
|
|
@@ -39,7 +44,20 @@ import {
|
|
|
39
44
|
import { checkbox, select, input, confirm } from "@inquirer/prompts";
|
|
40
45
|
import chalk from "chalk";
|
|
41
46
|
import ora from "ora";
|
|
47
|
+
import { join as join2 } from "path";
|
|
48
|
+
|
|
49
|
+
// src/installers/statusline.ts
|
|
42
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
|
|
43
61
|
function printBanner() {
|
|
44
62
|
console.log(
|
|
45
63
|
chalk.cyan.bold(`
|
|
@@ -79,7 +97,8 @@ async function runCli() {
|
|
|
79
97
|
{ name: "Hooks - Post-tool hooks", value: "hooks" },
|
|
80
98
|
{ name: "Rules - CLAUDE.md rules", value: "rules" },
|
|
81
99
|
{ name: "MCPs - MCP server configs", value: "mcps" },
|
|
82
|
-
{ name: "ClaudeMd
|
|
100
|
+
{ name: "ClaudeMd - Behavioral guidelines", value: "claudemd" },
|
|
101
|
+
{ name: "Statusline - Terminal statusline script", value: "statusline" }
|
|
83
102
|
]
|
|
84
103
|
});
|
|
85
104
|
if (selectedCategories.length === 0) {
|
|
@@ -95,7 +114,8 @@ async function runCli() {
|
|
|
95
114
|
ruleCategories: [],
|
|
96
115
|
mcps: [],
|
|
97
116
|
mcpEnvValues: /* @__PURE__ */ new Map(),
|
|
98
|
-
claudemds: []
|
|
117
|
+
claudemds: [],
|
|
118
|
+
statusline: false
|
|
99
119
|
};
|
|
100
120
|
const skippedMcps = /* @__PURE__ */ new Map();
|
|
101
121
|
if (selectedCategories.includes("agents")) {
|
|
@@ -164,6 +184,9 @@ async function runCli() {
|
|
|
164
184
|
}))
|
|
165
185
|
});
|
|
166
186
|
}
|
|
187
|
+
if (selectedCategories.includes("statusline")) {
|
|
188
|
+
plan.statusline = true;
|
|
189
|
+
}
|
|
167
190
|
if (selectedCategories.includes("mcps")) {
|
|
168
191
|
const allMcps = await getMcpServers();
|
|
169
192
|
plan.mcps = await checkbox({
|
|
@@ -213,9 +236,10 @@ async function runCli() {
|
|
|
213
236
|
if (plan.hooks.length) console.log(` Hooks : ${plan.hooks.map((h) => h.name).join(", ")}`);
|
|
214
237
|
if (plan.ruleCategories.length) console.log(` Rules : ${plan.ruleCategories.join(", ")}`);
|
|
215
238
|
if (plan.mcps.length) console.log(` MCPs : ${plan.mcps.map((m) => m.name).join(", ")}`);
|
|
216
|
-
if (plan.claudemds.length) console.log(` ClaudeMd: ${plan.claudemds.map((c) => c.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`);
|
|
217
241
|
console.log("");
|
|
218
|
-
const totalItems = plan.agents.length + plan.skills.length + plan.commands.length + plan.hooks.length + plan.ruleCategories.length + plan.mcps.length + plan.claudemds.length;
|
|
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);
|
|
219
243
|
if (totalItems === 0) {
|
|
220
244
|
console.log(chalk.yellow(" Nothing selected. Exiting."));
|
|
221
245
|
return;
|
|
@@ -256,15 +280,20 @@ async function runCli() {
|
|
|
256
280
|
spinner.text = "Installing claudemd...";
|
|
257
281
|
await installClaudemd(plan.claudemds, targetDir);
|
|
258
282
|
}
|
|
283
|
+
if (plan.statusline) {
|
|
284
|
+
spinner.text = "Installing statusline...";
|
|
285
|
+
await installStatusline();
|
|
286
|
+
}
|
|
259
287
|
spinner.succeed(chalk.green("Installation complete!"));
|
|
260
288
|
console.log("");
|
|
261
|
-
if (plan.agents.length) console.log(` ${chalk.green("\u2713")} ${plan.agents.length} agent(s) \u2192 ${
|
|
262
|
-
if (plan.skills.length) console.log(` ${chalk.green("\u2713")} ${plan.skills.length} skill(s) \u2192 ${
|
|
263
|
-
if (plan.commands.length) console.log(` ${chalk.green("\u2713")} ${plan.commands.length} command(s) \u2192 ${
|
|
264
|
-
if (plan.hooks.length) console.log(` ${chalk.green("\u2713")} ${plan.hooks.length} hook(s) \u2192 ${
|
|
265
|
-
if (plan.ruleCategories.length) console.log(` ${chalk.green("\u2713")} Rules copied \u2192 ${
|
|
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")}`);
|
|
266
294
|
if (plan.mcps.length) console.log(` ${chalk.green("\u2713")} ${plan.mcps.length} MCP server(s) \u2192 ${scope === "global" ? "~/.claude.json" : "./.claude.json"}`);
|
|
267
|
-
if (plan.claudemds.length) console.log(` ${chalk.green("\u2713")} ClaudeMd appended \u2192 ${
|
|
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`);
|
|
268
297
|
console.log("");
|
|
269
298
|
if (skippedMcps.size > 0) {
|
|
270
299
|
console.log(chalk.yellow(" \u26A0 The following MCP servers have placeholder env vars:"));
|
package/dist/index.js
CHANGED
|
@@ -60,17 +60,17 @@ Installing all to ${targetDir}...
|
|
|
60
60
|
{ installMcps },
|
|
61
61
|
{ installClaudemd }
|
|
62
62
|
] = await Promise.all([
|
|
63
|
-
import("./registry-
|
|
64
|
-
import("./registry-
|
|
65
|
-
import("./registry-
|
|
66
|
-
import("./registry-
|
|
67
|
-
import("./registry-
|
|
68
|
-
import("./registry-
|
|
69
|
-
import("./registry-
|
|
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
70
|
import("./agents-AEKT67A6.js"),
|
|
71
71
|
import("./skills-ULMW3UCM.js"),
|
|
72
72
|
import("./commands-P5LILVZ5.js"),
|
|
73
|
-
import("./hooks-
|
|
73
|
+
import("./hooks-A2WQ2LGG.js"),
|
|
74
74
|
import("./rules-EFSJ3L3A.js"),
|
|
75
75
|
import("./mcps-67Q7TBGW.js"),
|
|
76
76
|
import("./claudemd-KKQ2DL7P.js")
|
|
@@ -124,7 +124,7 @@ async function main() {
|
|
|
124
124
|
return;
|
|
125
125
|
}
|
|
126
126
|
if (args.includes("--uninstall") || args.includes("-u")) {
|
|
127
|
-
const { runUninstallCli } = await import("./uninstall-cli-
|
|
127
|
+
const { runUninstallCli } = await import("./uninstall-cli-GLYJG5V2.js");
|
|
128
128
|
await runUninstallCli();
|
|
129
129
|
return;
|
|
130
130
|
}
|
|
@@ -134,7 +134,7 @@ async function main() {
|
|
|
134
134
|
await installAll(scope);
|
|
135
135
|
return;
|
|
136
136
|
}
|
|
137
|
-
const { runCli } = await import("./cli-
|
|
137
|
+
const { runCli } = await import("./cli-KZYBSIXO.js");
|
|
138
138
|
await runCli();
|
|
139
139
|
}
|
|
140
140
|
main().catch((err) => {
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
getMcpServers,
|
|
7
7
|
getRuleCategories,
|
|
8
8
|
getSkills
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-E3INXQNO.js";
|
|
10
10
|
import {
|
|
11
11
|
getAssetsDir,
|
|
12
12
|
getGlobalDir,
|
|
@@ -199,7 +199,7 @@ async function removeHookFromSettings(settingsPath, hookFileName) {
|
|
|
199
199
|
const matchers = settings.hooks[hookType];
|
|
200
200
|
for (let i = matchers.length - 1; i >= 0; i--) {
|
|
201
201
|
const matcher = matchers[i];
|
|
202
|
-
matcher.hooks = matcher.hooks.filter((h) => !h.command.
|
|
202
|
+
matcher.hooks = matcher.hooks.filter((h) => !h.command.includes(suffix));
|
|
203
203
|
if (matcher.hooks.length === 0) {
|
|
204
204
|
matchers.splice(i, 1);
|
|
205
205
|
}
|
package/package.json
CHANGED