oh-my-opencode 4.19.2 → 4.19.4

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 (241) hide show
  1. package/.agents/command/get-unpublished-changes.md +2 -0
  2. package/.agents/command/omomomo.md +1 -1
  3. package/.agents/command/publish.md +102 -28
  4. package/.agents/skills/get-unpublished-changes/SKILL.md +2 -0
  5. package/.agents/skills/hyperplan/SKILL.md +3 -3
  6. package/.agents/skills/omomomo/SKILL.md +1 -1
  7. package/.agents/skills/publish/SKILL.md +27 -6
  8. package/.opencode/command/get-unpublished-changes.md +2 -0
  9. package/.opencode/command/omomomo.md +1 -1
  10. package/.opencode/command/publish.md +102 -28
  11. package/.opencode/skills/hyperplan/SKILL.md +3 -3
  12. package/THIRD-PARTY-NOTICES.md +7 -7
  13. package/dist/agents/sisyphus-junior/agent.d.ts +1 -1
  14. package/dist/agents/sisyphus-runtime-prompt-reconciler.d.ts +1 -1
  15. package/dist/cli/config-migrate.d.ts +8 -0
  16. package/dist/cli/doctor/checks/deprecated-reasoning-keys.d.ts +2 -0
  17. package/dist/cli/doctor/checks/legacy-config-leftovers.d.ts +10 -0
  18. package/dist/cli/doctor/checks/model-resolution-config.d.ts +1 -1
  19. package/dist/cli/doctor/checks/tools-lsp.d.ts +1 -1
  20. package/dist/cli/doctor/framework/constants.d.ts +1 -1
  21. package/dist/cli/index.js +95684 -92814
  22. package/dist/cli-node/index.js +95650 -92780
  23. package/dist/config/schema/agent-overrides.d.ts +800 -0
  24. package/dist/config/schema/categories.d.ts +132 -0
  25. package/dist/config/schema/fallback-models.d.ts +50 -0
  26. package/dist/config/schema/oh-my-opencode-config.d.ts +818 -2
  27. package/dist/config/validate.d.ts +2 -1
  28. package/dist/config-migration/deep-diff.d.ts +1 -0
  29. package/dist/config-migration/discovery-paths.d.ts +11 -0
  30. package/dist/config-migration/discovery-roots.d.ts +7 -0
  31. package/dist/config-migration/discovery.d.ts +4 -0
  32. package/dist/config-migration/index.d.ts +10 -0
  33. package/dist/config-migration/legacy-history.d.ts +3 -0
  34. package/dist/config-migration/migration-executor.d.ts +4 -0
  35. package/dist/config-migration/migration-plans.d.ts +15 -0
  36. package/dist/config-migration/reasoning-unification.d.ts +3 -0
  37. package/dist/config-migration/record-values.d.ts +4 -0
  38. package/dist/config-migration/schema-url.d.ts +1 -0
  39. package/dist/config-migration/transform-config-jsonc.d.ts +2 -0
  40. package/dist/config-migration/transform-opencode.d.ts +2 -0
  41. package/dist/config-migration/transform-types.d.ts +24 -0
  42. package/dist/config-migration/types.d.ts +39 -0
  43. package/dist/features/builtin-commands/templates/hyperplan.d.ts +1 -1
  44. package/dist/features/team-mode/tools/lifecycle-test-fixture.d.ts +2 -0
  45. package/dist/hooks/auto-update-checker/constants.d.ts +3 -3
  46. package/dist/hooks/codegraph-bootstrap/command-runner.d.ts +1 -0
  47. package/dist/hooks/model-fallback/next-fallback.d.ts +1 -0
  48. package/dist/hooks/runtime-fallback/constants.d.ts +1 -1
  49. package/dist/index.js +12368 -9788
  50. package/dist/oh-my-opencode.schema.json +1672 -8
  51. package/dist/plugin-config/omo-config-chain.d.ts +14 -0
  52. package/dist/plugin-config/unknown-key-diagnostics.d.ts +5 -0
  53. package/dist/plugin-config.d.ts +2 -2
  54. package/dist/plugin-handlers/prometheus-agent-config-builder.d.ts +1 -0
  55. package/dist/shared/agent-display-names.d.ts +1 -1
  56. package/dist/shared/agent-variant.d.ts +11 -0
  57. package/dist/shared/jsonc-parser.d.ts +1 -1
  58. package/dist/shared/migration.d.ts +5 -1
  59. package/dist/shared/opencode-config-dir-types.d.ts +0 -1
  60. package/dist/shared/plugin-identity.d.ts +6 -8
  61. package/dist/shared/project-discovery-dirs.d.ts +0 -1
  62. package/dist/shared/session-prompt-params-helpers.d.ts +6 -1
  63. package/dist/skills/coding-agent-sessions/SKILL.md +4 -3
  64. package/dist/skills/coding-agent-sessions/references/all-platforms.md +3 -1
  65. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/aside_scanner.py +140 -0
  66. package/dist/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +3 -0
  67. package/dist/skills/data-scientist/SKILL.md +243 -0
  68. package/dist/skills/data-scientist/references/common-scenarios.md +176 -0
  69. package/dist/skills/data-scientist/references/execution-templates.md +197 -0
  70. package/dist/skills/data-scientist/references/integration-patterns.md +153 -0
  71. package/dist/skills/data-scientist/references/performance-benchmarks.md +37 -0
  72. package/dist/skills/data-scientist/references/uv-setup.md +78 -0
  73. package/dist/skills/data-scientist/scripts/quick-query.py +111 -0
  74. package/dist/skills/data-scientist/scripts/setup-uv.ps1 +53 -0
  75. package/dist/skills/data-scientist/scripts/setup-uv.sh +60 -0
  76. package/dist/skills/debugging/SKILL.md +1 -1
  77. package/dist/skills/frontend/ATTRIBUTION.md +7 -0
  78. package/dist/skills/frontend/SKILL.md +4 -1
  79. package/dist/skills/frontend/references/design/README.md +8 -0
  80. package/dist/skills/frontend/references/design/_INDEX.md +14 -1
  81. package/dist/skills/frontend/references/design/interaction-skill.md +144 -0
  82. package/dist/skills/programming/SKILL.md +1 -2
  83. package/dist/skills/ulw-plan/SKILL.md +1 -1
  84. package/dist/skills/ulw-research/SKILL.md +122 -11
  85. package/dist/startup-migration.d.ts +28 -0
  86. package/dist/testing/create-plugin-module.d.ts +4 -0
  87. package/dist/tools/delegate-task/builtin-categories.d.ts +1 -0
  88. package/dist/tools/delegate-task/builtin-category-definition.d.ts +1 -0
  89. package/dist/tools/delegate-task/constants.d.ts +1 -1
  90. package/dist/tui.js +6040 -5443
  91. package/package.json +13 -13
  92. package/packages/lsp-core/src/lsp/client-diagnostics-freshness.integration.test.ts +21 -5
  93. package/packages/lsp-core/src/lsp/fixtures/workspace-edit-server.mjs +11 -2
  94. package/packages/omo-codex/THIRD-PARTY-NOTICES.md +2 -2
  95. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  96. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +21 -3
  97. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  98. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  99. package/packages/omo-codex/plugin/components/codegraph/AGENTS.md +11 -5
  100. package/packages/omo-codex/plugin/components/codegraph/NOTICE +1 -1
  101. package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +10373 -2570
  102. package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +7502 -574
  103. package/packages/omo-codex/plugin/components/codegraph/package.json +2 -2
  104. package/packages/omo-codex/plugin/components/codegraph/src/hook-input.ts +33 -0
  105. package/packages/omo-codex/plugin/components/codegraph/src/hook-types.ts +36 -10
  106. package/packages/omo-codex/plugin/components/codegraph/src/hook.ts +164 -159
  107. package/packages/omo-codex/plugin/components/codegraph/src/post-tool-use-hook.ts +34 -0
  108. package/packages/omo-codex/plugin/components/codegraph/src/serve.ts +20 -2
  109. package/packages/omo-codex/plugin/components/codegraph/src/session-start-command.ts +106 -0
  110. package/packages/omo-codex/plugin/components/codegraph/src/session-start-cooldown.ts +145 -0
  111. package/packages/omo-codex/plugin/components/codegraph/src/session-start-hook-runtime.ts +21 -0
  112. package/packages/omo-codex/plugin/components/codegraph/src/session-start-lock.ts +139 -0
  113. package/packages/omo-codex/plugin/components/codegraph/src/session-start-outcome.ts +15 -0
  114. package/packages/omo-codex/plugin/components/codegraph/src/session-start-paths.ts +32 -0
  115. package/packages/omo-codex/plugin/components/codegraph/src/session-start-project.ts +109 -0
  116. package/packages/omo-codex/plugin/components/codegraph/src/session-start-worker-result.ts +148 -0
  117. package/packages/omo-codex/plugin/components/codegraph/src/session-start-worker.ts +126 -175
  118. package/packages/omo-codex/plugin/components/codegraph/test/hook-exclusion.test.ts +4 -4
  119. package/packages/omo-codex/plugin/components/codegraph/test/hook-session-start-guard.test.ts +160 -0
  120. package/packages/omo-codex/plugin/components/codegraph/test/hook-store-upgrade.test.ts +12 -138
  121. package/packages/omo-codex/plugin/components/codegraph/test/hook.test.ts +34 -24
  122. package/packages/omo-codex/plugin/components/codegraph/test/mcp-bridge-fixtures.ts +3 -3
  123. package/packages/omo-codex/plugin/components/codegraph/test/package-runtime.test.ts +2 -2
  124. package/packages/omo-codex/plugin/components/codegraph/test/provisioned-node-guard.test.ts +5 -5
  125. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-bridge.test.ts +3 -3
  126. package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-facade.test.ts +1 -1
  127. package/packages/omo-codex/plugin/components/codegraph/test/serve-provision.test.ts +45 -0
  128. package/packages/omo-codex/plugin/components/codegraph/test/serve-unavailable.test.ts +2 -2
  129. package/packages/omo-codex/plugin/components/codegraph/test/session-start-node-support.test.ts +70 -13
  130. package/packages/omo-codex/plugin/components/codegraph/test/session-start-project.test.ts +58 -0
  131. package/packages/omo-codex/plugin/components/codegraph/test/session-start-state.test.ts +104 -0
  132. package/packages/omo-codex/plugin/components/codegraph/test/session-start-trust-boundary.test.ts +4 -2
  133. package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-cooldown.test.ts +116 -0
  134. package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-flow.test.ts +58 -57
  135. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  136. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  137. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  138. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  139. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  140. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  141. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
  142. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  143. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  144. package/packages/omo-codex/plugin/components/rules/dist/cli.js +32 -15
  145. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  146. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  147. package/packages/omo-codex/plugin/components/rules/src/post-compact-budget.ts +1 -1
  148. package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +2 -2
  149. package/packages/omo-codex/plugin/components/start-work-continuation/package.json +1 -1
  150. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  151. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  152. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  153. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  154. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  155. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  156. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +1 -1
  157. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
  158. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  159. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +17 -0
  160. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  161. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  162. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  163. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +1 -1
  164. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  165. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  166. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  167. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  168. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  169. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  170. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  171. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  172. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  173. package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +1 -1
  174. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  175. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  176. package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +1 -1
  177. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  178. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +1 -1
  179. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  180. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  181. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  182. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  183. package/packages/omo-codex/plugin/package-lock.json +42 -41
  184. package/packages/omo-codex/plugin/package.json +1 -1
  185. package/packages/omo-codex/plugin/scripts/sync-skills.mjs +6 -0
  186. package/packages/omo-codex/plugin/shared/src/config-loader.ts +165 -16
  187. package/packages/omo-codex/plugin/shared/src/config-migration.ts +162 -0
  188. package/packages/omo-codex/plugin/shared/test/config-loader.test.ts +186 -9
  189. package/packages/omo-codex/plugin/skills/coding-agent-sessions/SKILL.md +4 -3
  190. package/packages/omo-codex/plugin/skills/coding-agent-sessions/references/all-platforms.md +3 -1
  191. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/aside_scanner.py +140 -0
  192. package/packages/omo-codex/plugin/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +3 -0
  193. package/packages/omo-codex/plugin/skills/data-scientist/SKILL.md +243 -0
  194. package/packages/omo-codex/plugin/skills/data-scientist/agents/openai.yaml +2 -0
  195. package/packages/omo-codex/plugin/skills/data-scientist/references/common-scenarios.md +176 -0
  196. package/packages/omo-codex/plugin/skills/data-scientist/references/execution-templates.md +197 -0
  197. package/packages/omo-codex/plugin/skills/data-scientist/references/integration-patterns.md +153 -0
  198. package/packages/omo-codex/plugin/skills/data-scientist/references/performance-benchmarks.md +37 -0
  199. package/packages/omo-codex/plugin/skills/data-scientist/references/uv-setup.md +78 -0
  200. package/packages/omo-codex/plugin/skills/data-scientist/scripts/quick-query.py +111 -0
  201. package/packages/omo-codex/plugin/skills/data-scientist/scripts/setup-uv.ps1 +53 -0
  202. package/packages/omo-codex/plugin/skills/data-scientist/scripts/setup-uv.sh +60 -0
  203. package/packages/omo-codex/plugin/skills/debugging/SKILL.md +1 -1
  204. package/packages/omo-codex/plugin/skills/frontend/ATTRIBUTION.md +7 -0
  205. package/packages/omo-codex/plugin/skills/frontend/SKILL.md +4 -1
  206. package/packages/omo-codex/plugin/skills/frontend/references/design/README.md +8 -0
  207. package/packages/omo-codex/plugin/skills/frontend/references/design/_INDEX.md +14 -1
  208. package/packages/omo-codex/plugin/skills/frontend/references/design/interaction-skill.md +144 -0
  209. package/packages/omo-codex/plugin/skills/programming/SKILL.md +1 -2
  210. package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +17 -0
  211. package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +1 -1
  212. package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +121 -11
  213. package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +7 -0
  214. package/packages/omo-codex/plugin/test/sync-skills.test.mjs +12 -0
  215. package/packages/omo-codex/scripts/install-dist/install-local.mjs +24 -5
  216. package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +4 -3
  217. package/packages/shared-skills/skills/coding-agent-sessions/references/all-platforms.md +3 -1
  218. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/aside_scanner.py +140 -0
  219. package/packages/shared-skills/skills/coding-agent-sessions/scripts/agent_sessions/scanners.py +3 -0
  220. package/packages/shared-skills/skills/data-scientist/SKILL.md +243 -0
  221. package/packages/shared-skills/skills/data-scientist/references/common-scenarios.md +176 -0
  222. package/packages/shared-skills/skills/data-scientist/references/execution-templates.md +197 -0
  223. package/packages/shared-skills/skills/data-scientist/references/integration-patterns.md +153 -0
  224. package/packages/shared-skills/skills/data-scientist/references/performance-benchmarks.md +37 -0
  225. package/packages/shared-skills/skills/data-scientist/references/uv-setup.md +78 -0
  226. package/packages/shared-skills/skills/data-scientist/scripts/quick-query.py +111 -0
  227. package/packages/shared-skills/skills/data-scientist/scripts/setup-uv.ps1 +53 -0
  228. package/packages/shared-skills/skills/data-scientist/scripts/setup-uv.sh +60 -0
  229. package/packages/shared-skills/skills/debugging/SKILL.md +1 -1
  230. package/packages/shared-skills/skills/frontend/ATTRIBUTION.md +7 -0
  231. package/packages/shared-skills/skills/frontend/SKILL.md +4 -1
  232. package/packages/shared-skills/skills/frontend/references/design/README.md +8 -0
  233. package/packages/shared-skills/skills/frontend/references/design/_INDEX.md +14 -1
  234. package/packages/shared-skills/skills/frontend/references/design/interaction-skill.md +144 -0
  235. package/packages/shared-skills/skills/programming/SKILL.md +1 -2
  236. package/packages/shared-skills/skills/ulw-plan/SKILL.md +1 -1
  237. package/packages/shared-skills/skills/ulw-research/SKILL.md +122 -11
  238. package/dist/plugin-config/layered-config-loader.d.ts +0 -2
  239. package/dist/plugin-config/single-config-loader.d.ts +0 -4
  240. package/dist/shared/migrate-legacy-config-file.d.ts +0 -1
  241. package/dist/shared/migration/config-migration.d.ts +0 -1
