oh-my-githubcopilot 1.4.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/.claude-plugin/plugin.json +41 -0
- package/AGENTS.md +107 -0
- package/CHANGELOG.md +104 -0
- package/LICENSE +190 -0
- package/README.de.md +53 -0
- package/README.es.md +53 -0
- package/README.fr.md +53 -0
- package/README.it.md +53 -0
- package/README.ja.md +53 -0
- package/README.ko.md +53 -0
- package/README.md +139 -0
- package/README.pt.md +53 -0
- package/README.ru.md +53 -0
- package/README.tr.md +53 -0
- package/README.vi.md +53 -0
- package/README.zh.md +53 -0
- package/bin/omp.mjs +59 -0
- package/bin/omp.mjs.map +7 -0
- package/dist/hooks/delegation-enforcer.mjs +96 -0
- package/dist/hooks/delegation-enforcer.mjs.map +7 -0
- package/dist/hooks/hud-emitter.mjs +167 -0
- package/dist/hooks/hud-emitter.mjs.map +7 -0
- package/dist/hooks/keyword-detector.mjs +134 -0
- package/dist/hooks/keyword-detector.mjs.map +7 -0
- package/dist/hooks/model-router.mjs +79 -0
- package/dist/hooks/model-router.mjs.map +7 -0
- package/dist/hooks/stop-continuation.mjs +83 -0
- package/dist/hooks/stop-continuation.mjs.map +7 -0
- package/dist/hooks/token-tracker.mjs +181 -0
- package/dist/hooks/token-tracker.mjs.map +7 -0
- package/dist/mcp/server.mjs +28492 -0
- package/dist/mcp/server.mjs.map +7 -0
- package/dist/skills/mcp-setup.mjs +42 -0
- package/dist/skills/mcp-setup.mjs.map +7 -0
- package/dist/skills/setup.mjs +38 -0
- package/dist/skills/setup.mjs.map +7 -0
- package/hooks/hooks.json +47 -0
- package/package.json +70 -0
- package/skills/autopilot/SKILL.md +35 -0
- package/skills/configure-notifications/SKILL.md +35 -0
- package/skills/deep-interview/SKILL.md +35 -0
- package/skills/ecomode/SKILL.md +35 -0
- package/skills/graph-provider/SKILL.md +77 -0
- package/skills/graphify/SKILL.md +51 -0
- package/skills/graphwiki/SKILL.md +66 -0
- package/skills/hud/SKILL.md +35 -0
- package/skills/learner/SKILL.md +35 -0
- package/skills/mcp-setup/SKILL.md +34 -0
- package/skills/note/SKILL.md +35 -0
- package/skills/omp-plan/SKILL.md +35 -0
- package/skills/omp-setup/SKILL.md +37 -0
- package/skills/pipeline/SKILL.md +35 -0
- package/skills/psm/SKILL.md +35 -0
- package/skills/ralph/SKILL.md +35 -0
- package/skills/release/SKILL.md +35 -0
- package/skills/setup/SKILL.md +43 -0
- package/skills/spending/SKILL.md +86 -0
- package/skills/swarm/SKILL.md +35 -0
- package/skills/swe-bench/SKILL.md +35 -0
- package/skills/team/SKILL.md +35 -0
- package/skills/trace/SKILL.md +35 -0
- package/skills/ultrawork/SKILL.md +35 -0
- package/skills/wiki/SKILL.md +35 -0
- package/src/agents/analyst.md +103 -0
- package/src/agents/architect.md +169 -0
- package/src/agents/code-reviewer.md +135 -0
- package/src/agents/critic.md +196 -0
- package/src/agents/debugger.md +132 -0
- package/src/agents/designer.md +103 -0
- package/src/agents/document-specialist.md +111 -0
- package/src/agents/executor.md +120 -0
- package/src/agents/explorer.md +98 -0
- package/src/agents/git-master.md +92 -0
- package/src/agents/orchestrator.md +125 -0
- package/src/agents/planner.md +106 -0
- package/src/agents/qa-tester.md +129 -0
- package/src/agents/researcher.md +102 -0
- package/src/agents/reviewer.md +100 -0
- package/src/agents/scientist.md +150 -0
- package/src/agents/security-reviewer.md +132 -0
- package/src/agents/simplifier.md +109 -0
- package/src/agents/test-engineer.md +124 -0
- package/src/agents/tester.md +102 -0
- package/src/agents/tracer.md +160 -0
- package/src/agents/verifier.md +100 -0
- package/src/agents/writer.md +96 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// src/skills/mcp-setup.mts
|
|
2
|
+
import { spawn } from "child_process";
|
|
3
|
+
async function activateMcpSetupSkill(input) {
|
|
4
|
+
const args = input?.args ?? [];
|
|
5
|
+
const isInteractive = args.includes("--interactive") || args.length === 0;
|
|
6
|
+
const spawnArgs = ["setup", "--mcp-only"];
|
|
7
|
+
if (!isInteractive) {
|
|
8
|
+
spawnArgs.push("--non-interactive");
|
|
9
|
+
}
|
|
10
|
+
for (const arg of args) {
|
|
11
|
+
if (arg !== "--interactive" && !spawnArgs.includes(arg)) {
|
|
12
|
+
spawnArgs.push(arg);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return new Promise((resolve) => {
|
|
16
|
+
const child = spawn("omp", spawnArgs, { stdio: "inherit" });
|
|
17
|
+
child.on("close", (code) => {
|
|
18
|
+
if (code === 0) {
|
|
19
|
+
resolve({
|
|
20
|
+
status: "ok",
|
|
21
|
+
message: "MCP configuration complete.",
|
|
22
|
+
hud: "MCP servers configured."
|
|
23
|
+
});
|
|
24
|
+
} else {
|
|
25
|
+
resolve({
|
|
26
|
+
status: "error",
|
|
27
|
+
message: `MCP configuration exited with code ${code}.`
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
child.on("error", (err) => {
|
|
32
|
+
resolve({
|
|
33
|
+
status: "error",
|
|
34
|
+
message: `Failed to spawn omp: ${err.message}`
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
export {
|
|
40
|
+
activateMcpSetupSkill
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=mcp-setup.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/skills/mcp-setup.mts"],
|
|
4
|
+
"sourcesContent": ["/**\n * MCP Setup Skill\n *\n * ID: mcp-setup\n * Keywords: mcp-setup:, /mcp\n * Phase: MCP configuration only (Phase 2)\n *\n * This skill is lazy-loaded \u2014 it is not loaded until triggered.\n */\n\nimport { spawn } from \"child_process\";\n\nexport interface McpSetupSkillInput {\n args?: string[];\n}\n\nexport interface McpSetupSkillOutput {\n status: \"ok\" | \"error\";\n message: string;\n hud?: string;\n}\n\n/**\n * Activate the MCP configuration phase.\n * Uses --mcp-only --non-interactive for programmatic invocation,\n * or interactive mode if no args provided.\n */\nexport async function activateMcpSetupSkill(\n input?: McpSetupSkillInput\n): Promise<McpSetupSkillOutput> {\n const args = input?.args ?? [];\n\n // Detect interactive vs programmatic mode\n const isInteractive = args.includes(\"--interactive\") || args.length === 0;\n\n const spawnArgs = [\"setup\", \"--mcp-only\"];\n if (!isInteractive) {\n spawnArgs.push(\"--non-interactive\");\n }\n // Pass through any other args\n for (const arg of args) {\n if (arg !== \"--interactive\" && !spawnArgs.includes(arg)) {\n spawnArgs.push(arg);\n }\n }\n\n return new Promise((resolve) => {\n const child = spawn(\"omp\", spawnArgs, { stdio: \"inherit\" });\n child.on(\"close\", (code) => {\n if (code === 0) {\n resolve({\n status: \"ok\",\n message: \"MCP configuration complete.\",\n hud: \"MCP servers configured.\",\n });\n } else {\n resolve({\n status: \"error\",\n message: `MCP configuration exited with code ${code}.`,\n });\n }\n });\n child.on(\"error\", (err) => {\n resolve({\n status: \"error\",\n message: `Failed to spawn omp: ${err.message}`,\n });\n });\n });\n}\n"],
|
|
5
|
+
"mappings": ";AAUA,SAAS,aAAa;AAiBtB,eAAsB,sBACpB,OAC8B;AAC9B,QAAM,OAAO,OAAO,QAAQ,CAAC;AAG7B,QAAM,gBAAgB,KAAK,SAAS,eAAe,KAAK,KAAK,WAAW;AAExE,QAAM,YAAY,CAAC,SAAS,YAAY;AACxC,MAAI,CAAC,eAAe;AAClB,cAAU,KAAK,mBAAmB;AAAA,EACpC;AAEA,aAAW,OAAO,MAAM;AACtB,QAAI,QAAQ,mBAAmB,CAAC,UAAU,SAAS,GAAG,GAAG;AACvD,gBAAU,KAAK,GAAG;AAAA,IACpB;AAAA,EACF;AAEA,SAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,UAAM,QAAQ,MAAM,OAAO,WAAW,EAAE,OAAO,UAAU,CAAC;AAC1D,UAAM,GAAG,SAAS,CAAC,SAAS;AAC1B,UAAI,SAAS,GAAG;AACd,gBAAQ;AAAA,UACN,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,KAAK;AAAA,QACP,CAAC;AAAA,MACH,OAAO;AACL,gBAAQ;AAAA,UACN,QAAQ;AAAA,UACR,SAAS,sCAAsC,IAAI;AAAA,QACrD,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AACD,UAAM,GAAG,SAAS,CAAC,QAAQ;AACzB,cAAQ;AAAA,QACN,QAAQ;AAAA,QACR,SAAS,wBAAwB,IAAI,OAAO;AAAA,MAC9C,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC;AACH;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// src/skills/setup.mts
|
|
2
|
+
async function activate(input2) {
|
|
3
|
+
const { spawn } = await import("child_process");
|
|
4
|
+
const isNonInteractive = input2.args.includes("--non-interactive");
|
|
5
|
+
const isMcpOnly = input2.args.includes("--mcp-only");
|
|
6
|
+
const isSkipMcp = input2.args.includes("--skip-mcp");
|
|
7
|
+
const baseArgs = ["bin/omp.mjs", "setup"];
|
|
8
|
+
if (isMcpOnly) baseArgs.push("--mcp-only");
|
|
9
|
+
if (isSkipMcp) baseArgs.push("--skip-mcp");
|
|
10
|
+
if (isNonInteractive) baseArgs.push("--non-interactive");
|
|
11
|
+
return new Promise((resolve) => {
|
|
12
|
+
const child = spawn("node", baseArgs, { stdio: "inherit" });
|
|
13
|
+
child.on("close", (code) => {
|
|
14
|
+
if (code === 0) {
|
|
15
|
+
resolve({ status: "ok", message: "OMP setup complete." });
|
|
16
|
+
} else {
|
|
17
|
+
resolve({ status: "error", message: `Setup exited with code ${code}` });
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
child.on("error", (err) => {
|
|
21
|
+
resolve({ status: "error", message: `Failed to spawn omp setup: ${err.message}` });
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
var input = JSON.parse(await readStdin());
|
|
26
|
+
var output = await activate(input);
|
|
27
|
+
console.log(JSON.stringify(output));
|
|
28
|
+
async function readStdin() {
|
|
29
|
+
const chunks = [];
|
|
30
|
+
for await (const chunk of process.stdin) {
|
|
31
|
+
chunks.push(chunk);
|
|
32
|
+
}
|
|
33
|
+
return chunks.join("");
|
|
34
|
+
}
|
|
35
|
+
export {
|
|
36
|
+
activate
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=setup.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/skills/setup.mts"],
|
|
4
|
+
"sourcesContent": ["/**\n * setup skill\n *\n * Orchestrates both phases of the OMP setup wizard:\n * Phase 1: Base OMP setup (SQLite DB, directory structure, first-run guidance)\n * Phase 2: MCP server configuration\n *\n * Invoked via `/setup` or `setup:` keyword.\n * For MCP-only setup, use the `mcp-setup` skill instead.\n */\n\nexport interface SkillInput {\n trigger: string;\n args: string[];\n}\n\nexport interface SkillOutput {\n status: \"ok\" | \"error\";\n message: string;\n}\n\nexport async function activate(input: SkillInput): Promise<SkillOutput> {\n const { spawn } = await import(\"child_process\");\n\n const isNonInteractive = input.args.includes(\"--non-interactive\");\n const isMcpOnly = input.args.includes(\"--mcp-only\");\n const isSkipMcp = input.args.includes(\"--skip-mcp\");\n\n const baseArgs = [\"bin/omp.mjs\", \"setup\"];\n if (isMcpOnly) baseArgs.push(\"--mcp-only\");\n if (isSkipMcp) baseArgs.push(\"--skip-mcp\");\n if (isNonInteractive) baseArgs.push(\"--non-interactive\");\n\n return new Promise((resolve) => {\n const child = spawn(\"node\", baseArgs, { stdio: \"inherit\" });\n\n child.on(\"close\", (code) => {\n if (code === 0) {\n resolve({ status: \"ok\", message: \"OMP setup complete.\" });\n } else {\n resolve({ status: \"error\", message: `Setup exited with code ${code}` });\n }\n });\n\n child.on(\"error\", (err) => {\n resolve({ status: \"error\", message: `Failed to spawn omp setup: ${err.message}` });\n });\n });\n}\n\n// Standalone entry point\nconst input: SkillInput = JSON.parse(await readStdin());\nconst output = await activate(input);\nconsole.log(JSON.stringify(output));\n\nasync function readStdin(): Promise<string> {\n const chunks: string[] = [];\n for await (const chunk of process.stdin) {\n chunks.push(chunk);\n }\n return chunks.join(\"\");\n}\n"],
|
|
5
|
+
"mappings": ";AAqBA,eAAsB,SAASA,QAAyC;AACtE,QAAM,EAAE,MAAM,IAAI,MAAM,OAAO,eAAe;AAE9C,QAAM,mBAAmBA,OAAM,KAAK,SAAS,mBAAmB;AAChE,QAAM,YAAYA,OAAM,KAAK,SAAS,YAAY;AAClD,QAAM,YAAYA,OAAM,KAAK,SAAS,YAAY;AAElD,QAAM,WAAW,CAAC,eAAe,OAAO;AACxC,MAAI,UAAW,UAAS,KAAK,YAAY;AACzC,MAAI,UAAW,UAAS,KAAK,YAAY;AACzC,MAAI,iBAAkB,UAAS,KAAK,mBAAmB;AAEvD,SAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,UAAM,QAAQ,MAAM,QAAQ,UAAU,EAAE,OAAO,UAAU,CAAC;AAE1D,UAAM,GAAG,SAAS,CAAC,SAAS;AAC1B,UAAI,SAAS,GAAG;AACd,gBAAQ,EAAE,QAAQ,MAAM,SAAS,sBAAsB,CAAC;AAAA,MAC1D,OAAO;AACL,gBAAQ,EAAE,QAAQ,SAAS,SAAS,0BAA0B,IAAI,GAAG,CAAC;AAAA,MACxE;AAAA,IACF,CAAC;AAED,UAAM,GAAG,SAAS,CAAC,QAAQ;AACzB,cAAQ,EAAE,QAAQ,SAAS,SAAS,8BAA8B,IAAI,OAAO,GAAG,CAAC;AAAA,IACnF,CAAC;AAAA,EACH,CAAC;AACH;AAGA,IAAM,QAAoB,KAAK,MAAM,MAAM,UAAU,CAAC;AACtD,IAAM,SAAS,MAAM,SAAS,KAAK;AACnC,QAAQ,IAAI,KAAK,UAAU,MAAM,CAAC;AAElC,eAAe,YAA6B;AAC1C,QAAM,SAAmB,CAAC;AAC1B,mBAAiB,SAAS,QAAQ,OAAO;AACvC,WAAO,KAAK,KAAK;AAAA,EACnB;AACA,SAAO,OAAO,KAAK,EAAE;AACvB;",
|
|
6
|
+
"names": ["input"]
|
|
7
|
+
}
|
package/hooks/hooks.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "1.0",
|
|
3
|
+
"hooks": [
|
|
4
|
+
{
|
|
5
|
+
"id": "keyword-detector",
|
|
6
|
+
"entry": "./dist/hooks/keyword-detector.mjs",
|
|
7
|
+
"trigger": "UserPromptSubmitted",
|
|
8
|
+
"timeoutMs": 200,
|
|
9
|
+
"priority": 100
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"id": "delegation-enforcer",
|
|
13
|
+
"entry": "./dist/hooks/delegation-enforcer.mjs",
|
|
14
|
+
"trigger": "PreToolUse",
|
|
15
|
+
"timeoutMs": 200,
|
|
16
|
+
"priority": 90
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"id": "model-router",
|
|
20
|
+
"entry": "./dist/hooks/model-router.mjs",
|
|
21
|
+
"trigger": "PreToolUse",
|
|
22
|
+
"timeoutMs": 200,
|
|
23
|
+
"priority": 80
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"id": "token-tracker",
|
|
27
|
+
"entry": "./dist/hooks/token-tracker.mjs",
|
|
28
|
+
"trigger": "PostToolUse",
|
|
29
|
+
"timeoutMs": 200,
|
|
30
|
+
"priority": 70
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "hud-emitter",
|
|
34
|
+
"entry": "./dist/hooks/hud-emitter.mjs",
|
|
35
|
+
"trigger": "PostToolUse",
|
|
36
|
+
"timeoutMs": 200,
|
|
37
|
+
"priority": 60
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "stop-continuation",
|
|
41
|
+
"entry": "./dist/hooks/stop-continuation.mjs",
|
|
42
|
+
"trigger": "PostToolUse",
|
|
43
|
+
"timeoutMs": 200,
|
|
44
|
+
"priority": 50
|
|
45
|
+
}
|
|
46
|
+
]
|
|
47
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "oh-my-githubcopilot",
|
|
3
|
+
"version": "1.4.0",
|
|
4
|
+
"description": "Multi-agent orchestration for GitHub Copilot CLI. 23 agents, 25 skills, parallel execution, HUD, PSM, SWE-bench.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "r3dlex"
|
|
7
|
+
},
|
|
8
|
+
"repository": "https://github.com/r3dlex/oh-my-githubcopilot",
|
|
9
|
+
"license": "Apache-2.0",
|
|
10
|
+
"keywords": [
|
|
11
|
+
"orchestration",
|
|
12
|
+
"multi-agent",
|
|
13
|
+
"autopilot",
|
|
14
|
+
"swe-bench",
|
|
15
|
+
"hud",
|
|
16
|
+
"copilot-cli"
|
|
17
|
+
],
|
|
18
|
+
"type": "module",
|
|
19
|
+
"main": "dist/index.mjs",
|
|
20
|
+
"bin": {
|
|
21
|
+
"omp": "./bin/omp.mjs"
|
|
22
|
+
},
|
|
23
|
+
"files": [
|
|
24
|
+
"dist/",
|
|
25
|
+
"bin/",
|
|
26
|
+
"skills/",
|
|
27
|
+
"hooks/",
|
|
28
|
+
"src/agents/",
|
|
29
|
+
".claude-plugin/",
|
|
30
|
+
"AGENTS.md",
|
|
31
|
+
"CHANGELOG.md",
|
|
32
|
+
"LICENSE"
|
|
33
|
+
],
|
|
34
|
+
"scripts": {
|
|
35
|
+
"build": "node --import tsx esbuild.config.mts",
|
|
36
|
+
"dev": "node --import tsx --watch esbuild.config.mts",
|
|
37
|
+
"test": "vitest run",
|
|
38
|
+
"test:watch": "vitest",
|
|
39
|
+
"test:coverage": "vitest run --coverage",
|
|
40
|
+
"lint": "eslint src/",
|
|
41
|
+
"format": "prettier --write src/",
|
|
42
|
+
"typecheck": "tsc --noEmit",
|
|
43
|
+
"sync-claude-plugin": "cp .github/plugin/plugin.json .claude-plugin/plugin.json",
|
|
44
|
+
"prepublishOnly": "npm run build && npm run sync-claude-plugin",
|
|
45
|
+
"archgate:init": "npx archgate init --editor claude",
|
|
46
|
+
"archgate:check": "npx archgate check"
|
|
47
|
+
},
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
50
|
+
"better-sqlite3": "^11.0.0",
|
|
51
|
+
"simple-git": "^3.0.0",
|
|
52
|
+
"yaml": "^2.0.0"
|
|
53
|
+
},
|
|
54
|
+
"devDependencies": {
|
|
55
|
+
"@types/better-sqlite3": "^7.0.0",
|
|
56
|
+
"@types/node": "^22.0.0",
|
|
57
|
+
"@vitest/coverage-v8": "^2.1.9",
|
|
58
|
+
"archgate": "^0.27.0",
|
|
59
|
+
"esbuild": "^0.24.0",
|
|
60
|
+
"eslint": "^9.0.0",
|
|
61
|
+
"prettier": "^3.0.0",
|
|
62
|
+
"tsx": "^4.0.0",
|
|
63
|
+
"typescript": "^5.6.0",
|
|
64
|
+
"typescript-eslint": "^8.58.1",
|
|
65
|
+
"vitest": "^2.0.0"
|
|
66
|
+
},
|
|
67
|
+
"engines": {
|
|
68
|
+
"node": ">=22.0.0"
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Skill: Autopilot
|
|
2
|
+
|
|
3
|
+
## Metadata
|
|
4
|
+
|
|
5
|
+
| Field | Value |
|
|
6
|
+
|-------|-------|
|
|
7
|
+
| **ID** | `autopilot` |
|
|
8
|
+
| **Keywords** | `autopilot:`, `/autopilot` |
|
|
9
|
+
| **Tier** | Execution Mode |
|
|
10
|
+
| **Source** | `src/skills/autopilot.mts` |
|
|
11
|
+
|
|
12
|
+
## Description
|
|
13
|
+
|
|
14
|
+
Autonomous end-to-end execution from idea to working code. Handles routing, delegation, and verification internally.
|
|
15
|
+
|
|
16
|
+
## Interface
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
interface SkillInput {
|
|
20
|
+
trigger: string;
|
|
21
|
+
args: string[];
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
interface SkillOutput {
|
|
25
|
+
status: "ok" | "error";
|
|
26
|
+
message: string;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export async function activate(input: SkillInput): Promise<SkillOutput>
|
|
30
|
+
export function deactivate(): void
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Implementation
|
|
34
|
+
|
|
35
|
+
Activates the `autopilot` orchestration mode by spawning `bin/omp.mjs autopilot [args]`. No persistent resources are maintained.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Skill: Configure-Notifications
|
|
2
|
+
|
|
3
|
+
## Metadata
|
|
4
|
+
|
|
5
|
+
| Field | Value |
|
|
6
|
+
|-------|-------|
|
|
7
|
+
| **ID** | `configure-notifications` |
|
|
8
|
+
| **Keywords** | `configure-notifications:`, `/configure-notifications` |
|
|
9
|
+
| **Tier** | Developer Tool |
|
|
10
|
+
| **Source** | `src/skills/configure-notifications.mts` |
|
|
11
|
+
|
|
12
|
+
## Description
|
|
13
|
+
|
|
14
|
+
Configure notification integrations: Telegram, Discord, Slack.
|
|
15
|
+
|
|
16
|
+
## Interface
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
interface SkillInput {
|
|
20
|
+
trigger: string;
|
|
21
|
+
args: string[];
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
interface SkillOutput {
|
|
25
|
+
status: "ok" | "error";
|
|
26
|
+
message: string;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export async function activate(input: SkillInput): Promise<SkillOutput>
|
|
30
|
+
export function deactivate(): void
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Implementation
|
|
34
|
+
|
|
35
|
+
Spawns `bin/omp.mjs configure-notifications [args]`. No persistent resources are maintained.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Skill: Deep-Interview
|
|
2
|
+
|
|
3
|
+
## Metadata
|
|
4
|
+
|
|
5
|
+
| Field | Value |
|
|
6
|
+
|-------|-------|
|
|
7
|
+
| **ID** | `deep-interview` |
|
|
8
|
+
| **Keywords** | `deep interview:`, `/deep-interview` |
|
|
9
|
+
| **Tier** | Planning Tool |
|
|
10
|
+
| **Source** | `src/skills/deep-interview.mts` |
|
|
11
|
+
|
|
12
|
+
## Description
|
|
13
|
+
|
|
14
|
+
Socratic deep interview with mathematical ambiguity gating before autonomous execution.
|
|
15
|
+
|
|
16
|
+
## Interface
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
interface SkillInput {
|
|
20
|
+
trigger: string;
|
|
21
|
+
args: string[];
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
interface SkillOutput {
|
|
25
|
+
status: "ok" | "error";
|
|
26
|
+
message: string;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export async function activate(input: SkillInput): Promise<SkillOutput>
|
|
30
|
+
export function deactivate(): void
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Implementation
|
|
34
|
+
|
|
35
|
+
Spawns `bin/omp.mjs deep-interview [args]`. No persistent resources are maintained.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Skill: Ecomode
|
|
2
|
+
|
|
3
|
+
## Metadata
|
|
4
|
+
|
|
5
|
+
| Field | Value |
|
|
6
|
+
|-------|-------|
|
|
7
|
+
| **ID** | `ecomode` |
|
|
8
|
+
| **Keywords** | `eco:`, `/eco`, `ecomode:` |
|
|
9
|
+
| **Tier** | Execution Mode |
|
|
10
|
+
| **Source** | `src/skills/ecomode.mts` |
|
|
11
|
+
|
|
12
|
+
## Description
|
|
13
|
+
|
|
14
|
+
Token budget mode. Prioritizes task completion over exploration. Suppresses verbose output.
|
|
15
|
+
|
|
16
|
+
## Interface
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
interface SkillInput {
|
|
20
|
+
trigger: string;
|
|
21
|
+
args: string[];
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
interface SkillOutput {
|
|
25
|
+
status: "ok" | "error";
|
|
26
|
+
message: string;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export async function activate(input: SkillInput): Promise<SkillOutput>
|
|
30
|
+
export function deactivate(): void
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Implementation
|
|
34
|
+
|
|
35
|
+
Activates the `ecomode` token-budget mode by spawning `bin/omp.mjs ecomode [args]`. No persistent resources are maintained.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Skill: Graph Provider
|
|
2
|
+
|
|
3
|
+
## Metadata
|
|
4
|
+
|
|
5
|
+
| Field | Value |
|
|
6
|
+
|-------|-------|
|
|
7
|
+
| **ID** | `graph-provider` |
|
|
8
|
+
| **Keywords** | `graph:`, `/graph-provider` |
|
|
9
|
+
| **Tier** | developer |
|
|
10
|
+
| **Source** | `src/skills/graph-provider.mts` |
|
|
11
|
+
|
|
12
|
+
## Description
|
|
13
|
+
|
|
14
|
+
Manage and use the active graph provider (graphify or graphwiki). Delegates to whichever adapter is configured, allowing users to switch between providers, build graphs, and query the active knowledge graph.
|
|
15
|
+
|
|
16
|
+
## Interface
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
interface SkillInput {
|
|
20
|
+
action: 'get' | 'set' | 'list' | 'build' | 'status' | 'clean' | 'query';
|
|
21
|
+
provider?: string;
|
|
22
|
+
question?: string;
|
|
23
|
+
options?: { incremental?: boolean };
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
interface SkillOutput {
|
|
27
|
+
status: "ok" | "error";
|
|
28
|
+
message: string;
|
|
29
|
+
data?: unknown;
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Implementation
|
|
34
|
+
|
|
35
|
+
Manages the active graph provider configuration stored in `.omp/config.json`. Routes actions to the configured provider adapter (graphify or graphwiki). Provides a unified interface for graph operations across multiple provider implementations.
|
|
36
|
+
|
|
37
|
+
## Actions
|
|
38
|
+
|
|
39
|
+
### get
|
|
40
|
+
Show the currently active graph provider.
|
|
41
|
+
|
|
42
|
+
### set <provider>
|
|
43
|
+
Switch the active graph provider (saved to local .omp/config.json).
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
graph: set graphwiki
|
|
47
|
+
graph: set graphify
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### list
|
|
51
|
+
List all available graph providers.
|
|
52
|
+
|
|
53
|
+
### build [--incremental]
|
|
54
|
+
Build the knowledge graph using the active provider.
|
|
55
|
+
|
|
56
|
+
### status
|
|
57
|
+
Show whether the active provider's graph exists.
|
|
58
|
+
|
|
59
|
+
### clean
|
|
60
|
+
Remove the active provider's output directory.
|
|
61
|
+
|
|
62
|
+
### query <question>
|
|
63
|
+
Query the graph (graphwiki provider only).
|
|
64
|
+
|
|
65
|
+
## Configuration
|
|
66
|
+
|
|
67
|
+
Add to `.omp/config.json` or `~/.omp/config.json`:
|
|
68
|
+
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"graph": {
|
|
72
|
+
"provider": "graphwiki"
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Resolution: local > global > default (`graphwiki`).
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Skill: Graphify
|
|
2
|
+
|
|
3
|
+
## Metadata
|
|
4
|
+
|
|
5
|
+
| Field | Value |
|
|
6
|
+
|-------|-------|
|
|
7
|
+
| **ID** | `graphify` |
|
|
8
|
+
| **Keywords** | `graph build`, `build graph`, `/graphify`, `/omp:graphify` |
|
|
9
|
+
| **Tier** | developer |
|
|
10
|
+
| **Source** | `src/skills/graphify.mts` |
|
|
11
|
+
|
|
12
|
+
## Description
|
|
13
|
+
|
|
14
|
+
Build and manage a knowledge graph of the codebase using the graphify CLI. Reduces token usage by 70x+ per query by replacing raw file searches with graph lookups. This OMP plugin skill is scoped to `/omp:graphify` in OMP sessions. The standalone `~/.claude/skills/graphify` skill (`/graphify`) is for standalone Claude Code sessions — no conflict.
|
|
15
|
+
|
|
16
|
+
## Interface
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
interface SkillInput {
|
|
20
|
+
action: 'build' | 'status' | 'clean';
|
|
21
|
+
options?: { incremental?: boolean };
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
interface SkillOutput {
|
|
25
|
+
status: "ok" | "error";
|
|
26
|
+
message: string;
|
|
27
|
+
data?: {
|
|
28
|
+
nodeCount?: number;
|
|
29
|
+
edgeCount?: number;
|
|
30
|
+
communityCount?: number;
|
|
31
|
+
outputPath?: string;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Implementation
|
|
37
|
+
|
|
38
|
+
Invokes the `graphify` CLI tool to analyze the workspace and generate a knowledge graph stored in `graphify-out/graph.json`. Provides status reporting on graph size and last modified time, and can incrementally update existing graphs.
|
|
39
|
+
|
|
40
|
+
## Actions
|
|
41
|
+
|
|
42
|
+
### build [--incremental]
|
|
43
|
+
Build the knowledge graph for the current workspace using `graphify`.
|
|
44
|
+
Reports: node count, edge count, community count, output path.
|
|
45
|
+
Install: `pip install graphify`
|
|
46
|
+
|
|
47
|
+
### status
|
|
48
|
+
Show whether graphify-out/graph.json exists, its size, and last modified time.
|
|
49
|
+
|
|
50
|
+
### clean
|
|
51
|
+
Remove the graphify-out/ directory.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Skill: GraphWiki
|
|
2
|
+
|
|
3
|
+
## Metadata
|
|
4
|
+
|
|
5
|
+
| Field | Value |
|
|
6
|
+
|-------|-------|
|
|
7
|
+
| **ID** | `graphwiki` |
|
|
8
|
+
| **Keywords** | `graphwiki:`, `/graphwiki`, `/omp:graphwiki` |
|
|
9
|
+
| **Tier** | developer |
|
|
10
|
+
| **Source** | `src/skills/graphwiki.mts` |
|
|
11
|
+
|
|
12
|
+
## Description
|
|
13
|
+
|
|
14
|
+
Direct access to graphwiki CLI for graph querying, path finding, linting, and refinement. Provides comprehensive knowledge graph management beyond the generic graph-provider interface, including zero-token path finding and structural graph analysis.
|
|
15
|
+
|
|
16
|
+
## Interface
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
interface SkillInput {
|
|
20
|
+
action: 'query' | 'path' | 'lint' | 'refine' | 'build' | 'status' | 'clean';
|
|
21
|
+
question?: string;
|
|
22
|
+
from?: string;
|
|
23
|
+
to?: string;
|
|
24
|
+
options?: { review?: boolean; update?: boolean };
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
interface SkillOutput {
|
|
28
|
+
status: "ok" | "error";
|
|
29
|
+
message: string;
|
|
30
|
+
data?: unknown;
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Implementation
|
|
35
|
+
|
|
36
|
+
Provides a thin wrapper around the graphwiki CLI tool (`npm install -g graphwiki`). Routes user actions to appropriate graphwiki subcommands and parses output into structured responses.
|
|
37
|
+
|
|
38
|
+
## Actions
|
|
39
|
+
|
|
40
|
+
### query <question>
|
|
41
|
+
Query the knowledge graph with a natural language question.
|
|
42
|
+
Uses graphwiki's token-budget-aware query engine.
|
|
43
|
+
|
|
44
|
+
### path <from> <to>
|
|
45
|
+
Find the structural path between two nodes (zero LLM tokens).
|
|
46
|
+
|
|
47
|
+
### lint
|
|
48
|
+
Check the graph for orphan nodes, missing edges, and structural issues.
|
|
49
|
+
|
|
50
|
+
### refine [--review]
|
|
51
|
+
Refine the graph. Add `--review` to run in review mode.
|
|
52
|
+
|
|
53
|
+
### build [--update]
|
|
54
|
+
Build the knowledge graph. Add `--update` for incremental build.
|
|
55
|
+
|
|
56
|
+
### status
|
|
57
|
+
Show whether graphwiki-out/graph.json exists and its output paths.
|
|
58
|
+
|
|
59
|
+
### clean
|
|
60
|
+
Remove the graphwiki-out/ directory.
|
|
61
|
+
|
|
62
|
+
## Installation
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
npm install -g graphwiki
|
|
66
|
+
```
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Skill: HUD
|
|
2
|
+
|
|
3
|
+
## Metadata
|
|
4
|
+
|
|
5
|
+
| Field | Value |
|
|
6
|
+
|-------|-------|
|
|
7
|
+
| **ID** | `hud` |
|
|
8
|
+
| **Keywords** | `hud:`, `/hud` |
|
|
9
|
+
| **Tier** | Developer Tool |
|
|
10
|
+
| **Source** | `src/skills/hud.mts` |
|
|
11
|
+
|
|
12
|
+
## Description
|
|
13
|
+
|
|
14
|
+
Configure HUD display options: layout, presets, display elements.
|
|
15
|
+
|
|
16
|
+
## Interface
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
interface SkillInput {
|
|
20
|
+
trigger: string;
|
|
21
|
+
args: string[];
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
interface SkillOutput {
|
|
25
|
+
status: "ok" | "error";
|
|
26
|
+
message: string;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export async function activate(input: SkillInput): Promise<SkillOutput>
|
|
30
|
+
export function deactivate(): void
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Implementation
|
|
34
|
+
|
|
35
|
+
Spawns `bin/omp.mjs hud [args]`. No persistent resources are maintained.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Skill: Learner
|
|
2
|
+
|
|
3
|
+
## Metadata
|
|
4
|
+
|
|
5
|
+
| Field | Value |
|
|
6
|
+
|-------|-------|
|
|
7
|
+
| **ID** | `learner` |
|
|
8
|
+
| **Keywords** | `learner:`, `/learner` |
|
|
9
|
+
| **Tier** | Planning Tool |
|
|
10
|
+
| **Source** | `src/skills/learner.mts` |
|
|
11
|
+
|
|
12
|
+
## Description
|
|
13
|
+
|
|
14
|
+
Extract a learned skill from the current conversation.
|
|
15
|
+
|
|
16
|
+
## Interface
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
interface SkillInput {
|
|
20
|
+
trigger: string;
|
|
21
|
+
args: string[];
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
interface SkillOutput {
|
|
25
|
+
status: "ok" | "error";
|
|
26
|
+
message: string;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export async function activate(input: SkillInput): Promise<SkillOutput>
|
|
30
|
+
export function deactivate(): void
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Implementation
|
|
34
|
+
|
|
35
|
+
Spawns `bin/omp.mjs learner [args]`. No persistent resources are maintained.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Skill: MCP-Setup
|
|
2
|
+
|
|
3
|
+
## Metadata
|
|
4
|
+
|
|
5
|
+
| Field | Value |
|
|
6
|
+
|-------|-------|
|
|
7
|
+
| **ID** | `mcp-setup` |
|
|
8
|
+
| **Keywords** | `mcp-setup:`, `/mcp` |
|
|
9
|
+
| **Tier** | Developer Tool |
|
|
10
|
+
| **Source** | `src/skills/mcp-setup.mts` |
|
|
11
|
+
|
|
12
|
+
## Description
|
|
13
|
+
|
|
14
|
+
MCP Setup Skill — configure MCP servers for OMP. Uses --mcp-only --non-interactive for programmatic invocation.
|
|
15
|
+
|
|
16
|
+
## Interface
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
interface McpSetupSkillInput {
|
|
20
|
+
args?: string[];
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
interface McpSetupSkillOutput {
|
|
24
|
+
status: "ok" | "error";
|
|
25
|
+
message: string;
|
|
26
|
+
hud?: string;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export async function activateMcpSetupSkill(input?: McpSetupSkillInput): Promise<McpSetupSkillOutput>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Implementation
|
|
33
|
+
|
|
34
|
+
Spawns `omp setup --mcp-only [args]` for MCP configuration. No persistent resources are maintained.
|