oh-my-githubcopilot 1.4.1 → 1.8.0-alpha.f50f59a
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 +36 -6
- package/.mcp.json +17 -0
- package/AGENTS.md +78 -9
- package/CHANGELOG.md +199 -1
- package/README.de.md +112 -26
- package/README.es.md +115 -29
- package/README.fr.md +114 -28
- package/README.it.md +114 -28
- package/README.ja.md +112 -26
- package/README.ko.md +112 -26
- package/README.md +96 -95
- package/README.pt.md +116 -30
- package/README.ru.md +116 -30
- package/README.tr.md +115 -29
- package/README.vi.md +116 -30
- package/README.zh.md +112 -26
- package/agents/analyst.agent.md +27 -0
- package/agents/architect.agent.md +24 -0
- package/agents/code-reviewer.agent.md +24 -0
- package/agents/critic.agent.md +24 -0
- package/agents/debugger.agent.md +24 -0
- package/agents/designer.agent.md +24 -0
- package/agents/document-specialist.agent.md +24 -0
- package/agents/executor.agent.md +27 -0
- package/agents/explorer.agent.md +23 -0
- package/agents/git-master.agent.md +24 -0
- package/agents/orchestrator.agent.md +26 -0
- package/agents/planner.agent.md +24 -0
- package/agents/qa-tester.agent.md +24 -0
- package/agents/researcher.agent.md +18 -0
- package/agents/reviewer.agent.md +23 -0
- package/agents/scientist.agent.md +20 -0
- package/agents/security-reviewer.agent.md +20 -0
- package/agents/simplifier.agent.md +20 -0
- package/agents/test-engineer.agent.md +20 -0
- package/agents/tester.agent.md +20 -0
- package/agents/tracer.agent.md +24 -0
- package/agents/verifier.agent.md +19 -0
- package/agents/writer.agent.md +24 -0
- package/bin/omp-statusline.mjs +179 -0
- package/bin/omp-statusline.mjs.map +7 -0
- package/bin/omp-statusline.sh +21 -0
- package/bin/omp.mjs +709 -16
- package/bin/omp.mjs.map +4 -4
- package/dist/hooks/hud-emitter.mjs +268 -82
- package/dist/hooks/hud-emitter.mjs.map +4 -4
- package/dist/hooks/keyword-detector.mjs +100 -23
- package/dist/hooks/keyword-detector.mjs.map +2 -2
- package/dist/hooks/model-router.mjs +1 -1
- package/dist/hooks/model-router.mjs.map +1 -1
- package/dist/hooks/stop-continuation.mjs +1 -1
- package/dist/hooks/stop-continuation.mjs.map +1 -1
- package/dist/hooks/token-tracker.mjs +2 -1
- package/dist/hooks/token-tracker.mjs.map +2 -2
- package/dist/mcp/server.mjs +85 -53
- package/dist/mcp/server.mjs.map +4 -4
- package/dist/skills/setup.mjs +39 -27
- package/dist/skills/setup.mjs.map +4 -4
- package/hooks/hooks.json +39 -45
- package/package.json +9 -4
- package/plugin.json +71 -0
- package/skills/ai-slop-cleaner/SKILL.md +137 -0
- package/skills/autopilot/SKILL.md +6 -0
- package/skills/configure-notifications/SKILL.md +6 -0
- package/skills/deep-interview/SKILL.md +6 -0
- package/skills/doctor/SKILL.md +188 -0
- package/skills/ecomode/SKILL.md +6 -0
- package/skills/graph-context/SKILL.md +119 -0
- package/skills/graph-provider/SKILL.md +6 -0
- package/skills/graphify/SKILL.md +6 -0
- package/skills/graphwiki/SKILL.md +6 -0
- package/skills/hud/SKILL.md +6 -0
- package/skills/improve-codebase-architecture/SKILL.md +214 -0
- package/skills/interactive-menu/SKILL.md +102 -0
- package/skills/interview/SKILL.md +203 -0
- package/skills/learner/SKILL.md +6 -0
- package/skills/mcp-setup/SKILL.md +6 -0
- package/skills/note/SKILL.md +6 -0
- package/skills/notifications/SKILL.md +190 -0
- package/skills/omp-doctor/SKILL.md +146 -0
- package/skills/omp-plan/SKILL.md +219 -2
- package/skills/omp-reference/SKILL.md +174 -0
- package/skills/omp-setup/SKILL.md +15 -1
- package/skills/pipeline/SKILL.md +6 -0
- package/skills/psm/SKILL.md +6 -0
- package/skills/ralph/SKILL.md +6 -0
- package/skills/ralplan/SKILL.md +148 -0
- package/skills/release/SKILL.md +6 -0
- package/skills/research/SKILL.md +149 -0
- package/skills/session/SKILL.md +220 -0
- package/skills/setup/SKILL.md +6 -0
- package/skills/skillify/SKILL.md +66 -0
- package/skills/spending/SKILL.md +6 -0
- package/skills/swarm/SKILL.md +6 -0
- package/skills/swe-bench/SKILL.md +6 -0
- package/skills/tdd/SKILL.md +246 -0
- package/skills/team/SKILL.md +6 -0
- package/skills/trace/SKILL.md +6 -0
- package/skills/ultrawork/SKILL.md +6 -0
- package/skills/wiki/SKILL.md +6 -0
- package/src/agents/analyst.md +0 -103
- package/src/agents/architect.md +0 -169
- package/src/agents/code-reviewer.md +0 -135
- package/src/agents/critic.md +0 -196
- package/src/agents/debugger.md +0 -132
- package/src/agents/designer.md +0 -103
- package/src/agents/document-specialist.md +0 -111
- package/src/agents/executor.md +0 -120
- package/src/agents/explorer.md +0 -98
- package/src/agents/git-master.md +0 -92
- package/src/agents/orchestrator.md +0 -125
- package/src/agents/planner.md +0 -106
- package/src/agents/qa-tester.md +0 -129
- package/src/agents/researcher.md +0 -102
- package/src/agents/reviewer.md +0 -100
- package/src/agents/scientist.md +0 -150
- package/src/agents/security-reviewer.md +0 -132
- package/src/agents/simplifier.md +0 -109
- package/src/agents/test-engineer.md +0 -124
- package/src/agents/tester.md +0 -102
- package/src/agents/tracer.md +0 -160
- package/src/agents/verifier.md +0 -100
- package/src/agents/writer.md +0 -96
package/dist/skills/setup.mjs
CHANGED
|
@@ -1,38 +1,50 @@
|
|
|
1
|
-
// src/skills/setup.mts
|
|
2
|
-
|
|
1
|
+
// src/skills/omp-setup.mts
|
|
2
|
+
import { fileURLToPath } from "url";
|
|
3
|
+
import { dirname, join } from "path";
|
|
4
|
+
var REQUIRED_COPILOT_EXPERIMENTAL_FEATURES = [
|
|
5
|
+
"STATUS_LINE",
|
|
6
|
+
"SHOW_FILE",
|
|
7
|
+
"EXTENSIONS",
|
|
8
|
+
"BACKGROUND_SESSIONS",
|
|
9
|
+
"CONFIGURE_COPILOT_AGENT",
|
|
10
|
+
"MULTI_TURN_AGENTS",
|
|
11
|
+
"SESSION_STORE"
|
|
12
|
+
];
|
|
13
|
+
function getPackageRoot() {
|
|
14
|
+
return join(dirname(fileURLToPath(import.meta.url)), "..", "..");
|
|
15
|
+
}
|
|
16
|
+
async function activate(input) {
|
|
3
17
|
const { spawn } = await import("child_process");
|
|
4
|
-
const
|
|
5
|
-
const
|
|
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");
|
|
18
|
+
const packageRoot = getPackageRoot();
|
|
19
|
+
const baseArgs = ["bin/omp.mjs", "setup", ...input.args];
|
|
11
20
|
return new Promise((resolve) => {
|
|
12
|
-
const child = spawn("node", baseArgs, {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
21
|
+
const child = spawn("node", baseArgs, {
|
|
22
|
+
cwd: packageRoot,
|
|
23
|
+
stdio: "inherit",
|
|
24
|
+
env: {
|
|
25
|
+
...process.env,
|
|
26
|
+
OMP_COPILOT_REQUIRED_EXPERIMENTAL_FEATURES: process.env["OMP_COPILOT_REQUIRED_EXPERIMENTAL_FEATURES"] ?? REQUIRED_COPILOT_EXPERIMENTAL_FEATURES.join(","),
|
|
27
|
+
OMP_COPILOT_STATUS_LINE_COMMAND: process.env["OMP_COPILOT_STATUS_LINE_COMMAND"] ?? join(packageRoot, "bin", "omp-statusline.sh")
|
|
18
28
|
}
|
|
19
29
|
});
|
|
20
|
-
child.on("
|
|
21
|
-
resolve({ status: "error", message: `
|
|
30
|
+
child.on("close", (code) => {
|
|
31
|
+
resolve({ status: code === 0 ? "ok" : "error", message: `Setup exited with code ${code}` });
|
|
22
32
|
});
|
|
33
|
+
child.on("error", (err) => resolve({ status: "error", message: `Failed to spawn: ${err.message}` }));
|
|
23
34
|
});
|
|
24
35
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
36
|
+
function deactivate() {
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// src/skills/setup.mts
|
|
40
|
+
async function activate2(input) {
|
|
41
|
+
return activate(input);
|
|
42
|
+
}
|
|
43
|
+
function deactivate2() {
|
|
44
|
+
deactivate();
|
|
34
45
|
}
|
|
35
46
|
export {
|
|
36
|
-
activate
|
|
47
|
+
activate2 as activate,
|
|
48
|
+
deactivate2 as deactivate
|
|
37
49
|
};
|
|
38
50
|
//# sourceMappingURL=setup.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../src/skills/setup.mts"],
|
|
4
|
-
"sourcesContent": ["/**\n * setup skill\n *\n *
|
|
5
|
-
"mappings": ";
|
|
6
|
-
"names": ["
|
|
3
|
+
"sources": ["../../src/skills/omp-setup.mts", "../../src/skills/setup.mts"],
|
|
4
|
+
"sourcesContent": ["/**\n * omp-setup skill\n *\n * ID: omp-setup\n * Keywords: setup:, /setup, /omp:setup\n * Tier: developer tool\n *\n * Orchestrates the OMP setup wizard:\n * Phase 1: Base OMP setup (directory structure, first-run guidance)\n * Phase 2: MCP server configuration\n */\n\nimport { fileURLToPath } from \"url\";\nimport { dirname, join } from \"path\";\n\nexport interface SkillInput {\n trigger: string;\n args: string[];\n}\n\nexport interface SkillOutput {\n status: \"ok\" | \"error\";\n message: string;\n}\n\nconst REQUIRED_COPILOT_EXPERIMENTAL_FEATURES = [\n \"STATUS_LINE\",\n \"SHOW_FILE\",\n \"EXTENSIONS\",\n \"BACKGROUND_SESSIONS\",\n \"CONFIGURE_COPILOT_AGENT\",\n \"MULTI_TURN_AGENTS\",\n \"SESSION_STORE\",\n] as const;\n\nfunction getPackageRoot(): string {\n return join(dirname(fileURLToPath(import.meta.url)), \"..\", \"..\");\n}\n\nexport async function activate(input: SkillInput): Promise<SkillOutput> {\n const { spawn } = await import(\"child_process\");\n const packageRoot = getPackageRoot();\n const baseArgs = [\"bin/omp.mjs\", \"setup\", ...input.args];\n return new Promise((resolve) => {\n const child = spawn(\"node\", baseArgs, {\n cwd: packageRoot,\n stdio: \"inherit\",\n env: {\n ...process.env,\n OMP_COPILOT_REQUIRED_EXPERIMENTAL_FEATURES:\n process.env[\"OMP_COPILOT_REQUIRED_EXPERIMENTAL_FEATURES\"] ??\n REQUIRED_COPILOT_EXPERIMENTAL_FEATURES.join(\",\"),\n OMP_COPILOT_STATUS_LINE_COMMAND:\n process.env[\"OMP_COPILOT_STATUS_LINE_COMMAND\"] ??\n join(packageRoot, \"bin\", \"omp-statusline.sh\"),\n },\n });\n child.on(\"close\", (code) => {\n resolve({ status: code === 0 ? \"ok\" : \"error\", message: `Setup exited with code ${code}` });\n });\n child.on(\"error\", (err) => resolve({ status: \"error\", message: `Failed to spawn: ${err.message}` }));\n });\n}\n\nexport function deactivate(): void {\n // No persistent resources to clean up\n}\n", "/**\n * setup skill\n *\n * Legacy alias for `omp-setup`.\n * Keep this wrapper while docs and manifests migrate to the `omp-*` namespace.\n */\n\nimport {\n activate as activateOmpSetup,\n deactivate as deactivateOmpSetup,\n type SkillInput,\n type SkillOutput,\n} from \"./omp-setup.mjs\";\n\nexport type { SkillInput, SkillOutput } from \"./omp-setup.mjs\";\n\nexport async function activate(input: SkillInput): Promise<SkillOutput> {\n return activateOmpSetup(input);\n}\n\nexport function deactivate(): void {\n deactivateOmpSetup();\n}\n"],
|
|
5
|
+
"mappings": ";AAYA,SAAS,qBAAqB;AAC9B,SAAS,SAAS,YAAY;AAY9B,IAAM,yCAAyC;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,SAAS,iBAAyB;AAChC,SAAO,KAAK,QAAQ,cAAc,YAAY,GAAG,CAAC,GAAG,MAAM,IAAI;AACjE;AAEA,eAAsB,SAAS,OAAyC;AACtE,QAAM,EAAE,MAAM,IAAI,MAAM,OAAO,eAAe;AAC9C,QAAM,cAAc,eAAe;AACnC,QAAM,WAAW,CAAC,eAAe,SAAS,GAAG,MAAM,IAAI;AACvD,SAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,UAAM,QAAQ,MAAM,QAAQ,UAAU;AAAA,MACpC,KAAK;AAAA,MACL,OAAO;AAAA,MACP,KAAK;AAAA,QACH,GAAG,QAAQ;AAAA,QACX,4CACE,QAAQ,IAAI,4CAA4C,KACxD,uCAAuC,KAAK,GAAG;AAAA,QACjD,iCACE,QAAQ,IAAI,iCAAiC,KAC7C,KAAK,aAAa,OAAO,mBAAmB;AAAA,MAChD;AAAA,IACF,CAAC;AACD,UAAM,GAAG,SAAS,CAAC,SAAS;AAC1B,cAAQ,EAAE,QAAQ,SAAS,IAAI,OAAO,SAAS,SAAS,0BAA0B,IAAI,GAAG,CAAC;AAAA,IAC5F,CAAC;AACD,UAAM,GAAG,SAAS,CAAC,QAAQ,QAAQ,EAAE,QAAQ,SAAS,SAAS,oBAAoB,IAAI,OAAO,GAAG,CAAC,CAAC;AAAA,EACrG,CAAC;AACH;AAEO,SAAS,aAAmB;AAEnC;;;AClDA,eAAsBA,UAAS,OAAyC;AACtE,SAAO,SAAiB,KAAK;AAC/B;AAEO,SAASC,cAAmB;AACjC,aAAmB;AACrB;",
|
|
6
|
+
"names": ["activate", "deactivate"]
|
|
7
7
|
}
|
package/hooks/hooks.json
CHANGED
|
@@ -1,47 +1,41 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
3
|
-
"hooks":
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
"entry": "./dist/hooks/stop-continuation.mjs",
|
|
42
|
-
"trigger": "PostToolUse",
|
|
43
|
-
"timeoutMs": 200,
|
|
44
|
-
"priority": 50
|
|
45
|
-
}
|
|
46
|
-
]
|
|
2
|
+
"version": 1,
|
|
3
|
+
"hooks": {
|
|
4
|
+
"UserPromptSubmitted": [
|
|
5
|
+
{
|
|
6
|
+
"type": "command",
|
|
7
|
+
"bash": "node ./bin/omp.mjs hook keyword-detector",
|
|
8
|
+
"timeoutSec": 0.2
|
|
9
|
+
}
|
|
10
|
+
],
|
|
11
|
+
"PreToolUse": [
|
|
12
|
+
{
|
|
13
|
+
"type": "command",
|
|
14
|
+
"bash": "node ./dist/hooks/delegation-enforcer.mjs",
|
|
15
|
+
"timeoutSec": 0.2
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"type": "command",
|
|
19
|
+
"bash": "node ./dist/hooks/model-router.mjs",
|
|
20
|
+
"timeoutSec": 0.2
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
"PostToolUse": [
|
|
24
|
+
{
|
|
25
|
+
"type": "command",
|
|
26
|
+
"bash": "node ./dist/hooks/token-tracker.mjs",
|
|
27
|
+
"timeoutSec": 0.2
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"type": "command",
|
|
31
|
+
"bash": "node ./dist/hooks/hud-emitter.mjs",
|
|
32
|
+
"timeoutSec": 0.2
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"type": "command",
|
|
36
|
+
"bash": "node ./dist/hooks/stop-continuation.mjs",
|
|
37
|
+
"timeoutSec": 0.2
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
}
|
|
47
41
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "oh-my-githubcopilot",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Multi-agent orchestration for GitHub Copilot CLI. 23 agents,
|
|
3
|
+
"version": "1.8.0-alpha.f50f59a",
|
|
4
|
+
"description": "Multi-agent orchestration for GitHub Copilot CLI. 23 agents, 39 skills, parallel execution, HUD, PSM, SWE-bench.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "r3dlex"
|
|
7
7
|
},
|
|
@@ -21,17 +21,21 @@
|
|
|
21
21
|
"omp": "./bin/omp.mjs"
|
|
22
22
|
},
|
|
23
23
|
"files": [
|
|
24
|
+
"README.md",
|
|
24
25
|
"dist/",
|
|
25
26
|
"bin/",
|
|
27
|
+
"agents/",
|
|
26
28
|
"skills/",
|
|
27
29
|
"hooks/",
|
|
28
|
-
"
|
|
30
|
+
"plugin.json",
|
|
31
|
+
".mcp.json",
|
|
29
32
|
".claude-plugin/",
|
|
30
33
|
"AGENTS.md",
|
|
31
34
|
"CHANGELOG.md",
|
|
32
35
|
"LICENSE"
|
|
33
36
|
],
|
|
34
37
|
"scripts": {
|
|
38
|
+
"hud:watch": "node --import tsx src/index.mts hud --watch",
|
|
35
39
|
"build": "node --import tsx esbuild.config.mts",
|
|
36
40
|
"dev": "node --import tsx --watch esbuild.config.mts",
|
|
37
41
|
"test": "vitest run",
|
|
@@ -40,8 +44,9 @@
|
|
|
40
44
|
"lint": "eslint src/",
|
|
41
45
|
"format": "prettier --write src/",
|
|
42
46
|
"typecheck": "tsc --noEmit",
|
|
43
|
-
"sync-claude-plugin": "cp
|
|
47
|
+
"sync-claude-plugin": "cp plugin.json .claude-plugin/plugin.json",
|
|
44
48
|
"prepublishOnly": "npm run build && npm run sync-claude-plugin",
|
|
49
|
+
"postinstall": "[ -d dist ] || npm run build",
|
|
45
50
|
"archgate:init": "npx archgate init --editor claude",
|
|
46
51
|
"archgate:check": "npx archgate check"
|
|
47
52
|
},
|
package/plugin.json
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "1.0",
|
|
3
|
+
"name": "oh-my-githubcopilot",
|
|
4
|
+
"version": "1.8.0",
|
|
5
|
+
"description": "Multi-agent orchestration for GitHub Copilot CLI. 23 agents, 39 skills, parallel execution, HUD, PSM, SWE-bench.",
|
|
6
|
+
"author": {
|
|
7
|
+
"name": "r3dlex"
|
|
8
|
+
},
|
|
9
|
+
"repository": "https://github.com/r3dlex/oh-my-githubcopilot",
|
|
10
|
+
"license": "Apache-2.0",
|
|
11
|
+
"keywords": [
|
|
12
|
+
"orchestration",
|
|
13
|
+
"multi-agent",
|
|
14
|
+
"autopilot",
|
|
15
|
+
"swe-bench",
|
|
16
|
+
"hud",
|
|
17
|
+
"copilot-cli"
|
|
18
|
+
],
|
|
19
|
+
"agents": [
|
|
20
|
+
"./agents"
|
|
21
|
+
],
|
|
22
|
+
"skills": [
|
|
23
|
+
"./skills/autopilot",
|
|
24
|
+
"./skills/ralph",
|
|
25
|
+
"./skills/ultrawork",
|
|
26
|
+
"./skills/team",
|
|
27
|
+
"./skills/ecomode",
|
|
28
|
+
"./skills/swarm",
|
|
29
|
+
"./skills/pipeline",
|
|
30
|
+
"./skills/deep-interview",
|
|
31
|
+
"./skills/omp-plan",
|
|
32
|
+
"./skills/omp-setup",
|
|
33
|
+
"./skills/hud",
|
|
34
|
+
"./skills/wiki",
|
|
35
|
+
"./skills/learner",
|
|
36
|
+
"./skills/note",
|
|
37
|
+
"./skills/trace",
|
|
38
|
+
"./skills/release",
|
|
39
|
+
"./skills/configure-notifications",
|
|
40
|
+
"./skills/psm",
|
|
41
|
+
"./skills/swe-bench",
|
|
42
|
+
"./skills/mcp-setup",
|
|
43
|
+
"./skills/setup",
|
|
44
|
+
"./skills/graphify",
|
|
45
|
+
"./skills/graphwiki",
|
|
46
|
+
"./skills/graph-provider",
|
|
47
|
+
"./skills/spending",
|
|
48
|
+
"./skills/ralplan",
|
|
49
|
+
"./skills/research",
|
|
50
|
+
"./skills/omp-doctor",
|
|
51
|
+
"./skills/omp-reference",
|
|
52
|
+
"./skills/ai-slop-cleaner",
|
|
53
|
+
"./skills/tdd",
|
|
54
|
+
"./skills/improve-codebase-architecture",
|
|
55
|
+
"./skills/skillify",
|
|
56
|
+
"./skills/interview",
|
|
57
|
+
"./skills/graph-context",
|
|
58
|
+
"./skills/interactive-menu",
|
|
59
|
+
"./skills/notifications",
|
|
60
|
+
"./skills/doctor",
|
|
61
|
+
"./skills/session"
|
|
62
|
+
],
|
|
63
|
+
"hooks": "./hooks/hooks.json",
|
|
64
|
+
"mcp": "./.mcp.json",
|
|
65
|
+
"entryPoints": {
|
|
66
|
+
"cli": "./bin/omp.mjs",
|
|
67
|
+
"mcp": "./dist/mcp/server.mjs"
|
|
68
|
+
},
|
|
69
|
+
"agentFormat": ".agent.md",
|
|
70
|
+
"agentFilePattern": "*.agent.md"
|
|
71
|
+
}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ai-slop-cleaner
|
|
3
|
+
description: Clean AI-generated code slop with a regression-safe, deletion-first workflow and optional reviewer-only mode
|
|
4
|
+
level: 3
|
|
5
|
+
triggers:
|
|
6
|
+
- deslop
|
|
7
|
+
- /omp:ai-slop-cleaner
|
|
8
|
+
- anti-slop
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# AI Slop Cleaner
|
|
12
|
+
|
|
13
|
+
Use this skill to clean AI-generated code slop without drifting scope or changing intended behavior. In OMP, this is the bounded cleanup workflow for code that works but feels bloated, repetitive, weakly tested, or over-abstracted.
|
|
14
|
+
|
|
15
|
+
## When to Use
|
|
16
|
+
|
|
17
|
+
Use this skill when:
|
|
18
|
+
- the user explicitly says `deslop`, `anti-slop`, or `AI slop`
|
|
19
|
+
- the request is to clean up or refactor code that feels noisy, repetitive, or overly abstract
|
|
20
|
+
- follow-up implementation left duplicate logic, dead code, wrapper layers, boundary leaks, or weak regression coverage
|
|
21
|
+
- the user wants a reviewer-only anti-slop pass via `--review`
|
|
22
|
+
- the goal is simplification and cleanup, not new feature delivery
|
|
23
|
+
|
|
24
|
+
## When Not to Use
|
|
25
|
+
|
|
26
|
+
Do not use this skill when:
|
|
27
|
+
- the task is mainly a new feature build or product change
|
|
28
|
+
- the user wants a broad redesign instead of an incremental cleanup pass
|
|
29
|
+
- the request is a generic refactor with no simplification or anti-slop intent
|
|
30
|
+
- behavior is too unclear to protect with tests or a concrete verification plan
|
|
31
|
+
|
|
32
|
+
## OMP Execution Posture
|
|
33
|
+
|
|
34
|
+
- Preserve behavior unless the user explicitly asks for behavior changes.
|
|
35
|
+
- Lock behavior with focused regression tests first whenever practical.
|
|
36
|
+
- Write a cleanup plan before editing code.
|
|
37
|
+
- Prefer deletion over addition.
|
|
38
|
+
- Reuse existing utilities and patterns before introducing new ones.
|
|
39
|
+
- Avoid new dependencies unless the user explicitly requests them.
|
|
40
|
+
- Keep diffs small, reversible, and smell-focused.
|
|
41
|
+
- Stay concise and evidence-dense: inspect, edit, verify, and report.
|
|
42
|
+
- Treat new user instructions as local scope updates without dropping earlier non-conflicting constraints.
|
|
43
|
+
|
|
44
|
+
## Scoped File-List Usage
|
|
45
|
+
|
|
46
|
+
This skill can be bounded to an explicit file list or changed-file scope when the caller already knows the safe cleanup surface.
|
|
47
|
+
|
|
48
|
+
- Good fit: `omp:ai-slop-cleaner skills/ralph/SKILL.md skills/ai-slop-cleaner/SKILL.md`
|
|
49
|
+
- Good fit: a Ralph session handing off only the files changed in that session
|
|
50
|
+
- Preserve the same regression-safe workflow even when the scope is a short file list
|
|
51
|
+
- Do not silently expand a changed-file scope into broader cleanup work unless the user explicitly asks for it
|
|
52
|
+
|
|
53
|
+
## Ralph Integration
|
|
54
|
+
|
|
55
|
+
omp:ralph can invoke this skill as a bounded post-review cleanup pass.
|
|
56
|
+
|
|
57
|
+
- In that workflow, the cleaner runs in standard mode (not `--review`)
|
|
58
|
+
- The cleanup scope is the Ralph session's changed files only
|
|
59
|
+
- After the cleanup pass, Ralph re-runs regression verification before completion
|
|
60
|
+
- `--review` remains the reviewer-only follow-up mode, not the default Ralph integration path
|
|
61
|
+
|
|
62
|
+
## Review Mode (`--review`)
|
|
63
|
+
|
|
64
|
+
`--review` is a reviewer-only pass after cleanup work is drafted. It exists to preserve explicit writer/reviewer separation for anti-slop work.
|
|
65
|
+
|
|
66
|
+
- **Writer pass**: make the cleanup changes with behavior locked by tests.
|
|
67
|
+
- **Reviewer pass**: inspect the cleanup plan, changed files, and verification evidence.
|
|
68
|
+
- The same pass must not both write and self-approve high-impact cleanup without a separate review step.
|
|
69
|
+
|
|
70
|
+
In review mode:
|
|
71
|
+
1. Do **not** start by editing files.
|
|
72
|
+
2. Review the cleanup plan, changed files, and regression coverage.
|
|
73
|
+
3. Check specifically for:
|
|
74
|
+
- leftover dead code or unused exports
|
|
75
|
+
- duplicate logic that should have been consolidated
|
|
76
|
+
- needless wrappers or abstractions that still blur boundaries
|
|
77
|
+
- missing tests or weak verification for preserved behavior
|
|
78
|
+
- cleanup that appears to have changed behavior without intent
|
|
79
|
+
4. Produce a reviewer verdict with required follow-ups.
|
|
80
|
+
5. Hand needed changes back to a separate writer pass instead of fixing and approving in one step.
|
|
81
|
+
|
|
82
|
+
## Workflow
|
|
83
|
+
|
|
84
|
+
1. **Protect current behavior first**
|
|
85
|
+
- Identify what must stay the same.
|
|
86
|
+
- Add or run the narrowest regression tests needed before editing.
|
|
87
|
+
- If tests cannot come first, record the verification plan explicitly before touching code.
|
|
88
|
+
|
|
89
|
+
2. **Write a cleanup plan before code**
|
|
90
|
+
- Bound the pass to the requested files or feature area.
|
|
91
|
+
- List the concrete smells to remove.
|
|
92
|
+
- Order the work from safest deletion to riskier consolidation.
|
|
93
|
+
|
|
94
|
+
3. **Classify the slop before editing**
|
|
95
|
+
- **Duplication** — repeated logic, copy-paste branches, redundant helpers
|
|
96
|
+
- **Dead code** — unused code, unreachable branches, stale flags, debug leftovers
|
|
97
|
+
- **Needless abstraction** — pass-through wrappers, speculative indirection, single-use helper layers
|
|
98
|
+
- **Boundary violations** — hidden coupling, misplaced responsibilities, wrong-layer imports or side effects
|
|
99
|
+
- **Missing tests** — behavior not locked, weak regression coverage, edge-case gaps
|
|
100
|
+
|
|
101
|
+
4. **Run one smell-focused pass at a time**
|
|
102
|
+
- **Pass 1: Dead code deletion**
|
|
103
|
+
- **Pass 2: Duplicate removal**
|
|
104
|
+
- **Pass 3: Naming and error-handling cleanup**
|
|
105
|
+
- **Pass 4: Test reinforcement**
|
|
106
|
+
- Re-run targeted verification after each pass.
|
|
107
|
+
- Do not bundle unrelated refactors into the same edit set.
|
|
108
|
+
|
|
109
|
+
5. **Run the quality gates**
|
|
110
|
+
- Keep regression tests green.
|
|
111
|
+
- Run the relevant lint, typecheck, and unit/integration tests for the touched area.
|
|
112
|
+
- Run existing static or security checks when available.
|
|
113
|
+
- If a gate fails, fix the issue or back out the risky cleanup instead of forcing it through.
|
|
114
|
+
|
|
115
|
+
6. **Close with an evidence-dense report**
|
|
116
|
+
Always report:
|
|
117
|
+
- **Changed files**
|
|
118
|
+
- **Simplifications**
|
|
119
|
+
- **Behavior lock / verification run**
|
|
120
|
+
- **Remaining risks**
|
|
121
|
+
|
|
122
|
+
## Usage
|
|
123
|
+
|
|
124
|
+
- `/omp:ai-slop-cleaner <target>`
|
|
125
|
+
- `/omp:ai-slop-cleaner <target> --review`
|
|
126
|
+
- `/omp:ai-slop-cleaner <file-a> <file-b> <file-c>`
|
|
127
|
+
- From omp:ralph: run the cleaner on the Ralph session's changed files only, then return to Ralph for post-cleanup regression verification
|
|
128
|
+
|
|
129
|
+
## Good Fits
|
|
130
|
+
|
|
131
|
+
**Good:** `deslop this module: too many wrappers, duplicate helpers, and dead code`
|
|
132
|
+
|
|
133
|
+
**Good:** `cleanup the AI slop in src/auth and tighten boundaries without changing behavior`
|
|
134
|
+
|
|
135
|
+
**Bad:** `refactor auth to support SSO`
|
|
136
|
+
|
|
137
|
+
**Bad:** `clean up formatting`
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: doctor
|
|
3
|
+
description: Diagnose and fix common issues. Use for "debug", "fix this", "what's wrong", and "doctor".
|
|
4
|
+
trigger: "doctor:, /doctor, /omp:doctor"
|
|
5
|
+
autoinvoke: false
|
|
6
|
+
---
|
|
7
|
+
# Skill: Doctor
|
|
8
|
+
|
|
9
|
+
## Metadata
|
|
10
|
+
|
|
11
|
+
| Field | Value |
|
|
12
|
+
|-------|-------|
|
|
13
|
+
| **ID** | `doctor` |
|
|
14
|
+
| **Keywords** | `doctor:`, `/doctor` |
|
|
15
|
+
| **Tier** | Developer Tool |
|
|
16
|
+
| **Source** | `src/skills/doctor.mts` |
|
|
17
|
+
|
|
18
|
+
## Description
|
|
19
|
+
|
|
20
|
+
Diagnose problems and prescribe solutions based on symptoms. A general-purpose Socratic diagnostic for any error, failure, or unexpected behavior — not limited to OMP installation issues.
|
|
21
|
+
|
|
22
|
+
## Differentiation from omp-doctor
|
|
23
|
+
|
|
24
|
+
| Aspect | doctor | omp-doctor |
|
|
25
|
+
|--------|--------|------------|
|
|
26
|
+
| **Scope** | Any problem: errors, performance, config, setup | OMP-specific: plugin version, skills dir, agents dir, plugin.json |
|
|
27
|
+
| **Method** | Symptom collection -> hypothesis -> root cause -> prescription | Structured installation checks with known pass/fail criteria |
|
|
28
|
+
| **Use when** | Something is broken and you don't know why | OMP itself is not working correctly after install |
|
|
29
|
+
|
|
30
|
+
## Interface
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
interface SkillInput {
|
|
34
|
+
trigger: string;
|
|
35
|
+
args: string[];
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
interface SkillOutput {
|
|
39
|
+
status: "ok" | "error";
|
|
40
|
+
message: string;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export async function activate(input: SkillInput): Promise<SkillOutput>
|
|
44
|
+
export function deactivate(): void
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Implementation
|
|
48
|
+
|
|
49
|
+
Spawns `bin/omp.mjs doctor [args]`. No persistent resources are maintained.
|
|
50
|
+
|
|
51
|
+
## When to Use
|
|
52
|
+
|
|
53
|
+
- Unexpected errors or failures
|
|
54
|
+
- Degraded performance
|
|
55
|
+
- Configuration issues
|
|
56
|
+
- Setup problems
|
|
57
|
+
- "Something is wrong"
|
|
58
|
+
|
|
59
|
+
## Diagnosis Process
|
|
60
|
+
|
|
61
|
+
### 1. Collect Symptoms
|
|
62
|
+
- Error messages
|
|
63
|
+
- Behavior observed
|
|
64
|
+
- When it started
|
|
65
|
+
- Recent changes
|
|
66
|
+
|
|
67
|
+
### 2. Identify Possible Causes
|
|
68
|
+
- Based on symptoms
|
|
69
|
+
- Known patterns
|
|
70
|
+
- Recent updates
|
|
71
|
+
- Environmental changes
|
|
72
|
+
|
|
73
|
+
### 3. Narrow Down
|
|
74
|
+
- Test each hypothesis
|
|
75
|
+
- Eliminate unlikely causes
|
|
76
|
+
- Gather more data
|
|
77
|
+
|
|
78
|
+
### 4. Prescribe Fix
|
|
79
|
+
- Root cause identified
|
|
80
|
+
- Solution determined
|
|
81
|
+
- Steps to resolve
|
|
82
|
+
- Prevention
|
|
83
|
+
|
|
84
|
+
## Common Diagnoses
|
|
85
|
+
|
|
86
|
+
### "Command not found"
|
|
87
|
+
**Possible causes:**
|
|
88
|
+
- PATH misconfiguration
|
|
89
|
+
- Installation incomplete
|
|
90
|
+
- Typo in command name
|
|
91
|
+
- Shell not reloaded
|
|
92
|
+
|
|
93
|
+
**Fix:**
|
|
94
|
+
```bash
|
|
95
|
+
# Check PATH
|
|
96
|
+
echo $PATH
|
|
97
|
+
|
|
98
|
+
# Verify installation
|
|
99
|
+
which {command}
|
|
100
|
+
|
|
101
|
+
# Reload shell
|
|
102
|
+
source ~/.zshrc
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### "Permission denied"
|
|
106
|
+
**Possible causes:**
|
|
107
|
+
- File ownership wrong
|
|
108
|
+
- Missing execute bit
|
|
109
|
+
- SELinux/AppArmor
|
|
110
|
+
- Sandbox restrictions
|
|
111
|
+
|
|
112
|
+
**Fix:**
|
|
113
|
+
```bash
|
|
114
|
+
# Fix ownership
|
|
115
|
+
chown {user}:{group} {file}
|
|
116
|
+
|
|
117
|
+
# Add execute
|
|
118
|
+
chmod +x {file}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### "Module not found"
|
|
122
|
+
**Possible causes:**
|
|
123
|
+
- Not installed
|
|
124
|
+
- Wrong environment
|
|
125
|
+
- PYTHONPATH issue
|
|
126
|
+
- Virtual env not activated
|
|
127
|
+
|
|
128
|
+
**Fix:**
|
|
129
|
+
```bash
|
|
130
|
+
# Install if needed
|
|
131
|
+
pip install {module}
|
|
132
|
+
|
|
133
|
+
# Check environment
|
|
134
|
+
which python
|
|
135
|
+
|
|
136
|
+
# Set PYTHONPATH
|
|
137
|
+
export PYTHONPATH={path}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Output Format
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
## Doctor: {issue}
|
|
144
|
+
|
|
145
|
+
### Symptoms Reported
|
|
146
|
+
- {symptom 1}
|
|
147
|
+
- {symptom 2}
|
|
148
|
+
|
|
149
|
+
### Diagnosis
|
|
150
|
+
|
|
151
|
+
#### Possible Causes
|
|
152
|
+
| Cause | Likelihood | Evidence |
|
|
153
|
+
|-------|------------|----------|
|
|
154
|
+
| {cause 1} | High | {evidence} |
|
|
155
|
+
| {cause 2} | Low | {evidence} |
|
|
156
|
+
|
|
157
|
+
#### Root Cause
|
|
158
|
+
**Identified:** {cause}
|
|
159
|
+
**Confidence:** {percentage}
|
|
160
|
+
|
|
161
|
+
### Prescription
|
|
162
|
+
|
|
163
|
+
#### Fix Steps
|
|
164
|
+
\`\`\`bash
|
|
165
|
+
{step 1}
|
|
166
|
+
{step 2}
|
|
167
|
+
\`\`\`
|
|
168
|
+
|
|
169
|
+
#### Verification
|
|
170
|
+
\`\`\`bash
|
|
171
|
+
{verify command}
|
|
172
|
+
\`\`\`
|
|
173
|
+
|
|
174
|
+
### Prevention
|
|
175
|
+
{how to prevent recurrence}
|
|
176
|
+
|
|
177
|
+
### Outcome
|
|
178
|
+
**Status:** {resolved|partial|unresolved}
|
|
179
|
+
**Follow-up:** {if needed}
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## Constraints
|
|
183
|
+
|
|
184
|
+
- Collect evidence before diagnosing
|
|
185
|
+
- Start with common causes
|
|
186
|
+
- Verify fixes work
|
|
187
|
+
- Document solutions
|
|
188
|
+
- Build pattern library
|