@plumpslabs/kuma 2.1.5 → 2.2.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.
@@ -4,7 +4,8 @@ import {
4
4
  formatInitResults,
5
5
  generateInitMdContent,
6
6
  runInit
7
- } from "./chunk-2BFTJMBP.js";
7
+ } from "./chunk-EM6IK2TB.js";
8
+ import "./chunk-7Q3YUJSM.js";
8
9
  export {
9
10
  ALL_CONFIG_TYPES,
10
11
  CONFIG_LABELS,
@@ -0,0 +1,14 @@
1
+ import {
2
+ SessionMemory,
3
+ getSessionMemory,
4
+ handleWriteMemory,
5
+ searchSessionMemory,
6
+ sessionMemory
7
+ } from "./chunk-QPVPFUCQ.js";
8
+ export {
9
+ SessionMemory,
10
+ getSessionMemory,
11
+ handleWriteMemory,
12
+ searchSessionMemory,
13
+ sessionMemory
14
+ };
@@ -0,0 +1,278 @@
1
+ // src/utils/skillGenerator.ts
2
+ var BOOTSTRAP = [
3
+ "Kuma MCP tools are available. All behavioral rules are in `.kuma/init.md`.",
4
+ "**Before coding, call `kuma_init()`** to load project context and session memory.",
5
+ "Project knowledge persists in `.kuma/memories/*.md` across sessions."
6
+ ].join("\n");
7
+ function generateSkill(type) {
8
+ switch (type) {
9
+ case "claude":
10
+ return generateClaudeSkill();
11
+ case "cursor":
12
+ return generateCursorSkill();
13
+ case "cline":
14
+ return generateClineSkill();
15
+ case "antigravity":
16
+ return generateAntigravitySkill();
17
+ case "codex":
18
+ return generateCodexSkill();
19
+ case "opencode":
20
+ return generateOpencodeSkill();
21
+ case "aider":
22
+ return generateAiderSkill();
23
+ case "windsurf":
24
+ return generateWindsurfSkill();
25
+ case "copilot":
26
+ return generateCopilotSkill();
27
+ case "qwen":
28
+ return generateQwenSkill();
29
+ case "kiro":
30
+ return generateKiroSkill();
31
+ case "openclaw":
32
+ return generateOpenclawSkill();
33
+ case "codewhale":
34
+ return generateCodewhaleSkill();
35
+ }
36
+ }
37
+ function getSecondaryFiles(type) {
38
+ switch (type) {
39
+ case "antigravity":
40
+ return [{ path: ".agents/mcp_config.json", content: generateAntigravityMcpConfig() }];
41
+ case "codex":
42
+ return [{ path: ".codex/config.toml", content: generateCodexConfigToml() }];
43
+ case "qwen":
44
+ return [{ path: "settings.json", content: generateQwenSettings() }];
45
+ case "aider":
46
+ return [{ path: ".aider.conf.yml", content: generateAiderConfig() }];
47
+ case "codewhale":
48
+ return [{ path: ".codewhale/mcp.json", content: generateCodewhaleMcpConfig() }];
49
+ default:
50
+ return [];
51
+ }
52
+ }
53
+ function generateClaudeSkill() {
54
+ return [
55
+ "---",
56
+ "name: kuma-mcp",
57
+ "description: Kuma MCP \u2014 safety toolkit for AI coding agents",
58
+ "---",
59
+ "",
60
+ BOOTSTRAP,
61
+ "",
62
+ "\u{1F4D6} **Usage:**",
63
+ " \u2022 `kuma_init()` \u2014 load project context (call first)",
64
+ ' \u2022 `kuma_guard({check: "all"})` \u2014 safety check before risky ops',
65
+ " \u2022 `.kuma/init.md` \u2014 full behavioral rules",
66
+ " \u2022 `.kuma/memories/` \u2014 persistent project knowledge"
67
+ ].join("\n");
68
+ }
69
+ function generateCursorSkill() {
70
+ return [
71
+ "---",
72
+ "description: Kuma MCP \u2014 safety and context runtime for AI agents",
73
+ "alwaysApply: true",
74
+ "---",
75
+ "",
76
+ BOOTSTRAP,
77
+ "",
78
+ "\u{1F4D6} **Usage:**",
79
+ " \u2022 `kuma_init()` \u2014 load project context (call first)",
80
+ ' \u2022 `kuma_guard({check: "all"})` \u2014 safety check before risky ops',
81
+ ' \u2022 `kuma_verify({action: "test"})` \u2014 verify after edits',
82
+ " \u2022 `.kuma/init.md` \u2014 full behavioral rules",
83
+ " \u2022 `.kuma/memories/` \u2014 persistent project knowledge"
84
+ ].join("\n");
85
+ }
86
+ function generateClineSkill() {
87
+ return [
88
+ "---",
89
+ "description: Kuma MCP \u2014 safety toolkit for AI coding agents",
90
+ "paths:",
91
+ ' - "*"',
92
+ "---",
93
+ "",
94
+ BOOTSTRAP,
95
+ "",
96
+ "\u{1F4D6} **Usage:**",
97
+ " \u2022 `kuma_init()` \u2014 load project context (call first)",
98
+ ' \u2022 `kuma_guard({check: "all"})` \u2014 safety check before risky ops',
99
+ " \u2022 `.kuma/init.md` \u2014 full behavioral rules"
100
+ ].join("\n");
101
+ }
102
+ function generateAntigravitySkill() {
103
+ return [
104
+ "---",
105
+ "name: kuma-mcp",
106
+ "description: Kuma MCP \u2014 safety toolkit for AI coding agents",
107
+ "---",
108
+ "",
109
+ BOOTSTRAP,
110
+ "",
111
+ "\u{1F4D6} **Usage:**",
112
+ " \u2022 `kuma_init()` \u2014 load project context (call first)",
113
+ ' \u2022 `kuma_guard({check: "all"})` \u2014 safety check',
114
+ ' \u2022 `kuma_verify({action: "test"})` \u2014 verify after edits',
115
+ " \u2022 `.kuma/init.md` \u2014 full behavioral rules"
116
+ ].join("\n");
117
+ }
118
+ function generateAntigravityMcpConfig() {
119
+ return JSON.stringify({
120
+ mcpServers: {
121
+ kuma: {
122
+ command: "npx",
123
+ args: ["-y", "@plumpslabs/kuma"],
124
+ env: {}
125
+ }
126
+ }
127
+ }, null, 2) + "\n";
128
+ }
129
+ function generateCodexSkill() {
130
+ return generateAntigravitySkill();
131
+ }
132
+ function generateCodexConfigToml() {
133
+ return [
134
+ "# Generated by Kuma MCP - https://github.com/plumpslabs/kuma",
135
+ "# Kuma MCP server config for Codex CLI",
136
+ "",
137
+ "[mcp_servers.kuma]",
138
+ 'command = "npx"',
139
+ 'args = ["-y", "@plumpslabs/kuma"]',
140
+ ""
141
+ ].join("\n");
142
+ }
143
+ function generateOpencodeSkill() {
144
+ return JSON.stringify({
145
+ $schema: "https://opencode-ai.github.io/schema.json",
146
+ mcp: {
147
+ kuma: {
148
+ type: "local",
149
+ command: ["npx", "-y", "@plumpslabs/kuma"],
150
+ enabled: true
151
+ }
152
+ },
153
+ instructions: [".kuma/init.md"]
154
+ }, null, 2) + "\n";
155
+ }
156
+ function generateAiderSkill() {
157
+ return [
158
+ "# Kuma MCP \u2014 Aider Conventions",
159
+ "",
160
+ BOOTSTRAP,
161
+ "",
162
+ "\u{1F4D6} **Usage:**",
163
+ " \u2022 `kuma_init()` \u2014 load project context (call first)",
164
+ ' \u2022 `kuma_guard({check: "all"})` \u2014 safety check',
165
+ " \u2022 `.kuma/init.md` \u2014 full behavioral rules"
166
+ ].join("\n");
167
+ }
168
+ function generateAiderConfig() {
169
+ return [
170
+ "# Generated by Kuma MCP - https://github.com/plumpslabs/kuma",
171
+ "# Aider will read CONVENTIONS.md for coding conventions",
172
+ "",
173
+ "read: CONVENTIONS.md",
174
+ ""
175
+ ].join("\n");
176
+ }
177
+ function generateWindsurfSkill() {
178
+ return [
179
+ "# Kuma MCP \u2014 Windsurf Rules",
180
+ "",
181
+ BOOTSTRAP,
182
+ "",
183
+ "\u{1F4D6} **Usage:**",
184
+ " \u2022 `kuma_init()` \u2014 load project context (call first)",
185
+ ' \u2022 `kuma_guard({check: "all"})` \u2014 safety check',
186
+ ' \u2022 `kuma_verify({action: "test"})` \u2014 verify after edits',
187
+ " \u2022 `.kuma/init.md` \u2014 full behavioral rules",
188
+ " \u2022 `.kuma/memories/` \u2014 persistent project knowledge"
189
+ ].join("\n");
190
+ }
191
+ function generateCopilotSkill() {
192
+ return [
193
+ "---",
194
+ "name: kuma-mcp",
195
+ "description: Kuma MCP \u2014 safety toolkit for AI coding agents",
196
+ "---",
197
+ "",
198
+ BOOTSTRAP,
199
+ "",
200
+ "\u{1F4D6} **Usage:**",
201
+ " \u2022 `kuma_init()` \u2014 load project context (call first)",
202
+ ' \u2022 `kuma_guard({check: "all"})` \u2014 safety check',
203
+ " \u2022 `.kuma/init.md` \u2014 full behavioral rules"
204
+ ].join("\n");
205
+ }
206
+ function generateQwenSkill() {
207
+ return [
208
+ "## Kuma MCP",
209
+ "",
210
+ BOOTSTRAP,
211
+ "",
212
+ "\u{1F4D6} **Usage:**",
213
+ " \u2022 `kuma_init()` \u2014 load project context (call first)",
214
+ ' \u2022 `kuma_guard({check: "all"})` \u2014 safety check',
215
+ " \u2022 `.kuma/init.md` \u2014 full behavioral rules"
216
+ ].join("\n");
217
+ }
218
+ function generateQwenSettings() {
219
+ return JSON.stringify({
220
+ mcpServers: {
221
+ kuma: {
222
+ command: "npx",
223
+ args: ["-y", "@plumpslabs/kuma"],
224
+ env: {}
225
+ }
226
+ }
227
+ }, null, 2) + "\n";
228
+ }
229
+ function generateKiroSkill() {
230
+ return [
231
+ "---",
232
+ "name: kuma-mcp",
233
+ "description: Kuma MCP \u2014 safety toolkit for AI coding agents",
234
+ "inclusion: always",
235
+ "---",
236
+ "",
237
+ BOOTSTRAP,
238
+ "",
239
+ "\u{1F4D6} **Usage:**",
240
+ " \u2022 `kuma_init()` \u2014 load project context (call first)",
241
+ ' \u2022 `kuma_guard({check: "all"})` \u2014 safety check',
242
+ ' \u2022 `kuma_verify({action: "test"})` \u2014 verify after edits',
243
+ " \u2022 `.kuma/init.md` \u2014 full behavioral rules"
244
+ ].join("\n");
245
+ }
246
+ function generateOpenclawSkill() {
247
+ return [
248
+ "---",
249
+ "name: kuma-mcp",
250
+ "description: Kuma MCP \u2014 safety toolkit for AI coding agents",
251
+ "---",
252
+ "",
253
+ BOOTSTRAP,
254
+ "",
255
+ "\u{1F4D6} **Usage:**",
256
+ " \u2022 `kuma_init()` \u2014 load project context (call first)",
257
+ ' \u2022 `kuma_guard({check: "all"})` \u2014 safety check',
258
+ " \u2022 `.kuma/init.md` \u2014 full behavioral rules"
259
+ ].join("\n");
260
+ }
261
+ function generateCodewhaleSkill() {
262
+ return generateOpenclawSkill();
263
+ }
264
+ function generateCodewhaleMcpConfig() {
265
+ return JSON.stringify({
266
+ mcpServers: {
267
+ kuma: {
268
+ command: "npx",
269
+ args: ["-y", "@plumpslabs/kuma"],
270
+ env: {}
271
+ }
272
+ }
273
+ }, null, 2) + "\n";
274
+ }
275
+ export {
276
+ generateSkill,
277
+ getSecondaryFiles
278
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plumpslabs/kuma",
3
- "version": "2.1.5",
3
+ "version": "2.2.0",
4
4
  "description": "Zero-setup safety toolkit for AI coding agents. MCP server with code review, git analysis, file editing, session memory, and static analysis — works with Claude Code, Cursor, Gemini CLI.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -16,23 +16,27 @@
16
16
  "dev": "tsup src/index.ts --format esm --watch --out-dir dist",
17
17
  "start": "node dist/index.js",
18
18
  "typecheck": "tsc --noEmit",
19
- "lint": "eslint src/",
19
+ "lint": "echo 'No linting configured'",
20
20
  "prepublishOnly": "npm run build",
21
- "test": "node --experimental-vm-modules node_modules/.bin/jest"
21
+ "test": "NODE_OPTIONS=--experimental-vm-modules pnpm exec jest"
22
22
  },
23
23
  "dependencies": {
24
24
  "@modelcontextprotocol/sdk": "^1.7.0",
25
25
  "fast-glob": "^3.3.2",
26
+ "sql.js": "^1.14.1",
26
27
  "zod": "^3.24.0"
27
28
  },
28
29
  "optionalDependencies": {
29
30
  "typescript-language-server": "^5.3.0"
30
31
  },
31
32
  "devDependencies": {
33
+ "@jest/globals": "^30.4.1",
32
34
  "@types/jest": "^29.5.0",
33
35
  "@types/node": "^22.0.0",
34
36
  "jest": "^29.7.0",
37
+ "jest-mock": "^30.4.1",
35
38
  "ts-jest": "^29.2.0",
39
+ "ts-node": "^10.9.2",
36
40
  "tsup": "^8.3.0",
37
41
  "typescript": "^5.9.3"
38
42
  },