oh-my-copilot 4.13.21 → 4.13.45

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 (195) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/README.md +8 -0
  4. package/agents/code-reviewer.agent.md +24 -6
  5. package/agents/designer.agent.md +12 -0
  6. package/bridge/cli.cjs +1978 -1214
  7. package/bridge/mcp-server.cjs +678 -261
  8. package/bridge/runtime-cli.cjs +55 -8
  9. package/bridge/team.js +507 -38
  10. package/dist/__tests__/agent-registry.test.js +92 -1
  11. package/dist/__tests__/agent-registry.test.js.map +1 -1
  12. package/dist/__tests__/bedrock-model-routing.test.js +18 -17
  13. package/dist/__tests__/bedrock-model-routing.test.js.map +1 -1
  14. package/dist/__tests__/delegation-enforcer.test.js +46 -6
  15. package/dist/__tests__/delegation-enforcer.test.js.map +1 -1
  16. package/dist/__tests__/hooks/session-end-cleanup.test.d.ts +2 -0
  17. package/dist/__tests__/hooks/session-end-cleanup.test.d.ts.map +1 -0
  18. package/dist/__tests__/hooks/session-end-cleanup.test.js +93 -0
  19. package/dist/__tests__/hooks/session-end-cleanup.test.js.map +1 -0
  20. package/dist/__tests__/hud/stdin.test.d.ts +2 -0
  21. package/dist/__tests__/hud/stdin.test.d.ts.map +1 -0
  22. package/dist/__tests__/hud/stdin.test.js +556 -0
  23. package/dist/__tests__/hud/stdin.test.js.map +1 -0
  24. package/dist/__tests__/model-routing-override-three-site-sync.test.d.ts +2 -0
  25. package/dist/__tests__/model-routing-override-three-site-sync.test.d.ts.map +1 -0
  26. package/dist/__tests__/model-routing-override-three-site-sync.test.js +75 -0
  27. package/dist/__tests__/model-routing-override-three-site-sync.test.js.map +1 -0
  28. package/dist/__tests__/non-claude-provider-detection.test.js +37 -0
  29. package/dist/__tests__/non-claude-provider-detection.test.js.map +1 -1
  30. package/dist/__tests__/package-dir-resolution-regression.test.js +25 -0
  31. package/dist/__tests__/package-dir-resolution-regression.test.js.map +1 -1
  32. package/dist/__tests__/pre-tool-enforcer.test.js +51 -0
  33. package/dist/__tests__/pre-tool-enforcer.test.js.map +1 -1
  34. package/dist/__tests__/session-start-script-context.test.js +121 -0
  35. package/dist/__tests__/session-start-script-context.test.js.map +1 -1
  36. package/dist/__tests__/setup-claude-md-script.test.js +44 -1
  37. package/dist/__tests__/setup-claude-md-script.test.js.map +1 -1
  38. package/dist/agents/definitions.d.ts.map +1 -1
  39. package/dist/agents/definitions.js +2 -1
  40. package/dist/agents/definitions.js.map +1 -1
  41. package/dist/autoresearch/__tests__/decide-outcome.test.d.ts +2 -0
  42. package/dist/autoresearch/__tests__/decide-outcome.test.d.ts.map +1 -0
  43. package/dist/autoresearch/__tests__/decide-outcome.test.js +69 -0
  44. package/dist/autoresearch/__tests__/decide-outcome.test.js.map +1 -0
  45. package/dist/autoresearch/runtime.d.ts.map +1 -1
  46. package/dist/autoresearch/runtime.js +16 -2
  47. package/dist/autoresearch/runtime.js.map +1 -1
  48. package/dist/cli/__tests__/launch.test.js +23 -0
  49. package/dist/cli/__tests__/launch.test.js.map +1 -1
  50. package/dist/cli/__tests__/self-improve-paths.test.js +3 -2
  51. package/dist/cli/__tests__/self-improve-paths.test.js.map +1 -1
  52. package/dist/cli/__tests__/team.test.js +100 -0
  53. package/dist/cli/__tests__/team.test.js.map +1 -1
  54. package/dist/cli/commands/__tests__/team-role-shorthand.test.js +30 -0
  55. package/dist/cli/commands/__tests__/team-role-shorthand.test.js.map +1 -1
  56. package/dist/cli/commands/__tests__/team.test.js +48 -1
  57. package/dist/cli/commands/__tests__/team.test.js.map +1 -1
  58. package/dist/cli/commands/team.d.ts +2 -0
  59. package/dist/cli/commands/team.d.ts.map +1 -1
  60. package/dist/cli/commands/team.js +9 -2
  61. package/dist/cli/commands/team.js.map +1 -1
  62. package/dist/cli/launch.d.ts.map +1 -1
  63. package/dist/cli/launch.js +7 -0
  64. package/dist/cli/launch.js.map +1 -1
  65. package/dist/cli/team.d.ts.map +1 -1
  66. package/dist/cli/team.js +34 -3
  67. package/dist/cli/team.js.map +1 -1
  68. package/dist/config/__tests__/loader.test.js +35 -4
  69. package/dist/config/__tests__/loader.test.js.map +1 -1
  70. package/dist/config/__tests__/models.test.js +126 -3
  71. package/dist/config/__tests__/models.test.js.map +1 -1
  72. package/dist/config/models.d.ts +8 -0
  73. package/dist/config/models.d.ts.map +1 -1
  74. package/dist/config/models.js +119 -8
  75. package/dist/config/models.js.map +1 -1
  76. package/dist/features/delegation-enforcer.d.ts.map +1 -1
  77. package/dist/features/delegation-enforcer.js +10 -9
  78. package/dist/features/delegation-enforcer.js.map +1 -1
  79. package/dist/hooks/__tests__/bridge-routing.test.js +1 -0
  80. package/dist/hooks/__tests__/bridge-routing.test.js.map +1 -1
  81. package/dist/hooks/autopilot/enforcement.d.ts.map +1 -1
  82. package/dist/hooks/autopilot/enforcement.js +19 -0
  83. package/dist/hooks/autopilot/enforcement.js.map +1 -1
  84. package/dist/hooks/bridge.d.ts.map +1 -1
  85. package/dist/hooks/bridge.js +26 -4
  86. package/dist/hooks/bridge.js.map +1 -1
  87. package/dist/hooks/persistent-mode/stop-hook-blocking.test.js +37 -1
  88. package/dist/hooks/persistent-mode/stop-hook-blocking.test.js.map +1 -1
  89. package/dist/hooks/session-end/index.d.ts +9 -2
  90. package/dist/hooks/session-end/index.d.ts.map +1 -1
  91. package/dist/hooks/session-end/index.js +90 -35
  92. package/dist/hooks/session-end/index.js.map +1 -1
  93. package/dist/hud/stdin.d.ts +12 -1
  94. package/dist/hud/stdin.d.ts.map +1 -1
  95. package/dist/hud/stdin.js +123 -18
  96. package/dist/hud/stdin.js.map +1 -1
  97. package/dist/hud/types.d.ts +1 -0
  98. package/dist/hud/types.d.ts.map +1 -1
  99. package/dist/hud/types.js.map +1 -1
  100. package/dist/installer/__tests__/session-start-template.test.d.ts +2 -0
  101. package/dist/installer/__tests__/session-start-template.test.d.ts.map +1 -0
  102. package/dist/installer/__tests__/session-start-template.test.js +174 -0
  103. package/dist/installer/__tests__/session-start-template.test.js.map +1 -0
  104. package/dist/lib/__tests__/mode-state-io.test.js +75 -12
  105. package/dist/lib/__tests__/mode-state-io.test.js.map +1 -1
  106. package/dist/lib/mode-state-io.d.ts +11 -0
  107. package/dist/lib/mode-state-io.d.ts.map +1 -1
  108. package/dist/lib/mode-state-io.js +64 -0
  109. package/dist/lib/mode-state-io.js.map +1 -1
  110. package/dist/lib/worktree-paths.d.ts +12 -0
  111. package/dist/lib/worktree-paths.d.ts.map +1 -1
  112. package/dist/lib/worktree-paths.js +75 -0
  113. package/dist/lib/worktree-paths.js.map +1 -1
  114. package/dist/planning/__tests__/artifacts.test.d.ts +2 -0
  115. package/dist/planning/__tests__/artifacts.test.d.ts.map +1 -0
  116. package/dist/planning/__tests__/artifacts.test.js +486 -0
  117. package/dist/planning/__tests__/artifacts.test.js.map +1 -0
  118. package/dist/planning/artifact-names.d.ts +13 -0
  119. package/dist/planning/artifact-names.d.ts.map +1 -0
  120. package/dist/planning/artifact-names.js +108 -0
  121. package/dist/planning/artifact-names.js.map +1 -0
  122. package/dist/planning/artifacts.d.ts +47 -0
  123. package/dist/planning/artifacts.d.ts.map +1 -0
  124. package/dist/planning/artifacts.js +221 -0
  125. package/dist/planning/artifacts.js.map +1 -0
  126. package/dist/team/__tests__/api-interop.compatibility.test.js +194 -5
  127. package/dist/team/__tests__/api-interop.compatibility.test.js.map +1 -1
  128. package/dist/team/__tests__/model-contract.test.js +92 -2
  129. package/dist/team/__tests__/model-contract.test.js.map +1 -1
  130. package/dist/team/__tests__/runtime-v2.dispatch.test.js +30 -0
  131. package/dist/team/__tests__/runtime-v2.dispatch.test.js.map +1 -1
  132. package/dist/team/__tests__/scaling.test.js +39 -1
  133. package/dist/team/__tests__/scaling.test.js.map +1 -1
  134. package/dist/team/__tests__/worker-bootstrap.test.js +6 -0
  135. package/dist/team/__tests__/worker-bootstrap.test.js.map +1 -1
  136. package/dist/team/api-interop.d.ts.map +1 -1
  137. package/dist/team/api-interop.js +89 -2
  138. package/dist/team/api-interop.js.map +1 -1
  139. package/dist/team/delegation-evidence.d.ts +5 -0
  140. package/dist/team/delegation-evidence.d.ts.map +1 -0
  141. package/dist/team/delegation-evidence.js +29 -0
  142. package/dist/team/delegation-evidence.js.map +1 -0
  143. package/dist/team/model-contract.d.ts +8 -0
  144. package/dist/team/model-contract.d.ts.map +1 -1
  145. package/dist/team/model-contract.js +13 -0
  146. package/dist/team/model-contract.js.map +1 -1
  147. package/dist/team/runtime-v2.d.ts +2 -1
  148. package/dist/team/runtime-v2.d.ts.map +1 -1
  149. package/dist/team/runtime-v2.js +3 -1
  150. package/dist/team/runtime-v2.js.map +1 -1
  151. package/dist/team/state/tasks.d.ts +4 -1
  152. package/dist/team/state/tasks.d.ts.map +1 -1
  153. package/dist/team/state/tasks.js +38 -1
  154. package/dist/team/state/tasks.js.map +1 -1
  155. package/dist/team/team-ops.d.ts +4 -1
  156. package/dist/team/team-ops.d.ts.map +1 -1
  157. package/dist/team/team-ops.js +2 -2
  158. package/dist/team/team-ops.js.map +1 -1
  159. package/dist/team/types.d.ts +22 -1
  160. package/dist/team/types.d.ts.map +1 -1
  161. package/dist/team/types.js.map +1 -1
  162. package/dist/team/worker-bootstrap.d.ts.map +1 -1
  163. package/dist/team/worker-bootstrap.js +6 -1
  164. package/dist/team/worker-bootstrap.js.map +1 -1
  165. package/dist/tools/__tests__/state-tools.test.js +322 -5
  166. package/dist/tools/__tests__/state-tools.test.js.map +1 -1
  167. package/dist/tools/__tests__/wiki-tools-working-directory.test.d.ts +2 -0
  168. package/dist/tools/__tests__/wiki-tools-working-directory.test.d.ts.map +1 -0
  169. package/dist/tools/__tests__/wiki-tools-working-directory.test.js +66 -0
  170. package/dist/tools/__tests__/wiki-tools-working-directory.test.js.map +1 -0
  171. package/dist/tools/state-tools.d.ts +3 -10
  172. package/dist/tools/state-tools.d.ts.map +1 -1
  173. package/dist/tools/state-tools.js +393 -91
  174. package/dist/tools/state-tools.js.map +1 -1
  175. package/dist/tools/wiki-tools.js +8 -8
  176. package/dist/tools/wiki-tools.js.map +1 -1
  177. package/docs/GETTING-STARTED.md +7 -0
  178. package/docs/copilot-instructions.md +1 -1
  179. package/package.json +1 -1
  180. package/scripts/lib/model-routing-override-message.mjs +21 -0
  181. package/scripts/persistent-mode.cjs +36 -0
  182. package/scripts/persistent-mode.mjs +36 -0
  183. package/scripts/post-tool-verifier.mjs +1 -0
  184. package/scripts/pre-tool-enforcer.mjs +60 -0
  185. package/scripts/session-start.mjs +63 -0
  186. package/scripts/setup-copilot-instructions.sh +12 -2
  187. package/skills/configure-notifications/SKILL.md +3 -3
  188. package/skills/mcp-setup/SKILL.md +60 -45
  189. package/skills/omc-setup/SKILL.md +3 -3
  190. package/skills/omc-setup/phases/01-install-claude-md.md +1 -1
  191. package/skills/omc-setup/phases/04-welcome.md +8 -8
  192. package/skills/project-session-manager/SKILL.md +2 -2
  193. package/skills/project-session-manager/psm.sh +1 -1
  194. package/templates/hooks/lib/model-routing-override-message.mjs +21 -0
  195. package/templates/hooks/session-start.mjs +62 -0
