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
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Antoine van der Lee
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Thomas Ricouard
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,36 @@
1
+ # Third-Party Skill Attribution
2
+
3
+ The following iOS / Swift / SwiftUI skills were vendored from external
4
+ open-source repositories. Each is distributed under the **MIT License**.
5
+ The full upstream license text is preserved in this directory and must remain
6
+ shipped with `claudecode-omc` per the MIT terms.
7
+
8
+ | Vendored skill (`.local/skills/<dir>`) | Source repository | Source commit | License file |
9
+ |---|---|---|---|
10
+ | `ios-debugger-agent` | [Dimillian/Skills](https://github.com/Dimillian/Skills) | `05ba982` | [Dimillian-Skills.LICENSE](./Dimillian-Skills.LICENSE) |
11
+ | `swift-concurrency-expert` | [Dimillian/Skills](https://github.com/Dimillian/Skills) | `05ba982` | [Dimillian-Skills.LICENSE](./Dimillian-Skills.LICENSE) |
12
+ | `swiftui-liquid-glass` | [Dimillian/Skills](https://github.com/Dimillian/Skills) | `05ba982` | [Dimillian-Skills.LICENSE](./Dimillian-Skills.LICENSE) |
13
+ | `swiftui-performance-audit` | [Dimillian/Skills](https://github.com/Dimillian/Skills) | `05ba982` | [Dimillian-Skills.LICENSE](./Dimillian-Skills.LICENSE) |
14
+ | `swiftui-ui-patterns` | [Dimillian/Skills](https://github.com/Dimillian/Skills) | `05ba982` | [Dimillian-Skills.LICENSE](./Dimillian-Skills.LICENSE) |
15
+ | `swiftui-view-refactor` | [Dimillian/Skills](https://github.com/Dimillian/Skills) | `05ba982` | [Dimillian-Skills.LICENSE](./Dimillian-Skills.LICENSE) |
16
+ | `swiftui-pro` | [twostraws/swiftui-agent-skill](https://github.com/twostraws/swiftui-agent-skill) | `be297ff` | [twostraws-swiftui-agent-skill.LICENSE](./twostraws-swiftui-agent-skill.LICENSE) |
17
+ | `swiftui-expert-skill` | [AvdLee/SwiftUI-Agent-Skill](https://github.com/AvdLee/SwiftUI-Agent-Skill) | `a4d7692` | [AvdLee-SwiftUI-Agent-Skill.LICENSE](./AvdLee-SwiftUI-Agent-Skill.LICENSE) |
18
+
19
+ ## Copyright holders
20
+
21
+ - **Dimillian/Skills** — Copyright (c) 2026 Thomas Ricouard — MIT
22
+ - **twostraws/swiftui-agent-skill** — Copyright (c) 2026 Paul Hudson — MIT
23
+ - **AvdLee/SwiftUI-Agent-Skill** — Copyright (c) 2026 Antoine van der Lee — MIT
24
+
25
+ ## Vendoring notes
26
+
27
+ - Only the iOS/SwiftUI-relevant subset of `Dimillian/Skills` was vendored;
28
+ non-iOS skills (React, GitHub, review/refactor swarms, etc.) were excluded.
29
+ - From `twostraws/swiftui-agent-skill`, the marketplace-packaging artifacts
30
+ (`.claude-plugin/`) and the divergent nested `skills/swiftui-pro/` duplicate
31
+ were excluded; only the canonical top-level skill + `references/` were taken.
32
+ - From `AvdLee/SwiftUI-Agent-Skill`, only `swiftui-expert-skill/` was vendored;
33
+ the `update-swiftui-apis` helper was excluded because it requires the
34
+ external Sosumi MCP server.
35
+ - Upstream skill content was vendored verbatim (no edits to SKILL.md bodies);
36
+ only placement under `.local/skills/` differs from upstream layout.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Paul Hudson.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,51 @@
1
+ ---
2
+ name: ios-debugger-agent
3
+ description: Use XcodeBuildMCP to build, run, launch, and debug the current iOS project on a booted simulator. Trigger when asked to run an iOS app, interact with the simulator UI, inspect on-screen state, capture logs/console output, or diagnose runtime behavior using XcodeBuildMCP tools.
4
+ ---
5
+
6
+ # iOS Debugger Agent
7
+
8
+ ## Overview
9
+ Use XcodeBuildMCP to build and run the current project scheme on a booted iOS simulator, interact with the UI, and capture logs. Prefer the MCP tools for simulator control, logs, and view inspection.
10
+
11
+ ## Core Workflow
12
+ Follow this sequence unless the user asks for a narrower action.
13
+
14
+ ### 1) Discover the booted simulator
15
+ - Call `mcp__XcodeBuildMCP__list_sims` and select the simulator with state `Booted`.
16
+ - If none are booted, ask the user to boot one (do not boot automatically unless asked).
17
+
18
+ ### 2) Set session defaults
19
+ - Call `mcp__XcodeBuildMCP__session-set-defaults` with:
20
+ - `projectPath` or `workspacePath` (whichever the repo uses)
21
+ - `scheme` for the current app
22
+ - `simulatorId` from the booted device
23
+ - Optional: `configuration: "Debug"`, `useLatestOS: true`
24
+
25
+ ### 3) Build + run (when requested)
26
+ - Call `mcp__XcodeBuildMCP__build_run_sim`.
27
+ - **If the build fails**, check the error output and retry (optionally with `preferXcodebuild: true`) or escalate to the user before attempting any UI interaction.
28
+ - **After a successful build**, verify the app launched by calling `mcp__XcodeBuildMCP__describe_ui` or `mcp__XcodeBuildMCP__screenshot` before proceeding to UI interaction.
29
+ - If the app is already built and only launch is requested, use `mcp__XcodeBuildMCP__launch_app_sim`.
30
+ - If bundle id is unknown:
31
+ 1) `mcp__XcodeBuildMCP__get_sim_app_path`
32
+ 2) `mcp__XcodeBuildMCP__get_app_bundle_id`
33
+
34
+ ## UI Interaction & Debugging
35
+ Use these when asked to inspect or interact with the running app.
36
+
37
+ - **Describe UI**: `mcp__XcodeBuildMCP__describe_ui` before tapping or swiping.
38
+ - **Tap**: `mcp__XcodeBuildMCP__tap` (prefer `id` or `label`; use coordinates only if needed).
39
+ - **Type**: `mcp__XcodeBuildMCP__type_text` after focusing a field.
40
+ - **Gestures**: `mcp__XcodeBuildMCP__gesture` for common scrolls and edge swipes.
41
+ - **Screenshot**: `mcp__XcodeBuildMCP__screenshot` for visual confirmation.
42
+
43
+ ## Logs & Console Output
44
+ - Start logs: `mcp__XcodeBuildMCP__start_sim_log_cap` with the app bundle id.
45
+ - Stop logs: `mcp__XcodeBuildMCP__stop_sim_log_cap` and summarize important lines.
46
+ - For console output, set `captureConsole: true` and relaunch if required.
47
+
48
+ ## Troubleshooting
49
+ - If build fails, ask whether to retry with `preferXcodebuild: true`.
50
+ - If the wrong app launches, confirm the scheme and bundle id.
51
+ - If UI elements are not hittable, re-run `describe_ui` after layout changes.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "iOS Debugger Agent"
3
+ short_description: "Debug iOS apps on Simulator"
4
+ default_prompt: "Use $ios-debugger-agent to build, launch, and inspect the current iOS app on the booted simulator."
@@ -21,8 +21,42 @@ description: >-
21
21
  origin: community
22
22
  metadata:
23
23
  author: YannJY02
24
- version: "1.2.0"
24
+ version: "1.3.0"
25
25
  changelog: |
26
+ 1.3.0 — Phase 0.7 Project Context Probe. The skill now reads the actual
27
+ repo (stack manifest, git state, README/CLAUDE.md/AGENTS.md)
28
+ before producing the optimized prompt, so recommendations cite
29
+ real file paths, branch names, and declared versions instead of
30
+ generic templates. Hard rules R1-R6.5 prevent the probe from
31
+ misleading downstream agents:
32
+ • R1 — 3-section Facts / Inferences (UNVERIFIED) / Unknown block
33
+ • R2 — never reference code symbols the probe did not actually Read
34
+ (commit subjects and branch names are not code verification)
35
+ • R3 — branch names do not determine intent; skill selection uses
36
+ user prompt + Facts.stack only
37
+ • R4 — declared manifest version ≠ installed version; lockfile
38
+ must be checked when exact runtime version matters
39
+ • R5 — README/CLAUDE.md/AGENTS.md content gets 1 line + source +
40
+ last-modified date; declared-vs-detected conflicts get
41
+ an explicit ⚠️ flag
42
+ • R6 — mandatory "Re-verify before mutating" footer in every block
43
+ • R6.5 — probe failures are explicit ("PROBE FAILED: <reason>"),
44
+ never silently empty
45
+ Section 3 (Optimized Prompt — Full) now MUST start with the verbatim
46
+ Context Block and cite ≥ 2 Facts. Self-check gate added before
47
+ publishing output. New Example 5 demonstrates the full probe →
48
+ 3-section block → safe "starting points to verify" output pattern
49
+ on a real SwiftUI iOS scenario. Budget: ≤ 6 read-only tool calls.
50
+ Graceful degradation: works in non-git dirs, unknown stacks, and
51
+ repos without self-description docs.
52
+ 1.2.1 — Fix phantom `/tdd` references (13 occurrences across Phase 1.5
53
+ template, Phase 3 By-Intent table, Section 4 Quick Patterns,
54
+ and all four examples). No `tdd` skill or command actually
55
+ exists; the canonical name is `test-driven-development`
56
+ (superpowers) — already mapped in the Phase 0.5 alias table
57
+ but not applied to our own templates. This release closes that
58
+ self-inconsistency. Added explicit `/tdd → /test-driven-development`
59
+ row in the alias table to prevent regression.
26
60
  1.2.0 — Skill Existence & Alias Resolution (Phase 0.5) so we stop
27
61
  recommending phantom skills (`tdd-workflow`, `search-first`,
28
62
  `blueprint`, `tdd-guide` agent, etc. that don't exist on most
@@ -146,6 +180,7 @@ or add a verification note.
146
180
  | Generic ECC name | superpowers / OMC actual | Verification |
147
181
  |---|---|---|
148
182
  | `tdd-workflow` (skill) | `test-driven-development` (superpowers) OR `tdd-generator` (OMC) | `ls ~/.claude/skills/test-driven-development` |
183
+ | `/tdd` (slash) — **no such command/skill** | `/test-driven-development` (slash-invokes the superpowers skill) | `ls ~/.claude/skills/test-driven-development` |
149
184
  | `verification-loop` (skill) | `verification-before-completion` (superpowers) OR `verification-loop` (OMC) | both common |
150
185
  | `search-first` (skill) | `external-context` OR `iterative-retrieval` | check both |
151
186
  | `blueprint` (skill) | **`conductor`** (preferred multi-session driver) | `ls ~/.claude/skills/conductor` |
@@ -168,7 +203,83 @@ they run `omc-manage skill index --scope user` (or just `omc-manage setup`,
168
203
  which regenerates it as a side effect). For a quality audit, use
169
204
  `/oh-my-claudecode:skill-stocktake`.
170
205
 
171
- ### Phase 1: Intent Detection
206
+ ### Phase 0.7: Project Context Probe (cheap, deterministic)
207
+
208
+ **Goal:** Ground the optimized prompt in *what is actually true in this repo
209
+ right now*, not in generic templates. Without this phase, the skill produces
210
+ plausible-sounding prompts that may reference nonexistent files, wrong
211
+ versions, or off-stack tooling — the user's actual complaint.
212
+
213
+ **Budget:** ≤ 6 read-only tool calls. Each step is independent — failures
214
+ degrade gracefully (see R6.5), never abort the whole phase.
215
+
216
+ **5 probe actions, in order:**
217
+
218
+ | # | Action | Tool & Command | Output field |
219
+ |---|--------|---------------|--------------|
220
+ | 1 | Confirm git repo | `Bash: git rev-parse --is-inside-work-tree 2>/dev/null` | `is_git_repo: true/false` |
221
+ | 2 | Scan stack manifests at repo root | One `Glob` with combined pattern: `{package.json,Package.swift,Cargo.toml,go.mod,pyproject.toml,requirements.txt,*.csproj,Gemfile,pubspec.yaml,pom.xml,build.gradle*,mix.exs,composer.json}` | `manifests: [paths]` |
222
+ | 3 | Read top manifest | `Read` first 50 lines of highest-priority match | `stack: <name + declared version>`, `stack_source: <manifest>:<line>` |
223
+ | 4 | Git current state (one call) | `Bash: git rev-parse --abbrev-ref HEAD && echo --- && git status --short && echo --- && git log -3 --oneline && echo --- && git diff --stat HEAD~1 2>/dev/null \| head -10` | `branch`, `uncommitted`, `recent_commits` (subjects only), `recent_diff_stat` |
224
+ | 5 | Project self-description | `Glob {CLAUDE.md,AGENTS.md,README.md}` at repo root; `Read` first 30 lines of highest-priority match (priority: CLAUDE.md > AGENTS.md > README.md) | `intent_source`, `intent_text` (first non-empty heading + first ~3 prose lines), `intent_last_modified` |
225
+
226
+ **Graceful degradation:**
227
+
228
+ - Action 1 = `false` → skip action 4. Mark `Repo`, `branch`, `uncommitted`, `recent_commits` as `not in a git repo`. Continue actions 2, 3, 5.
229
+ - Action 2 returns `[]` → `stack: unknown — language-agnostic recommendations apply`.
230
+ - Action 5 finds none → `intent: no self-description found at repo root`.
231
+ - Any single step throws → mark only that field `PROBE FAILED: <one-line reason>` (R6.5). Continue.
232
+
233
+ **Output: Project Context Block (3-section structure, ALWAYS produced)**
234
+
235
+ The probe **always** emits this block, even when most fields are `UNKNOWN`.
236
+ It is appended to the top of `Section 3: Optimized Prompt` (see Output
237
+ Format) and must remain verbatim — no paraphrasing, no summarization.
238
+
239
+ ```markdown
240
+ ## 🔍 Project Context (probed YYYY-MM-DD HH:MM — starting point, NOT ground truth)
241
+
242
+ ### Facts (directly observed in probe)
243
+ - Stack: <name + declared version> ← from `<manifest>:<line>` (declared, installed version not verified)
244
+ - Repo: <basename of cwd> @ branch `<branch>` (<N commits ahead of <base>, or "no upstream tracking">)
245
+ - Uncommitted: <M/A/D files, or "clean working tree">
246
+ - Recent commit subjects (commit messages only — NOT code verification):
247
+ - `<hash>` "<subject>"
248
+ - `<hash>` "<subject>"
249
+ - Recent diff scope (`git diff --stat HEAD~1`): <file>: +N -M (or "no diff since HEAD~1")
250
+ - Project self-description (`<source-file>:<line>`, last modified <date>): "<first non-empty heading + opening line>"
251
+
252
+ ### Inferences (UNVERIFIED — confirm before acting)
253
+ - <e.g., "Likely SwiftUI iOS work based on Package.swift + branch name">
254
+ - <e.g., "Stack manifest declares X but no lockfile read — installed version may differ">
255
+
256
+ ### Unknown / Not Probed
257
+ - Whether <symbol mentioned in commit subjects> actually exists in source — Read source before referencing it as if it does
258
+ - Runtime/installed versions (only declared manifest was read)
259
+ - Whether project self-description still matches current architecture (last modified <date>)
260
+
261
+ ⚠️ Re-verify before mutating: run `git status`, `Read` actual files. This block
262
+ is probe-time context, not authoritative. If observation contradicts this
263
+ block, trust observation and ignore this block.
264
+ ```
265
+
266
+ **6 anti-misleading hard rules (binding on Phase 3 / Phase 4 outputs):**
267
+
268
+ These rules prevent the probe from producing context that downstream agents
269
+ treat as truth when it is in fact inference, name-based guessing, or stale
270
+ data. Violation = regenerate the optimized prompt.
271
+
272
+ | ID | Rule | Why |
273
+ |----|------|-----|
274
+ | **R1** | Block MUST be 3-section: `### Facts` / `### Inferences (UNVERIFIED)` / `### Unknown / Not Probed`. Never mix categories. A fact mis-labeled as fact-but-actually-inferred is the primary misleading vector. | Forces explicit epistemic status on every line. |
275
+ | **R2** | **Do not reference code symbols the probe did not actually read.** A symbol seen only in a commit subject or branch name is NOT verified to exist. It may appear in `Inferences` or `Unknown`, never as an imperative ("extend `AuthService`"). | A commit titled "add AuthService stub" does not prove `AuthService` exists, is complete, or is at the path one might guess. |
276
+ | **R3** | **Branch names do not determine intent.** A branch named `feat/auth` is a weak signal at best; it goes only in `Inferences`. Phase 3 skill selection is driven only by `user prompt + Facts.stack`. | Branch names are user-authored labels with no semantic guarantee. |
277
+ | **R4** | **Manifest version ≠ installed version.** All version facts must be marked `declared in <manifest>, installed not verified`. Tasks that need exact runtime version must explicitly check lockfile (`package-lock.json`, `Cargo.lock`, `Package.resolved`, `poetry.lock`, etc.). | `package.json` says React 18, node_modules may have 17. |
278
+ | **R5** | **README / CLAUDE.md / AGENTS.md content gets 1 line + source + last-modified date.** If declared description contradicts detected stack, append `⚠️ Conflict: declared "<X>" but stack indicates <Y> — verify with user`. | Self-description docs drift; stack manifests do not. |
279
+ | **R6** | **Banner footer is mandatory.** The `⚠️ Re-verify before mutating` line MUST appear verbatim at the bottom of every Context Block. | Drives downstream agent to treat block as starting context, not ground truth. |
280
+ | **R6.5** | **Probe failures are explicit, never silently empty.** Any failed action writes `PROBE FAILED: <reason>` for that field. Downstream agents seeing `PROBE FAILED` know to re-probe themselves; they would misread an empty field as "no problem". | An empty `uncommitted` field looks like a clean working tree. |
281
+
282
+
172
283
 
173
284
  Classify the user's task into one or more categories:
174
285
 
@@ -274,7 +385,7 @@ checklist before generating the optimized prompt.
274
385
  1. **不要直接改代码**。先用 systematic-debugging skill 定位根因
275
386
  - 列出至少 3 个候选假设
276
387
  - 对每个假设设计最小验证(添加日志 / 阅读相关代码)
277
- 2. /tdd 写一个 failing 测试复现 bug(如果是 UI bug,写 e2e 用例)
388
+ 2. /test-driven-development 写一个 failing 测试复现 bug(如果是 UI bug,写 e2e 用例)
278
389
  3. 修复到 green
279
390
  4. /verify 跨平台验证(如适用,跑 macOS + Windows)
280
391
  5. /code-review
@@ -308,21 +419,33 @@ one level. So a MEDIUM task with 2 intents → HIGH → conductor defaults ON.
308
419
 
309
420
  ### Phase 3: ECC Component Matching
310
421
 
311
- Map intent + scope + tech stack (from Phase 0) to specific ECC components.
422
+ Map intent + scope + **Phase 0.7 `Facts.stack`** to specific ECC components.
423
+
424
+ **HARD RULE (binding):** Component selection MUST be driven by `Project
425
+ Context Block → Facts → Stack` when present. When matching the By-Tech-Stack
426
+ table below, **skip rows that do not match** the detected stack — never list
427
+ React skills for a Swift project, never list Django skills for a Go project.
428
+ `Inferences` and `Unknown` fields are advisory only — they MAY surface a
429
+ "verify this assumption" note, but MUST NOT drive skill selection.
430
+
431
+ If `Facts.stack` is `unknown` (no manifest detected), fall back to the
432
+ language-agnostic intent-only recommendations and explicitly say so in
433
+ Section 5 rationale: "Stack unknown — recommendations are generic; user
434
+ should re-run after declaring stack."
312
435
 
313
436
  #### By Intent Type
314
437
 
315
438
  | Intent | Commands | Skills | Agents |
316
439
  |--------|----------|--------|--------|
317
- | New Feature | /plan, /tdd, /code-review, /verify | tdd-workflow, verification-loop | planner, tdd-guide, code-reviewer |
318
- | **Bug Fix** | /tdd, /verify | **systematic-debugging (REQUIRED first)**, trace, analyze, debug, verification-loop | **debugger**, tdd-guide, code-reviewer |
440
+ | New Feature | /plan, /test-driven-development, /code-review, /verify | tdd-workflow, verification-loop | planner, tdd-guide, code-reviewer |
441
+ | **Bug Fix** | /test-driven-development, /verify | **systematic-debugging (REQUIRED first)**, trace, analyze, debug, verification-loop | **debugger**, tdd-guide, code-reviewer |
319
442
  | **Bug Fix (intermittent / 偶现)** | /verify | systematic-debugging, trace, **e2e (for flaky reproduction harness)** | debugger, tracer |
320
443
  | **Bug Fix (cross-platform)** | /verify | systematic-debugging, **electron-driver** (if Electron) | debugger, code-reviewer |
321
444
  | **Performance** | /verify | analyze, trace, verification-loop | architect, code-reviewer |
322
445
  | Refactor | /refactor-clean, /code-review, /verify | verification-loop | refactor-cleaner, code-reviewer |
323
446
  | Research | /plan | search-first, iterative-retrieval, external-context | — |
324
- | **Research-then-Build** | /plan | external-context (research) → **conductor** (track delivery) → /tdd per phase | planner → executor |
325
- | Testing | /tdd, /e2e, /test-coverage | tdd-workflow, e2e-testing | tdd-guide, e2e-runner |
447
+ | **Research-then-Build** | /plan | external-context (research) → **conductor** (track delivery) → /test-driven-development per phase | planner → executor |
448
+ | Testing | /test-driven-development, /e2e, /test-coverage | tdd-workflow, e2e-testing | tdd-guide, e2e-runner |
326
449
  | Review | /code-review | security-review | code-reviewer, security-reviewer |
327
450
  | Documentation | /update-docs, /update-codemaps | — | doc-updater, writer |
328
451
  | Infrastructure | /plan, /verify | docker-patterns, deployment-patterns, database-migrations | architect |
@@ -545,9 +668,28 @@ If Phase 0 auto-detected the answer, state it instead of asking.
545
668
  ### Section 3: Optimized Prompt — Full Version
546
669
 
547
670
  Present the complete optimized prompt inside a single fenced code block.
548
- The prompt must be self-contained and ready to copy-paste. Include:
549
- - Clear task description with context
550
- - Tech stack (detected or specified)
671
+ The prompt must be self-contained and ready to copy-paste.
672
+
673
+ **MANDATORY STRUCTURE (binding):**
674
+
675
+ 1. **First**, paste the Project Context Block from Phase 0.7 **verbatim**.
676
+ Do not summarize, do not paraphrase. The downstream agent needs the same
677
+ epistemic separation (Facts / Inferences / Unknown) the probe produced.
678
+ 2. **Then**, a blank line.
679
+ 3. **Then**, the task content, which MUST:
680
+ - Cite **at least 2 specific items from `Facts`** by file path, branch
681
+ name, manifest line, or commit hash. Generic language like "use the
682
+ existing auth code" is a FAIL — replace with "Read
683
+ `Sources/Auth/LoginView.swift` (uncommitted change, see Facts)".
684
+ - Phrase next-step references as `starting points to verify`, NOT as
685
+ imperatives. Good: "Read `LoginView.swift` first to see what's
686
+ already there." Bad: "Extend `LoginView.swift`."
687
+ - Never reference a code symbol that appeared only in `Inferences` or
688
+ `Unknown` (R2 — see Phase 0.7). Such references must downgrade to
689
+ "search `Grep` for X before assuming it exists."
690
+
691
+ **Other required content:**
692
+ - Clear task description (after Context Block)
551
693
  - /command invocations at the right workflow stages
552
694
  - Acceptance criteria
553
695
  - Verification steps
@@ -556,21 +698,30 @@ The prompt must be self-contained and ready to copy-paste. Include:
556
698
  For items that reference blueprint, write: "Use the blueprint skill to..."
557
699
  (not `/blueprint`, since blueprint is a skill, not a command).
558
700
 
701
+ **Self-check gate (run before publishing Section 3 output):**
702
+
703
+ | Check | If FAIL |
704
+ |-------|---------|
705
+ | Does Section 3 start with the verbatim Project Context Block? | Regenerate; prepend the block |
706
+ | Does the task content cite ≥ 2 items from `Facts` by name/path? | Regenerate; replace generic references with specific Facts |
707
+ | Does any imperative reference a symbol that only appeared in `Inferences` or `Unknown`? | Regenerate; downgrade to "verify before extending" |
708
+ | Is the `⚠️ Re-verify before mutating` footer present in the block? | Regenerate; add the footer |
709
+
559
710
  ### Section 4: Optimized Prompt — Quick Version
560
711
 
561
712
  A compact version for experienced ECC users. Vary by intent type:
562
713
 
563
714
  | Intent | Quick Pattern |
564
715
  |--------|--------------|
565
- | New Feature | `/plan [feature]. /tdd to implement. /code-review. /verify.` |
566
- | Bug Fix | `Use systematic-debugging for [bug] — list 3 hypotheses, verify each. Then /tdd: write failing test, fix to green. /verify.` |
716
+ | New Feature | `/plan [feature]. /test-driven-development to implement. /code-review. /verify.` |
717
+ | Bug Fix | `Use systematic-debugging for [bug] — list 3 hypotheses, verify each. Then /test-driven-development: write failing test, fix to green. /verify.` |
567
718
  | Bug Fix (intermittent) | `Use trace skill for [intermittent bug] — competing hypotheses with evidence. Build flaky-repro harness in /e2e. Fix only after 100% repro. /verify.` |
568
719
  | Bug Fix (cross-platform) | `Use systematic-debugging for [bug]. Repro on both [platform A] and [platform B]. Fix. /verify on both platforms.` |
569
720
  | Performance | `Use analyze for [slow path] — measure baseline first (timing/profile). Identify top 3 hotspots. Fix one at a time, re-measure after each. /verify regression.` |
570
721
  | Refactor | `/refactor-clean [scope]. /code-review. /verify.` |
571
722
  | Research | `Use external-context skill for [topic]. /plan based on findings.` |
572
- | Research-then-Build | `Use external-context to study [reference X]. Produce comparison report. Then use conductor skill to track delivery: spec → plan → /tdd per phase.` |
573
- | Testing | `/tdd [module]. /e2e for critical flows. /test-coverage.` |
723
+ | Research-then-Build | `Use external-context to study [reference X]. Produce comparison report. Then use conductor skill to track delivery: spec → plan → /test-driven-development per phase.` |
724
+ | Testing | `/test-driven-development [module]. /e2e for critical flows. /test-coverage.` |
574
725
  | Review | `/code-review. Then use security-reviewer agent.` |
575
726
  | Docs | `/update-docs. /update-codemaps.` |
576
727
  | EPIC | `Use conductor skill (or blueprint) for "[objective]". Execute phases with /verify gates.` |
@@ -622,7 +773,7 @@ A compact version for experienced ECC users. Vary by intent type:
622
773
 
623
774
  工作流:
624
775
  1. /plan 先规划组件结构和认证流程,参考现有页面的模式
625
- 2. /tdd 测试先行:编写登录表单的单元测试和认证流程的集成测试
776
+ 2. /test-driven-development 测试先行:编写登录表单的单元测试和认证流程的集成测试
626
777
  3. 实现登录页面和认证逻辑
627
778
  4. /code-review 审查实现
628
779
  5. /verify 验证所有测试通过且页面正常渲染
@@ -670,7 +821,7 @@ Requirements:
670
821
 
671
822
  Workflow:
672
823
  1. /plan the endpoint structure, middleware chain, and validation logic
673
- 2. /tdd — write table-driven tests for success, validation failure, auth failure, not-found
824
+ 2. /test-driven-development — write table-driven tests for success, validation failure, auth failure, not-found
674
825
  3. Implement following existing handler patterns
675
826
  4. /go-review
676
827
  5. /verify — run full test suite, confirm no regressions
@@ -722,7 +873,7 @@ Do not:
722
873
  - H3: 分享接口幂等性设计阻止了重复请求
723
874
  - H4: 前端短路 — 检测到"已分享"就不再触发请求
724
875
  对每个假设:阅读 src/share/ 相关代码 + 添加临时日志验证
725
- 2. /tdd 写 e2e 测试用例:分享 → 修改 → 再分享,断言链接或内容变化
876
+ 2. /test-driven-development 写 e2e 测试用例:分享 → 修改 → 再分享,断言链接或内容变化
726
877
  3. 修复到 green
727
878
  4. /verify:跑 e2e 测试 + macOS + Windows 各手测一次(Tauri 项目跨平台)
728
879
  5. /code-review
@@ -736,7 +887,7 @@ Do not:
736
887
  **Optimized Prompt (Quick):**
737
888
  ```
738
889
  Use systematic-debugging for "分享 HTML/MD 后修改文件链接不更新" — list 3 hypotheses
739
- (cache key, hash strategy, idempotent API), verify each. /tdd write failing e2e.
890
+ (cache key, hash strategy, idempotent API), verify each. /test-driven-development write failing e2e.
740
891
  Fix to green. /verify on macOS + Windows.
741
892
  ```
742
893
 
@@ -772,6 +923,98 @@ Use git worktrees for parallel service extraction when dependencies allow.
772
923
  Recommended: Opus 4.6 for blueprint planning, Sonnet 4.6 for phase execution.
773
924
  ```
774
925
 
926
+ ### Example 5: Phase 0.7 — Project-Aware Recommendation (SwiftUI repo)
927
+
928
+ Demonstrates the v1.3.0 probe + 3-section Context Block + safe "starting
929
+ points to verify" output. Note how the optimized prompt avoids referencing
930
+ `AuthService` as if it exists (R2) and labels the branch signal as inference
931
+ only (R3).
932
+
933
+ **User input (vague Chinese):**
934
+ ```
935
+ 帮我加个登录功能
936
+ ```
937
+
938
+ **Phase 0.7 probe output (5 tool calls):**
939
+ - Action 1: `git rev-parse --is-inside-work-tree` → `true`
940
+ - Action 2: `Glob` finds `Package.swift` at repo root
941
+ - Action 3: `Read Package.swift` lines 1-50 → `swift-tools-version: 6.0`, platform `iOS .v18`
942
+ - Action 4: `git` combined → branch `feat/auth` (2 ahead of `main`), uncommitted `M Sources/Auth/LoginView.swift`, recent commits include `a1b2c3 add AuthService stub`, `d4e5f6 wire keychain`
943
+ - Action 5: `CLAUDE.md` exists, line 1 reads "# AcmeApp iOS companion (SwiftUI)"
944
+
945
+ **Optimized Prompt (Full):**
946
+
947
+ ````
948
+ ## 🔍 Project Context (probed 2026-05-27 14:30 — starting point, NOT ground truth)
949
+
950
+ ### Facts (directly observed in probe)
951
+ - Stack: Swift 6.0 + SwiftUI, target iOS 18 ← from `Package.swift:5` (declared, installed toolchain not verified)
952
+ - Repo: AcmeApp @ branch `feat/auth` (2 commits ahead of `main`)
953
+ - Uncommitted: M `Sources/Auth/LoginView.swift`
954
+ - Recent commit subjects (commit messages only — NOT code verification):
955
+ - `a1b2c3` "add AuthService stub"
956
+ - `d4e5f6` "wire keychain"
957
+ - `9f8e7d` "scaffold Auth module"
958
+ - Recent diff scope (`git diff --stat HEAD~1`): `Sources/Auth/LoginView.swift`: +45 -12
959
+ - Project self-description (`CLAUDE.md:1`, last modified 2026-04-30): "AcmeApp iOS companion (SwiftUI)"
960
+
961
+ ### Inferences (UNVERIFIED — confirm before acting)
962
+ - Likely SwiftUI auth feature work in progress (branch name + recent commit subjects)
963
+ - A type named "AuthService" may exist (commit subject reference) — NOT verified by reading any file
964
+
965
+ ### Unknown / Not Probed
966
+ - Whether `AuthService` actually exists as a Swift type — `Grep "AuthService" Sources/` before referencing
967
+ - Installed Swift toolchain version (only `Package.swift` declared version was read)
968
+ - Whether `LoginView.swift` is the intended host for login UI or just a scratch file
969
+
970
+ ⚠️ Re-verify before mutating: run `git status`, `Read` actual files. This block
971
+ is probe-time context, not authoritative. If observation contradicts this
972
+ block, trust observation and ignore this block.
973
+
974
+ ---
975
+
976
+ **Task**: Implement login functionality for AcmeApp.
977
+
978
+ **Required skills**: `swiftui-pro` (review/idiom), `test-driven-development` (write failing test first).
979
+
980
+ **Starting points to verify (NOT commands to obey blindly):**
981
+
982
+ 1. `Sources/Auth/LoginView.swift` already has uncommitted changes (+45 -12 vs HEAD~1). **Read it first** to see what's already drafted before adding new code.
983
+ 2. Commit log mentions "AuthService stub" — **before** importing or extending it, run `Grep "AuthService" Sources/` to confirm the type exists and is at a usable state. Treat the name as a lead, not a fact.
984
+ 3. Branch is `feat/auth` with 2 commits ahead of `main` — verify this is the intended working branch. If unclear, ask the user.
985
+ 4. `CLAUDE.md` declares SwiftUI iOS — use SwiftUI APIs (`@State`, `@Observable`, `NavigationStack`) and `iOS 18` features. Confirm by reading `Package.swift` platforms array before using iOS-26-only APIs.
986
+
987
+ **Workflow:**
988
+ 1. `Read Sources/Auth/LoginView.swift` → understand existing scaffold.
989
+ 2. `Grep` for `AuthService`, `Keychain` patterns → ground the implementation in what exists.
990
+ 3. Use `test-driven-development`: write failing test for the login happy path first.
991
+ 4. Implement minimum code to pass; let `swiftui-pro` review the View structure.
992
+ 5. `/verify` — build, run tests, manually exercise the simulator flow.
993
+
994
+ **Acceptance criteria:**
995
+ - Login screen accepts email + password input, validates non-empty
996
+ - Successful auth navigates to main app screen
997
+ - Failed auth shows inline error
998
+ - Credentials persist via Keychain (extend existing wiring from `d4e5f6`, do NOT re-implement)
999
+ - Unit tests cover validation + success + failure paths
1000
+
1001
+ **Scope boundaries:**
1002
+ - Do NOT redesign `AuthService` interface — extend it if it exists; flag for user if it doesn't
1003
+ - Do NOT switch branch — work continues on `feat/auth`
1004
+ - Do NOT introduce a new auth library (no Firebase / Auth0 / etc.) without asking
1005
+ ````
1006
+
1007
+ **Why this output is safer than the v1.2.x style:**
1008
+
1009
+ | v1.2.x risk | v1.3.0 mitigation |
1010
+ |-------------|-------------------|
1011
+ | Would have said "Use `swiftui-pro` to add login" without naming files | Cites `LoginView.swift`, `Package.swift:5`, branch `feat/auth`, commit `d4e5f6` (R1, ≥ 2 Facts cited) |
1012
+ | Might have written "extend `AuthService`" as imperative | Downgraded to "Grep `AuthService` first — treat the name as a lead, not a fact" (R2) |
1013
+ | Would have inferred "auth feature" from branch name | Branch name in `Inferences`, intent confirmed via user prompt only (R3) |
1014
+ | Would have said "Swift 6.0" as if it were installed | "declared, installed toolchain not verified" (R4) |
1015
+ | Would have implied CLAUDE.md content was current truth | Cited with last-modified date (R5) |
1016
+ | No instruction to re-verify | `⚠️ Re-verify before mutating` footer (R6) |
1017
+
775
1018
  ---
776
1019
 
777
1020
  ## Related Components
@@ -0,0 +1,105 @@
1
+ ---
2
+ name: swift-concurrency-expert
3
+ description: Swift Concurrency review and remediation for Swift 6.2+. Use when asked to review Swift Concurrency usage, improve concurrency compliance, or fix Swift concurrency compiler errors in a feature or file. Concrete actions include adding Sendable conformance, applying @MainActor annotations, resolving actor isolation warnings, fixing data race diagnostics, and migrating completion handlers to async/await.
4
+ ---
5
+
6
+ # Swift Concurrency Expert
7
+
8
+ ## Overview
9
+
10
+ Review and fix Swift Concurrency issues in Swift 6.2+ codebases by applying actor isolation, Sendable safety, and modern concurrency patterns with minimal behavior changes.
11
+
12
+ ## Workflow
13
+
14
+ ### 1. Triage the issue
15
+
16
+ - Capture the exact compiler diagnostics and the offending symbol(s).
17
+ - Check project concurrency settings: Swift language version (6.2+), strict concurrency level, and whether approachable concurrency (default actor isolation / main-actor-by-default) is enabled.
18
+ - Identify the current actor context (`@MainActor`, `actor`, `nonisolated`) and whether a default actor isolation mode is enabled.
19
+ - Confirm whether the code is UI-bound or intended to run off the main actor.
20
+
21
+ ### 2. Apply the smallest safe fix
22
+
23
+ Prefer edits that preserve existing behavior while satisfying data-race safety.
24
+
25
+ Common fixes:
26
+ - **UI-bound types**: annotate the type or relevant members with `@MainActor`.
27
+ - **Protocol conformance on main actor types**: make the conformance isolated (e.g., `extension Foo: @MainActor SomeProtocol`).
28
+ - **Global/static state**: protect with `@MainActor` or move into an actor.
29
+ - **Background work**: move expensive work into a `@concurrent` async function on a `nonisolated` type or use an `actor` to guard mutable state.
30
+ - **Sendable errors**: prefer immutable/value types; add `Sendable` conformance only when correct; avoid `@unchecked Sendable` unless you can prove thread safety.
31
+
32
+ ### 3. Verify the fix
33
+
34
+ - Rebuild and confirm all concurrency diagnostics are resolved with no new warnings introduced.
35
+ - Run the test suite to check for regressions — concurrency changes can introduce subtle runtime issues even when the build is clean.
36
+ - If the fix surfaces new warnings, treat each one as a fresh triage (return to step 1) and resolve iteratively until the build is clean and tests pass.
37
+
38
+ ### Examples
39
+
40
+ **UI-bound type — adding `@MainActor`**
41
+
42
+ ```swift
43
+ // Before: data-race warning because ViewModel is accessed from the main thread
44
+ // but has no actor isolation
45
+ class ViewModel: ObservableObject {
46
+ @Published var title: String = ""
47
+ func load() { title = "Loaded" }
48
+ }
49
+
50
+ // After: annotate the whole type so all stored state and methods are
51
+ // automatically isolated to the main actor
52
+ @MainActor
53
+ class ViewModel: ObservableObject {
54
+ @Published var title: String = ""
55
+ func load() { title = "Loaded" }
56
+ }
57
+ ```
58
+
59
+ **Protocol conformance isolation**
60
+
61
+ ```swift
62
+ // Before: compiler error — SomeProtocol method is nonisolated but the
63
+ // conforming type is @MainActor
64
+ @MainActor
65
+ class Foo: SomeProtocol {
66
+ func protocolMethod() { /* accesses main-actor state */ }
67
+ }
68
+
69
+ // After: scope the conformance to @MainActor so the requirement is
70
+ // satisfied inside the correct isolation context
71
+ @MainActor
72
+ extension Foo: SomeProtocol {
73
+ func protocolMethod() { /* safely accesses main-actor state */ }
74
+ }
75
+ ```
76
+
77
+ **Background work with `@concurrent`**
78
+
79
+ ```swift
80
+ // Before: expensive computation blocks the main actor
81
+ @MainActor
82
+ func processData(_ input: [Int]) -> [Int] {
83
+ input.map { heavyTransform($0) } // runs on main thread
84
+ }
85
+
86
+ // After: hop off the main actor for the heavy work, then return the result
87
+ // The caller awaits the result and stays on its own actor
88
+ nonisolated func processData(_ input: [Int]) async -> [Int] {
89
+ await Task.detached(priority: .userInitiated) {
90
+ input.map { heavyTransform($0) }
91
+ }.value
92
+ }
93
+
94
+ // Or, using a @concurrent async function (Swift 6.2+):
95
+ @concurrent
96
+ func processData(_ input: [Int]) async -> [Int] {
97
+ input.map { heavyTransform($0) }
98
+ }
99
+ ```
100
+
101
+ ## Reference material
102
+
103
+ - See `references/swift-6-2-concurrency.md` for Swift 6.2 changes, patterns, and examples.
104
+ - See `references/approachable-concurrency.md` when the project is opted into approachable concurrency mode.
105
+ - See `references/swiftui-concurrency-tour-wwdc.md` for SwiftUI-specific concurrency guidance.