oh-my-githubcopilot 1.4.1 → 1.5.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/.claude-plugin/plugin.json +11 -3
  2. package/.mcp.json +17 -0
  3. package/CHANGELOG.md +124 -1
  4. package/README.md +162 -82
  5. package/agents/analyst.agent.md +27 -0
  6. package/agents/architect.agent.md +24 -0
  7. package/agents/code-reviewer.agent.md +24 -0
  8. package/agents/critic.agent.md +24 -0
  9. package/agents/debugger.agent.md +24 -0
  10. package/agents/designer.agent.md +24 -0
  11. package/agents/document-specialist.agent.md +24 -0
  12. package/agents/executor.agent.md +27 -0
  13. package/agents/explorer.agent.md +23 -0
  14. package/agents/git-master.agent.md +24 -0
  15. package/agents/orchestrator.agent.md +26 -0
  16. package/agents/planner.agent.md +24 -0
  17. package/agents/qa-tester.agent.md +24 -0
  18. package/agents/researcher.agent.md +18 -0
  19. package/agents/reviewer.agent.md +23 -0
  20. package/agents/scientist.agent.md +20 -0
  21. package/agents/security-reviewer.agent.md +20 -0
  22. package/agents/simplifier.agent.md +20 -0
  23. package/agents/test-engineer.agent.md +20 -0
  24. package/agents/tester.agent.md +20 -0
  25. package/agents/tracer.agent.md +24 -0
  26. package/agents/verifier.agent.md +19 -0
  27. package/agents/writer.agent.md +24 -0
  28. package/bin/omp-statusline.mjs +179 -0
  29. package/bin/omp-statusline.mjs.map +7 -0
  30. package/bin/omp-statusline.sh +21 -0
  31. package/bin/omp.mjs +302 -13
  32. package/bin/omp.mjs.map +4 -4
  33. package/dist/hooks/hud-emitter.mjs +268 -82
  34. package/dist/hooks/hud-emitter.mjs.map +4 -4
  35. package/dist/hooks/keyword-detector.mjs +83 -21
  36. package/dist/hooks/keyword-detector.mjs.map +2 -2
  37. package/dist/hooks/model-router.mjs +1 -1
  38. package/dist/hooks/model-router.mjs.map +1 -1
  39. package/dist/hooks/stop-continuation.mjs +1 -1
  40. package/dist/hooks/stop-continuation.mjs.map +1 -1
  41. package/dist/hooks/token-tracker.mjs +2 -1
  42. package/dist/hooks/token-tracker.mjs.map +2 -2
  43. package/dist/mcp/server.mjs +57 -41
  44. package/dist/mcp/server.mjs.map +4 -4
  45. package/dist/skills/setup.mjs +39 -27
  46. package/dist/skills/setup.mjs.map +4 -4
  47. package/hooks/hooks.json +39 -45
  48. package/package.json +7 -3
  49. package/plugin.json +49 -0
  50. package/skills/autopilot/SKILL.md +6 -0
  51. package/skills/configure-notifications/SKILL.md +6 -0
  52. package/skills/deep-interview/SKILL.md +6 -0
  53. package/skills/ecomode/SKILL.md +6 -0
  54. package/skills/graph-provider/SKILL.md +6 -0
  55. package/skills/graphify/SKILL.md +6 -0
  56. package/skills/graphwiki/SKILL.md +6 -0
  57. package/skills/hud/SKILL.md +6 -0
  58. package/skills/learner/SKILL.md +6 -0
  59. package/skills/mcp-setup/SKILL.md +6 -0
  60. package/skills/note/SKILL.md +6 -0
  61. package/skills/omp-plan/SKILL.md +6 -0
  62. package/skills/omp-setup/SKILL.md +15 -1
  63. package/skills/pipeline/SKILL.md +6 -0
  64. package/skills/psm/SKILL.md +6 -0
  65. package/skills/ralph/SKILL.md +6 -0
  66. package/skills/release/SKILL.md +6 -0
  67. package/skills/setup/SKILL.md +6 -0
  68. package/skills/spending/SKILL.md +6 -0
  69. package/skills/swarm/SKILL.md +6 -0
  70. package/skills/swe-bench/SKILL.md +6 -0
  71. package/skills/team/SKILL.md +6 -0
  72. package/skills/trace/SKILL.md +6 -0
  73. package/skills/ultrawork/SKILL.md +6 -0
  74. package/skills/wiki/SKILL.md +6 -0
  75. package/src/agents/analyst.md +0 -103
  76. package/src/agents/architect.md +0 -169
  77. package/src/agents/code-reviewer.md +0 -135
  78. package/src/agents/critic.md +0 -196
  79. package/src/agents/debugger.md +0 -132
  80. package/src/agents/designer.md +0 -103
  81. package/src/agents/document-specialist.md +0 -111
  82. package/src/agents/executor.md +0 -120
  83. package/src/agents/explorer.md +0 -98
  84. package/src/agents/git-master.md +0 -92
  85. package/src/agents/orchestrator.md +0 -125
  86. package/src/agents/planner.md +0 -106
  87. package/src/agents/qa-tester.md +0 -129
  88. package/src/agents/researcher.md +0 -102
  89. package/src/agents/reviewer.md +0 -100
  90. package/src/agents/scientist.md +0 -150
  91. package/src/agents/security-reviewer.md +0 -132
  92. package/src/agents/simplifier.md +0 -109
  93. package/src/agents/test-engineer.md +0 -124
  94. package/src/agents/tester.md +0 -102
  95. package/src/agents/tracer.md +0 -160
  96. package/src/agents/verifier.md +0 -100
  97. package/src/agents/writer.md +0 -96