@@ -239,7 +239,7 @@ Telegram Notifications Configured!
239
239
  Format: Markdown
240
240
  Events: session-end, ask-user-question
241
241
 
242
- Config saved to: ~/.copilot/.omcp-config.json
242
+ Config saved to: ~/.copilot/.omc-config.json
243
243
 
244
244
  You can also set these via environment variables:
245
245
  OMC_TELEGRAM_BOT_TOKEN=123456789:ABCdefGHI...
@@ -481,7 +481,7 @@ Discord Notifications Configured!
481
481
  Events: session-end, ask-user-question
482
482
  Username: OMC
483
483
 
484
- Config saved to: ~/.copilot/.omcp-config.json
484
+ Config saved to: ~/.copilot/.omc-config.json
485
485
 
486
486
  You can also set these via environment variables:
487
487
  OMC_DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/...
@@ -728,7 +728,7 @@ Slack Notifications Configured!
728
728
  Events: session-end, ask-user-question
729
729
  Username: OMC
730
730
 
731
- Config saved to: ~/.copilot/.omcp-config.json
731
+ Config saved to: ~/.copilot/.omc-config.json
732
732
 
733
733
  You can also set these via environment variables:
734
734
  OMC_SLACK_WEBHOOK_URL=https://hooks.slack.com/services/...
