claudecode-omc 5.6.7 → 5.9.1

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 (242) hide show
  1. package/.local/skills/THIRD_PARTY_LICENSES/AvdLee-SwiftUI-Agent-Skill.LICENSE +21 -0
  2. package/.local/skills/THIRD_PARTY_LICENSES/Dimillian-Skills.LICENSE +21 -0
  3. package/.local/skills/THIRD_PARTY_LICENSES/README.md +36 -0
  4. package/.local/skills/THIRD_PARTY_LICENSES/twostraws-swiftui-agent-skill.LICENSE +21 -0
  5. package/.local/skills/ios-debugger-agent/SKILL.md +51 -0
  6. package/.local/skills/ios-debugger-agent/agents/openai.yaml +4 -0
  7. package/.local/skills/prompt-optimizer/SKILL.md +262 -19
  8. package/.local/skills/swift-concurrency-expert/SKILL.md +105 -0
  9. package/.local/skills/swift-concurrency-expert/agents/openai.yaml +4 -0
  10. package/.local/skills/swift-concurrency-expert/references/approachable-concurrency.md +63 -0
  11. package/.local/skills/swift-concurrency-expert/references/swift-6-2-concurrency.md +272 -0
  12. package/.local/skills/swift-concurrency-expert/references/swiftui-concurrency-tour-wwdc.md +33 -0
  13. package/.local/skills/swiftui-expert-skill/SKILL.md +162 -0
  14. package/.local/skills/swiftui-expert-skill/references/accessibility-patterns.md +215 -0
  15. package/.local/skills/swiftui-expert-skill/references/animation-advanced.md +403 -0
  16. package/.local/skills/swiftui-expert-skill/references/animation-basics.md +284 -0
  17. package/.local/skills/swiftui-expert-skill/references/animation-transitions.md +326 -0
  18. package/.local/skills/swiftui-expert-skill/references/charts-accessibility.md +135 -0
  19. package/.local/skills/swiftui-expert-skill/references/charts.md +602 -0
  20. package/.local/skills/swiftui-expert-skill/references/focus-patterns.md +299 -0
  21. package/.local/skills/swiftui-expert-skill/references/image-optimization.md +203 -0
  22. package/.local/skills/swiftui-expert-skill/references/latest-apis.md +488 -0
  23. package/.local/skills/swiftui-expert-skill/references/layout-best-practices.md +266 -0
  24. package/.local/skills/swiftui-expert-skill/references/liquid-glass.md +423 -0
  25. package/.local/skills/swiftui-expert-skill/references/list-patterns.md +446 -0
  26. package/.local/skills/swiftui-expert-skill/references/macos-scenes.md +318 -0
  27. package/.local/skills/swiftui-expert-skill/references/macos-views.md +357 -0
  28. package/.local/skills/swiftui-expert-skill/references/macos-window-styling.md +303 -0
  29. package/.local/skills/swiftui-expert-skill/references/performance-patterns.md +403 -0
  30. package/.local/skills/swiftui-expert-skill/references/scroll-patterns.md +293 -0
  31. package/.local/skills/swiftui-expert-skill/references/sheet-navigation-patterns.md +363 -0
  32. package/.local/skills/swiftui-expert-skill/references/state-management.md +388 -0
  33. package/.local/skills/swiftui-expert-skill/references/text-patterns.md +32 -0
  34. package/.local/skills/swiftui-expert-skill/references/trace-analysis.md +295 -0
  35. package/.local/skills/swiftui-expert-skill/references/trace-recording.md +134 -0
  36. package/.local/skills/swiftui-expert-skill/references/view-structure.md +780 -0
  37. package/.local/skills/swiftui-expert-skill/scripts/__pycache__/analyze_trace.cpython-313.pyc +0 -0
  38. package/.local/skills/swiftui-expert-skill/scripts/__pycache__/record_trace.cpython-313.pyc +0 -0
  39. package/.local/skills/swiftui-expert-skill/scripts/analyze_trace.py +301 -0
  40. package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/__init__.py +1 -0
  41. package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/__pycache__/__init__.cpython-313.pyc +0 -0
  42. package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/__pycache__/causes.cpython-313.pyc +0 -0
  43. package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/__pycache__/correlate.cpython-313.pyc +0 -0
  44. package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/__pycache__/events.cpython-313.pyc +0 -0
  45. package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/__pycache__/hangs.cpython-313.pyc +0 -0
  46. package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/__pycache__/hitches.cpython-313.pyc +0 -0
  47. package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/__pycache__/summary.cpython-313.pyc +0 -0
  48. package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/__pycache__/swiftui.cpython-313.pyc +0 -0
  49. package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/__pycache__/time_profiler.cpython-313.pyc +0 -0
  50. package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/__pycache__/xctrace.cpython-313.pyc +0 -0
  51. package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/__pycache__/xml_utils.cpython-313.pyc +0 -0
  52. package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/causes.py +187 -0
  53. package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/correlate.py +179 -0
  54. package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/events.py +291 -0
  55. package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/hangs.py +108 -0
  56. package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/hitches.py +145 -0
  57. package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/summary.py +243 -0
  58. package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/swiftui.py +195 -0
  59. package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/time_profiler.py +135 -0
  60. package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/xctrace.py +117 -0
  61. package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/xml_utils.py +224 -0
  62. package/.local/skills/swiftui-expert-skill/scripts/record_trace.py +252 -0
  63. package/.local/skills/swiftui-liquid-glass/SKILL.md +90 -0
  64. package/.local/skills/swiftui-liquid-glass/agents/openai.yaml +4 -0
  65. package/.local/skills/swiftui-liquid-glass/references/liquid-glass.md +280 -0
  66. package/.local/skills/swiftui-performance-audit/SKILL.md +106 -0
  67. package/.local/skills/swiftui-performance-audit/agents/openai.yaml +4 -0
  68. package/.local/skills/swiftui-performance-audit/references/code-smells.md +150 -0
  69. package/.local/skills/swiftui-performance-audit/references/demystify-swiftui-performance-wwdc23.md +46 -0
  70. package/.local/skills/swiftui-performance-audit/references/optimizing-swiftui-performance-instruments.md +29 -0
  71. package/.local/skills/swiftui-performance-audit/references/profiling-intake.md +44 -0
  72. package/.local/skills/swiftui-performance-audit/references/report-template.md +47 -0
  73. package/.local/skills/swiftui-performance-audit/references/understanding-hangs-in-your-app.md +33 -0
  74. package/.local/skills/swiftui-performance-audit/references/understanding-improving-swiftui-performance.md +52 -0
  75. package/.local/skills/swiftui-pro/SKILL.md +108 -0
  76. package/.local/skills/swiftui-pro/agents/openai.yaml +10 -0
  77. package/.local/skills/swiftui-pro/assets/swiftui-pro-icon.png +0 -0
  78. package/.local/skills/swiftui-pro/assets/swiftui-pro-icon.svg +29 -0
  79. package/.local/skills/swiftui-pro/references/accessibility.md +13 -0
  80. package/.local/skills/swiftui-pro/references/api.md +39 -0
  81. package/.local/skills/swiftui-pro/references/data.md +43 -0
  82. package/.local/skills/swiftui-pro/references/design.md +32 -0
  83. package/.local/skills/swiftui-pro/references/hygiene.md +9 -0
  84. package/.local/skills/swiftui-pro/references/navigation.md +14 -0
  85. package/.local/skills/swiftui-pro/references/performance.md +46 -0
  86. package/.local/skills/swiftui-pro/references/swift.md +56 -0
  87. package/.local/skills/swiftui-pro/references/views.md +36 -0
  88. package/.local/skills/swiftui-ui-patterns/SKILL.md +95 -0
  89. package/.local/skills/swiftui-ui-patterns/agents/openai.yaml +4 -0
  90. package/.local/skills/swiftui-ui-patterns/references/app-wiring.md +201 -0
  91. package/.local/skills/swiftui-ui-patterns/references/async-state.md +96 -0
  92. package/.local/skills/swiftui-ui-patterns/references/components-index.md +50 -0
  93. package/.local/skills/swiftui-ui-patterns/references/controls.md +57 -0
  94. package/.local/skills/swiftui-ui-patterns/references/deeplinks.md +66 -0
  95. package/.local/skills/swiftui-ui-patterns/references/focus.md +90 -0
  96. package/.local/skills/swiftui-ui-patterns/references/form.md +97 -0
  97. package/.local/skills/swiftui-ui-patterns/references/grids.md +71 -0
  98. package/.local/skills/swiftui-ui-patterns/references/haptics.md +71 -0
  99. package/.local/skills/swiftui-ui-patterns/references/input-toolbar.md +51 -0
  100. package/.local/skills/swiftui-ui-patterns/references/lightweight-clients.md +93 -0
  101. package/.local/skills/swiftui-ui-patterns/references/list.md +86 -0
  102. package/.local/skills/swiftui-ui-patterns/references/loading-placeholders.md +38 -0
  103. package/.local/skills/swiftui-ui-patterns/references/macos-settings.md +71 -0
  104. package/.local/skills/swiftui-ui-patterns/references/matched-transitions.md +59 -0
  105. package/.local/skills/swiftui-ui-patterns/references/media.md +73 -0
  106. package/.local/skills/swiftui-ui-patterns/references/menu-bar.md +101 -0
  107. package/.local/skills/swiftui-ui-patterns/references/navigationstack.md +159 -0
  108. package/.local/skills/swiftui-ui-patterns/references/overlay.md +45 -0
  109. package/.local/skills/swiftui-ui-patterns/references/performance.md +62 -0
  110. package/.local/skills/swiftui-ui-patterns/references/previews.md +48 -0
  111. package/.local/skills/swiftui-ui-patterns/references/scroll-reveal.md +133 -0
  112. package/.local/skills/swiftui-ui-patterns/references/scrollview.md +87 -0
  113. package/.local/skills/swiftui-ui-patterns/references/searchable.md +71 -0
  114. package/.local/skills/swiftui-ui-patterns/references/sheets.md +155 -0
  115. package/.local/skills/swiftui-ui-patterns/references/split-views.md +72 -0
  116. package/.local/skills/swiftui-ui-patterns/references/tabview.md +114 -0
  117. package/.local/skills/swiftui-ui-patterns/references/theming.md +71 -0
  118. package/.local/skills/swiftui-ui-patterns/references/title-menus.md +93 -0
  119. package/.local/skills/swiftui-ui-patterns/references/top-bar.md +49 -0
  120. package/.local/skills/swiftui-view-refactor/SKILL.md +202 -0
  121. package/.local/skills/swiftui-view-refactor/agents/openai.yaml +4 -0
  122. package/.local/skills/swiftui-view-refactor/references/mv-patterns.md +161 -0
  123. package/.omc-curation/ecc-selection.json +80 -0
  124. package/.omc-curation/governance.json +113 -0
  125. package/.omc-curation/sources.lock.json +25 -0
  126. package/README.md +69 -4
  127. package/bundled/manifest.json +5 -5
  128. package/bundled/upstream/anthropic-skills/.omc-source/bundle.json +18 -0
  129. package/bundled/upstream/anthropic-skills/.omc-source/provenance.json +399 -0
  130. package/bundled/upstream/anthropic-skills/skills/claude-api/SKILL.md +18 -17
  131. package/bundled/upstream/anthropic-skills/skills/claude-api/curl/examples.md +9 -9
  132. package/bundled/upstream/anthropic-skills/skills/claude-api/curl/managed-agents.md +4 -4
  133. package/bundled/upstream/anthropic-skills/skills/claude-api/go/managed-agents/README.md +2 -2
  134. package/bundled/upstream/anthropic-skills/skills/claude-api/java/claude-api.md +2 -2
  135. package/bundled/upstream/anthropic-skills/skills/claude-api/java/managed-agents/README.md +2 -2
  136. package/bundled/upstream/anthropic-skills/skills/claude-api/php/claude-api.md +10 -10
  137. package/bundled/upstream/anthropic-skills/skills/claude-api/php/managed-agents/README.md +2 -2
  138. package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/README.md +16 -16
  139. package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/batches.md +3 -3
  140. package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/files-api.md +3 -3
  141. package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/streaming.md +7 -7
  142. package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/tool-use.md +19 -19
  143. package/bundled/upstream/anthropic-skills/skills/claude-api/python/managed-agents/README.md +3 -3
  144. package/bundled/upstream/anthropic-skills/skills/claude-api/ruby/claude-api.md +4 -4
  145. package/bundled/upstream/anthropic-skills/skills/claude-api/ruby/managed-agents/README.md +2 -2
  146. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/error-codes.md +5 -5
  147. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/live-sources.md +3 -1
  148. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-api-reference.md +10 -4
  149. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-core.md +19 -1
  150. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-environments.md +6 -2
  151. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-multiagent.md +1 -1
  152. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-onboarding.md +3 -3
  153. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-overview.md +3 -2
  154. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-self-hosted-sandboxes.md +173 -0
  155. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-tools.md +10 -4
  156. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/model-migration.md +113 -13
  157. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/models.md +14 -11
  158. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/prompt-caching.md +2 -2
  159. package/bundled/upstream/anthropic-skills/skills/claude-api/shared/tool-use-concepts.md +4 -4
  160. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/README.md +15 -15
  161. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/batches.md +2 -2
  162. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/files-api.md +1 -1
  163. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/streaming.md +5 -5
  164. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/tool-use.md +15 -15
  165. package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/managed-agents/README.md +3 -3
  166. package/bundled/upstream/ecc/.omc-source/bundle.json +2 -1
  167. package/bundled/upstream/ecc/.omc-source/last-plan-apply.json +108 -24
  168. package/bundled/upstream/ecc/.omc-source/manifests/.claude-plugin/marketplace.json +3 -3
  169. package/bundled/upstream/ecc/.omc-source/provenance.json +563 -0
  170. package/bundled/upstream/ecc/agents/marketing-agent.md +159 -0
  171. package/bundled/upstream/ecc/agents/react-build-resolver.md +215 -0
  172. package/bundled/upstream/ecc/agents/react-reviewer.md +167 -0
  173. package/bundled/upstream/ecc/agents/typescript-reviewer.md +3 -0
  174. package/bundled/upstream/ecc/commands/harness-audit.md +17 -10
  175. package/bundled/upstream/ecc/commands/marketing-campaign.md +129 -0
  176. package/bundled/upstream/ecc/commands/react-build.md +187 -0
  177. package/bundled/upstream/ecc/commands/react-review.md +170 -0
  178. package/bundled/upstream/ecc/commands/react-test.md +265 -0
  179. package/bundled/upstream/ecc/skills/benchmark-optimization-loop/SKILL.md +69 -0
  180. package/bundled/upstream/ecc/skills/blender-motion-state-inspection/SKILL.md +164 -0
  181. package/bundled/upstream/ecc/skills/canary-watch/SKILL.md +9 -1
  182. package/bundled/upstream/ecc/skills/continuous-learning-v2/hooks/observe.sh +31 -9
  183. package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/detect-project.sh +38 -4
  184. package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/instinct-cli.py +319 -12
  185. package/bundled/upstream/ecc/skills/data-throughput-accelerator/SKILL.md +72 -0
  186. package/bundled/upstream/ecc/skills/dynamic-workflow-mode/SKILL.md +123 -0
  187. package/bundled/upstream/ecc/skills/frontend-a11y/SKILL.md +446 -0
  188. package/bundled/upstream/ecc/skills/ito-basket-compare/SKILL.md +63 -0
  189. package/bundled/upstream/ecc/skills/ito-data-atlas-agent/SKILL.md +63 -0
  190. package/bundled/upstream/ecc/skills/ito-market-intelligence/SKILL.md +60 -0
  191. package/bundled/upstream/ecc/skills/ito-trade-planner/SKILL.md +67 -0
  192. package/bundled/upstream/ecc/skills/latency-critical-systems/SKILL.md +73 -0
  193. package/bundled/upstream/ecc/skills/marketing-campaign/SKILL.md +113 -0
  194. package/bundled/upstream/ecc/skills/nextjs-turbopack/SKILL.md +13 -0
  195. package/bundled/upstream/ecc/skills/parallel-execution-optimizer/SKILL.md +72 -0
  196. package/bundled/upstream/ecc/skills/prediction-market-oracle-research/SKILL.md +63 -0
  197. package/bundled/upstream/ecc/skills/prediction-market-risk-review/SKILL.md +60 -0
  198. package/bundled/upstream/ecc/skills/react-patterns/SKILL.md +341 -0
  199. package/bundled/upstream/ecc/skills/react-performance/SKILL.md +574 -0
  200. package/bundled/upstream/ecc/skills/react-testing/SKILL.md +423 -0
  201. package/bundled/upstream/ecc/skills/recsys-pipeline-architect/SKILL.md +114 -0
  202. package/bundled/upstream/ecc/skills/recursive-decision-ledger/SKILL.md +79 -0
  203. package/bundled/upstream/ecc/skills/social-publisher/SKILL.md +115 -0
  204. package/bundled/upstream/ecc/skills/team-agent-orchestration/SKILL.md +110 -0
  205. package/bundled/upstream/ecc/skills/uncloud/SKILL.md +343 -0
  206. package/bundled/upstream/ecc/skills/windows-desktop-e2e/SKILL.md +99 -0
  207. package/bundled/upstream/oh-my-claudecode/.omc-source/bundle.json +2 -1
  208. package/bundled/upstream/oh-my-claudecode/.omc-source/provenance.json +116 -0
  209. package/bundled/upstream/oh-my-claudecode/skills/autopilot/SKILL.md +7 -0
  210. package/bundled/upstream/oh-my-claudecode/skills/cancel/SKILL.md +1 -0
  211. package/bundled/upstream/oh-my-claudecode/skills/deep-interview/SKILL.md +39 -5
  212. package/bundled/upstream/oh-my-claudecode/skills/hud/SKILL.md +1 -0
  213. package/bundled/upstream/oh-my-claudecode/skills/local-build-reminder/SKILL.md +78 -0
  214. package/bundled/upstream/oh-my-claudecode/skills/omc-doctor/SKILL.md +1 -1
  215. package/bundled/upstream/oh-my-claudecode/skills/omc-setup/SKILL.md +26 -10
  216. package/bundled/upstream/oh-my-claudecode/skills/omc-setup/phases/01-install-claude-md.md +3 -3
  217. package/bundled/upstream/oh-my-claudecode/skills/omc-setup/phases/02-configure.md +6 -4
  218. package/bundled/upstream/oh-my-claudecode/skills/omc-setup/phases/03-integrations.md +1 -1
  219. package/bundled/upstream/oh-my-claudecode/skills/omc-setup/phases/04-welcome.md +2 -2
  220. package/bundled/upstream/oh-my-claudecode/skills/omc-teams/SKILL.md +6 -6
  221. package/bundled/upstream/oh-my-claudecode/skills/plan/SKILL.md +44 -32
  222. package/bundled/upstream/oh-my-claudecode/skills/ralph/SKILL.md +45 -21
  223. package/bundled/upstream/oh-my-claudecode/skills/ralplan/SKILL.md +1 -1
  224. package/bundled/upstream/oh-my-claudecode/skills/self-improve/SKILL.md +7 -0
  225. package/bundled/upstream/oh-my-claudecode/skills/self-improve/scripts/resolve-paths.mjs +39 -15
  226. package/bundled/upstream/oh-my-claudecode/skills/team/SKILL.md +132 -90
  227. package/bundled/upstream/oh-my-claudecode/skills/ultragoal/SKILL.md +93 -0
  228. package/bundled/upstream/oh-my-claudecode/skills/ultraqa/SKILL.md +28 -13
  229. package/bundled/upstream/oh-my-claudecode/skills/ultrawork/SKILL.md +7 -0
  230. package/bundled/upstream/superpowers/.omc-source/bundle.json +2 -1
  231. package/bundled/upstream/superpowers/.omc-source/provenance.json +63 -0
  232. package/package.json +2 -1
  233. package/src/catalog/source-catalog.js +10 -4
  234. package/src/cli/index.js +4 -0
  235. package/src/cli/plan.js +14 -2
  236. package/src/cli/setup.js +52 -13
  237. package/src/cli/skill.js +1 -1
  238. package/src/cli/source.js +265 -14
  239. package/src/config/sources.js +67 -1
  240. package/src/merge/content-patch.js +84 -0
  241. package/templates/merge-config.json +1 -8
  242. package/bundled/upstream/ecc/skills/strategic-compact/suggest-compact.sh +0 -54
