superskill 0.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.
Files changed (301) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/LICENSE +21 -0
  3. package/README.md +235 -0
  4. package/dist/cli.d.ts +2 -0
  5. package/dist/cli.js +1158 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/brainstorm.d.ts +9 -0
  8. package/dist/commands/brainstorm.js +37 -0
  9. package/dist/commands/brainstorm.js.map +1 -0
  10. package/dist/commands/brainstorm.test.d.ts +1 -0
  11. package/dist/commands/brainstorm.test.js +110 -0
  12. package/dist/commands/brainstorm.test.js.map +1 -0
  13. package/dist/commands/context.d.ts +18 -0
  14. package/dist/commands/context.js +88 -0
  15. package/dist/commands/context.js.map +1 -0
  16. package/dist/commands/context.test.d.ts +1 -0
  17. package/dist/commands/context.test.js +230 -0
  18. package/dist/commands/context.test.js.map +1 -0
  19. package/dist/commands/decide.d.ts +12 -0
  20. package/dist/commands/decide.js +40 -0
  21. package/dist/commands/decide.js.map +1 -0
  22. package/dist/commands/decide.test.d.ts +1 -0
  23. package/dist/commands/decide.test.js +109 -0
  24. package/dist/commands/decide.test.js.map +1 -0
  25. package/dist/commands/graph.d.ts +15 -0
  26. package/dist/commands/graph.js +89 -0
  27. package/dist/commands/graph.js.map +1 -0
  28. package/dist/commands/graph.test.d.ts +1 -0
  29. package/dist/commands/graph.test.js +215 -0
  30. package/dist/commands/graph.test.js.map +1 -0
  31. package/dist/commands/init.d.ts +11 -0
  32. package/dist/commands/init.js +257 -0
  33. package/dist/commands/init.js.map +1 -0
  34. package/dist/commands/learn.d.ts +25 -0
  35. package/dist/commands/learn.js +92 -0
  36. package/dist/commands/learn.js.map +1 -0
  37. package/dist/commands/learn.test.d.ts +1 -0
  38. package/dist/commands/learn.test.js +241 -0
  39. package/dist/commands/learn.test.js.map +1 -0
  40. package/dist/commands/prune.d.ts +58 -0
  41. package/dist/commands/prune.js +246 -0
  42. package/dist/commands/prune.js.map +1 -0
  43. package/dist/commands/read.d.ts +8 -0
  44. package/dist/commands/read.js +7 -0
  45. package/dist/commands/read.js.map +1 -0
  46. package/dist/commands/read.test.d.ts +1 -0
  47. package/dist/commands/read.test.js +48 -0
  48. package/dist/commands/read.test.js.map +1 -0
  49. package/dist/commands/resume.d.ts +20 -0
  50. package/dist/commands/resume.js +141 -0
  51. package/dist/commands/resume.js.map +1 -0
  52. package/dist/commands/resume.test.d.ts +1 -0
  53. package/dist/commands/resume.test.js +243 -0
  54. package/dist/commands/resume.test.js.map +1 -0
  55. package/dist/commands/search.d.ts +8 -0
  56. package/dist/commands/search.js +25 -0
  57. package/dist/commands/search.js.map +1 -0
  58. package/dist/commands/search.test.d.ts +1 -0
  59. package/dist/commands/search.test.js +61 -0
  60. package/dist/commands/search.test.js.map +1 -0
  61. package/dist/commands/session.d.ts +22 -0
  62. package/dist/commands/session.js +79 -0
  63. package/dist/commands/session.js.map +1 -0
  64. package/dist/commands/session.test.d.ts +1 -0
  65. package/dist/commands/session.test.js +231 -0
  66. package/dist/commands/session.test.js.map +1 -0
  67. package/dist/commands/skill/catalog.d.ts +39 -0
  68. package/dist/commands/skill/catalog.js +260 -0
  69. package/dist/commands/skill/catalog.js.map +1 -0
  70. package/dist/commands/skill/index.d.ts +55 -0
  71. package/dist/commands/skill/index.js +82 -0
  72. package/dist/commands/skill/index.js.map +1 -0
  73. package/dist/commands/skill/index.test.d.ts +1 -0
  74. package/dist/commands/skill/index.test.js +137 -0
  75. package/dist/commands/skill/index.test.js.map +1 -0
  76. package/dist/commands/skill/install.d.ts +14 -0
  77. package/dist/commands/skill/install.js +108 -0
  78. package/dist/commands/skill/install.js.map +1 -0
  79. package/dist/commands/skill/install.test.d.ts +1 -0
  80. package/dist/commands/skill/install.test.js +225 -0
  81. package/dist/commands/skill/install.test.js.map +1 -0
  82. package/dist/commands/skill/list.d.ts +6 -0
  83. package/dist/commands/skill/list.js +5 -0
  84. package/dist/commands/skill/list.js.map +1 -0
  85. package/dist/commands/skill/list.test.d.ts +1 -0
  86. package/dist/commands/skill/list.test.js +101 -0
  87. package/dist/commands/skill/list.test.js.map +1 -0
  88. package/dist/commands/skill/marketplace.d.ts +121 -0
  89. package/dist/commands/skill/marketplace.js +548 -0
  90. package/dist/commands/skill/marketplace.js.map +1 -0
  91. package/dist/commands/skill/schema.d.ts +27 -0
  92. package/dist/commands/skill/schema.js +55 -0
  93. package/dist/commands/skill/schema.js.map +1 -0
  94. package/dist/commands/skill/schema.test.d.ts +1 -0
  95. package/dist/commands/skill/schema.test.js +142 -0
  96. package/dist/commands/skill/schema.test.js.map +1 -0
  97. package/dist/commands/skill/validate.d.ts +10 -0
  98. package/dist/commands/skill/validate.js +40 -0
  99. package/dist/commands/skill/validate.js.map +1 -0
  100. package/dist/commands/skill/validate.test.d.ts +1 -0
  101. package/dist/commands/skill/validate.test.js +171 -0
  102. package/dist/commands/skill/validate.test.js.map +1 -0
  103. package/dist/commands/task.d.ts +34 -0
  104. package/dist/commands/task.js +160 -0
  105. package/dist/commands/task.js.map +1 -0
  106. package/dist/commands/task.test.d.ts +1 -0
  107. package/dist/commands/task.test.js +395 -0
  108. package/dist/commands/task.test.js.map +1 -0
  109. package/dist/commands/todo.d.ts +15 -0
  110. package/dist/commands/todo.js +99 -0
  111. package/dist/commands/todo.js.map +1 -0
  112. package/dist/commands/todo.test.d.ts +1 -0
  113. package/dist/commands/todo.test.js +324 -0
  114. package/dist/commands/todo.test.js.map +1 -0
  115. package/dist/commands/write.d.ts +12 -0
  116. package/dist/commands/write.js +40 -0
  117. package/dist/commands/write.js.map +1 -0
  118. package/dist/commands/write.test.d.ts +1 -0
  119. package/dist/commands/write.test.js +79 -0
  120. package/dist/commands/write.test.js.map +1 -0
  121. package/dist/config.d.ts +15 -0
  122. package/dist/config.js +49 -0
  123. package/dist/config.js.map +1 -0
  124. package/dist/config.test.d.ts +1 -0
  125. package/dist/config.test.js +147 -0
  126. package/dist/config.test.js.map +1 -0
  127. package/dist/core/executor.d.ts +11 -0
  128. package/dist/core/executor.js +42 -0
  129. package/dist/core/executor.js.map +1 -0
  130. package/dist/core/executor.test.d.ts +1 -0
  131. package/dist/core/executor.test.js +206 -0
  132. package/dist/core/executor.test.js.map +1 -0
  133. package/dist/core/middleware/error-handler.d.ts +2 -0
  134. package/dist/core/middleware/error-handler.js +29 -0
  135. package/dist/core/middleware/error-handler.js.map +1 -0
  136. package/dist/core/middleware/index.d.ts +2 -0
  137. package/dist/core/middleware/index.js +3 -0
  138. package/dist/core/middleware/index.js.map +1 -0
  139. package/dist/core/middleware/logging.d.ts +2 -0
  140. package/dist/core/middleware/logging.js +18 -0
  141. package/dist/core/middleware/logging.js.map +1 -0
  142. package/dist/core/registry.d.ts +12 -0
  143. package/dist/core/registry.js +552 -0
  144. package/dist/core/registry.js.map +1 -0
  145. package/dist/core/registry.test.d.ts +1 -0
  146. package/dist/core/registry.test.js +213 -0
  147. package/dist/core/registry.test.js.map +1 -0
  148. package/dist/core/types.d.ts +38 -0
  149. package/dist/core/types.js +2 -0
  150. package/dist/core/types.js.map +1 -0
  151. package/dist/integration/coordination.test.d.ts +1 -0
  152. package/dist/integration/coordination.test.js +286 -0
  153. package/dist/integration/coordination.test.js.map +1 -0
  154. package/dist/integration/project-artifacts.test.d.ts +1 -0
  155. package/dist/integration/project-artifacts.test.js +275 -0
  156. package/dist/integration/project-artifacts.test.js.map +1 -0
  157. package/dist/integration/registry-graph.test.d.ts +1 -0
  158. package/dist/integration/registry-graph.test.js +157 -0
  159. package/dist/integration/registry-graph.test.js.map +1 -0
  160. package/dist/integration/vault-lifecycle.test.d.ts +1 -0
  161. package/dist/integration/vault-lifecycle.test.js +183 -0
  162. package/dist/integration/vault-lifecycle.test.js.map +1 -0
  163. package/dist/lib/auto-number.d.ts +10 -0
  164. package/dist/lib/auto-number.js +33 -0
  165. package/dist/lib/auto-number.js.map +1 -0
  166. package/dist/lib/auto-number.test.d.ts +1 -0
  167. package/dist/lib/auto-number.test.js +88 -0
  168. package/dist/lib/auto-number.test.js.map +1 -0
  169. package/dist/lib/auto-profile.d.ts +11 -0
  170. package/dist/lib/auto-profile.js +123 -0
  171. package/dist/lib/auto-profile.js.map +1 -0
  172. package/dist/lib/auto-profile.test.d.ts +1 -0
  173. package/dist/lib/auto-profile.test.js +227 -0
  174. package/dist/lib/auto-profile.test.js.map +1 -0
  175. package/dist/lib/escape-regex.d.ts +4 -0
  176. package/dist/lib/escape-regex.js +8 -0
  177. package/dist/lib/escape-regex.js.map +1 -0
  178. package/dist/lib/escape-regex.test.d.ts +1 -0
  179. package/dist/lib/escape-regex.test.js +27 -0
  180. package/dist/lib/escape-regex.test.js.map +1 -0
  181. package/dist/lib/frontmatter.d.ts +34 -0
  182. package/dist/lib/frontmatter.js +75 -0
  183. package/dist/lib/frontmatter.js.map +1 -0
  184. package/dist/lib/frontmatter.test.d.ts +1 -0
  185. package/dist/lib/frontmatter.test.js +192 -0
  186. package/dist/lib/frontmatter.test.js.map +1 -0
  187. package/dist/lib/project-detector.d.ts +12 -0
  188. package/dist/lib/project-detector.js +124 -0
  189. package/dist/lib/project-detector.js.map +1 -0
  190. package/dist/lib/project-detector.test.d.ts +1 -0
  191. package/dist/lib/project-detector.test.js +117 -0
  192. package/dist/lib/project-detector.test.js.map +1 -0
  193. package/dist/lib/safe-external-path.d.ts +10 -0
  194. package/dist/lib/safe-external-path.js +47 -0
  195. package/dist/lib/safe-external-path.js.map +1 -0
  196. package/dist/lib/safe-external-path.test.d.ts +1 -0
  197. package/dist/lib/safe-external-path.test.js +99 -0
  198. package/dist/lib/safe-external-path.test.js.map +1 -0
  199. package/dist/lib/search-engine.d.ts +19 -0
  200. package/dist/lib/search-engine.js +164 -0
  201. package/dist/lib/search-engine.js.map +1 -0
  202. package/dist/lib/search-engine.test.d.ts +1 -0
  203. package/dist/lib/search-engine.test.js +120 -0
  204. package/dist/lib/search-engine.test.js.map +1 -0
  205. package/dist/lib/session-registry.d.ts +59 -0
  206. package/dist/lib/session-registry.js +231 -0
  207. package/dist/lib/session-registry.js.map +1 -0
  208. package/dist/lib/session-registry.test.d.ts +1 -0
  209. package/dist/lib/session-registry.test.js +199 -0
  210. package/dist/lib/session-registry.test.js.map +1 -0
  211. package/dist/lib/skill-registry.d.ts +13 -0
  212. package/dist/lib/skill-registry.js +77 -0
  213. package/dist/lib/skill-registry.js.map +1 -0
  214. package/dist/lib/stack-detector.d.ts +7 -0
  215. package/dist/lib/stack-detector.js +184 -0
  216. package/dist/lib/stack-detector.js.map +1 -0
  217. package/dist/lib/stack-detector.test.d.ts +1 -0
  218. package/dist/lib/stack-detector.test.js +110 -0
  219. package/dist/lib/stack-detector.test.js.map +1 -0
  220. package/dist/lib/token-estimator.d.ts +19 -0
  221. package/dist/lib/token-estimator.js +59 -0
  222. package/dist/lib/token-estimator.js.map +1 -0
  223. package/dist/lib/token-estimator.test.d.ts +1 -0
  224. package/dist/lib/token-estimator.test.js +65 -0
  225. package/dist/lib/token-estimator.test.js.map +1 -0
  226. package/dist/lib/tool-detector.d.ts +8 -0
  227. package/dist/lib/tool-detector.js +76 -0
  228. package/dist/lib/tool-detector.js.map +1 -0
  229. package/dist/lib/tool-detector.test.d.ts +1 -0
  230. package/dist/lib/tool-detector.test.js +170 -0
  231. package/dist/lib/tool-detector.test.js.map +1 -0
  232. package/dist/lib/vault-fs.d.ts +39 -0
  233. package/dist/lib/vault-fs.js +184 -0
  234. package/dist/lib/vault-fs.js.map +1 -0
  235. package/dist/lib/vault-fs.test.d.ts +1 -0
  236. package/dist/lib/vault-fs.test.js +210 -0
  237. package/dist/lib/vault-fs.test.js.map +1 -0
  238. package/dist/mcp-server.d.ts +2 -0
  239. package/dist/mcp-server.js +387 -0
  240. package/dist/mcp-server.js.map +1 -0
  241. package/dist/setup/clients.d.ts +2 -0
  242. package/dist/setup/clients.js +109 -0
  243. package/dist/setup/clients.js.map +1 -0
  244. package/dist/setup/configure.d.ts +6 -0
  245. package/dist/setup/configure.js +126 -0
  246. package/dist/setup/configure.js.map +1 -0
  247. package/dist/setup/configure.test.d.ts +1 -0
  248. package/dist/setup/configure.test.js +112 -0
  249. package/dist/setup/configure.test.js.map +1 -0
  250. package/dist/setup/detect.d.ts +3 -0
  251. package/dist/setup/detect.js +24 -0
  252. package/dist/setup/detect.js.map +1 -0
  253. package/dist/setup/detect.test.d.ts +1 -0
  254. package/dist/setup/detect.test.js +44 -0
  255. package/dist/setup/detect.test.js.map +1 -0
  256. package/dist/setup/index.d.ts +2 -0
  257. package/dist/setup/index.js +147 -0
  258. package/dist/setup/index.js.map +1 -0
  259. package/dist/setup/instructions.d.ts +4 -0
  260. package/dist/setup/instructions.js +62 -0
  261. package/dist/setup/instructions.js.map +1 -0
  262. package/dist/setup/instructions.test.d.ts +1 -0
  263. package/dist/setup/instructions.test.js +84 -0
  264. package/dist/setup/instructions.test.js.map +1 -0
  265. package/dist/setup/json-config.d.ts +10 -0
  266. package/dist/setup/json-config.js +43 -0
  267. package/dist/setup/json-config.js.map +1 -0
  268. package/dist/setup/json-config.test.d.ts +1 -0
  269. package/dist/setup/json-config.test.js +92 -0
  270. package/dist/setup/json-config.test.js.map +1 -0
  271. package/dist/setup/postinstall.d.ts +2 -0
  272. package/dist/setup/postinstall.js +22 -0
  273. package/dist/setup/postinstall.js.map +1 -0
  274. package/dist/setup/preuninstall.d.ts +2 -0
  275. package/dist/setup/preuninstall.js +12 -0
  276. package/dist/setup/preuninstall.js.map +1 -0
  277. package/dist/setup/setup-integration.test.d.ts +1 -0
  278. package/dist/setup/setup-integration.test.js +72 -0
  279. package/dist/setup/setup-integration.test.js.map +1 -0
  280. package/dist/setup/teardown.d.ts +5 -0
  281. package/dist/setup/teardown.js +94 -0
  282. package/dist/setup/teardown.js.map +1 -0
  283. package/dist/setup/teardown.test.d.ts +1 -0
  284. package/dist/setup/teardown.test.js +105 -0
  285. package/dist/setup/teardown.test.js.map +1 -0
  286. package/dist/setup/toml-config.d.ts +5 -0
  287. package/dist/setup/toml-config.js +26 -0
  288. package/dist/setup/toml-config.js.map +1 -0
  289. package/dist/setup/toml-config.test.d.ts +1 -0
  290. package/dist/setup/toml-config.test.js +49 -0
  291. package/dist/setup/toml-config.test.js.map +1 -0
  292. package/dist/setup/types.d.ts +52 -0
  293. package/dist/setup/types.js +23 -0
  294. package/dist/setup/types.js.map +1 -0
  295. package/dist/test-helpers.d.ts +20 -0
  296. package/dist/test-helpers.js +47 -0
  297. package/dist/test-helpers.js.map +1 -0
  298. package/dist/test-helpers.test.d.ts +1 -0
  299. package/dist/test-helpers.test.js +90 -0
  300. package/dist/test-helpers.test.js.map +1 -0
  301. package/package.json +74 -0