@@ -1,27 +1,26 @@
1
1
  ---
2
2
  name: mcp-setup
3
3
  description: Configure popular MCP servers for enhanced agent capabilities
4
- level: 2
5
4
  ---
6
5
 
7
6
  # MCP Setup
8
7
 
9
- Configure Model Context Protocol (MCP) servers to extend Claude Code's capabilities with external tools like web search, file system access, and GitHub integration.
8
+ Configure Model Context Protocol (MCP) servers to extend Copilot CLI's capabilities with external tools like web search, token optimization, and DevOps integration.
10
9
 
11
10
  ## Overview
12
11
 
13
- MCP servers provide additional tools that Claude Code agents can use. This skill helps you configure popular MCP servers using the `claude mcp add` command-line interface.
12
+ MCP servers provide additional tools that Copilot CLI agents can use. This skill helps you configure popular MCP servers using the `copilot mcp add` command-line interface.
14
13
 
15
14
  ## Step 1: Choose a Setup Path
16
15
 
17
- Use **AskUserQuestion** with **one question at a time** and **no more than 3 options per question**. Recent Claude Code builds reject larger option payloads as invalid tool parameters, so keep the MCP selection flow staged.
16
+ Use **AskUserQuestion** with **one question at a time** and **no more than 3 options per question**. Recent Copilot CLI builds reject larger option payloads as invalid tool parameters, so keep the MCP selection flow staged.
18
17
 