@@ -22,6 +22,8 @@ Analyze every change against these exact layers:
22
22
  | `omo opencode` | Root `oh-my-opencode` / `oh-my-openagent`, `src/`, `.opencode/`, `.agents/`, CLI, config, hooks, tools, docs | What semver bump should the OpenCode/OpenAgent npm packages use? |
23
23
  | `omo codex` | `packages/omo-codex`, `lazycodex-ai`, Codex plugin metadata/hooks, bundled MCP runtimes, `code-yeongyu/lazycodex` marketplace payload | Does LazyCodex need the same bump, a Codex-only note, or a marketplace release? |
24
24
 
25
+ Exclude commits and paths matching `senpi`, `omo-senpi`, `senpi-task`, `pi-goal`, or `pi-webfetch` from user-facing notes and version recommendations. Record them only in a separate internal-adapter exclusion ledger.
26
+
25
27
  ## Steps:
26
28
  1. Detect latest published versions for `oh-my-opencode`, `oh-my-openagent`, and `lazycodex-ai`.
27
29
  2. Run `git diff v{published-version}..HEAD` to see actual changes.
@@ -17,7 +17,7 @@ Print the following message to the user EXACTLY as written (in a friendly, celeb
17
17
 
18
18
  **Oh My OpenCode** is a powerful OpenCode plugin that transforms your AI agent into a full development team:
19
19
 
20
- - 🤖 **Multi-Agent Orchestration**: Oracle (GPT-5.6 Sol), Librarian & Explore (GPT-5.4 Mini Fast), Frontend Engineer (Gemini), and more
20
+ - 🤖 **Multi-Agent Orchestration**: Oracle (GPT-5.6 Sol), Librarian & Explore (GPT 5.6 Luna Fast), Frontend Engineer (Gemini), and more
21
21
  - 🔧 **LSP Tools**: Full IDE capabilities for your agents - hover, goto definition, find references, rename, code actions
22
22
  - 🔍 **AST-Grep**: Structural code search and replace across 25 languages
23
23
  - 📚 **Built-in MCPs**: Context7 for docs, Exa for web search, grep.app for GitHub code search
@@ -3,7 +3,7 @@ description: Publish oh-my-opencode to npm via GitHub Actions workflow
3
3
  argument-hint: <patch|minor|major>
4
4
  ---
5
5
 
6
- <command-instruction>
6
+
7
7
  You are the release manager for oh-my-opencode. Execute the FULL publish workflow from start to finish.
8
8
 
9
9
  ## CRITICAL: PUBLISH IS SHIP-ONLY — GO STRAIGHT TO THE WORKFLOW
@@ -26,6 +26,32 @@ Publishing is complete only after all release surfaces are verified:
26
26
 
27
27
  The publish workflow must not be reported complete while any of `oh-my-opencode`, `oh-my-openagent`, `lazycodex-ai`, or `code-yeongyu/lazycodex` verification is unresolved.
28
28
 
29
+ ## CRITICAL: FULL WORKFLOW MEANS DISCORD TOO
30
+
31
+ Publishing is not complete until the Discord release announcement has been attempted.
32
+
33
+ - **DO NOT stop after creating the GitHub release.**
34
+ - **DO NOT stop after drafting or applying release notes.**
35
+ - **DO NOT wait for a second user acknowledgement if the user already confirmed the publish.**
36
+ - After the release notes are finalized, immediately run Step 7.5 and post to Discord.
37
+ - If Discord posting fails after authentication/retry, report the failure clearly and continue the remaining verification steps. A skipped Discord step is a workflow failure.
38
+
39
+ ## CRITICAL: NO EARLY TURN-END AFTER TRIGGER (COMPLETION CONTRACT)
40
+
41
+ Once `gh workflow run publish` succeeds, the publish is NOT done. A prior session forgot this: it triggered the workflow and ended its turn, leaving the release unverified, the enhanced summary unwritten, and the Discord announcement unsent. That mistake is why this section exists.
42
+
43
+ After Step 3 (trigger), you MUST drive the run to a terminal conclusion AND complete every post-trigger step before ending your turn. You may NOT end the turn, hand off, or stop for the day while ANY of these is unresolved:
44
+
45
+ 1. **Run conclusion** — `gh run view <id> --json conclusion` must return `success` (poll while drafting notes; never sleep idle).
46
+ 2. **Release exists** — Step 5: `gh release view v${NEW_VERSION}` resolves.
47
+ 3. **Enhanced summary applied** — Step 6 + Step 7: draft (mandatory for patch/minor/major) AND `gh release edit --notes-file` applied. "Patch is optional" is wrong; patch summaries are MANDATORY.
48
+ 4. **Discord announced** — Step 7.5: `agent-discordbot message send` attempted; either a message id is recorded OR a clear failure is reported to the user. A skipped Discord step is a workflow failure.
49
+ 5. **npm verified** — Step 8: `npm view oh-my-opencode version` (and oh-my-openagent, lazycodex-ai) shows `${NEW_VERSION}`.
50
+
51
+ Only after all five are green may you end the turn. If the run fails, run `gh run view <id> --log-failed`, report it, and STOP (do not repair the tree mid-publish). If a post-trigger step fails for an external reason (npm propagation, Discord auth), report it clearly and continue the remaining steps — do not let one failure abort the rest.
52
+
53
+ This contract applies to the slash-command copies (`.agents/command/publish.md`, `.opencode/command/publish.md`) too; they are kept byte-identical to this skill per the `.agents/AGENTS.md` drift rule.
54
+
29
55
  ## CRITICAL: ARGUMENT REQUIREMENT
30
56
 
31
57
  **You MUST receive a version bump type from the user.** Valid options:
@@ -52,8 +78,9 @@ The publish workflow must not be reported complete while any of `oh-my-opencode`
52
78
  { "id": "run-workflow", "content": "Trigger GitHub Actions publish workflow", "status": "pending", "priority": "high" },
53
79
  { "id": "wait-workflow", "content": "Wait for workflow completion (poll every 30s)", "status": "pending", "priority": "high" },
54
80
  { "id": "verify-and-preview", "content": "Verify release created + preview auto-generated changelog & contributor thanks", "status": "pending", "priority": "high" },
55
- { "id": "draft-summary", "content": "Draft enhanced release summary (mandatory for minor/major, optional for patch — ask user)", "status": "pending", "priority": "high" },
56
- { "id": "apply-summary", "content": "Prepend enhanced summary to release (if user opted in)", "status": "pending", "priority": "high" },
81
+ { "id": "draft-summary", "content": "Draft enhanced release summary (mandatory for all release types)", "status": "pending", "priority": "high" },
82
+ { "id": "apply-summary", "content": "Prepend enhanced summary to release", "status": "pending", "priority": "high" },
83
+ { "id": "discord-announce", "content": "MANDATORY: post release announcement to Discord channel immediately after release notes are finalized", "status": "pending", "priority": "high" },
57
84
  { "id": "verify-npm", "content": "Verify npm package published successfully", "status": "pending", "priority": "high" },
58
85
  { "id": "verify-lazycodex", "content": "Verify lazycodex-ai publish, Codex plugin metadata version stamp, and code-yeongyu/lazycodex release/sync", "status": "pending", "priority": "high" },
59
86
  { "id": "verify-platform-binaries", "content": "Spot-check platform binary packages on npm", "status": "pending", "priority": "high" },
@@ -163,10 +190,9 @@ After running the preview, present the output to the user and say:
163
190
  >
164
191
  > You do NOT need to write any of this. It's handled.
165
192
  >
166
- > **For a patch release**, this is usually sufficient on its own. However, if there are notable bug fixes or changes worth highlighting, an enhanced summary can be added.
167
- > **For a minor/major release**, an enhanced summary is **required** — I'll draft one in the next step.
193
+ > **For all release types**, an enhanced summary is **required** I'll draft one in the next step.
168
194
 
169
- Wait for the user to acknowledge before proceeding.
195
+ **APPROVAL GATE (single, binary):** The user's initial publish request with a named bump type IS the only approval this workflow requires. Do NOT wait for a separate acknowledgement here. Present the preview, then IMMEDIATELY proceed to Step 6. The only exception: if the user explicitly said "let me review the changelog before you continue" (or equivalent), stop and wait. Otherwise continue without ending the turn.
170
196
  </agent-instruction>
171
197
 
172
198
  ---
@@ -177,12 +203,18 @@ Wait for the user to acknowledge before proceeding.
177
203
 
178
204
  | Release Type | Action |
179
205
  |-------------|--------|
180
- | **patch** | ASK the user: "Would you like me to draft an enhanced summary highlighting the key bug fixes / changes? Or is the auto-generated changelog sufficient?" If user declines → skip to Step 8. If user accepts → draft a concise bug-fix / change summary below. |
206
+ | **patch** | MANDATORY. Draft a concise bug-fix / change summary. Do NOT proceed without one. |
181
207
  | **minor** | MANDATORY. Draft a concise feature summary. Do NOT proceed without one. |
182
208
  | **major** | MANDATORY. Draft a full release narrative with migration notes if applicable. Do NOT proceed without one. |
183
209
 
184
210
  </decision-gate>
185
211
 
212
+ ### LAST RELEASE BEFORE THE OMO NATIVE CLI PUBLIC RELEASE
213
+
214
+ When the user identifies this as the final release before the OmO Native CLI public release, the GitHub summary MUST begin with this dedicated heading and the Discord announcement MUST repeat it as a dedicated heading immediately after `@here`:
215
+
216
+ `## LAST RELEASE BEFORE THE OMO NATIVE CLI PUBLIC RELEASE`
217
+
186
218
  ### What You're Writing (and What You're NOT)
187
219
 
188
220
  You are writing the **headline layer** — a product announcement that sits ABOVE the auto-generated commit log. Think "release blog post", not "git log".
@@ -193,6 +225,7 @@ You are writing the **headline layer** — a product announcement that sits ABOV
193
225
  - ALWAYS focus on USER IMPACT: what can users DO now that they couldn't before?
194
226
  - ALWAYS group by THEME or CAPABILITY, not by commit type (feat/fix/refactor).
195
227
  - ALWAYS use concrete language: "You can now do X" not "Added X feature".
228
+ - NEVER include internal adapter changes matching `senpi`, `omo-senpi`, `senpi-task`, `pi-goal`, or `pi-webfetch` in either release-note variant.
196
229
  </rules>
197
230
 
198
231
  <examples>
@@ -238,17 +271,17 @@ cat /tmp/release-summary-v${NEW_VERSION}.md
238
271
  ```
239
272
 
240
273
  <agent-instruction>
241
- After drafting, ask the user:
242
- > "Here's the release summary I drafted. This will appear AT THE TOP of the release notes, above the auto-generated commit changelog and contributor thanks. Want me to adjust anything before applying?"
274
+ Present the draft to the user:
275
+ > "Here's the release summary I drafted. This will appear AT THE TOP of the release notes, above the auto-generated commit changelog and contributor thanks."
243
276
 
244
- Do NOT proceed to Step 7 without user confirmation.
277
+ **APPROVAL GATE (same single gate):** The initial publish confirmation covers this step too. Present the draft, then IMMEDIATELY proceed to Step 7 (apply) and Step 7.5 (Discord). Do NOT stop to wait for approval unless the user explicitly requested a release-note review hold before the publish started. The Discord announcement (Step 7.5) is mandatory and must not be blocked by a review hold that was never requested.
245
278
  </agent-instruction>
246
279
 
247
280
  ---
248
281
 
249
282
  ## STEP 7: APPLY ENHANCED SUMMARY TO RELEASE
250
283
 
251
- **Skip this step ONLY if the user opted out of the enhanced summary in Step 6** proceed directly to Step 8.
284
+ This step is MANDATORY. The enhanced summary from Step 6 must always be applied.
252
285
 
253
286
  <architecture>
254
287
  The final release note structure:
@@ -297,6 +330,64 @@ gh release view "v${NEW_VERSION}" --json url --jq '.url'
297
330
 
298
331
  ---
299
332
 
333
+ ## STEP 7.5: POST RELEASE NOTES TO DISCORD
334
+
335
+ After the release notes are finalized, post them to the Discord channel. This step is mandatory for every publish run.
336
+
337
+ <hard-gate>
338
+ The workflow is not complete until this step has either:
339
+ 1. Sent a Discord message successfully and recorded the message ID, or
340
+ 2. Failed after `agent-discordbot auth status` plus one send retry, with the Jobdori bot-token failure reported to the user.
341
+
342
+ Never skip this step because the release summary was awaiting approval. If the user already confirmed the publish, continue through Discord before stopping.
343
+ </hard-gate>
344
+
345
+ <agent-discord-instruction>
346
+ 1. Use the Jobdori bot token through `agent-discordbot` for release announcements. This is the required release path; do not use the personal `agent-discord` token unless the bot path is unavailable and the user explicitly approves the fallback. Pin the bot id so release messages go out as the Jobdori bot even if the local `agent-discordbot` current bot changes.
347
+ ```bash
348
+ JOBDORI_BOT_ID=1486173823354146917
349
+ agent-discordbot auth status --bot "$JOBDORI_BOT_ID"
350
+ ```
351
+
352
+ 2. **Read recent messages** in the channel to match the existing announcement style:
353
+ ```bash
354
+ JOBDORI_BOT_ID=1486173823354146917
355
+ agent-discordbot message list 1454708427392680067 --bot "$JOBDORI_BOT_ID" --limit 5
356
+ ```
357
+
358
+ 3. If `agent-discordbot` is unavailable or unauthorized, stop and report that the Jobdori token path failed. Only then may a human decide whether to use `agent-discord`.
359
+
360
+ 4. Post the release announcement to channel `1454708427392680067` matching the style of previous announcements. The message should follow this structure:
361
+ ```
362
+ @here
363
+
364
+ 🎉 **oh-my-opencode v{VERSION} — {Short Tagline}**
365
+
366
+ **Feature 1** — one-line description.
367
+
368
+ **Feature 2** — one-line description.
369
+
370
+ **Feature 3** — one-line description.
371
+
372
+ Plus {summary of remaining changes}.
373
+
374
+ 📦 Install / upgrade:
375
+ `bun i -g oh-my-opencode@{VERSION}` (or `npm`)
376
+
377
+ 📝 Full release notes: {RELEASE_URL}
378
+ ```
379
+
380
+ ```bash
381
+ JOBDORI_BOT_ID=1486173823354146917
382
+ RELEASE_URL=$(gh release view "v${NEW_VERSION}" --json url --jq '.url')
383
+ agent-discordbot message send 1454708427392680067 "{your message following the style above}" --bot "$JOBDORI_BOT_ID"
384
+ ```
385
+
386
+ If the message fails to send, warn the user and continue — do NOT block the publish workflow on Discord errors.
387
+ </agent-discord-instruction>
388
+
389
+ ---
390
+
300
391
  ## STEP 8: VERIFY NPM PUBLICATION
301
392
 
302
393
  Poll npm registry until the new version appears:
@@ -343,20 +434,3 @@ Report success to user with:
343
434
  ## LANGUAGE
344
435
 
345
436
  Respond to user in English.
346
-
347
- </command-instruction>
348
-
349
- <current-context>
350
- <published-version>
351
- !`npm view oh-my-opencode version 2>/dev/null || echo "not published"`
352
- </published-version>
353
- <local-version>
354
- !`node -p "require('./package.json').version" 2>/dev/null || echo "unknown"`
355
- </local-version>
356
- <git-status>
357
- !`git status --porcelain`
358
- </git-status>
359
- <recent-commits>
360
- !`npm view oh-my-opencode version 2>/dev/null | xargs -I{} git log "v{}"..HEAD --oneline 2>/dev/null | head -15 || echo "no commits"`
361
- </recent-commits>
362
- </current-context>
@@ -22,6 +22,8 @@ Analyze every change against these exact layers:
22
22
  | `omo opencode` | Root `oh-my-opencode` / `oh-my-openagent`, `src/`, `.opencode/`, `.agents/`, CLI, config, hooks, tools, docs | What semver bump should the OpenCode/OpenAgent npm packages use? |
23
23
  | `omo codex` | `packages/omo-codex`, `lazycodex-ai`, Codex plugin metadata/hooks, bundled MCP runtimes, `code-yeongyu/lazycodex` marketplace payload | Does LazyCodex need the same bump, a Codex-only note, or a marketplace release? |
24
24
 
25
+ Exclude commits and paths matching `senpi`, `omo-senpi`, `senpi-task`, `pi-goal`, or `pi-webfetch` from user-facing notes and version recommendations. Record them only in a separate internal-adapter exclusion ledger.
26
+
25
27
  ## Steps:
26
28
  1. Detect latest published versions for `oh-my-opencode`, `oh-my-openagent`, and `lazycodex-ai`.
27
29
  2. Run `git diff v{published-version}..HEAD` to see actual changes.
@@ -33,10 +33,10 @@ Required categories are `unspecified-low`, `unspecified-high`, `ultrabrain`, and
33
33
  | Category | Model | Native Mindset | Why This Adversarial Role Fits |
34
34
  |----------|-------|----------------|--------------------------------|
35
35
  | `unspecified-low` | gpt-5.6-luna xhigh | Mid-tier, simplicity-leaning, structure-demanding | Pragmatist Skeptic — model bias toward simplicity makes it the natural enemy of over-engineering |
36
- | `unspecified-high` | claude-opus-4-7 max | High-effort, broad-impact, coordination-aware | Integration Tester — max-tier broad-scope thinking exposes cross-module fragility |
37
- | `deep` | gpt-5.6-terra xhigh | Autonomous, exploration-heavy, evidence-driven | Autonomous Researcher — natural exploration bias attacks unfounded claims |
36
+ | `unspecified-high` | kimi-k3 max -> claude-opus-5 xhigh -> gpt-5.6-sol high | High-effort, broad-impact, coordination-aware | Integration Tester — max-tier broad-scope thinking exposes cross-module fragility |
37
+ | `deep` | gpt-5.6-sol medium | Autonomous, exploration-heavy, evidence-driven | Autonomous Researcher — natural exploration bias attacks unfounded claims |
38
38
  | `ultrabrain` | gpt-5.6-sol xhigh | Hard-logic, simplicity-biased, strategic advisor | Architect Strategist — xhigh reasoning sees structural flaws others miss |
39
- | `artistry` | gemini-3.1-pro high | Unconventional, pattern-breaking, lateral | Creative Challenger — pattern-breaking bias attacks orthodox thinking |
39
+ | `artistry` | claude-fable-5 xhigh | Unconventional, pattern-breaking, lateral | Creative Challenger — pattern-breaking bias attacks orthodox thinking |
40
40
 
41
41
  ### MEMBER 1: `skeptic` (category: `unspecified-low`)
42
42
 
@@ -17,7 +17,7 @@ Print the following message to the user EXACTLY as written (in a friendly, celeb
17
17
 
18
18
  **Oh My OpenCode** is a powerful OpenCode plugin that transforms your AI agent into a full development team:
19
19
 
20
- - 🤖 **Multi-Agent Orchestration**: Oracle (GPT-5.6 Sol), Librarian & Explore (GPT-5.4 Mini Fast), Frontend Engineer (Gemini), and more
20
+ - 🤖 **Multi-Agent Orchestration**: Oracle (GPT-5.6 Sol), Librarian & Explore (GPT 5.6 Luna Fast), Frontend Engineer (Gemini), and more
21
21
  - 🔧 **LSP Tools**: Full IDE capabilities for your agents - hover, goto definition, find references, rename, code actions
22
22
  - 🔍 **AST-Grep**: Structural code search and replace across 25 languages
23
23
  - 📚 **Built-in MCPs**: Context7 for docs, Exa for web search, grep.app for GitHub code search
@@ -35,6 +35,22 @@ Publishing is not complete until the Discord release announcement has been attem
35
35
  - After the release notes are finalized, immediately run Step 7.5 and post to Discord.
36
36
  - If Discord posting fails after authentication/retry, report the failure clearly and continue the remaining verification steps. A skipped Discord step is a workflow failure.
37
37
 
38
+ ## CRITICAL: NO EARLY TURN-END AFTER TRIGGER (COMPLETION CONTRACT)
39
+
40
+ Once `gh workflow run publish` succeeds, the publish is NOT done. A prior session forgot this: it triggered the workflow and ended its turn, leaving the release unverified, the enhanced summary unwritten, and the Discord announcement unsent. That mistake is why this section exists.
41
+
42
+ After Step 3 (trigger), you MUST drive the run to a terminal conclusion AND complete every post-trigger step before ending your turn. You may NOT end the turn, hand off, or stop for the day while ANY of these is unresolved:
43
+
44
+ 1. **Run conclusion** — `gh run view <id> --json conclusion` must return `success` (poll while drafting notes; never sleep idle).
45
+ 2. **Release exists** — Step 5: `gh release view v${NEW_VERSION}` resolves.
46
+ 3. **Enhanced summary applied** — Step 6 + Step 7: draft (mandatory for patch/minor/major) AND `gh release edit --notes-file` applied. "Patch is optional" is wrong; patch summaries are MANDATORY.
47
+ 4. **Discord announced** — Step 7.5: `agent-discordbot message send` attempted; either a message id is recorded OR a clear failure is reported to the user. A skipped Discord step is a workflow failure.
48
+ 5. **npm verified** — Step 8: `npm view oh-my-opencode version` (and oh-my-openagent, lazycodex-ai) shows `${NEW_VERSION}`.
49
+
50
+ Only after all five are green may you end the turn. If the run fails, run `gh run view <id> --log-failed`, report it, and STOP (do not repair the tree mid-publish). If a post-trigger step fails for an external reason (npm propagation, Discord auth), report it clearly and continue the remaining steps — do not let one failure abort the rest.
51
+
52
+ This contract applies to the slash-command copies (`.agents/command/publish.md`, `.opencode/command/publish.md`) too; they are kept byte-identical to this skill per the `.agents/AGENTS.md` drift rule.
53
+
38
54
  ## CRITICAL: ARGUMENT REQUIREMENT
39
55
 
40
56
  **You MUST receive a version bump type from the user.** Valid options:
@@ -175,9 +191,7 @@ After running the preview, present the output to the user and say:
175
191
  >
176
192
  > **For all release types**, an enhanced summary is **required** — I'll draft one in the next step.
177
193
 
178
- Wait for the user to acknowledge before proceeding.
179
-
180
- If the user already confirmed the publish workflow and did not explicitly ask to review the generated changelog before release-note editing, treat the publish confirmation as sufficient acknowledgement and continue. Do not end the assistant turn here.
194
+ **APPROVAL GATE (single, binary):** The user's initial publish request with a named bump type IS the only approval this workflow requires. Do NOT wait for a separate acknowledgement here. Present the preview, then IMMEDIATELY proceed to Step 6. The only exception: if the user explicitly said "let me review the changelog before you continue" (or equivalent), stop and wait. Otherwise continue without ending the turn.
181
195
  </agent-instruction>
182
196
 
183
197
  ---
@@ -194,6 +208,12 @@ If the user already confirmed the publish workflow and did not explicitly ask to
194
208
 
195
209
  </decision-gate>
196
210
 
211
+ ### LAST RELEASE BEFORE THE OMO NATIVE CLI PUBLIC RELEASE
212
+
213
+ When the user identifies this as the final release before the OmO Native CLI public release, the GitHub summary MUST begin with this dedicated heading and the Discord announcement MUST repeat it as a dedicated heading immediately after `@here`:
214
+
215
+ `## LAST RELEASE BEFORE THE OMO NATIVE CLI PUBLIC RELEASE`
216
+
197
217
  ### What You're Writing (and What You're NOT)
198
218
 
199
219
  You are writing the **headline layer** — a product announcement that sits ABOVE the auto-generated commit log. Think "release blog post", not "git log".
@@ -204,6 +224,7 @@ You are writing the **headline layer** — a product announcement that sits ABOV
204
224
  - ALWAYS focus on USER IMPACT: what can users DO now that they couldn't before?
205
225
  - ALWAYS group by THEME or CAPABILITY, not by commit type (feat/fix/refactor).
206
226
  - ALWAYS use concrete language: "You can now do X" not "Added X feature".
227
+ - NEVER include internal adapter changes matching `senpi`, `omo-senpi`, `senpi-task`, `pi-goal`, or `pi-webfetch` in either release-note variant.
207
228
  </rules>
208
229
 
209
230
  <examples>
@@ -249,10 +270,10 @@ cat /tmp/release-summary-v${NEW_VERSION}.md
249
270
  ```
250
271
 
251
272
  <agent-instruction>
252
- After drafting, ask the user:
253
- > "Here's the release summary I drafted. This will appear AT THE TOP of the release notes, above the auto-generated commit changelog and contributor thanks. Want me to adjust anything before applying?"
273
+ Present the draft to the user:
274
+ > "Here's the release summary I drafted. This will appear AT THE TOP of the release notes, above the auto-generated commit changelog and contributor thanks."
254
275
 
255
- If the user already confirmed the publish workflow and did not explicitly request a release-note review hold, proceed to Step 7 after presenting the draft. Do not stop before Step 7.5, because the Discord announcement is mandatory.
276
+ **APPROVAL GATE (same single gate):** The initial publish confirmation covers this step too. Present the draft, then IMMEDIATELY proceed to Step 7 (apply) and Step 7.5 (Discord). Do NOT stop to wait for approval unless the user explicitly requested a release-note review hold before the publish started. The Discord announcement (Step 7.5) is mandatory and must not be blocked by a review hold that was never requested.
256
277
  </agent-instruction>
257
278
 
258
279
  ---
@@ -22,6 +22,8 @@ Analyze every change against these exact layers:
22
22
  | `omo opencode` | Root `oh-my-opencode` / `oh-my-openagent`, `src/`, `.opencode/`, `.agents/`, CLI, config, hooks, tools, docs | What semver bump should the OpenCode/OpenAgent npm packages use? |
23
23
  | `omo codex` | `packages/omo-codex`, `lazycodex-ai`, Codex plugin metadata/hooks, bundled MCP runtimes, `code-yeongyu/lazycodex` marketplace payload | Does LazyCodex need the same bump, a Codex-only note, or a marketplace release? |
24
24
 
25
+ Exclude commits and paths matching `senpi`, `omo-senpi`, `senpi-task`, `pi-goal`, or `pi-webfetch` from user-facing notes and version recommendations. Record them only in a separate internal-adapter exclusion ledger.
26
+
25
27
  ## Steps:
26
28
  1. Detect latest published versions for `oh-my-opencode`, `oh-my-openagent`, and `lazycodex-ai`.
27
29
  2. Run `git diff v{published-version}..HEAD` to see actual changes.
@@ -17,7 +17,7 @@ Print the following message to the user EXACTLY as written (in a friendly, celeb
17
17
 
18
18
  **Oh My OpenCode** is a powerful OpenCode plugin that transforms your AI agent into a full development team:
19
19
 
20
- - 🤖 **Multi-Agent Orchestration**: Oracle (GPT-5.6 Sol), Librarian & Explore (GPT-5.4 Mini Fast), Frontend Engineer (Gemini), and more
20
+ - 🤖 **Multi-Agent Orchestration**: Oracle (GPT-5.6 Sol), Librarian & Explore (GPT 5.6 Luna Fast), Frontend Engineer (Gemini), and more
21
21
  - 🔧 **LSP Tools**: Full IDE capabilities for your agents - hover, goto definition, find references, rename, code actions
22
22
  - 🔍 **AST-Grep**: Structural code search and replace across 25 languages
23
23
  - 📚 **Built-in MCPs**: Context7 for docs, Exa for web search, grep.app for GitHub code search
@@ -3,7 +3,7 @@ description: Publish oh-my-opencode to npm via GitHub Actions workflow
3
3
  argument-hint: <patch|minor|major>
4
4
  ---
5
5
 
6
- <command-instruction>
6
+
7
7
  You are the release manager for oh-my-opencode. Execute the FULL publish workflow from start to finish.
8
8
 
9
9
  ## CRITICAL: PUBLISH IS SHIP-ONLY — GO STRAIGHT TO THE WORKFLOW
@@ -26,6 +26,32 @@ Publishing is complete only after all release surfaces are verified:
26
26
 
27
27
  The publish workflow must not be reported complete while any of `oh-my-opencode`, `oh-my-openagent`, `lazycodex-ai`, or `code-yeongyu/lazycodex` verification is unresolved.
28
28
 
29
+ ## CRITICAL: FULL WORKFLOW MEANS DISCORD TOO
30
+
31
+ Publishing is not complete until the Discord release announcement has been attempted.
32
+
33
+ - **DO NOT stop after creating the GitHub release.**
34
+ - **DO NOT stop after drafting or applying release notes.**
35
+ - **DO NOT wait for a second user acknowledgement if the user already confirmed the publish.**
36
+ - After the release notes are finalized, immediately run Step 7.5 and post to Discord.
37
+ - If Discord posting fails after authentication/retry, report the failure clearly and continue the remaining verification steps. A skipped Discord step is a workflow failure.
38
+
39
+ ## CRITICAL: NO EARLY TURN-END AFTER TRIGGER (COMPLETION CONTRACT)
40
+
41
+ Once `gh workflow run publish` succeeds, the publish is NOT done. A prior session forgot this: it triggered the workflow and ended its turn, leaving the release unverified, the enhanced summary unwritten, and the Discord announcement unsent. That mistake is why this section exists.
42
+
43
+ After Step 3 (trigger), you MUST drive the run to a terminal conclusion AND complete every post-trigger step before ending your turn. You may NOT end the turn, hand off, or stop for the day while ANY of these is unresolved:
44
+
45
+ 1. **Run conclusion** — `gh run view <id> --json conclusion` must return `success` (poll while drafting notes; never sleep idle).
46
+ 2. **Release exists** — Step 5: `gh release view v${NEW_VERSION}` resolves.
47
+ 3. **Enhanced summary applied** — Step 6 + Step 7: draft (mandatory for patch/minor/major) AND `gh release edit --notes-file` applied. "Patch is optional" is wrong; patch summaries are MANDATORY.
48
+ 4. **Discord announced** — Step 7.5: `agent-discordbot message send` attempted; either a message id is recorded OR a clear failure is reported to the user. A skipped Discord step is a workflow failure.
49
+ 5. **npm verified** — Step 8: `npm view oh-my-opencode version` (and oh-my-openagent, lazycodex-ai) shows `${NEW_VERSION}`.
50
+
51
+ Only after all five are green may you end the turn. If the run fails, run `gh run view <id> --log-failed`, report it, and STOP (do not repair the tree mid-publish). If a post-trigger step fails for an external reason (npm propagation, Discord auth), report it clearly and continue the remaining steps — do not let one failure abort the rest.
52
+
53
+ This contract applies to the slash-command copies (`.agents/command/publish.md`, `.opencode/command/publish.md`) too; they are kept byte-identical to this skill per the `.agents/AGENTS.md` drift rule.
54
+
29
55
  ## CRITICAL: ARGUMENT REQUIREMENT
30
56
 
31
57
  **You MUST receive a version bump type from the user.** Valid options:
@@ -52,8 +78,9 @@ The publish workflow must not be reported complete while any of `oh-my-opencode`
52
78
  { "id": "run-workflow", "content": "Trigger GitHub Actions publish workflow", "status": "pending", "priority": "high" },
53
79
  { "id": "wait-workflow", "content": "Wait for workflow completion (poll every 30s)", "status": "pending", "priority": "high" },
54
80
  { "id": "verify-and-preview", "content": "Verify release created + preview auto-generated changelog & contributor thanks", "status": "pending", "priority": "high" },
55
- { "id": "draft-summary", "content": "Draft enhanced release summary (mandatory for minor/major, optional for patch — ask user)", "status": "pending", "priority": "high" },
56
- { "id": "apply-summary", "content": "Prepend enhanced summary to release (if user opted in)", "status": "pending", "priority": "high" },
81
+ { "id": "draft-summary", "content": "Draft enhanced release summary (mandatory for all release types)", "status": "pending", "priority": "high" },
82
+ { "id": "apply-summary", "content": "Prepend enhanced summary to release", "status": "pending", "priority": "high" },
83
+ { "id": "discord-announce", "content": "MANDATORY: post release announcement to Discord channel immediately after release notes are finalized", "status": "pending", "priority": "high" },
57
84
  { "id": "verify-npm", "content": "Verify npm package published successfully", "status": "pending", "priority": "high" },
58
85
  { "id": "verify-lazycodex", "content": "Verify lazycodex-ai publish, Codex plugin metadata version stamp, and code-yeongyu/lazycodex release/sync", "status": "pending", "priority": "high" },
59
86
  { "id": "verify-platform-binaries", "content": "Spot-check platform binary packages on npm", "status": "pending", "priority": "high" },
@@ -163,10 +190,9 @@ After running the preview, present the output to the user and say:
163
190
  >
164
191
  > You do NOT need to write any of this. It's handled.
165
192
  >
166
- > **For a patch release**, this is usually sufficient on its own. However, if there are notable bug fixes or changes worth highlighting, an enhanced summary can be added.
167
- > **For a minor/major release**, an enhanced summary is **required** — I'll draft one in the next step.
193
+ > **For all release types**, an enhanced summary is **required** I'll draft one in the next step.
168
194
 
169
- Wait for the user to acknowledge before proceeding.
195
+ **APPROVAL GATE (single, binary):** The user's initial publish request with a named bump type IS the only approval this workflow requires. Do NOT wait for a separate acknowledgement here. Present the preview, then IMMEDIATELY proceed to Step 6. The only exception: if the user explicitly said "let me review the changelog before you continue" (or equivalent), stop and wait. Otherwise continue without ending the turn.
170
196
  </agent-instruction>
171
197
 
172
198
  ---
@@ -177,12 +203,18 @@ Wait for the user to acknowledge before proceeding.
177
203
 
178
204
  | Release Type | Action |
179
205
  |-------------|--------|
180
- | **patch** | ASK the user: "Would you like me to draft an enhanced summary highlighting the key bug fixes / changes? Or is the auto-generated changelog sufficient?" If user declines → skip to Step 8. If user accepts → draft a concise bug-fix / change summary below. |
206
+ | **patch** | MANDATORY. Draft a concise bug-fix / change summary. Do NOT proceed without one. |
181
207
  | **minor** | MANDATORY. Draft a concise feature summary. Do NOT proceed without one. |
182
208
  | **major** | MANDATORY. Draft a full release narrative with migration notes if applicable. Do NOT proceed without one. |
183
209
 
184
210
  </decision-gate>
185
211
 
212
+ ### LAST RELEASE BEFORE THE OMO NATIVE CLI PUBLIC RELEASE
213
+
214
+ When the user identifies this as the final release before the OmO Native CLI public release, the GitHub summary MUST begin with this dedicated heading and the Discord announcement MUST repeat it as a dedicated heading immediately after `@here`:
215
+
216
+ `## LAST RELEASE BEFORE THE OMO NATIVE CLI PUBLIC RELEASE`
217
+
186
218
  ### What You're Writing (and What You're NOT)
187
219
 
188
220
  You are writing the **headline layer** — a product announcement that sits ABOVE the auto-generated commit log. Think "release blog post", not "git log".
@@ -193,6 +225,7 @@ You are writing the **headline layer** — a product announcement that sits ABOV
193
225
  - ALWAYS focus on USER IMPACT: what can users DO now that they couldn't before?
194
226
  - ALWAYS group by THEME or CAPABILITY, not by commit type (feat/fix/refactor).
195
227
  - ALWAYS use concrete language: "You can now do X" not "Added X feature".
228
+ - NEVER include internal adapter changes matching `senpi`, `omo-senpi`, `senpi-task`, `pi-goal`, or `pi-webfetch` in either release-note variant.
196
229
  </rules>
197
230
 
198
231
  <examples>
@@ -238,17 +271,17 @@ cat /tmp/release-summary-v${NEW_VERSION}.md
238
271
  ```
239
272
 
240
273
  <agent-instruction>
241
- After drafting, ask the user:
242
- > "Here's the release summary I drafted. This will appear AT THE TOP of the release notes, above the auto-generated commit changelog and contributor thanks. Want me to adjust anything before applying?"
274
+ Present the draft to the user:
275
+ > "Here's the release summary I drafted. This will appear AT THE TOP of the release notes, above the auto-generated commit changelog and contributor thanks."
243
276
 
244
- Do NOT proceed to Step 7 without user confirmation.
277
+ **APPROVAL GATE (same single gate):** The initial publish confirmation covers this step too. Present the draft, then IMMEDIATELY proceed to Step 7 (apply) and Step 7.5 (Discord). Do NOT stop to wait for approval unless the user explicitly requested a release-note review hold before the publish started. The Discord announcement (Step 7.5) is mandatory and must not be blocked by a review hold that was never requested.
245
278
  </agent-instruction>
246
279
 
247
280
  ---
248
281
 
249
282
  ## STEP 7: APPLY ENHANCED SUMMARY TO RELEASE
250
283
 
251
- **Skip this step ONLY if the user opted out of the enhanced summary in Step 6** proceed directly to Step 8.
284
+ This step is MANDATORY. The enhanced summary from Step 6 must always be applied.
252
285
 
253
286
  <architecture>
254
287
  The final release note structure:
@@ -297,6 +330,64 @@ gh release view "v${NEW_VERSION}" --json url --jq '.url'
297
330
 
298
331
  ---
299
332
 
333
+ ## STEP 7.5: POST RELEASE NOTES TO DISCORD
334
+
335
+ After the release notes are finalized, post them to the Discord channel. This step is mandatory for every publish run.
336
+
337
+ <hard-gate>
338
+ The workflow is not complete until this step has either:
339
+ 1. Sent a Discord message successfully and recorded the message ID, or
340
+ 2. Failed after `agent-discordbot auth status` plus one send retry, with the Jobdori bot-token failure reported to the user.
341
+
342
+ Never skip this step because the release summary was awaiting approval. If the user already confirmed the publish, continue through Discord before stopping.
343
+ </hard-gate>
344
+
345
+ <agent-discord-instruction>
346
+ 1. Use the Jobdori bot token through `agent-discordbot` for release announcements. This is the required release path; do not use the personal `agent-discord` token unless the bot path is unavailable and the user explicitly approves the fallback. Pin the bot id so release messages go out as the Jobdori bot even if the local `agent-discordbot` current bot changes.
347
+ ```bash
348
+ JOBDORI_BOT_ID=1486173823354146917
349
+ agent-discordbot auth status --bot "$JOBDORI_BOT_ID"
350
+ ```
351
+
352
+ 2. **Read recent messages** in the channel to match the existing announcement style:
353
+ ```bash
354
+ JOBDORI_BOT_ID=1486173823354146917
355
+ agent-discordbot message list 1454708427392680067 --bot "$JOBDORI_BOT_ID" --limit 5
356
+ ```
357
+
358
+ 3. If `agent-discordbot` is unavailable or unauthorized, stop and report that the Jobdori token path failed. Only then may a human decide whether to use `agent-discord`.
359
+
360
+ 4. Post the release announcement to channel `1454708427392680067` matching the style of previous announcements. The message should follow this structure:
361
+ ```
362
+ @here
363
+
364
+ 🎉 **oh-my-opencode v{VERSION} — {Short Tagline}**
365
+
366
+ **Feature 1** — one-line description.
367
+
368
+ **Feature 2** — one-line description.
369
+
370
+ **Feature 3** — one-line description.
371
+
372
+ Plus {summary of remaining changes}.
373
+
374
+ 📦 Install / upgrade:
375
+ `bun i -g oh-my-opencode@{VERSION}` (or `npm`)
376
+
377
+ 📝 Full release notes: {RELEASE_URL}
378
+ ```
379
+
380
+ ```bash
381
+ JOBDORI_BOT_ID=1486173823354146917
382
+ RELEASE_URL=$(gh release view "v${NEW_VERSION}" --json url --jq '.url')
383
+ agent-discordbot message send 1454708427392680067 "{your message following the style above}" --bot "$JOBDORI_BOT_ID"
384
+ ```
385
+
386
+ If the message fails to send, warn the user and continue — do NOT block the publish workflow on Discord errors.
387
+ </agent-discord-instruction>
388
+
389
+ ---
390
+
300
391
  ## STEP 8: VERIFY NPM PUBLICATION
301
392
 
302
393
  Poll npm registry until the new version appears:
@@ -343,20 +434,3 @@ Report success to user with:
343
434
  ## LANGUAGE
344
435
 
345
436
  Respond to user in English.
346
-
347
- </command-instruction>
348
-
349
- <current-context>
350
- <published-version>
351
- !`npm view oh-my-opencode version 2>/dev/null || echo "not published"`
352
- </published-version>
353
- <local-version>
354
- !`node -p "require('./package.json').version" 2>/dev/null || echo "unknown"`
355
- </local-version>
356
- <git-status>
357
- !`git status --porcelain`
358
- </git-status>
359
- <recent-commits>
360
- !`npm view oh-my-opencode version 2>/dev/null | xargs -I{} git log "v{}"..HEAD --oneline 2>/dev/null | head -15 || echo "no commits"`
361
- </recent-commits>
362
- </current-context>
@@ -33,10 +33,10 @@ Required categories are `unspecified-low`, `unspecified-high`, `ultrabrain`, and
33
33
  | Category | Model | Native Mindset | Why This Adversarial Role Fits |
34
34
  |----------|-------|----------------|--------------------------------|
35
35
  | `unspecified-low` | gpt-5.6-luna xhigh | Mid-tier, simplicity-leaning, structure-demanding | Pragmatist Skeptic — model bias toward simplicity makes it the natural enemy of over-engineering |
36
- | `unspecified-high` | claude-opus-4-7 max | High-effort, broad-impact, coordination-aware | Integration Tester — max-tier broad-scope thinking exposes cross-module fragility |
37
- | `deep` | gpt-5.6-terra xhigh | Autonomous, exploration-heavy, evidence-driven | Autonomous Researcher — natural exploration bias attacks unfounded claims |
36
+ | `unspecified-high` | kimi-k3 max -> claude-opus-5 xhigh -> gpt-5.6-sol high | High-effort, broad-impact, coordination-aware | Integration Tester — max-tier broad-scope thinking exposes cross-module fragility |
37
+ | `deep` | gpt-5.6-sol medium | Autonomous, exploration-heavy, evidence-driven | Autonomous Researcher — natural exploration bias attacks unfounded claims |
38
38
  | `ultrabrain` | gpt-5.6-sol xhigh | Hard-logic, simplicity-biased, strategic advisor | Architect Strategist — xhigh reasoning sees structural flaws others miss |
39
- | `artistry` | gemini-3.1-pro high | Unconventional, pattern-breaking, lateral | Creative Challenger — pattern-breaking bias attacks orthodox thinking |
39
+ | `artistry` | claude-fable-5 xhigh | Unconventional, pattern-breaking, lateral | Creative Challenger — pattern-breaking bias attacks orthodox thinking |
40
40
 
41
41
  ### MEMBER 1: `skeptic` (category: `unspecified-low`)
42
42
 
@@ -24,43 +24,43 @@ Generator/checker note: update this file with the audited component list, then r
24
24
  - Upstream URL: https://github.com/code-yeongyu/go-claude-code-comment-checker
25
25
  - Where-bundled: root production dependency and vendored checker binary payload under `vendor/<platform>/`.
26
26
 
27
- ### @colbymchenry/codegraph@1.0.1
27
+ ### @colbymchenry/codegraph@1.5.0
28
28
  - License: MIT, from npm package metadata. The inspected tarball did not include a separate LICENSE file.
29
29
  - Copyright: CodeGraph contributors.
30
30
  - Upstream URL: https://www.npmjs.com/package/@colbymchenry/codegraph
31
31
  - Where-bundled: pinned CodeGraph provisioning payload for the CodeGraph OMO integration.
32
32
 
33
- ### @colbymchenry/codegraph-darwin-arm64@1.0.1
33
+ ### @colbymchenry/codegraph-darwin-arm64@1.5.0
34
34
  - License: MIT, from npm package metadata. The inspected tarball did not include a separate LICENSE file.
35
35
  - Copyright: CodeGraph contributors.
36
36
  - Upstream URL: https://www.npmjs.com/package/@colbymchenry/codegraph-darwin-arm64
37
37
  - Where-bundled: optional CodeGraph platform bundle for darwin arm64, including CodeGraph runtime files, Node.js runtime binary, and tree-sitter WASM assets.
38
38
 
39
- ### @colbymchenry/codegraph-darwin-x64@1.0.1
39
+ ### @colbymchenry/codegraph-darwin-x64@1.5.0
40
40
  - License: MIT, from npm package metadata. The inspected tarball did not include a separate LICENSE file.
41
41
  - Copyright: CodeGraph contributors.
42
42
  - Upstream URL: https://www.npmjs.com/package/@colbymchenry/codegraph-darwin-x64
43
43
  - Where-bundled: optional CodeGraph platform bundle for darwin x64, including CodeGraph runtime files, Node.js runtime binary, and tree-sitter WASM assets.
44
44
 
45
- ### @colbymchenry/codegraph-linux-arm64@1.0.1
45
+ ### @colbymchenry/codegraph-linux-arm64@1.5.0
46
46
  - License: MIT, from npm package metadata. The inspected tarball did not include a separate LICENSE file.
47
47
  - Copyright: CodeGraph contributors.
48
48
  - Upstream URL: https://www.npmjs.com/package/@colbymchenry/codegraph-linux-arm64
49
49
  - Where-bundled: optional CodeGraph platform bundle for linux arm64, including CodeGraph runtime files, Node.js runtime binary, and tree-sitter WASM assets.
50
50
 
51
- ### @colbymchenry/codegraph-linux-x64@1.0.1
51
+ ### @colbymchenry/codegraph-linux-x64@1.5.0
52
52
  - License: MIT, from npm package metadata. The inspected tarball did not include a separate LICENSE file.
53
53
  - Copyright: CodeGraph contributors.
54
54
  - Upstream URL: https://www.npmjs.com/package/@colbymchenry/codegraph-linux-x64
55
55
  - Where-bundled: optional CodeGraph platform bundle for linux x64, including CodeGraph runtime files, Node.js runtime binary, and tree-sitter WASM assets.
56
56
 
57
- ### @colbymchenry/codegraph-win32-arm64@1.0.1
57
+ ### @colbymchenry/codegraph-win32-arm64@1.5.0
58
58
  - License: MIT, from npm package metadata. The inspected tarball did not include a separate LICENSE file.
59
59
  - Copyright: CodeGraph contributors.
60
60
  - Upstream URL: https://www.npmjs.com/package/@colbymchenry/codegraph-win32-arm64
61
61
  - Where-bundled: optional CodeGraph platform bundle for win32 arm64, including CodeGraph runtime files, Node.js runtime binary, and tree-sitter WASM assets.
62
62
 
63
- ### @colbymchenry/codegraph-win32-x64@1.0.1
63
+ ### @colbymchenry/codegraph-win32-x64@1.5.0
64
64
  - License: MIT, from npm package metadata. The inspected tarball did not include a separate LICENSE file.
65
65
  - Copyright: CodeGraph contributors.
66
66
  - Upstream URL: https://www.npmjs.com/package/@colbymchenry/codegraph-win32-x64