@@ -0,0 +1,231 @@
1
+ import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
2
+ import { mkdir, rm } from "fs/promises";
3
+ import { homedir } from "os";
4
+ import { join } from "path";
5
+ import { sessionCommand } from "./session.js";
6
+ import { SessionRegistryManager } from "../lib/session-registry.js";
7
+ import { VaultFS } from "../lib/vault-fs.js";
8
+ function createCommandContext(vaultFs, overrides) {
9
+ return {
10
+ vaultFs,
11
+ vaultPath: vaultFs.root,
12
+ sessionRegistry: {},
13
+ config: {},
14
+ log: { debug: vi.fn(), info: vi.fn(), warn: vi.fn(), error: vi.fn() },
15
+ ...overrides,
16
+ };
17
+ }
18
+ describe("sessionCommand", () => {
19
+ let vaultRoot;
20
+ let vaultFs;
21
+ let registry;
22
+ let ctx;
23
+ beforeEach(async () => {
24
+ vaultRoot = join(homedir(), `.vault-test-${Date.now()}-${Math.random().toString(36).slice(2)}`);
25
+ await mkdir(vaultRoot, { recursive: true });
26
+ await mkdir(join(vaultRoot, "coordination/locks"), { recursive: true });
27
+ vaultFs = new VaultFS(vaultRoot);
28
+ registry = new SessionRegistryManager(vaultRoot, 24);
29
+ ctx = createCommandContext(vaultFs, { sessionRegistry: registry });
30
+ });
31
+ afterEach(async () => {
32
+ await rm(vaultRoot, { recursive: true, force: true });
33
+ });
34
+ describe("register", () => {
35
+ it("registers a new session", async () => {
36
+ const result = await sessionCommand({
37
+ action: "register",
38
+ tool: "claude",
39
+ project: "test-project",
40
+ taskSummary: "Implement feature X",
41
+ filesTouched: ["src/index.ts"],
42
+ }, ctx);
43
+ expect(result.session_id).toBeDefined();
44
+ expect(result.session_id).toMatch(/^claude-/);
45
+ expect(result.conflicts).toEqual([]);
46
+ });
47
+ it("detects conflicts when touching same files", async () => {
48
+ await sessionCommand({
49
+ action: "register",
50
+ tool: "cursor",
51
+ project: "test-project",
52
+ taskSummary: "Working on Y",
53
+ filesTouched: ["src/shared.ts"],
54
+ }, ctx);
55
+ const result = await sessionCommand({
56
+ action: "register",
57
+ tool: "claude",
58
+ project: "test-project",
59
+ taskSummary: "Working on X",
60
+ filesTouched: ["src/shared.ts", "src/other.ts"],
61
+ }, ctx);
62
+ expect(result.conflicts).toBeDefined();
63
+ expect(result.conflicts.length).toBeGreaterThan(0);
64
+ expect(result.conflicts[0].overlapping_files).toContain("src/shared.ts");
65
+ });
66
+ it("requires tool name for register", async () => {
67
+ await expect(sessionCommand({
68
+ action: "register",
69
+ }, ctx)).rejects.toThrow("Tool name required for register");
70
+ });
71
+ });
72
+ describe("heartbeat", () => {
73
+ it("updates session timestamp", async () => {
74
+ const { session_id } = await sessionCommand({
75
+ action: "register",
76
+ tool: "claude",
77
+ project: "test-project",
78
+ }, ctx);
79
+ const result = await sessionCommand({
80
+ action: "heartbeat",
81
+ sessionId: session_id,
82
+ }, ctx);
83
+ expect(result).toEqual({});
84
+ });
85
+ it("requires session ID for heartbeat", async () => {
86
+ await expect(sessionCommand({
87
+ action: "heartbeat",
88
+ }, ctx)).rejects.toThrow("Session ID required for heartbeat");
89
+ });
90
+ });
91
+ describe("complete", () => {
92
+ it("marks session as completed", async () => {
93
+ const { session_id } = await sessionCommand({
94
+ action: "register",
95
+ tool: "claude",
96
+ project: "test-project",
97
+ taskSummary: "Task summary",
98
+ }, ctx);
99
+ const result = await sessionCommand({
100
+ action: "complete",
101
+ sessionId: session_id,
102
+ taskSummary: "Completed task",
103
+ }, ctx);
104
+ expect(result).toEqual({});
105
+ });
106
+ it("persists session note when vault and project provided", async () => {
107
+ const { session_id } = await sessionCommand({
108
+ action: "register",
109
+ tool: "claude",
110
+ project: "test-project",
111
+ }, ctx);
112
+ await mkdir(join(vaultRoot, "projects/test-project/sessions"), { recursive: true });
113
+ const result = await sessionCommand({
114
+ action: "complete",
115
+ sessionId: session_id,
116
+ project: "test-project",
117
+ tool: "claude",
118
+ outcome: "Feature implemented",
119
+ filesTouched: ["src/index.ts"],
120
+ tasksCompleted: ["task-001"],
121
+ }, ctx);
122
+ expect(result.session_note_path).toBeDefined();
123
+ expect(result.session_note_path).toMatch(/projects\/test-project\/sessions\/\d{4}-\d{2}-\d{2}-claude-/);
124
+ const content = await vaultFs.read(result.session_note_path);
125
+ expect(content).toContain("type: session");
126
+ expect(content).toContain("tool: claude");
127
+ expect(content).toContain("Feature implemented");
128
+ });
129
+ it("requires session ID for complete", async () => {
130
+ await expect(sessionCommand({
131
+ action: "complete",
132
+ }, ctx)).rejects.toThrow("Session ID required for complete");
133
+ });
134
+ });
135
+ describe("list_active", () => {
136
+ it("lists active sessions", async () => {
137
+ await sessionCommand({
138
+ action: "register",
139
+ tool: "claude",
140
+ project: "test-project",
141
+ taskSummary: "Task 1",
142
+ }, ctx);
143
+ await sessionCommand({
144
+ action: "register",
145
+ tool: "cursor",
146
+ project: "other-project",
147
+ taskSummary: "Task 2",
148
+ }, ctx);
149
+ const result = await sessionCommand({
150
+ action: "list_active",
151
+ }, ctx);
152
+ expect(result.active_sessions).toBeDefined();
153
+ expect(result.active_sessions.length).toBeGreaterThanOrEqual(2);
154
+ });
155
+ it("excludes completed sessions", async () => {
156
+ const { session_id } = await sessionCommand({
157
+ action: "register",
158
+ tool: "claude",
159
+ project: "test-project",
160
+ }, ctx);
161
+ await sessionCommand({
162
+ action: "register",
163
+ tool: "cursor",
164
+ project: "test-project",
165
+ }, ctx);
166
+ await sessionCommand({
167
+ action: "complete",
168
+ sessionId: session_id,
169
+ }, ctx);
170
+ const result = await sessionCommand({
171
+ action: "list_active",
172
+ }, ctx);
173
+ const activeIds = result.active_sessions.map((s) => s.id);
174
+ expect(activeIds).not.toContain(session_id);
175
+ });
176
+ });
177
+ describe("persist session note", () => {
178
+ it("creates session note when completing with project and vaultFs", async () => {
179
+ await mkdir(join(vaultRoot, "projects/test-project/sessions"), { recursive: true });
180
+ const { session_id } = await sessionCommand({
181
+ action: "register",
182
+ tool: "claude-code",
183
+ project: "test-project",
184
+ taskSummary: "Build feature X",
185
+ filesTouched: ["src/index.ts"],
186
+ }, ctx);
187
+ await sessionCommand({
188
+ action: "complete",
189
+ sessionId: session_id,
190
+ project: "test-project",
191
+ outcome: "Completed successfully",
192
+ filesTouched: ["src/index.ts"],
193
+ tasksCompleted: ["task-001"],
194
+ }, ctx);
195
+ const files = await vaultFs.list("projects/test-project/sessions");
196
+ expect(files.length).toBeGreaterThanOrEqual(1);
197
+ const notePath = files.find((f) => f.endsWith(".md"));
198
+ expect(notePath).toBeDefined();
199
+ const content = await vaultFs.read(notePath);
200
+ expect(content).toContain("claude-code");
201
+ expect(content).toContain("Completed successfully");
202
+ expect(content).toContain("src/index.ts");
203
+ });
204
+ it("extracts tool name from session ID for note heading", async () => {
205
+ await mkdir(join(vaultRoot, "projects/test-project/sessions"), { recursive: true });
206
+ const { session_id } = await sessionCommand({
207
+ action: "register",
208
+ tool: "my-custom-tool",
209
+ project: "test-project",
210
+ }, ctx);
211
+ await sessionCommand({
212
+ action: "complete",
213
+ sessionId: session_id,
214
+ project: "test-project",
215
+ outcome: "Done",
216
+ }, ctx);
217
+ const files = await vaultFs.list("projects/test-project/sessions");
218
+ const notePath = files.find((f) => f.endsWith(".md"));
219
+ const content = await vaultFs.read(notePath);
220
+ expect(content).toContain("my-custom-tool");
221
+ });
222
+ });
223
+ describe("unknown action", () => {
224
+ it("throws error for unknown action", async () => {
225
+ await expect(sessionCommand({
226
+ action: "unknown",
227
+ }, ctx)).rejects.toThrow("Unknown action: unknown");
228
+ });
229
+ });
230
+ });
231
+ //# sourceMappingURL=session.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.test.js","sourceRoot":"","sources":["../../src/commands/session.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ export interface SkillDomain {
2
+ id: string;
3
+ name: string;
4
+ description: string;
5
+ }
6
+ export interface CatalogSkill {
7
+ id: string;
8
+ name: string;
9
+ repo: SkillRepo;
10
+ domains: string[];
11
+ description: string;
12
+ source: string;
13
+ tags?: string[];
14
+ }
15
+ export type SkillRepo = "ecc" | "superpowers" | "gstack" | "anthropics" | "design-skillstack" | "taste-skill" | "bencium" | "frontend-design-pro" | "ui-ux-pro-max";
16
+ export interface Collision {
17
+ domain: SkillDomain;
18
+ skills: CatalogSkill[];
19
+ }
20
+ export interface ProfileResolution {
21
+ domain_id: string;
22
+ chosen_skill_id: string;
23
+ }
24
+ export interface SkillProfile {
25
+ name: string;
26
+ description: string;
27
+ resolutions: ProfileResolution[];
28
+ }
29
+ export declare const DOMAINS: SkillDomain[];
30
+ export declare const DOMAIN_PRIORITY: Record<string, 'core' | 'extended' | 'reference'>;
31
+ export declare const CATALOG: CatalogSkill[];
32
+ export declare function detectCollisions(): Collision[];
33
+ export declare function searchCatalog(query: {
34
+ domain?: string;
35
+ repo?: string;
36
+ text?: string;
37
+ }): CatalogSkill[];
38
+ export declare const BUILT_IN_PROFILES: SkillProfile[];
39
+ export declare function getProfile(name: string): SkillProfile | undefined;
@@ -0,0 +1,260 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-or-later OR Commercial
2
+ // ── Types ─────────────────────────────────────────────
3
+ // ── Domains ──────────────────────────────────────────
4
+ export const DOMAINS = [
5
+ // Colliding domains (2+ repos)
6
+ { id: "tdd", name: "Test-Driven Development", description: "TDD workflow and testing patterns" },
7
+ { id: "planning", name: "Planning", description: "Implementation planning and review" },
8
+ { id: "code-review", name: "Code Review", description: "Reviewing and receiving code feedback" },
9
+ { id: "debugging", name: "Debugging", description: "Systematic debugging and investigation" },
10
+ { id: "verification", name: "Verification", description: "Pre-completion verification checks" },
11
+ { id: "brainstorming", name: "Brainstorming", description: "Ideation and exploratory thinking" },
12
+ { id: "agent-orchestration", name: "Agent Orchestration", description: "Multi-agent loops and pipelines" },
13
+ { id: "security", name: "Security", description: "Security review, scanning, guardrails" },
14
+ { id: "shipping", name: "Shipping", description: "Deployment and release workflow" },
15
+ { id: "frontend-design", name: "Frontend Design", description: "UI/UX design and component systems" },
16
+ // Non-colliding domains (single-repo)
17
+ { id: "git-workflow", name: "Git Workflow", description: "Branching, worktrees, merge workflow" },
18
+ { id: "go", name: "Go", description: "Go idioms, patterns, testing, review" },
19
+ { id: "python", name: "Python", description: "Python idioms, patterns, testing, review" },
20
+ { id: "django", name: "Django", description: "Django framework patterns and security" },
21
+ { id: "spring-boot", name: "Spring Boot", description: "Spring Boot patterns and testing" },
22
+ { id: "swift", name: "Swift", description: "Swift/iOS/SwiftUI patterns" },
23
+ { id: "cpp", name: "C++", description: "C++ patterns and testing" },
24
+ { id: "java", name: "Java", description: "Java patterns and standards" },
25
+ { id: "database", name: "Database", description: "Database patterns and migrations" },
26
+ { id: "docker", name: "Docker", description: "Docker and Compose patterns" },
27
+ { id: "api-design", name: "API Design", description: "REST API design patterns" },
28
+ { id: "frontend-patterns", name: "Frontend Patterns", description: "React/Next.js patterns" },
29
+ { id: "backend-patterns", name: "Backend Patterns", description: "Node/Express patterns" },
30
+ { id: "coding-standards", name: "Coding Standards", description: "Universal coding standards" },
31
+ { id: "content-business", name: "Content & Business", description: "Writing, marketing, investor materials" },
32
+ { id: "3d-animation", name: "3D Animation", description: "WebGL, Three.js, animation workflows" },
33
+ { id: "agent-engineering", name: "Agent Engineering", description: "Agent harness, eval, cost optimization" },
34
+ { id: "meta", name: "Meta/Tooling", description: "Skill management, compaction, learning" },
35
+ ];
36
+ // ── Domain Priority ───────────────────────────────────
37
+ // Determines which output layer a skill lands in during generation.
38
+ // Skills in collision domains are always "core" (resolved via profile).
39
+ // Non-colliding skills are bucketed here.
40
+ export const DOMAIN_PRIORITY = {
41
+ // Core — always loaded, any model
42
+ tdd: 'core', planning: 'core', 'code-review': 'core',
43
+ debugging: 'core', verification: 'core', brainstorming: 'core',
44
+ 'agent-orchestration': 'core', security: 'core', shipping: 'core',
45
+ 'frontend-design': 'core', 'git-workflow': 'core',
46
+ // Extended — medium+ context models
47
+ go: 'extended', python: 'extended', django: 'extended',
48
+ 'spring-boot': 'extended', swift: 'extended', cpp: 'extended',
49
+ java: 'extended', database: 'extended', docker: 'extended',
50
+ 'api-design': 'extended', 'frontend-patterns': 'extended',
51
+ 'backend-patterns': 'extended', 'coding-standards': 'extended',
52
+ // Reference — large context models only
53
+ 'content-business': 'reference', '3d-animation': 'reference',
54
+ 'agent-engineering': 'reference', meta: 'reference',
55
+ };
56
+ // ── Catalog ──────────────────────────────────────────
57
+ const GH_ECC = "https://raw.githubusercontent.com/affaan-m/everything-claude-code/main";
58
+ const GH_SP = "https://raw.githubusercontent.com/obra/superpowers/main";
59
+ const GH_GSTACK = "https://raw.githubusercontent.com/garrytan/gstack/main";
60
+ const GH_ANTHRO = "https://raw.githubusercontent.com/anthropics/skills/main";
61
+ const GH_DESIGN = "https://raw.githubusercontent.com/freshtechbro/claudedesignskills/main";
62
+ const GH_TASTE = "https://raw.githubusercontent.com/Leonxlnx/taste-skill/main";
63
+ const GH_BENCIUM = "https://raw.githubusercontent.com/bencium/bencium-claude-code-design-skill/main";
64
+ export const CATALOG = [
65
+ // ── ECC: Workflow skills (collision risk) ──────────
66
+ { id: "ecc/tdd-workflow", name: "TDD Workflow", repo: "ecc", domains: ["tdd"], description: "Full TDD red-green-refactor loop with 80%+ coverage", source: `${GH_ECC}/skills/tdd-workflow/SKILL.md` },
67
+ { id: "ecc/golang-testing", name: "Go Testing", repo: "ecc", domains: ["tdd", "go"], description: "Go table-driven tests, benchmarks, fuzzing, TDD", source: `${GH_ECC}/skills/golang-testing/SKILL.md` },
68
+ { id: "ecc/python-testing", name: "Python Testing", repo: "ecc", domains: ["tdd", "python"], description: "Python pytest, fixtures, mocking, parametrize", source: `${GH_ECC}/skills/python-testing/SKILL.md` },
69
+ { id: "ecc/e2e-testing", name: "E2E Testing", repo: "ecc", domains: ["tdd"], description: "Playwright E2E patterns and CI/CD integration", source: `${GH_ECC}/skills/e2e-testing/SKILL.md` },
70
+ { id: "ecc/plan", name: "/plan", repo: "ecc", domains: ["planning"], description: "Implementation planning slash command", source: `${GH_ECC}/commands/plan.md` },
71
+ { id: "ecc/go-review", name: "Go Review", repo: "ecc", domains: ["code-review", "go"], description: "Go code review for idioms and concurrency", source: `${GH_ECC}/commands/go-review.md` },
72
+ { id: "ecc/python-review", name: "Python Review", repo: "ecc", domains: ["code-review", "python"], description: "Python PEP 8, type hints, security review", source: `${GH_ECC}/skills/python-review/SKILL.md` },
73
+ { id: "ecc/verification-loop", name: "Verification Loop", repo: "ecc", domains: ["verification"], description: "Build/types/lint/test verification gates", source: `${GH_ECC}/skills/verification-loop/SKILL.md` },
74
+ { id: "ecc/autonomous-loops", name: "Autonomous Loops", repo: "ecc", domains: ["agent-orchestration"], description: "Autonomous agent execution patterns", source: `${GH_ECC}/skills/autonomous-loops/SKILL.md` },
75
+ { id: "ecc/ralphinho-rfc-pipeline", name: "RFC Pipeline", repo: "ecc", domains: ["agent-orchestration"], description: "RFC-driven multi-agent DAG execution", source: `${GH_ECC}/skills/ralphinho-rfc-pipeline/SKILL.md` },
76
+ { id: "ecc/security-review", name: "Security Review", repo: "ecc", domains: ["security"], description: "Auth, input validation, secrets, OWASP checklist", source: `${GH_ECC}/skills/security-review/SKILL.md` },
77
+ { id: "ecc/security-scan", name: "Security Scan", repo: "ecc", domains: ["security"], description: "AgentShield config scanning for Claude Code", source: `${GH_ECC}/skills/security-scan/SKILL.md` },
78
+ { id: "ecc/deployment-patterns", name: "Deployment Patterns", repo: "ecc", domains: ["shipping"], description: "CI/CD, Docker, health checks, rollbacks", source: `${GH_ECC}/skills/deployment-patterns/SKILL.md` },
79
+ // ── ECC: Language/framework skills (low collision) ──
80
+ { id: "ecc/golang-patterns", name: "Go Patterns", repo: "ecc", domains: ["go"], description: "Idiomatic Go patterns and conventions", source: `${GH_ECC}/skills/golang-patterns/SKILL.md` },
81
+ { id: "ecc/python-patterns", name: "Python Patterns", repo: "ecc", domains: ["python"], description: "Pythonic idioms and PEP 8 standards", source: `${GH_ECC}/skills/python-patterns/SKILL.md` },
82
+ { id: "ecc/django-patterns", name: "Django Patterns", repo: "ecc", domains: ["django"], description: "Django architecture, DRF, ORM patterns", source: `${GH_ECC}/skills/django-patterns/SKILL.md` },
83
+ { id: "ecc/django-security", name: "Django Security", repo: "ecc", domains: ["django", "security"], description: "Django CSRF, XSS, SQL injection prevention", source: `${GH_ECC}/skills/django-security/SKILL.md` },
84
+ { id: "ecc/django-tdd", name: "Django TDD", repo: "ecc", domains: ["django", "tdd"], description: "Django testing with pytest-django", source: `${GH_ECC}/skills/django-tdd/SKILL.md` },
85
+ { id: "ecc/django-verification", name: "Django Verification", repo: "ecc", domains: ["django", "verification"], description: "Django verification loop", source: `${GH_ECC}/skills/django-verification/SKILL.md` },
86
+ { id: "ecc/springboot-patterns", name: "Spring Boot Patterns", repo: "ecc", domains: ["spring-boot"], description: "Spring Boot architecture and caching", source: `${GH_ECC}/skills/springboot-patterns/SKILL.md` },
87
+ { id: "ecc/springboot-security", name: "Spring Boot Security", repo: "ecc", domains: ["spring-boot", "security"], description: "Spring Security authn/authz", source: `${GH_ECC}/skills/springboot-security/SKILL.md` },
88
+ { id: "ecc/springboot-tdd", name: "Spring Boot TDD", repo: "ecc", domains: ["spring-boot", "tdd"], description: "Spring Boot JUnit 5, Mockito, Testcontainers", source: `${GH_ECC}/skills/springboot-tdd/SKILL.md` },
89
+ { id: "ecc/springboot-verification", name: "Spring Boot Verification", repo: "ecc", domains: ["spring-boot", "verification"], description: "Spring Boot verification loop", source: `${GH_ECC}/skills/springboot-verification/SKILL.md` },
90
+ { id: "ecc/swiftui-patterns", name: "SwiftUI Patterns", repo: "ecc", domains: ["swift"], description: "SwiftUI state management, navigation, performance", source: `${GH_ECC}/skills/swiftui-patterns/SKILL.md` },
91
+ { id: "ecc/swift-concurrency", name: "Swift Concurrency", repo: "ecc", domains: ["swift"], description: "Swift 6.2 concurrency model", source: `${GH_ECC}/skills/swift-concurrency-6-2/SKILL.md` },
92
+ { id: "ecc/swift-actor-persistence", name: "Swift Actor Persistence", repo: "ecc", domains: ["swift"], description: "Thread-safe data persistence with actors", source: `${GH_ECC}/skills/swift-actor-persistence/SKILL.md` },
93
+ { id: "ecc/swift-protocol-di", name: "Swift Protocol DI", repo: "ecc", domains: ["swift"], description: "Protocol-based dependency injection for testing", source: `${GH_ECC}/skills/swift-protocol-di-testing/SKILL.md` },
94
+ { id: "ecc/cpp-coding-standards", name: "C++ Standards", repo: "ecc", domains: ["cpp"], description: "C++ Core Guidelines enforcement", source: `${GH_ECC}/skills/cpp-coding-standards/SKILL.md` },
95
+ { id: "ecc/cpp-testing", name: "C++ Testing", repo: "ecc", domains: ["cpp", "tdd"], description: "GoogleTest/CTest patterns", source: `${GH_ECC}/skills/cpp-testing/SKILL.md` },
96
+ { id: "ecc/java-coding-standards", name: "Java Standards", repo: "ecc", domains: ["java"], description: "Java Spring Boot coding standards", source: `${GH_ECC}/skills/java-coding-standards/SKILL.md` },
97
+ { id: "ecc/jpa-patterns", name: "JPA Patterns", repo: "ecc", domains: ["java", "database"], description: "JPA/Hibernate entity and query patterns", source: `${GH_ECC}/skills/jpa-patterns/SKILL.md` },
98
+ // ── ECC: Infrastructure skills ─────────────────────
99
+ { id: "ecc/api-design", name: "API Design", repo: "ecc", domains: ["api-design"], description: "REST API patterns, pagination, versioning", source: `${GH_ECC}/skills/api-design/SKILL.md` },
100
+ { id: "ecc/backend-patterns", name: "Backend Patterns", repo: "ecc", domains: ["backend-patterns"], description: "Node/Express/Next.js server patterns", source: `${GH_ECC}/skills/backend-patterns/SKILL.md` },
101
+ { id: "ecc/frontend-patterns", name: "Frontend Patterns", repo: "ecc", domains: ["frontend-patterns"], description: "React/Next.js state and performance", source: `${GH_ECC}/skills/frontend-patterns/SKILL.md` },
102
+ { id: "ecc/coding-standards", name: "Coding Standards", repo: "ecc", domains: ["coding-standards"], description: "Universal TS/JS/React standards", source: `${GH_ECC}/skills/coding-standards/SKILL.md` },
103
+ { id: "ecc/docker-patterns", name: "Docker Patterns", repo: "ecc", domains: ["docker"], description: "Docker Compose, container security, networking", source: `${GH_ECC}/skills/docker-patterns/SKILL.md` },
104
+ { id: "ecc/postgres-patterns", name: "Postgres Patterns", repo: "ecc", domains: ["database"], description: "PostgreSQL query optimization and schema design", source: `${GH_ECC}/skills/postgres-patterns/SKILL.md` },
105
+ { id: "ecc/database-migrations", name: "Database Migrations", repo: "ecc", domains: ["database"], description: "Zero-downtime schema migrations", source: `${GH_ECC}/skills/database-migrations/SKILL.md` },
106
+ { id: "ecc/clickhouse", name: "ClickHouse", repo: "ecc", domains: ["database"], description: "ClickHouse analytics patterns", source: `${GH_ECC}/skills/clickhouse-io/SKILL.md` },
107
+ // ── ECC: Content & business ────────────────────────
108
+ { id: "ecc/article-writing", name: "Article Writing", repo: "ecc", domains: ["content-business"], description: "Long-form content in distinctive voice", source: `${GH_ECC}/skills/article-writing/SKILL.md` },
109
+ { id: "ecc/content-engine", name: "Content Engine", repo: "ecc", domains: ["content-business"], description: "Multi-platform content systems", source: `${GH_ECC}/skills/content-engine/SKILL.md` },
110
+ { id: "ecc/investor-materials", name: "Investor Materials", repo: "ecc", domains: ["content-business"], description: "Pitch decks, memos, financial models", source: `${GH_ECC}/skills/investor-materials/SKILL.md` },
111
+ { id: "ecc/investor-outreach", name: "Investor Outreach", repo: "ecc", domains: ["content-business"], description: "Cold emails, intros, follow-ups", source: `${GH_ECC}/skills/investor-outreach/SKILL.md` },
112
+ { id: "ecc/market-research", name: "Market Research", repo: "ecc", domains: ["content-business"], description: "Competitive analysis and due diligence", source: `${GH_ECC}/skills/market-research/SKILL.md` },
113
+ { id: "ecc/frontend-slides", name: "Frontend Slides", repo: "ecc", domains: ["content-business"], description: "Animation-rich HTML presentations", source: `${GH_ECC}/skills/frontend-slides/SKILL.md` },
114
+ // ── ECC: Agent engineering ─────────────────────────
115
+ { id: "ecc/agentic-engineering", name: "Agentic Engineering", repo: "ecc", domains: ["agent-engineering"], description: "Eval-first agent execution", source: `${GH_ECC}/skills/agentic-engineering/SKILL.md` },
116
+ { id: "ecc/agent-harness", name: "Agent Harness", repo: "ecc", domains: ["agent-engineering"], description: "Agent action space design", source: `${GH_ECC}/skills/agent-harness-construction/SKILL.md` },
117
+ { id: "ecc/eval-harness", name: "Eval Harness", repo: "ecc", domains: ["agent-engineering"], description: "Eval-driven development framework", source: `${GH_ECC}/skills/eval-harness/SKILL.md` },
118
+ { id: "ecc/cost-aware-llm", name: "Cost-Aware LLM", repo: "ecc", domains: ["agent-engineering"], description: "LLM cost optimization and routing", source: `${GH_ECC}/skills/cost-aware-llm-pipeline/SKILL.md` },
119
+ { id: "ecc/continuous-agent-loop", name: "Continuous Agent Loop", repo: "ecc", domains: ["agent-orchestration"], description: "Quality gates and recovery controls", source: `${GH_ECC}/skills/continuous-agent-loop/SKILL.md` },
120
+ // ── ECC: Meta skills ───────────────────────────────
121
+ { id: "ecc/strategic-compact", name: "Strategic Compact", repo: "ecc", domains: ["meta"], description: "Manual context compaction at logical intervals", source: `${GH_ECC}/skills/strategic-compact/SKILL.md` },
122
+ { id: "ecc/continuous-learning", name: "Continuous Learning", repo: "ecc", domains: ["meta"], description: "Extract reusable patterns from sessions", source: `${GH_ECC}/skills/continuous-learning/SKILL.md` },
123
+ { id: "ecc/continuous-learning-v2", name: "Continuous Learning v2", repo: "ecc", domains: ["meta"], description: "Instinct-based learning with confidence scoring", source: `${GH_ECC}/skills/continuous-learning-v2/SKILL.md` },
124
+ { id: "ecc/search-first", name: "Search First", repo: "ecc", domains: ["meta"], description: "Research-before-coding workflow", source: `${GH_ECC}/skills/search-first/SKILL.md` },
125
+ // ── Superpowers ────────────────────────────────────
126
+ { id: "superpowers/test-driven-development", name: "Test-Driven Development", repo: "superpowers", domains: ["tdd"], description: "Superpowers TDD methodology", source: `${GH_SP}/skills/test-driven-development/SKILL.md` },
127
+ { id: "superpowers/writing-plans", name: "Writing Plans", repo: "superpowers", domains: ["planning"], description: "Multi-step implementation planning", source: `${GH_SP}/skills/writing-plans/SKILL.md` },
128
+ { id: "superpowers/executing-plans", name: "Executing Plans", repo: "superpowers", domains: ["planning"], description: "Plan execution with review checkpoints", source: `${GH_SP}/skills/executing-plans/SKILL.md` },
129
+ { id: "superpowers/requesting-code-review", name: "Requesting Code Review", repo: "superpowers", domains: ["code-review"], description: "How to request reviews effectively", source: `${GH_SP}/skills/requesting-code-review/SKILL.md` },
130
+ { id: "superpowers/receiving-code-review", name: "Receiving Code Review", repo: "superpowers", domains: ["code-review"], description: "Technical rigor when receiving feedback", source: `${GH_SP}/skills/receiving-code-review/SKILL.md` },
131
+ { id: "superpowers/systematic-debugging", name: "Systematic Debugging", repo: "superpowers", domains: ["debugging"], description: "Step-by-step debugging methodology", source: `${GH_SP}/skills/systematic-debugging/SKILL.md` },
132
+ { id: "superpowers/verification-before-completion", name: "Verification Before Completion", repo: "superpowers", domains: ["verification"], description: "Evidence before assertions", source: `${GH_SP}/skills/verification-before-completion/SKILL.md` },
133
+ { id: "superpowers/brainstorming", name: "Brainstorming", repo: "superpowers", domains: ["brainstorming"], description: "Structured brainstorming before creative work", source: `${GH_SP}/skills/brainstorming/SKILL.md` },
134
+ { id: "superpowers/dispatching-parallel-agents", name: "Dispatching Parallel Agents", repo: "superpowers", domains: ["agent-orchestration"], description: "Fan-out/fan-in agent dispatch", source: `${GH_SP}/skills/dispatching-parallel-agents/SKILL.md` },
135
+ { id: "superpowers/subagent-driven-development", name: "Subagent-Driven Development", repo: "superpowers", domains: ["agent-orchestration"], description: "Independent task execution via subagents", source: `${GH_SP}/skills/subagent-driven-development/SKILL.md` },
136
+ { id: "superpowers/using-git-worktrees", name: "Git Worktrees", repo: "superpowers", domains: ["git-workflow"], description: "Isolated git worktree workflow", source: `${GH_SP}/skills/using-git-worktrees/SKILL.md` },
137
+ { id: "superpowers/finishing-branch", name: "Finishing a Branch", repo: "superpowers", domains: ["git-workflow"], description: "Branch cleanup, merge, PR options", source: `${GH_SP}/skills/finishing-a-development-branch/SKILL.md` },
138
+ { id: "superpowers/using-superpowers", name: "Using Superpowers", repo: "superpowers", domains: ["meta"], description: "How to find and invoke skills", source: `${GH_SP}/skills/using-superpowers/SKILL.md` },
139
+ { id: "superpowers/writing-skills", name: "Writing Skills", repo: "superpowers", domains: ["meta"], description: "How to author and deploy skills", source: `${GH_SP}/skills/writing-skills/SKILL.md` },
140
+ // ── gstack ─────────────────────────────────────────
141
+ { id: "gstack/plan-review", name: "/plan + Review", repo: "gstack", domains: ["planning"], description: "CEO/eng/design plan review workflow", source: `${GH_GSTACK}/plan-ceo-review/SKILL.md` },
142
+ { id: "gstack/review", name: "/review", repo: "gstack", domains: ["code-review"], description: "Code review slash command", source: `${GH_GSTACK}/review/SKILL.md` },
143
+ { id: "gstack/investigate", name: "/investigate", repo: "gstack", domains: ["debugging"], description: "Investigation workflow for bugs", source: `${GH_GSTACK}/investigate/SKILL.md` },
144
+ { id: "gstack/office-hours", name: "/office-hours", repo: "gstack", domains: ["brainstorming"], description: "Collaborative brainstorming sessions", source: `${GH_GSTACK}/office-hours/SKILL.md` },
145
+ { id: "gstack/guard", name: "/guard", repo: "gstack", domains: ["security"], description: "Security guardrail enforcement", source: `${GH_GSTACK}/guard/SKILL.md` },
146
+ { id: "gstack/ship", name: "/ship", repo: "gstack", domains: ["shipping"], description: "Ship-it workflow", source: `${GH_GSTACK}/ship/SKILL.md` },
147
+ { id: "gstack/qa", name: "/qa", repo: "gstack", domains: ["tdd"], description: "QA testing workflow", source: `${GH_GSTACK}/qa/SKILL.md` },
148
+ { id: "gstack/browse", name: "/browse", repo: "gstack", domains: ["meta"], description: "Browser-based exploration", source: `${GH_GSTACK}/browse/SKILL.md` },
149
+ // ── anthropics/skills ──────────────────────────────
150
+ { id: "anthropics/frontend-design", name: "Frontend Design", repo: "anthropics", domains: ["frontend-design"], description: "Anthropic official frontend design skill", source: `${GH_ANTHRO}/skills/frontend-design/SKILL.md` },
151
+ { id: "anthropics/claude-api", name: "Claude API", repo: "anthropics", domains: ["agent-engineering"], description: "Build apps with Claude API/SDK", source: `${GH_ANTHRO}/claude-api/SKILL.md` },
152
+ // ── Design repos ───────────────────────────────────
153
+ { id: "taste-skill/taste", name: "Design Taste", repo: "taste-skill", domains: ["frontend-design"], description: "High-agency anti-slop design engineering", source: `${GH_TASTE}/SKILL.md` },
154
+ { id: "bencium/ux-designer", name: "Bencium UX Designer", repo: "bencium", domains: ["frontend-design"], description: "WCAG 2.1 AA systematic UX methodology", source: `${GH_BENCIUM}/skills/bencium-controlled-ux-designer/SKILL.md` },
155
+ { id: "frontend-design-pro/fdp", name: "Frontend Design Pro", repo: "frontend-design-pro", domains: ["frontend-design"], description: "11 aesthetics + real photo matching", source: "https://raw.githubusercontent.com/claudekit/frontend-design-pro-demo/main/skills/frontend-design-pro/SKILL.md" },
156
+ { id: "ui-ux-pro-max/uupm", name: "UI/UX Pro Max", repo: "ui-ux-pro-max", domains: ["frontend-design"], description: "Cross-platform UI/UX intelligence", source: "https://raw.githubusercontent.com/nextlevelbuilder/ui-ux-pro-max-skill/main/skills/ui-ux-pro-max/SKILL.md" },
157
+ // ── Design Skillstack (3D/animation) ───────────────
158
+ { id: "design-skillstack/threejs", name: "Three.js WebGL", repo: "design-skillstack", domains: ["3d-animation"], description: "Three.js 3D web development", source: `${GH_DESIGN}/plugins/bundles/core-3d-animation/skills/threejs-webgl/SKILL.md` },
159
+ { id: "design-skillstack/gsap", name: "GSAP ScrollTrigger", repo: "design-skillstack", domains: ["3d-animation"], description: "GSAP animation and scroll triggers", source: `${GH_DESIGN}/plugins/bundles/core-3d-animation/skills/gsap-scrolltrigger/SKILL.md` },
160
+ { id: "design-skillstack/r3f", name: "React Three Fiber", repo: "design-skillstack", domains: ["3d-animation"], description: "Declarative 3D with React", source: `${GH_DESIGN}/.claude/skills/react-three-fiber/SKILL.md` },
161
+ { id: "design-skillstack/framer-motion", name: "Framer Motion", repo: "design-skillstack", domains: ["3d-animation"], description: "React animation library", source: `${GH_DESIGN}/plugins/bundles/core-3d-animation/skills/motion-framer/SKILL.md` },
162
+ { id: "design-skillstack/babylonjs", name: "Babylon.js", repo: "design-skillstack", domains: ["3d-animation"], description: "Babylon.js 3D engine", source: `${GH_DESIGN}/plugins/bundles/core-3d-animation/skills/babylonjs-engine/SKILL.md` },
163
+ ];
164
+ // ── Collision Detection ──────────────────────────────
165
+ export function detectCollisions() {
166
+ const domainMap = new Map();
167
+ for (const skill of CATALOG) {
168
+ for (const domainId of skill.domains) {
169
+ const list = domainMap.get(domainId) ?? [];
170
+ list.push(skill);
171
+ domainMap.set(domainId, list);
172
+ }
173
+ }
174
+ const collisions = [];
175
+ for (const [domainId, skills] of domainMap) {
176
+ // Collision = 2+ skills from DIFFERENT repos in the same domain
177
+ const repos = new Set(skills.map((s) => s.repo));
178
+ if (repos.size < 2)
179
+ continue;
180
+ const domain = DOMAINS.find((d) => d.id === domainId);
181
+ if (!domain)
182
+ continue;
183
+ // Dedupe by skill ID
184
+ const unique = [...new Map(skills.map((s) => [s.id, s])).values()];
185
+ collisions.push({ domain, skills: unique });
186
+ }
187
+ return collisions;
188
+ }
189
+ // ── Catalog Search ───────────────────────────────────
190
+ export function searchCatalog(query) {
191
+ let results = [...CATALOG];
192
+ if (query.domain) {
193
+ results = results.filter((s) => s.domains.includes(query.domain));
194
+ }
195
+ if (query.repo) {
196
+ results = results.filter((s) => s.repo === query.repo);
197
+ }
198
+ if (query.text) {
199
+ const lower = query.text.toLowerCase();
200
+ results = results.filter((s) => s.name.toLowerCase().includes(lower) ||
201
+ s.description.toLowerCase().includes(lower) ||
202
+ s.id.toLowerCase().includes(lower));
203
+ }
204
+ return results;
205
+ }
206
+ // ── Built-in Profiles ────────────────────────────────
207
+ export const BUILT_IN_PROFILES = [
208
+ {
209
+ name: "ecc-first",
210
+ description: "ECC wins all collisions, Superpowers fills unique gaps (debugging, brainstorming, git)",
211
+ resolutions: [
212
+ { domain_id: "tdd", chosen_skill_id: "ecc/tdd-workflow" },
213
+ { domain_id: "planning", chosen_skill_id: "ecc/plan" },
214
+ { domain_id: "code-review", chosen_skill_id: "ecc/go-review" },
215
+ { domain_id: "verification", chosen_skill_id: "ecc/verification-loop" },
216
+ { domain_id: "agent-orchestration", chosen_skill_id: "ecc/autonomous-loops" },
217
+ { domain_id: "security", chosen_skill_id: "ecc/security-review" },
218
+ { domain_id: "shipping", chosen_skill_id: "ecc/deployment-patterns" },
219
+ { domain_id: "debugging", chosen_skill_id: "superpowers/systematic-debugging" },
220
+ { domain_id: "brainstorming", chosen_skill_id: "superpowers/brainstorming" },
221
+ { domain_id: "frontend-design", chosen_skill_id: "anthropics/frontend-design" },
222
+ ],
223
+ },
224
+ {
225
+ name: "superpowers-first",
226
+ description: "Superpowers methodology wins, ECC for language-specific and security",
227
+ resolutions: [
228
+ { domain_id: "tdd", chosen_skill_id: "superpowers/test-driven-development" },
229
+ { domain_id: "planning", chosen_skill_id: "superpowers/writing-plans" },
230
+ { domain_id: "code-review", chosen_skill_id: "superpowers/requesting-code-review" },
231
+ { domain_id: "debugging", chosen_skill_id: "superpowers/systematic-debugging" },
232
+ { domain_id: "verification", chosen_skill_id: "superpowers/verification-before-completion" },
233
+ { domain_id: "brainstorming", chosen_skill_id: "superpowers/brainstorming" },
234
+ { domain_id: "agent-orchestration", chosen_skill_id: "superpowers/dispatching-parallel-agents" },
235
+ { domain_id: "security", chosen_skill_id: "ecc/security-review" },
236
+ { domain_id: "shipping", chosen_skill_id: "ecc/deployment-patterns" },
237
+ { domain_id: "frontend-design", chosen_skill_id: "taste-skill/taste" },
238
+ ],
239
+ },
240
+ {
241
+ name: "minimal",
242
+ description: "Smallest token footprint — one skill per colliding domain, no extras",
243
+ resolutions: [
244
+ { domain_id: "tdd", chosen_skill_id: "superpowers/test-driven-development" },
245
+ { domain_id: "planning", chosen_skill_id: "superpowers/writing-plans" },
246
+ { domain_id: "code-review", chosen_skill_id: "superpowers/requesting-code-review" },
247
+ { domain_id: "debugging", chosen_skill_id: "superpowers/systematic-debugging" },
248
+ { domain_id: "verification", chosen_skill_id: "superpowers/verification-before-completion" },
249
+ { domain_id: "brainstorming", chosen_skill_id: "superpowers/brainstorming" },
250
+ { domain_id: "agent-orchestration", chosen_skill_id: "superpowers/dispatching-parallel-agents" },
251
+ { domain_id: "security", chosen_skill_id: "ecc/security-review" },
252
+ { domain_id: "shipping", chosen_skill_id: "gstack/ship" },
253
+ { domain_id: "frontend-design", chosen_skill_id: "taste-skill/taste" },
254
+ ],
255
+ },
256
+ ];
257
+ export function getProfile(name) {
258
+ return BUILT_IN_PROFILES.find((p) => p.name === name);
259
+ }
260
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../src/commands/skill/catalog.ts"],"names":[],"mappings":"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"}