19
18
  ### Step 1.1: First menu
20
19
 
21
20
  **Question:** "What kind of MCP setup would you like?"
22
21
 
23
22
  **Options:**
24
- 1. **Recommended starter setup** - Fast path for the most common OMC MCP additions
23
+ 1. **Recommended starter setup** - Fast path for the most common OMCP MCP additions
25
24
  2. **Individual popular server** - Pick one built-in server from a short follow-up menu
26
25
  3. **Custom server** - Add your own stdio or HTTP MCP server
27
26
 
@@ -33,8 +32,8 @@ Ask a follow-up **AskUserQuestion**:
33
32
 
34
33
  **Options:**
35
34
  1. **Context7 only (Recommended)** - Zero-config docs/context server
36
- 2. **Context7 + Exa** - Docs/context plus enhanced web search
37
- 3. **Full recommended bundle** - Context7, Exa, Filesystem, and GitHub
35
+ 2. **Context7 + lean-ctx** - Docs/context plus token-saving compression layer
36
+ 3. **Full recommended bundle** - Context7, lean-ctx, Exa, and GitHub
38
37
 
39
38
  Map that choice to the server list you will configure.
40
39
 
@@ -46,17 +45,17 @@ Ask a follow-up **AskUserQuestion**:
46
45
 
47
46
  **Options:**
48
47
  1. **Context7 (Recommended)** - Documentation and code context from popular libraries
49
- 2. **Exa Web Search** - Enhanced web search (replaces built-in websearch)
50
- 3. **More server choices** - Filesystem, GitHub, or the full recommended bundle
48
+ 2. **lean-ctx** - Token-saving compression layer for Read/Grep/Bash tools
49
+ 3. **More server choices** - Exa, GitHub, Azure DevOps, or the full recommended bundle
51
50
 
52
51
  If the user chooses **More server choices**, ask one more **AskUserQuestion**:
53
52
 
54
53
  **Question:** "Which additional MCP option do you want?"
55
54
 
56
55
  **Options:**
57
- 1. **Filesystem (Recommended)** - Extended file system access with additional capabilities
58
- 2. **GitHub** - GitHub API integration for issues, PRs, and repository management
59
- 3. **Full recommended bundle** - Configure Context7, Exa, Filesystem, and GitHub together
56
+ 1. **Exa Web Search** - Enhanced web search (replaces built-in websearch)
57
+ 2. **GitHub / Azure DevOps** - Repository and project management integration
58
+ 3. **Full recommended bundle** - Configure Context7, lean-ctx, Exa, and GitHub together
60
59
 
61
60
  ### Step 1.4: If the user chooses "Custom server"
62
61
 
@@ -75,13 +74,9 @@ Do you have an Exa API key?
75
74
  - Enter your API key, or type 'skip' to configure later
76
75
  ```
77
76
 
78
- ### For Filesystem:
79
- Ask for allowed directories:
80
- ```
81
- Which directories should the filesystem MCP have access to?
82
- Default: Current working directory
83
- Enter comma-separated paths, or press Enter for default
84
- ```
77
+ ### For lean-ctx:
78
+ No API key required. Installs automatically. Saves 60-80% input tokens via caching and compression.
79
+ More info: https://github.com/yvgude/lean-ctx
85
80
 
86
81
  ### For GitHub:
87
82
  Ask for token:
@@ -92,46 +87,64 @@ Do you have a GitHub Personal Access Token?
92
87
  - Enter your token, or type 'skip' to configure later
93
88
  ```
94
89
 
90
+ ### For Azure DevOps:
91
+ Ask for organization:
92
+ ```
93
+ What is your Azure DevOps organization URL?
94
+ - Example: https://dev.azure.com/my-org
95
+ - Enter your organization URL, or type 'skip' to configure later
96
+ ```
97
+ More info: https://github.com/microsoft/azure-devops-mcp
98
+
95
99
  ## Step 3: Add MCP Servers Using CLI
96
100
 
