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.
- package/CHANGELOG.md +42 -0
- package/LICENSE +21 -0
- package/README.md +235 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +1158 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/brainstorm.d.ts +9 -0
- package/dist/commands/brainstorm.js +37 -0
- package/dist/commands/brainstorm.js.map +1 -0
- package/dist/commands/brainstorm.test.d.ts +1 -0
- package/dist/commands/brainstorm.test.js +110 -0
- package/dist/commands/brainstorm.test.js.map +1 -0
- package/dist/commands/context.d.ts +18 -0
- package/dist/commands/context.js +88 -0
- package/dist/commands/context.js.map +1 -0
- package/dist/commands/context.test.d.ts +1 -0
- package/dist/commands/context.test.js +230 -0
- package/dist/commands/context.test.js.map +1 -0
- package/dist/commands/decide.d.ts +12 -0
- package/dist/commands/decide.js +40 -0
- package/dist/commands/decide.js.map +1 -0
- package/dist/commands/decide.test.d.ts +1 -0
- package/dist/commands/decide.test.js +109 -0
- package/dist/commands/decide.test.js.map +1 -0
- package/dist/commands/graph.d.ts +15 -0
- package/dist/commands/graph.js +89 -0
- package/dist/commands/graph.js.map +1 -0
- package/dist/commands/graph.test.d.ts +1 -0
- package/dist/commands/graph.test.js +215 -0
- package/dist/commands/graph.test.js.map +1 -0
- package/dist/commands/init.d.ts +11 -0
- package/dist/commands/init.js +257 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/learn.d.ts +25 -0
- package/dist/commands/learn.js +92 -0
- package/dist/commands/learn.js.map +1 -0
- package/dist/commands/learn.test.d.ts +1 -0
- package/dist/commands/learn.test.js +241 -0
- package/dist/commands/learn.test.js.map +1 -0
- package/dist/commands/prune.d.ts +58 -0
- package/dist/commands/prune.js +246 -0
- package/dist/commands/prune.js.map +1 -0
- package/dist/commands/read.d.ts +8 -0
- package/dist/commands/read.js +7 -0
- package/dist/commands/read.js.map +1 -0
- package/dist/commands/read.test.d.ts +1 -0
- package/dist/commands/read.test.js +48 -0
- package/dist/commands/read.test.js.map +1 -0
- package/dist/commands/resume.d.ts +20 -0
- package/dist/commands/resume.js +141 -0
- package/dist/commands/resume.js.map +1 -0
- package/dist/commands/resume.test.d.ts +1 -0
- package/dist/commands/resume.test.js +243 -0
- package/dist/commands/resume.test.js.map +1 -0
- package/dist/commands/search.d.ts +8 -0
- package/dist/commands/search.js +25 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/search.test.d.ts +1 -0
- package/dist/commands/search.test.js +61 -0
- package/dist/commands/search.test.js.map +1 -0
- package/dist/commands/session.d.ts +22 -0
- package/dist/commands/session.js +79 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/session.test.d.ts +1 -0
- package/dist/commands/session.test.js +231 -0
- package/dist/commands/session.test.js.map +1 -0
- package/dist/commands/skill/catalog.d.ts +39 -0
- package/dist/commands/skill/catalog.js +260 -0
- package/dist/commands/skill/catalog.js.map +1 -0
- package/dist/commands/skill/index.d.ts +55 -0
- package/dist/commands/skill/index.js +82 -0
- package/dist/commands/skill/index.js.map +1 -0
- package/dist/commands/skill/index.test.d.ts +1 -0
- package/dist/commands/skill/index.test.js +137 -0
- package/dist/commands/skill/index.test.js.map +1 -0
- package/dist/commands/skill/install.d.ts +14 -0
- package/dist/commands/skill/install.js +108 -0
- package/dist/commands/skill/install.js.map +1 -0
- package/dist/commands/skill/install.test.d.ts +1 -0
- package/dist/commands/skill/install.test.js +225 -0
- package/dist/commands/skill/install.test.js.map +1 -0
- package/dist/commands/skill/list.d.ts +6 -0
- package/dist/commands/skill/list.js +5 -0
- package/dist/commands/skill/list.js.map +1 -0
- package/dist/commands/skill/list.test.d.ts +1 -0
- package/dist/commands/skill/list.test.js +101 -0
- package/dist/commands/skill/list.test.js.map +1 -0
- package/dist/commands/skill/marketplace.d.ts +121 -0
- package/dist/commands/skill/marketplace.js +548 -0
- package/dist/commands/skill/marketplace.js.map +1 -0
- package/dist/commands/skill/schema.d.ts +27 -0
- package/dist/commands/skill/schema.js +55 -0
- package/dist/commands/skill/schema.js.map +1 -0
- package/dist/commands/skill/schema.test.d.ts +1 -0
- package/dist/commands/skill/schema.test.js +142 -0
- package/dist/commands/skill/schema.test.js.map +1 -0
- package/dist/commands/skill/validate.d.ts +10 -0
- package/dist/commands/skill/validate.js +40 -0
- package/dist/commands/skill/validate.js.map +1 -0
- package/dist/commands/skill/validate.test.d.ts +1 -0
- package/dist/commands/skill/validate.test.js +171 -0
- package/dist/commands/skill/validate.test.js.map +1 -0
- package/dist/commands/task.d.ts +34 -0
- package/dist/commands/task.js +160 -0
- package/dist/commands/task.js.map +1 -0
- package/dist/commands/task.test.d.ts +1 -0
- package/dist/commands/task.test.js +395 -0
- package/dist/commands/task.test.js.map +1 -0
- package/dist/commands/todo.d.ts +15 -0
- package/dist/commands/todo.js +99 -0
- package/dist/commands/todo.js.map +1 -0
- package/dist/commands/todo.test.d.ts +1 -0
- package/dist/commands/todo.test.js +324 -0
- package/dist/commands/todo.test.js.map +1 -0
- package/dist/commands/write.d.ts +12 -0
- package/dist/commands/write.js +40 -0
- package/dist/commands/write.js.map +1 -0
- package/dist/commands/write.test.d.ts +1 -0
- package/dist/commands/write.test.js +79 -0
- package/dist/commands/write.test.js.map +1 -0
- package/dist/config.d.ts +15 -0
- package/dist/config.js +49 -0
- package/dist/config.js.map +1 -0
- package/dist/config.test.d.ts +1 -0
- package/dist/config.test.js +147 -0
- package/dist/config.test.js.map +1 -0
- package/dist/core/executor.d.ts +11 -0
- package/dist/core/executor.js +42 -0
- package/dist/core/executor.js.map +1 -0
- package/dist/core/executor.test.d.ts +1 -0
- package/dist/core/executor.test.js +206 -0
- package/dist/core/executor.test.js.map +1 -0
- package/dist/core/middleware/error-handler.d.ts +2 -0
- package/dist/core/middleware/error-handler.js +29 -0
- package/dist/core/middleware/error-handler.js.map +1 -0
- package/dist/core/middleware/index.d.ts +2 -0
- package/dist/core/middleware/index.js +3 -0
- package/dist/core/middleware/index.js.map +1 -0
- package/dist/core/middleware/logging.d.ts +2 -0
- package/dist/core/middleware/logging.js +18 -0
- package/dist/core/middleware/logging.js.map +1 -0
- package/dist/core/registry.d.ts +12 -0
- package/dist/core/registry.js +552 -0
- package/dist/core/registry.js.map +1 -0
- package/dist/core/registry.test.d.ts +1 -0
- package/dist/core/registry.test.js +213 -0
- package/dist/core/registry.test.js.map +1 -0
- package/dist/core/types.d.ts +38 -0
- package/dist/core/types.js +2 -0
- package/dist/core/types.js.map +1 -0
- package/dist/integration/coordination.test.d.ts +1 -0
- package/dist/integration/coordination.test.js +286 -0
- package/dist/integration/coordination.test.js.map +1 -0
- package/dist/integration/project-artifacts.test.d.ts +1 -0
- package/dist/integration/project-artifacts.test.js +275 -0
- package/dist/integration/project-artifacts.test.js.map +1 -0
- package/dist/integration/registry-graph.test.d.ts +1 -0
- package/dist/integration/registry-graph.test.js +157 -0
- package/dist/integration/registry-graph.test.js.map +1 -0
- package/dist/integration/vault-lifecycle.test.d.ts +1 -0
- package/dist/integration/vault-lifecycle.test.js +183 -0
- package/dist/integration/vault-lifecycle.test.js.map +1 -0
- package/dist/lib/auto-number.d.ts +10 -0
- package/dist/lib/auto-number.js +33 -0
- package/dist/lib/auto-number.js.map +1 -0
- package/dist/lib/auto-number.test.d.ts +1 -0
- package/dist/lib/auto-number.test.js +88 -0
- package/dist/lib/auto-number.test.js.map +1 -0
- package/dist/lib/auto-profile.d.ts +11 -0
- package/dist/lib/auto-profile.js +123 -0
- package/dist/lib/auto-profile.js.map +1 -0
- package/dist/lib/auto-profile.test.d.ts +1 -0
- package/dist/lib/auto-profile.test.js +227 -0
- package/dist/lib/auto-profile.test.js.map +1 -0
- package/dist/lib/escape-regex.d.ts +4 -0
- package/dist/lib/escape-regex.js +8 -0
- package/dist/lib/escape-regex.js.map +1 -0
- package/dist/lib/escape-regex.test.d.ts +1 -0
- package/dist/lib/escape-regex.test.js +27 -0
- package/dist/lib/escape-regex.test.js.map +1 -0
- package/dist/lib/frontmatter.d.ts +34 -0
- package/dist/lib/frontmatter.js +75 -0
- package/dist/lib/frontmatter.js.map +1 -0
- package/dist/lib/frontmatter.test.d.ts +1 -0
- package/dist/lib/frontmatter.test.js +192 -0
- package/dist/lib/frontmatter.test.js.map +1 -0
- package/dist/lib/project-detector.d.ts +12 -0
- package/dist/lib/project-detector.js +124 -0
- package/dist/lib/project-detector.js.map +1 -0
- package/dist/lib/project-detector.test.d.ts +1 -0
- package/dist/lib/project-detector.test.js +117 -0
- package/dist/lib/project-detector.test.js.map +1 -0
- package/dist/lib/safe-external-path.d.ts +10 -0
- package/dist/lib/safe-external-path.js +47 -0
- package/dist/lib/safe-external-path.js.map +1 -0
- package/dist/lib/safe-external-path.test.d.ts +1 -0
- package/dist/lib/safe-external-path.test.js +99 -0
- package/dist/lib/safe-external-path.test.js.map +1 -0
- package/dist/lib/search-engine.d.ts +19 -0
- package/dist/lib/search-engine.js +164 -0
- package/dist/lib/search-engine.js.map +1 -0
- package/dist/lib/search-engine.test.d.ts +1 -0
- package/dist/lib/search-engine.test.js +120 -0
- package/dist/lib/search-engine.test.js.map +1 -0
- package/dist/lib/session-registry.d.ts +59 -0
- package/dist/lib/session-registry.js +231 -0
- package/dist/lib/session-registry.js.map +1 -0
- package/dist/lib/session-registry.test.d.ts +1 -0
- package/dist/lib/session-registry.test.js +199 -0
- package/dist/lib/session-registry.test.js.map +1 -0
- package/dist/lib/skill-registry.d.ts +13 -0
- package/dist/lib/skill-registry.js +77 -0
- package/dist/lib/skill-registry.js.map +1 -0
- package/dist/lib/stack-detector.d.ts +7 -0
- package/dist/lib/stack-detector.js +184 -0
- package/dist/lib/stack-detector.js.map +1 -0
- package/dist/lib/stack-detector.test.d.ts +1 -0
- package/dist/lib/stack-detector.test.js +110 -0
- package/dist/lib/stack-detector.test.js.map +1 -0
- package/dist/lib/token-estimator.d.ts +19 -0
- package/dist/lib/token-estimator.js +59 -0
- package/dist/lib/token-estimator.js.map +1 -0
- package/dist/lib/token-estimator.test.d.ts +1 -0
- package/dist/lib/token-estimator.test.js +65 -0
- package/dist/lib/token-estimator.test.js.map +1 -0
- package/dist/lib/tool-detector.d.ts +8 -0
- package/dist/lib/tool-detector.js +76 -0
- package/dist/lib/tool-detector.js.map +1 -0
- package/dist/lib/tool-detector.test.d.ts +1 -0
- package/dist/lib/tool-detector.test.js +170 -0
- package/dist/lib/tool-detector.test.js.map +1 -0
- package/dist/lib/vault-fs.d.ts +39 -0
- package/dist/lib/vault-fs.js +184 -0
- package/dist/lib/vault-fs.js.map +1 -0
- package/dist/lib/vault-fs.test.d.ts +1 -0
- package/dist/lib/vault-fs.test.js +210 -0
- package/dist/lib/vault-fs.test.js.map +1 -0
- package/dist/mcp-server.d.ts +2 -0
- package/dist/mcp-server.js +387 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/setup/clients.d.ts +2 -0
- package/dist/setup/clients.js +109 -0
- package/dist/setup/clients.js.map +1 -0
- package/dist/setup/configure.d.ts +6 -0
- package/dist/setup/configure.js +126 -0
- package/dist/setup/configure.js.map +1 -0
- package/dist/setup/configure.test.d.ts +1 -0
- package/dist/setup/configure.test.js +112 -0
- package/dist/setup/configure.test.js.map +1 -0
- package/dist/setup/detect.d.ts +3 -0
- package/dist/setup/detect.js +24 -0
- package/dist/setup/detect.js.map +1 -0
- package/dist/setup/detect.test.d.ts +1 -0
- package/dist/setup/detect.test.js +44 -0
- package/dist/setup/detect.test.js.map +1 -0
- package/dist/setup/index.d.ts +2 -0
- package/dist/setup/index.js +147 -0
- package/dist/setup/index.js.map +1 -0
- package/dist/setup/instructions.d.ts +4 -0
- package/dist/setup/instructions.js +62 -0
- package/dist/setup/instructions.js.map +1 -0
- package/dist/setup/instructions.test.d.ts +1 -0
- package/dist/setup/instructions.test.js +84 -0
- package/dist/setup/instructions.test.js.map +1 -0
- package/dist/setup/json-config.d.ts +10 -0
- package/dist/setup/json-config.js +43 -0
- package/dist/setup/json-config.js.map +1 -0
- package/dist/setup/json-config.test.d.ts +1 -0
- package/dist/setup/json-config.test.js +92 -0
- package/dist/setup/json-config.test.js.map +1 -0
- package/dist/setup/postinstall.d.ts +2 -0
- package/dist/setup/postinstall.js +22 -0
- package/dist/setup/postinstall.js.map +1 -0
- package/dist/setup/preuninstall.d.ts +2 -0
- package/dist/setup/preuninstall.js +12 -0
- package/dist/setup/preuninstall.js.map +1 -0
- package/dist/setup/setup-integration.test.d.ts +1 -0
- package/dist/setup/setup-integration.test.js +72 -0
- package/dist/setup/setup-integration.test.js.map +1 -0
- package/dist/setup/teardown.d.ts +5 -0
- package/dist/setup/teardown.js +94 -0
- package/dist/setup/teardown.js.map +1 -0
- package/dist/setup/teardown.test.d.ts +1 -0
- package/dist/setup/teardown.test.js +105 -0
- package/dist/setup/teardown.test.js.map +1 -0
- package/dist/setup/toml-config.d.ts +5 -0
- package/dist/setup/toml-config.js +26 -0
- package/dist/setup/toml-config.js.map +1 -0
- package/dist/setup/toml-config.test.d.ts +1 -0
- package/dist/setup/toml-config.test.js +49 -0
- package/dist/setup/toml-config.test.js.map +1 -0
- package/dist/setup/types.d.ts +52 -0
- package/dist/setup/types.js +23 -0
- package/dist/setup/types.js.map +1 -0
- package/dist/test-helpers.d.ts +20 -0
- package/dist/test-helpers.js +47 -0
- package/dist/test-helpers.js.map +1 -0
- package/dist/test-helpers.test.d.ts +1 -0
- package/dist/test-helpers.test.js +90 -0
- package/dist/test-helpers.test.js.map +1 -0
- 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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"}
|