@@ -1,38 +1,50 @@
1
- // src/skills/setup.mts
2
- async function activate(input2) {
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 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");
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, { 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}` });
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("error", (err) => {
21
- resolve({ status: "error", message: `Failed to spawn omp setup: ${err.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
- 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("");
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 * 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"]
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
- "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
- ]
2
+ "version": 1,
3
+ "hooks": {
4
+ "UserPromptSubmitted": [
5
+ {
6
+ "type": "command",
7
+ "bash": "node ./dist/hooks/keyword-detector.mjs",
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,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-githubcopilot",
3
- "version": "1.4.1",
3
+ "version": "1.5.7",
4
4
  "description": "Multi-agent orchestration for GitHub Copilot CLI. 23 agents, 25 skills, parallel execution, HUD, PSM, SWE-bench.",
5
5
  "author": {
6
6
  "name": "r3dlex"
@@ -23,15 +23,18 @@
23
23
  "files": [
24
24
  "dist/",
25
25
  "bin/",
26
+ "agents/",
26
27
  "skills/",
27
28
  "hooks/",
28
- "src/agents/",
29
+ "plugin.json",
30
+ ".mcp.json",
29
31
  ".claude-plugin/",
30
32
  "AGENTS.md",
31
33
  "CHANGELOG.md",
32
34
  "LICENSE"
33
35
  ],
34
36
  "scripts": {
37
+ "hud:watch": "node --import tsx src/index.mts hud --watch",
35
38
  "build": "node --import tsx esbuild.config.mts",
36
39
  "dev": "node --import tsx --watch esbuild.config.mts",
37
40
  "test": "vitest run",
@@ -40,8 +43,9 @@
40
43
  "lint": "eslint src/",
41
44
  "format": "prettier --write src/",
42
45
  "typecheck": "tsc --noEmit",
43
- "sync-claude-plugin": "cp .github/plugin/plugin.json .claude-plugin/plugin.json",
46
+ "sync-claude-plugin": "cp plugin.json .claude-plugin/plugin.json",
44
47
  "prepublishOnly": "npm run build && npm run sync-claude-plugin",
48
+ "postinstall": "[ -d dist ] || npm run build",
45
49
  "archgate:init": "npx archgate init --editor claude",
46
50
  "archgate:check": "npx archgate check"
47
51
  },
package/plugin.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "name": "oh-my-githubcopilot",
4
+ "version": "1.5.7",
5
+ "description": "Multi-agent orchestration for GitHub Copilot CLI. 23 agents, 25 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": ["./agents"],
20
+ "skills": [
21
+ "./skills/autopilot",
22
+ "./skills/ralph",
23
+ "./skills/ultrawork",
24
+ "./skills/team",
25
+ "./skills/ecomode",
26
+ "./skills/swarm",
27
+ "./skills/pipeline",
28
+ "./skills/deep-interview",
29
+ "./skills/omp-plan",
30
+ "./skills/omp-setup",
31
+ "./skills/hud",
32
+ "./skills/wiki",
33
+ "./skills/learner",
34
+ "./skills/note",
35
+ "./skills/trace",
36
+ "./skills/release",
37
+ "./skills/configure-notifications",
38
+ "./skills/psm",
39
+ "./skills/swe-bench",
40
+ "./skills/mcp-setup",
41
+ "./skills/setup",
42
+ "./skills/graphify",
43
+ "./skills/graphwiki",
44
+ "./skills/graph-provider",
45
+ "./skills/spending"
46
+ ],
47
+ "hooks": "./hooks/hooks.json",
48
+ "mcp": "./.mcp.json"
49
+ }
@@ -1,3 +1,9 @@
1
+ ---
2
+ name: autopilot
3
+ description: Autonomous end-to-end execution from idea to working code
4
+ trigger: "autopilot:, /autopilot, /omp:autopilot"
5
+ autoinvoke: false
6
+ ---
1
7
  # Skill: Autopilot
2
8
 
3
9
  ## Metadata
@@ -1,3 +1,9 @@
1
+ ---
2
+ name: configure-notifications
3
+ description: Configure session notification settings
4
+ trigger: "configure-notifications:, /configure-notifications, /omp:configure-notifications"
5
+ autoinvoke: false
6
+ ---
1
7
  # Skill: Configure-Notifications
2
8
 
3
9
  ## Metadata
@@ -1,3 +1,9 @@
1
+ ---
2
+ name: deep-interview
3
+ description: Deep requirements interview workflow
4
+ trigger: "deep interview:, /deep-interview, /omp:deep-interview"
5
+ autoinvoke: false
6
+ ---
1
7
  # Skill: Deep-Interview
2
8
 
3
9
  ## Metadata
@@ -1,3 +1,9 @@
1
+ ---
2
+ name: ecomode
3
+ description: Cost-optimized execution with haiku model tier
4
+ trigger: "eco:, /eco, ecomode:, /omp:eco, /omp:ecomode"
5
+ autoinvoke: false
6
+ ---
1
7
  # Skill: Ecomode
2
8
 
3
9
  ## Metadata
@@ -1,3 +1,9 @@
1
+ ---
2
+ name: graph-provider
3
+ description: Manage and configure the active graph provider
4
+ trigger: "graph:, /graph-provider, /omp:graph-provider"
5
+ autoinvoke: false
6
+ ---
1
7
  # Skill: Graph Provider
2
8
 
3
9
  ## Metadata
@@ -1,3 +1,9 @@
1
+ ---
2
+ name: graphify
3
+ description: Convert any input to a knowledge graph
4
+ trigger: "graphify:, /graphify, /omp:graphify, graph build, build graph"
5
+ autoinvoke: false
6
+ ---
1
7
  # Skill: Graphify
2
8
 
3
9
  ## Metadata
@@ -1,3 +1,9 @@
1
+ ---
2
+ name: graphwiki
3
+ description: GraphWiki CLI operations: query, lint, build
4
+ trigger: "graphwiki:, /graphwiki, /omp:graphwiki"
5
+ autoinvoke: false
6
+ ---
1
7
  # Skill: GraphWiki
2
8
 
3
9
  ## Metadata
@@ -1,3 +1,9 @@
1
+ ---
2
+ name: hud
3
+ description: Display current HUD session state
4
+ trigger: "hud:, /hud, /omp:hud"
5
+ autoinvoke: false
6
+ ---
1
7
  # Skill: HUD
2
8
 
3
9
  ## Metadata
@@ -1,3 +1,9 @@
1
+ ---
2
+ name: learner
3
+ description: Structured learning and knowledge sessions
4
+ trigger: "learner:, /learner, /omp:learner"
5
+ autoinvoke: false
6
+ ---
1
7
  # Skill: Learner
2
8
 
3
9
  ## Metadata
@@ -1,3 +1,9 @@
1
+ ---
2
+ name: mcp-setup
3
+ description: MCP server configuration wizard
4
+ trigger: "mcp:, mcp-setup:, /mcp, /mcp-setup, /omp:mcp-setup"
5
+ autoinvoke: false
6
+ ---
1
7
  # Skill: MCP-Setup
2
8
 
3
9
  ## Metadata
@@ -1,3 +1,9 @@
1
+ ---
2
+ name: note
3
+ description: Session notes and context management
4
+ trigger: "note:, /note, /omp:note"
5
+ autoinvoke: false
6
+ ---
1
7
  # Skill: Note
2
8
 
3
9
  ## Metadata
@@ -1,3 +1,9 @@
1
+ ---
2
+ name: omp-plan
3
+ description: OMP-aware strategic planning
4
+ trigger: "plan:, /plan, /omp:plan, /omp-plan"
5
+ autoinvoke: false
6
+ ---
1
7
  # Skill: OMP-Plan
2
8
 
3
9
  ## Metadata
@@ -1,3 +1,9 @@
1
+ ---
2
+ name: omp-setup
3
+ description: OMP onboarding and configuration wizard
4
+ trigger: "setup:, /setup, /omp:setup, /omp-setup"
5
+ autoinvoke: false
6
+ ---
1
7
  # Skill: OMP-Setup
2
8
 
3
9
  ## Metadata
@@ -13,6 +19,8 @@
13
19
 
14
20
  Orchestrates the OMP setup wizard:
15
21
  - Phase 1: Base OMP setup (directory structure, first-run guidance)
22
+ - Phase 1.5: Merge required Copilot experimental features into `~/.copilot/config.json`
23
+ - Phase 1.5: Ensure Copilot `statusLine` points at OMP's packaged status-line script without overwriting an existing custom command
16
24
  - Phase 2: MCP server configuration
17
25
 
18
26
  ## Interface
@@ -34,4 +42,10 @@ export function deactivate(): void
34
42
 
35
43
  ## Implementation
36
44
 
37
- Spawns `bin/omp.mjs setup [args]`. No persistent resources are maintained.
45
+ Spawns `bin/omp.mjs setup [args]` from the packaged plugin root so setup works from arbitrary workspaces.
46
+ The spawned process receives default OMP Copilot setup env values:
47
+
48
+ - `OMP_COPILOT_REQUIRED_EXPERIMENTAL_FEATURES`
49
+ - `OMP_COPILOT_STATUS_LINE_COMMAND`
50
+
51
+ No persistent resources are maintained by the skill wrapper itself.
@@ -1,3 +1,9 @@
1
+ ---
2
+ name: pipeline
3
+ description: Sequential stage-based execution pipeline
4
+ trigger: "pipeline:, /pipeline, /omp:pipeline"
5
+ autoinvoke: false
6
+ ---
1
7
  # Skill: Pipeline
2
8
 
3
9
  ## Metadata
@@ -1,3 +1,9 @@
1
+ ---
2
+ name: psm
3
+ description: Plugin State Manager operations
4
+ trigger: "psm:, /psm, /omp:psm"
5
+ autoinvoke: false
6
+ ---
1
7
  # Skill: PSM
2
8
 
3
9
  ## Metadata
@@ -1,3 +1,9 @@
1
+ ---
2
+ name: ralph
3
+ description: Persistence loop with architect verification gate
4
+ trigger: "ralph:, /ralph, /omp:ralph"
5
+ autoinvoke: false
6
+ ---
1
7
  # Skill: Ralph
2
8
 
3
9
  ## Metadata
@@ -1,3 +1,9 @@
1
+ ---
2
+ name: release
3
+ description: Guided release workflow and automation
4
+ trigger: "release:, /release, /omp:release"
5
+ autoinvoke: false
6
+ ---
1
7
  # Skill: Release
2
8
 
3
9
  ## Metadata
@@ -1,3 +1,9 @@
1
+ ---
2
+ name: setup
3
+ description: OMP setup and onboarding wizard
4
+ trigger: "setup:, /setup, /omp:setup"
5
+ autoinvoke: false
6
+ ---
1
7
  # Skill: Setup
2
8
 
3
9
  ## Metadata
@@ -1,3 +1,9 @@
1
+ ---
2
+ name: spending
3
+ description: Track and reset premium request usage
4
+ trigger: "spending:, /spending, /omp:spending"
5
+ autoinvoke: false
6
+ ---
1
7
  # Skill: Spending
2
8
 
3
9
  ## Metadata
@@ -1,3 +1,9 @@
1
+ ---
2
+ name: swarm
3
+ description: Parallel agent swarm for independent subtasks
4
+ trigger: "swarm:, /swarm, /omp:swarm"
5
+ autoinvoke: false
6
+ ---
1
7
  # Skill: Swarm
2
8
 
3
9
  ## Metadata
@@ -1,3 +1,9 @@
1
+ ---
2
+ name: swe-bench
3
+ description: SWE-bench evaluation harness runner
4
+ trigger: "swe-bench:, /swe-bench, /omp:swe-bench"
5
+ autoinvoke: false
6
+ ---
1
7
  # Skill: SWE-Bench
2
8
 
3
9
  ## Metadata
@@ -1,3 +1,9 @@
1
+ ---
2
+ name: team
3
+ description: Coordinated N-agent team with staged pipeline
4
+ trigger: "team:, /team, /omp:team"
5
+ autoinvoke: false
6
+ ---
1
7
  # Skill: Team
2
8
 
3
9
  ## Metadata
@@ -1,3 +1,9 @@
1
+ ---
2
+ name: trace
3
+ description: Execution tracing and debugging
4
+ trigger: "trace:, /trace, /omp:trace"
5
+ autoinvoke: false
6
+ ---
1
7
  # Skill: Trace
2
8
 
3
9
  ## Metadata
@@ -1,3 +1,9 @@
1
+ ---
2
+ name: ultrawork
3
+ description: Parallel multi-agent high-throughput implementation
4
+ trigger: "ulw:, ultrawork:, /ulw, /ultrawork, /omp:ulw, /omp:ultrawork"
5
+ autoinvoke: false
6
+ ---
1
7
  # Skill: Ultrawork
2
8
 
3
9
  ## Metadata
@@ -1,3 +1,9 @@
1
+ ---
2
+ name: wiki
3
+ description: Project wiki operations and management
4
+ trigger: "wiki:, /wiki, /omp:wiki"
5
+ autoinvoke: false
6
+ ---
1
7
  # Skill: Wiki
2
8
 
3
9
  ## Metadata