97
- Use the `claude mcp add` command to configure each MCP server. The CLI automatically handles settings.json updates and merging.
101
+ Use the `copilot mcp add` command to configure each MCP server. The CLI automatically handles settings.json updates and merging.
98
102
 
99
103
  ### Context7 Configuration:
100
104
  ```bash
101
- claude mcp add context7 -- npx -y @upstash/context7-mcp
105
+ copilot mcp add context7 -- npx -y @upstash/context7-mcp
102
106
  ```
103
107
 
104
108
  ### Exa Web Search Configuration:
105
109
  ```bash
106
- claude mcp add -e EXA_API_KEY=<user-provided-key> exa -- npx -y exa-mcp-server
110
+ copilot mcp add -e EXA_API_KEY=<user-provided-key> exa -- npx -y exa-mcp-server
107
111
  ```
108
112
 
109
- ### Filesystem Configuration:
113
+ ### lean-ctx Configuration:
110
114
  ```bash
111
- claude mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem <allowed-directories>
115
+ npm install -g lean-ctx-bin && lean-ctx setup
112
116
  ```
117
+ > Note: lean-ctx uses its own installer (`lean-ctx setup`) which auto-configures shell and all detected editors. It hooks into existing tools (Read, Grep, Bash) to compress and cache results automatically.
118
+
113
119
 
114
120
  ### GitHub Configuration:
115
121
 
116
122
  **Option 1: Docker (local)**
117
123
  ```bash
118
- claude mcp add -e GITHUB_PERSONAL_ACCESS_TOKEN=<user-provided-token> github -- docker run -i --rm -e GITHUB_PERSONAL_ACCESS_TOKEN ghcr.io/github/github-mcp-server
124
+ copilot mcp add -e GITHUB_PERSONAL_ACCESS_TOKEN=<user-provided-token> github -- docker run -i --rm -e GITHUB_PERSONAL_ACCESS_TOKEN ghcr.io/github/github-mcp-server
119
125
  ```
120
126
 
121
127
  **Option 2: HTTP (remote)**
122
128
  ```bash
123
- claude mcp add --transport http github https://api.githubcopilot.com/mcp/
129
+ copilot mcp add --transport http github https://api.githubcopilot.com/mcp/
124
130
  ```
125
131
 
126
132
  > Note: Docker option requires Docker installed. HTTP option is simpler but may have different capabilities.
127
133
 
134
+ ### Azure DevOps Configuration:
135
+ ```bash
136
+ copilot mcp add azure-devops -- npx -y @microsoft/azure-devops-mcp
137
+ ```
138
+
139
+ > Note: Requires Azure DevOps authentication. Run `az login` first or configure a PAT. See https://github.com/microsoft/azure-devops-mcp for setup details.
140
+
128
141
  ## Step 4: Verify Installation
129
142
 
130
143
  After configuration, verify the MCP servers are properly set up:
131
144
 
132
145
  ```bash
133
146
  # List configured MCP servers
134
- claude mcp list
147
+ copilot mcp list
135
148
  ```
136
149
 
137
150
  This will display all configured MCP servers and their status.
@@ -145,26 +158,27 @@ CONFIGURED SERVERS:
145
158
  [List the servers that were configured]
146
159
 
147
160
  NEXT STEPS:
148
- 1. Restart Claude Code for changes to take effect
161
+ 1. Restart Copilot CLI for changes to take effect
149
162
  2. The configured MCP tools will be available to all agents
150
- 3. Run `claude mcp list` to verify configuration
163
+ 3. Run `copilot mcp list` to verify configuration
151
164
 
152
165
  USAGE TIPS:
153
166
  - Context7: Ask about library documentation (e.g., "How do I use React hooks?")
154
167
  - Exa: Use for web searches (e.g., "Search the web for latest TypeScript features")
155
- - Filesystem: Extended file operations beyond the working directory
168
+ - lean-ctx: Automatic — compresses Read/Grep/Bash results to save tokens
156
169
  - GitHub: Interact with GitHub repos, issues, and PRs
170
+ - Azure DevOps: Manage work items, pipelines, repos, and wikis
157
171
 
158
172
  TROUBLESHOOTING:
159
- - If MCP servers don't appear, run `claude mcp list` to check status
173
+ - If MCP servers don't appear, run `copilot mcp list` to check status
160
174
  - Ensure you have Node.js 18+ installed for npx-based servers
161
175
  - For GitHub Docker option, ensure Docker is installed and running
162
176
  - Run /oh-my-copilot:omc-doctor to diagnose issues
163
177
 
164
178
  MANAGING MCP SERVERS:
165
- - Add more servers: /oh-my-copilot:mcp-setup or `claude mcp add ...`
166
- - List servers: `claude mcp list`
167
- - Remove a server: `claude mcp remove <server-name>`
179
+ - Add more servers: /oh-my-copilot:mcp-setup or `copilot mcp add ...`
180
+ - List servers: `copilot mcp list`
181
+ - Remove a server: `copilot mcp remove <server-name>`
168
182
  ```
169
183
 
170
184
  ## Custom MCP Server
@@ -179,24 +193,24 @@ Ask for:
179
193
  5. Environment variables (optional, key=value pairs)
180
194
  6. HTTP headers (optional, for http transport only)
181
195
 
182
- Then construct and run the appropriate `claude mcp add` command:
196
+ Then construct and run the appropriate `copilot mcp add` command:
183
197
 
184
198
  **For stdio servers:**
185
199
  ```bash