@@ -125,6 +125,13 @@ Why bad: Opus is expensive overkill for a trivial fix. Use executor with Haiku i
125
125
  - [ ] No new errors introduced
126
126
  </Final_Checklist>
127
127
 
128
+ ## Parallel session caveats
129
+
130
+ - **Multi-repo workspace anchor:** drop a `.omc-workspace` marker at the parent directory so multiple sessions across sub-repos share one `.omc/`. Resolution order: `OMC_STATE_DIR > .omc-workspace > git > cwd`. See `docs/REFERENCE.md`.
131
+ - **Session id source:** OMC_SESSION_ID env var wins in CLI contexts; hook payload data.session_id wins in hook contexts.
132
+ - **Plan id (when applicable):** Ultrawork has no persistent state; two concurrent runs are independent by design. No plan-id needed.
133
+ - **Parallel verdict:** supported (stateless component)
134
+
128
135
  <Advanced>
129
136
  ## Relationship to Other Modes
130
137
 
@@ -1,8 +1,9 @@
1
1
  {
2
- "syncedAt": "2026-05-15T05:55:34.311Z",
2
+ "syncedAt": "2026-06-05T07:53:35.433Z",
3
3
  "sourceName": "superpowers",
4
4
  "remote": "https://github.com/obra/superpowers.git",
5
5
  "ref": "main",
6
+ "commit": "6fd4507659784c351abbd2bc264c7162cfd386dc",
6
7
  "kind": "content-repo",
7
8
  "harnesses": [
8
9
  "claude"
@@ -0,0 +1,63 @@
1
+ {
2
+ "syncedAt": "2026-06-05T07:53:35.433Z",
3
+ "sourceName": "superpowers",
4
+ "remote": "https://github.com/obra/superpowers.git",
5
+ "ref": "main",
6
+ "commit": "6fd4507659784c351abbd2bc264c7162cfd386dc",
7
+ "artifacts": {
8
+ "skills": {
9
+ "brainstorming/scripts/frame-template.html": "sha256:fb22ba9d47f3b83b",
10
+ "brainstorming/scripts/helper.js": "sha256:e763d82f32b4ebb3",
11
+ "brainstorming/scripts/server.cjs": "sha256:ea81185f581897c6",
12
+ "brainstorming/scripts/start-server.sh": "sha256:3442a54b5ee55116",
13
+ "brainstorming/scripts/stop-server.sh": "sha256:f65b7634a27343ea",
14
+ "brainstorming/SKILL.md": "sha256:bba47904a7f6bbee",
15
+ "brainstorming/spec-document-reviewer-prompt.md": "sha256:12cb5ed58aef41b8",
16
+ "brainstorming/visual-companion.md": "sha256:a2bc6fc47d0df1df",
17
+ "dispatching-parallel-agents/SKILL.md": "sha256:76806091c7f923ba",
18
+ "executing-plans/SKILL.md": "sha256:e2102f1163143393",
19
+ "finishing-a-development-branch/SKILL.md": "sha256:5c8d4b59aedb14c9",
20
+ "receiving-code-review/SKILL.md": "sha256:c9382e92b8f32363",
21
+ "requesting-code-review/code-reviewer.md": "sha256:595d91d05d5ecba5",
22
+ "requesting-code-review/SKILL.md": "sha256:5a3a44a3667800e2",
23
+ "subagent-driven-development/code-quality-reviewer-prompt.md": "sha256:2eeb3bf63fccfbee",
24
+ "subagent-driven-development/implementer-prompt.md": "sha256:a416193f881e5a71",
25
+ "subagent-driven-development/SKILL.md": "sha256:905a2b9be59b734d",
26
+ "subagent-driven-development/spec-reviewer-prompt.md": "sha256:631980e472eec539",
27
+ "systematic-debugging/condition-based-waiting-example.ts": "sha256:40ae5ebe497fdf31",
28
+ "systematic-debugging/condition-based-waiting.md": "sha256:e89fec8400d6cd50",
29
+ "systematic-debugging/CREATION-LOG.md": "sha256:c24733a5b1821bd6",
30
+ "systematic-debugging/defense-in-depth.md": "sha256:1e175fb86fc357e5",
31
+ "systematic-debugging/find-polluter.sh": "sha256:6462747eae9b175a",
32
+ "systematic-debugging/root-cause-tracing.md": "sha256:6b0622269e098ca1",
33
+ "systematic-debugging/SKILL.md": "sha256:4999cb851360485e",
34
+ "systematic-debugging/test-academic.md": "sha256:fe2ba480d78ac0d6",
35
+ "systematic-debugging/test-pressure-1.md": "sha256:0b6a915db0054577",
36
+ "systematic-debugging/test-pressure-2.md": "sha256:b2030aeffba07050",
37
+ "systematic-debugging/test-pressure-3.md": "sha256:96b50a52e2c7989c",
38
+ "test-driven-development/SKILL.md": "sha256:7dee67b4af6bdccc",
39
+ "test-driven-development/testing-anti-patterns.md": "sha256:bde453bc258f0654",
40
+ "using-git-worktrees/SKILL.md": "sha256:085a45ee3de432bd",
41
+ "using-superpowers/references/codex-tools.md": "sha256:37e06103a352516d",
42
+ "using-superpowers/references/copilot-tools.md": "sha256:9fb400a432d31494",
43
+ "using-superpowers/references/gemini-tools.md": "sha256:a66092fb2dd2c69b",
44
+ "using-superpowers/SKILL.md": "sha256:316e29381219adf0",
45
+ "verification-before-completion/SKILL.md": "sha256:ea52d15aabaf72bc",
46
+ "writing-plans/plan-document-reviewer-prompt.md": "sha256:6fce2aa83c637156",
47
+ "writing-plans/SKILL.md": "sha256:4fd4627d2c023678",
48
+ "writing-skills/anthropic-best-practices.md": "sha256:20914c2fda31670c",
49
+ "writing-skills/examples/CLAUDE_MD_TESTING.md": "sha256:0b379a3415e185d3",
50
+ "writing-skills/graphviz-conventions.dot": "sha256:e2890a593c91370e",
51
+ "writing-skills/persuasion-principles.md": "sha256:c3c84f572a51dd8b",
52
+ "writing-skills/render-graphs.js": "sha256:ccda971a87bb185f",
53
+ "writing-skills/SKILL.md": "sha256:38ba648975ae6ba5",
54
+ "writing-skills/testing-skills-with-subagents.md": "sha256:c711346852c911b2"
55
+ },
56
+ "hooks": {
57
+ "hooks-cursor.json": "sha256:53d8ceb3ff5d8bb1",
58
+ "hooks.json": "sha256:01616c57b96cc234",
59
+ "run-hook.cmd": "sha256:d3d9c6199678dab2",
60
+ "session-start": "sha256:4dff45d935243af2"
61
+ }
62
+ }
63
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claudecode-omc",
3
- "version": "5.6.7",
3
+ "version": "5.9.1",
4
4
  "description": "Claude Code harness — best-practice skills, agents, hooks, and configs from multiple sources",
5
5
  "bin": {
6
6
  "omc-manage": "bin/omc-manage.js"
@@ -9,6 +9,7 @@
9
9
  "bin",
10
10
  "src",
11
11
  ".local",
12
+ ".omc-curation",
12
13
  "bundled",
13
14
  "scripts",
14
15
  "templates",
@@ -162,7 +162,8 @@ function listManifestFiles(sourceName, sourceConfig, root) {
162
162
  });
163
163
  }
164
164
 
165
- async function buildSourceCatalog(sourceName, root = getProjectRoot()) {
165
+ async function buildSourceCatalog(sourceName, root = getProjectRoot(), options = {}) {
166
+ const { ignoreAllowlist = false } = options;
166
167
  const config = readConfig();
167
168
  const sourceConfig = config.sources[sourceName];
168
169
  if (!sourceConfig) {
@@ -177,9 +178,14 @@ async function buildSourceCatalog(sourceName, root = getProjectRoot()) {
177
178
  const artifactPath = getSourceArtifactDir(sourceName, artifactType, root);
178
179
  const present = fs.existsSync(artifactPath);
179
180
  const loader = getArtifactLoader(artifactType);
180
- const loadedItems = (present && loader)
181
- ? filterItemsByAllowlist(sourceConfig, artifactType, loader(artifactPath, sourceName))
182
- : [];
181
+ // When re-curating (plan apply with a selection file), ignore the current
182
+ // allowlist so itemNames exposes the full available universe — otherwise the
183
+ // catalog pre-filters to already-allowed names and new selections can never
184
+ // be validated/added (chicken-and-egg).
185
+ const rawItems = (present && loader) ? loader(artifactPath, sourceName) : [];
186
+ const loadedItems = ignoreAllowlist
187
+ ? rawItems
188
+ : filterItemsByAllowlist(sourceConfig, artifactType, rawItems);
183
189
  upsertSurface(surfaces, {
184
190
  name: artifactType,
185
191
  harness: 'claude',
package/src/cli/index.js CHANGED
@@ -20,6 +20,9 @@ function showHelp() {
20
20
  console.log(' Install merged artifacts (skills, agents, hooks, commands, etc.)');
21
21
  console.log(' doctor Health checks for all artifact types');
22
22
  console.log(' source list|add|remove|sync|status — manage sources');
23
+ console.log(' sync [<name>] [--frozen] — update sources (--frozen: to locked commits)');
24
+ console.log(' lock [<name>] — pin sources to their synced commit');
25
+ console.log(' drift [<name>] [--json] — detect edits vs recorded provenance');
23
26
  console.log(' inspect <name> — inspect source bundle/catalog');
24
27
  console.log(' plan install <source> [--profile <name>] — build install plan');
25
28
  console.log(' apply <source> [--profile <name>] — materialize plan into source activation');
@@ -103,6 +106,7 @@ async function main(argv) {
103
106
  else if (arg === '--profile' && args[i + 1]) flags.profile = args[++i];
104
107
  else if (arg.startsWith('--profile=')) flags.profile = arg.split('=')[1];
105
108
  else if (arg === '--json') flags.json = true;
109
+ else if (arg === '--frozen') flags.frozen = true;
106
110
  else if (arg === '--apply') flags.apply = true;
107
111
  else if (arg === '--threshold' && args[i + 1]) flags.threshold = args[++i];
108
112
  else if (arg.startsWith('--threshold=')) flags.threshold = arg.split('=')[1];
package/src/cli/plan.js CHANGED
@@ -135,9 +135,21 @@ async function plan(args, flags = {}) {
135
135
 
136
136
  const root = getProjectRoot();
137
137
  const profile = flags.profile || 'claude-runtime';
138
- const catalog = await buildSourceCatalog(sourceName, root);
138
+ // Resolve the curation source of truth: an explicit --selection-file wins,
139
+ // otherwise auto-discover the in-repo .omc-curation/<source>-selection.json
140
+ // so `plan apply <source>` applies the committed curation with no flags.
141
+ let selectionFile = flags.selectionFile;
142
+ if (!selectionFile) {
143
+ const defaultSelection = path.join(root, '.omc-curation', `${sourceName}-selection.json`);
144
+ if (fs.existsSync(defaultSelection)) {
145
+ selectionFile = defaultSelection;
146
+ console.log(`Using curation: ${path.relative(root, defaultSelection)}`);
147
+ }
148
+ }
149
+ // Re-curating: load the full available universe so new selections validate.
150
+ const catalog = await buildSourceCatalog(sourceName, root, { ignoreAllowlist: Boolean(selectionFile) });
139
151
  const planResult = buildInstallPlan(catalog, profile);
140
- const selectionData = flags.selectionFile ? await readSelectionFile(flags.selectionFile) : {};
152
+ const selectionData = selectionFile ? await readSelectionFile(selectionFile) : {};
141
153
  const allowlist = extractAllowlistFromSelection(planResult, selectionData);
142
154
  const currentSource = readConfig().sources[sourceName] || {};
143
155
  const activation = {
package/src/cli/setup.js CHANGED
@@ -4,13 +4,14 @@ const fsp = require('fs/promises');
4
4
  const path = require('path');
5
5
  const os = require('os');
6
6
  const { getProjectRoot, getScopedInstallTarget, getMergeConfigPath } = require('../config/paths');
7
- const { readConfig, filterItemsByAllowlist } = require('../config/sources');
7
+ const { readConfig, filterItemsByAllowlist, loadGovernance } = require('../config/sources');
8
8
  const { getArtifactTypeNames, ARTIFACT_TYPES } = require('../config/artifact-types');
9
9
  const { detectConflicts, resolveConflicts, applyResolutions } = require('../merge/base-merger');
10
10
  const { loadHooksConfig, mergeHooksConfigs, hasHookLib } = require('../merge/hook-merger');
11
11
  const { loadClaudeMd, mergeIntoExisting, assembleSections } = require('../merge/claude-md-merger');
12
12
  const { loadSettingsFragment, mergeSettingsFragments } = require('../merge/settings-merger');
13
13
  const { collectSourceDirsForType, getArtifactLoader } = require('../merge/artifact-source-loader');
14
+ const { applyContentPatch } = require('../merge/content-patch');
14
15
 
15
16
  const OMC_VERSION_PATH = path.join(os.homedir(), '.claude', '.omc-version.json');
16
17
  const OMC_CONFIG_PATH = path.join(os.homedir(), '.claude', '.omc-config.json');
@@ -231,11 +232,12 @@ async function installNameBasedArtifacts(artifactType, sources, mergeConfig, ins
231
232
  const excludeList = (mergeConfig.exclude && mergeConfig.exclude[artifactType]) || [];
232
233
  if (excludeList.length > 0) {
233
234
  const excludeSet = new Set(excludeList);
234
- const before = merged.length;
235
+ // Names actually present and removed — so the count and the listed names
236
+ // always agree (exclude entries absent from the catalog aren't reported).
237
+ const removedNames = merged.filter(item => excludeSet.has(item.name)).map(item => item.name);
235
238
  merged = merged.filter(item => !excludeSet.has(item.name));
236
- const excluded = before - merged.length;
237
- if (excluded > 0) {
238
- console.log(` excluded ${excluded} items: ${excludeList.filter(n => merged.every(m => m.name !== n)).join(', ')}`);
239
+ if (removedNames.length > 0) {
240
+ console.log(` excluded ${removedNames.length} items: ${removedNames.join(', ')}`);
239
241
  }
240
242
  }
241
243
 
@@ -256,19 +258,49 @@ async function installNameBasedArtifacts(artifactType, sources, mergeConfig, ins
256
258
 
257
259
  await fsp.mkdir(installTarget, { recursive: true });
258
260
  let fileCount = 0;
261
+ let patchedCount = 0;
262
+
263
+ // Content patches: governance.json sources.<name>.patches["<type>/<artifact>"]
264
+ // are applied to the winning artifact's content as it is written.
265
+ const govSources = loadGovernance().sources || {};
266
+ const patchFor = (item) => {
267
+ const patches = (govSources[item.sourceName] || {}).patches;
268
+ return patches ? patches[`${artifactType}/${item.name}`] : undefined;
269
+ };
259
270
 
260
271
  for (const item of merged) {
272
+ const dest = path.join(installTarget, getManagedPathForItem(artifactType, item));
273
+ const patch = patchFor(item);
274
+
275
+ // (dry-run already returned above; this loop only runs for real installs)
261
276
  if (artifactType === 'skills' || item.isDirectory) {
262
- const dest = path.join(installTarget, getManagedPathForItem(artifactType, item));
263
277
  fileCount += await copyDirectory(item.path, dest, flags);
278
+ // A skill patch targets its entry file (SKILL.md) inside the copied dir.
279
+ if (patch) {
280
+ const skillFile = path.join(dest, 'SKILL.md');
281
+ if (fs.existsSync(skillFile)) {
282
+ const { content, warnings } = applyContentPatch(fs.readFileSync(skillFile, 'utf8'), patch);
283
+ await fsp.writeFile(skillFile, content, 'utf8');
284
+ patchedCount += 1;
285
+ for (const w of warnings) console.log(` patch warn (${item.name}): ${w}`);
286
+ }
287
+ }
264
288
  } else {
265
- const dest = path.join(installTarget, getManagedPathForItem(artifactType, item));
266
289
  await fsp.mkdir(path.dirname(dest), { recursive: true });
267
- await fsp.copyFile(item.path, dest);
290
+ if (patch) {
291
+ const { content, warnings } = applyContentPatch(fs.readFileSync(item.path, 'utf8'), patch);
292
+ await fsp.writeFile(dest, content, 'utf8');
293
+ patchedCount += 1;
294
+ for (const w of warnings) console.log(` patch warn (${item.name}): ${w}`);
295
+ } else {
296
+ await fsp.copyFile(item.path, dest);
297
+ }
268
298
  fileCount += 1;
269
299
  }
270
300
  }
271
301
 
302
+ if (patchedCount > 0) console.log(` patched ${patchedCount} item(s) from governance`);
303
+
272
304
  return {
273
305
  count: fileCount,
274
306
  total: merged.length,
@@ -413,11 +445,18 @@ async function setup(args, flags = {}) {
413
445
  if (typeFilter) console.log(`Types: ${typeFilter.join(', ')}`);
414
446
  console.log('');
415
447
 
416
- // Load merge config
417
- const mergeConfigPath = getMergeConfigPath(root);
418
- let mergeConfig = { preferences: {} };
419
- if (fs.existsSync(mergeConfigPath)) {
420
- try { mergeConfig = JSON.parse(fs.readFileSync(mergeConfigPath, 'utf8')); } catch {}
448
+ // Conflict policy: unified governance.json is authoritative; fall back to the
449
+ // legacy templates/merge-config.json when governance declares no conflict block.
450
+ const governanceConflict = loadGovernance().conflict;
451
+ let mergeConfig;
452
+ if (governanceConflict && typeof governanceConflict === 'object') {
453
+ mergeConfig = { preferences: {}, ...governanceConflict };
454
+ } else {
455
+ const mergeConfigPath = getMergeConfigPath(root);
456
+ mergeConfig = { preferences: {} };
457
+ if (fs.existsSync(mergeConfigPath)) {
458
+ try { mergeConfig = JSON.parse(fs.readFileSync(mergeConfigPath, 'utf8')); } catch {}
459
+ }
421
460
  }
422
461
 
423
462
  const allTypes = getArtifactTypeNames().filter(type => type !== 'claude-md');
package/src/cli/skill.js CHANGED
@@ -192,7 +192,7 @@ async function recommend(args, flags) {
192
192
 
193
193
  // Load existing config
194
194
  const configPath = getMergeConfigPath(root);
195
- let config = { merge_strategy: 'version-priority', auto_merge: true, allow_namespacing: false, sources: [], preferences: {} };
195
+ let config = { preferences: {} };
196
196
  if (fs.existsSync(configPath)) {
197
197
  try { config = JSON.parse(fs.readFileSync(configPath, 'utf8')); } catch {}
198
198
  }