186
200
  # Without environment variables
187
- claude mcp add <server-name> -- <command> [args...]
201
+ copilot mcp add <server-name> -- <command> [args...]
188
202
 
189
203
  # With environment variables
190
- claude mcp add -e KEY1=value1 -e KEY2=value2 <server-name> -- <command> [args...]
204
+ copilot mcp add -e KEY1=value1 -e KEY2=value2 <server-name> -- <command> [args...]
191
205
  ```
192
206
 
193
207
  **For HTTP servers:**
194
208
  ```bash
195
209
  # Basic HTTP server
196
- claude mcp add --transport http <server-name> <url>
210
+ copilot mcp add --transport http <server-name> <url>
197
211
 
198
212
  # HTTP server with headers
199
- claude mcp add --transport http --header "Authorization: Bearer <token>" <server-name> <url>
213
+ copilot mcp add --transport http --header "Authorization: Bearer <token>" <server-name> <url>
200
214
  ```
201
215
 
202
216
  ### Company-context convention
@@ -206,7 +220,7 @@ If the custom server is meant to provide organization-specific reference materia
206
220
  Example local registration:
207
221
 
208
222
  ```bash
209
- claude mcp add company-context -- node examples/vendor-mcp-server/server.mjs
223
+ copilot mcp add company-context -- node examples/vendor-mcp-server/server.mjs
210
224
  ```
211
225
 
212
226
  Then point OMC at the full tool name in `.copilot/omg.jsonc` or `~/.config/copilot-omg/config.jsonc`:
@@ -227,19 +241,20 @@ This remains advisory prompt context, not runtime enforcement.
227
241
  ### MCP Server Not Loading
228
242
  - Ensure Node.js 18+ is installed
229
243
  - Check that npx is available in PATH
230
- - Run `claude mcp list` to verify server status
244
+ - Run `copilot mcp list` to verify server status
231
245
  - Check server logs for errors
232
246
 
233
247
  ### API Key Issues
234
248
  - Exa: Verify key at https://dashboard.exa.ai
235
249
  - GitHub: Ensure token has required scopes (repo, read:org)
236
- - Re-run `claude mcp add` with correct credentials if needed
250
+ - Azure DevOps: Run `az login` or check PAT permissions
251
+ - Re-run `copilot mcp add` with correct credentials if needed
237
252
 
238
253
  ### Agents Still Using Built-in Tools
239
- - Restart Claude Code after configuration
254
+ - Restart Copilot CLI after configuration
240
255
  - The built-in websearch will be deprioritized when exa is configured
241
- - Run `claude mcp list` to confirm servers are active
256
+ - Run `copilot mcp list` to confirm servers are active
242
257
 
243
258
  ### Removing or Updating a Server
244
- - Remove: `claude mcp remove <server-name>`
259
+ - Remove: `copilot mcp remove <server-name>`
245
260
  - Update: Remove the old server, then add it again with new configuration
@@ -79,7 +79,7 @@ EXAMPLES:
79
79
  /oh-my-copilot:omc-setup --global # Update all projects
80
80
  /oh-my-copilot:omc-setup --force # Re-run full setup wizard
81
81
 
82
- For more info: https://github.com/Yeachan-Heo/oh-my-copilot
82
+ For more info: https://github.com/RobinNorberg/oh-my-copilot
83
83
  ```
84
84
 
85
85
  ## Pre-Setup Check: Already Configured?
@@ -156,13 +156,13 @@ bash "${CLAUDE_PLUGIN_ROOT}/scripts/setup-progress.sh" clear
156
156
  ## Phase Execution
157
157
 
158
158
  ### For `--local` or `--global` flags:
159
- Read the file at `${CLAUDE_PLUGIN_ROOT}/skills/omc-setup/phases/01-install-claude-md.md` and follow its instructions.
159
+ Read the file at `${CLAUDE_PLUGIN_ROOT}/skills/omc-setup/phases/01-install-copilot-instructions.md` and follow its instructions.
160
160
  (The phase file handles early exit for flag mode.)
161
161
 
162
162
  ### For full setup (default or --force):
163
163
  Execute phases sequentially. For each phase, read the corresponding file and follow its instructions:
164
164
 
165
- 1. **Phase 1 - Install CLAUDE.md**: Read `${CLAUDE_PLUGIN_ROOT}/skills/omc-setup/phases/01-install-claude-md.md` and follow its instructions.
165
+ 1. **Phase 1 - Install copilot-instructions.md**: Read `${CLAUDE_PLUGIN_ROOT}/skills/omc-setup/phases/01-install-copilot-instructions.md` and follow its instructions.
166
166
 
167
167
  2. **Phase 2 - Environment Configuration**: Read `${CLAUDE_PLUGIN_ROOT}/skills/omc-setup/phases/02-configure.md` and follow its instructions. Phase 2 must delegate HUD/statusLine setup to the `hud` skill; do not generate or patch `statusLine` paths inline here.
168
168
 
@@ -46,7 +46,7 @@ For `local` installs inside a git repository, the script also seeds `.git/info/e
46
46
 
47
47
  **FALLBACK** if curl fails:
48
48
  Tell user to manually download from:
49
- https://raw.githubusercontent.com/Yeachan-Heo/oh-my-copilot/main/docs/CLAUDE.md
49
+ https://raw.githubusercontent.com/RobinNorberg/oh-my-copilot/main/docs/CLAUDE.md
50
50
 
51
51
  **Note**: The downloaded CLAUDE.md includes Context Persistence instructions with `<remember>` tags for surviving conversation compaction.
52
52
 
@@ -134,7 +134,7 @@ gh auth status &>/dev/null
134
134
  **Before prompting, check if the repository is already starred:**
135
135
 
136
136
  ```bash
137
- gh api user/starred/Yeachan-Heo/oh-my-copilot &>/dev/null
137
+ gh api user/starred/RobinNorberg/oh-my-copilot &>/dev/null
138
138
  ```
139
139
 
140
140
  **If already starred (exit code 0):**
@@ -147,15 +147,15 @@ Use AskUserQuestion:
147
147
 
148
148
  **Question:** "If you're enjoying oh-my-copilot, would you like to support the project by starring it on GitHub?"
149
149
 
150
- **Options:**
151
- 1. **Yes, star it!** - Star the repository
152
- 2. **No thanks** - Skip without further prompts
153
- 3. **Maybe later** - Skip without further prompts
150
+ **Options** (list in this exact order — Copilot CLI preselects the first option):
151
+ 1. **Yes, star it! (Recommended)** - Star the repository
152
+ 2. **Maybe later** - Skip without further prompts
153
+ 3. **No thanks** - Skip without further prompts
154
154
 
155
- If user chooses "Yes, star it!":
155
+ If user chooses "Yes, star it! (Recommended)":
156
156
 
157
157
  ```bash
158
- gh api -X PUT /user/starred/Yeachan-Heo/oh-my-copilot 2>/dev/null && echo "Thanks for starring!" || true
158
+ gh api -X PUT /user/starred/RobinNorberg/oh-my-copilot 2>/dev/null && echo "Thanks for starring!" || true
159
159
  ```
160
160
 
161
161
  **Note:** Fail silently if the API call doesn't work - never block setup completion.
@@ -165,7 +165,7 @@ gh api -X PUT /user/starred/Yeachan-Heo/oh-my-copilot 2>/dev/null && echo "Thank
165
165
  ```bash
166
166
  echo ""
167
167
  echo "If you enjoy oh-my-copilot, consider starring the repo:"
168
- echo " https://github.com/Yeachan-Heo/oh-my-copilot"
168
+ echo " https://github.com/RobinNorberg/oh-my-copilot"
169
169
  echo ""
170
170
  ```
171
171
 
@@ -50,7 +50,7 @@ Supported formats:
50
50
  {
51
51
  "aliases": {
52
52
  "omc": {
53
- "repo": "Yeachan-Heo/oh-my-copilot",
53
+ "repo": "RobinNorberg/oh-my-copilot",
54
54
  "local": "~/Workspace/oh-my-copilot",
55
55
  "default_base": "main"
56
56
  }
@@ -564,7 +564,7 @@ if [[ ! -f ~/.psm/projects.json ]]; then
564
564
  {
565
565
  "aliases": {
566
566
  "omc": {
567
- "repo": "Yeachan-Heo/oh-my-copilot",
567
+ "repo": "RobinNorberg/oh-my-copilot",
568
568
  "local": "~/Workspace/oh-my-copilot",
569
569
  "default_base": "main"
570
570
  }
@@ -85,7 +85,7 @@ Reference formats:
85
85
 
86
86
  Examples:
87
87
  psm review omc#123
88
- psm fix Yeachan-Heo/oh-my-copilot#42
88
+ psm fix RobinNorberg/oh-my-copilot#42
89
89
  psm feature omc add-webhooks
90
90
  psm list
91
91
  psm attach omc:pr-123
@@ -0,0 +1,21 @@
1
+ // Shared constant imported by scripts/session-start.mjs and
2
+ // templates/hooks/session-start.mjs. Kept in a side-effect-free module so
3
+ // tests can import it without triggering hook entrypoint side effects.
4
+ export const MODEL_ROUTING_OVERRIDE_MESSAGE = `<system-reminder>
5
+
6
+ [MODEL ROUTING OVERRIDE — NON-STANDARD PROVIDER DETECTED]
7
+
8
+ This environment uses a non-standard model provider (AWS Bedrock, Google Vertex AI, or a proxy such as CC Switch / LiteLLM).
9
+
10
+ How to pass \`model\` on Task/Agent calls:
11
+ - Prefer a tier alias: \`model: "sonnet"\`, \`model: "opus"\`, or \`model: "haiku"\`. OMC's pre-tool enforcer resolves these to provider-safe IDs when one of these env vars is set: \`ANTHROPIC_DEFAULT_SONNET_MODEL\` (and sibling \`ANTHROPIC_DEFAULT_OPUS_MODEL\` / \`ANTHROPIC_DEFAULT_HAIKU_MODEL\`), \`CLAUDE_CODE_BEDROCK_SONNET_MODEL\` (and sibling \`CLAUDE_CODE_BEDROCK_OPUS_MODEL\` / \`CLAUDE_CODE_BEDROCK_HAIKU_MODEL\`), or \`OMC_SUBAGENT_MODEL\`.
12
+ - If none of those env vars are configured, the enforcer will deny the tier alias with an env-var configuration hint — set one of them in your \`settings.json\` env or shell profile.
13
+ - The enforcer denies tier aliases it cannot resolve. It also denies provider-specific IDs that carry a \`[1m]\` context-window suffix or otherwise fail subagent-safe validation (sub-agents cannot inherit \`[1m]\`). Valid provider-specific IDs without extended-context suffixes are allowed.
14
+
15
+ When the session model carries a \`[1m]\` suffix, passing an explicit \`model\` is REQUIRED — omitting it will be denied (sub-agents cannot inherit the \`[1m]\` suffix). Use a tier alias (requires resolver env vars above); the Agent tool schema does not accept provider-specific IDs, so tier aliases are the only valid option.
16
+
17
+ When the session model has no \`[1m]\` suffix, omitting \`model\` is safe UNLESS a custom sub-agent definition pins a bare Anthropic model ID (e.g. \`model: claude-sonnet-4-6\` in agent frontmatter). When resolver env vars are configured, the enforcer will deny that call with tier-alias guidance; when they are absent, the call is not denied by the enforcer but will fail at the provider. Either way, custom sub-agents should pin tier aliases (not bare Anthropic IDs) in their frontmatter. Shipped OMC agents already do this and are unaffected.
18
+
19
+ The CLAUDE.md instruction "Pass model on Task calls: haiku, sonnet, opus" applies here — subject to the resolution prerequisites above.
20
+
21
+ </system-reminder>`;
@@ -142,6 +142,68 @@ const OMC_STARTUP_GUIDANCE_MAX_CHARS = 8000;
142
142
  const SESSION_START_CONTEXT_BUDGET = 6000;
143
143
  const SESSION_START_OMISSION_NOTICE = '[Additional SessionStart context omitted to preserve the 6000-character aggregate budget.]';
144
144
 
145
+ const { MODEL_ROUTING_OVERRIDE_MESSAGE } = await import(pathToFileURL(join(__dirname, 'lib', 'model-routing-override-message.mjs')).href);
146
+
147
+ function isTruthyProviderFlag(value) {
148
+ return value === '1' || value === 'true';
149
+ }
150
+
151
+ function getSessionModelId() {
152
+ return process.env.CLAUDE_MODEL || process.env.ANTHROPIC_MODEL || '';
153
+ }
154
+
155
+ function isBedrockSession() {
156
+ if (isTruthyProviderFlag(process.env.CLAUDE_CODE_USE_BEDROCK)) return true;
157
+ const modelId = getSessionModelId();
158
+ return Boolean(
159
+ modelId && (
160
+ /^((us|eu|ap|global)\.anthropic\.|anthropic\.claude)/i.test(modelId) ||
161
+ (
162
+ /^arn:aws(-[^:]+)?:bedrock:/i.test(modelId) &&
163
+ /:(inference-profile|application-inference-profile)\//i.test(modelId) &&
164
+ modelId.toLowerCase().includes('claude')
165
+ )
166
+ )
167
+ );
168
+ }
169
+
170
+ function isVertexSession() {
171
+ if (isTruthyProviderFlag(process.env.CLAUDE_CODE_USE_VERTEX)) return true;
172
+ const modelId = getSessionModelId();
173
+ return Boolean(modelId && modelId.toLowerCase().startsWith('vertex_ai/'));
174
+ }
175
+
176
+ function readRoutingForceInheritFromConfig(directory) {
177
+ const configPaths = [
178
+ join(configDir, '.omc-config.json'),
179
+ join(directory, '.omc', 'config.json'),
180
+ ];
181
+
182
+ for (const configPath of configPaths) {
183
+ const config = readJsonFile(configPath);
184
+ if (config?.routing?.forceInherit === true) return true;
185
+ }
186
+
187
+ return false;
188
+ }
189
+
190
+ function shouldEmitModelRoutingOverride(directory) {
191
+ if (process.env.OMC_ROUTING_FORCE_INHERIT === 'true') return true;
192
+ if (process.env.OMC_ROUTING_FORCE_INHERIT === 'false') return false;
193
+ if (readRoutingForceInheritFromConfig(directory)) return true;
194
+
195
+ if (isBedrockSession() || isVertexSession()) return true;
196
+
197
+ const modelId = getSessionModelId();
198
+ if (modelId && !modelId.toLowerCase().includes('claude')) return true;
199
+
200
+ const baseUrl = process.env.ANTHROPIC_BASE_URL || '';
201
+ if (baseUrl && !baseUrl.includes('anthropic.com')) return true;
202
+
203
+ return false;
204
+ }
205
+
206
+
145
207
  function compactBudgetedText(text, maxChars) {
146
208
  const notice = '\n...[truncated to preserve SessionStart context budget]';
147
209
  if (!text || text.length <= maxChars) return text || '';