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.
- package/.local/skills/THIRD_PARTY_LICENSES/AvdLee-SwiftUI-Agent-Skill.LICENSE +21 -0
- package/.local/skills/THIRD_PARTY_LICENSES/Dimillian-Skills.LICENSE +21 -0
- package/.local/skills/THIRD_PARTY_LICENSES/README.md +36 -0
- package/.local/skills/THIRD_PARTY_LICENSES/twostraws-swiftui-agent-skill.LICENSE +21 -0
- package/.local/skills/ios-debugger-agent/SKILL.md +51 -0
- package/.local/skills/ios-debugger-agent/agents/openai.yaml +4 -0
- package/.local/skills/prompt-optimizer/SKILL.md +262 -19
- package/.local/skills/swift-concurrency-expert/SKILL.md +105 -0
- package/.local/skills/swift-concurrency-expert/agents/openai.yaml +4 -0
- package/.local/skills/swift-concurrency-expert/references/approachable-concurrency.md +63 -0
- package/.local/skills/swift-concurrency-expert/references/swift-6-2-concurrency.md +272 -0
- package/.local/skills/swift-concurrency-expert/references/swiftui-concurrency-tour-wwdc.md +33 -0
- package/.local/skills/swiftui-expert-skill/SKILL.md +162 -0
- package/.local/skills/swiftui-expert-skill/references/accessibility-patterns.md +215 -0
- package/.local/skills/swiftui-expert-skill/references/animation-advanced.md +403 -0
- package/.local/skills/swiftui-expert-skill/references/animation-basics.md +284 -0
- package/.local/skills/swiftui-expert-skill/references/animation-transitions.md +326 -0
- package/.local/skills/swiftui-expert-skill/references/charts-accessibility.md +135 -0
- package/.local/skills/swiftui-expert-skill/references/charts.md +602 -0
- package/.local/skills/swiftui-expert-skill/references/focus-patterns.md +299 -0
- package/.local/skills/swiftui-expert-skill/references/image-optimization.md +203 -0
- package/.local/skills/swiftui-expert-skill/references/latest-apis.md +488 -0
- package/.local/skills/swiftui-expert-skill/references/layout-best-practices.md +266 -0
- package/.local/skills/swiftui-expert-skill/references/liquid-glass.md +423 -0
- package/.local/skills/swiftui-expert-skill/references/list-patterns.md +446 -0
- package/.local/skills/swiftui-expert-skill/references/macos-scenes.md +318 -0
- package/.local/skills/swiftui-expert-skill/references/macos-views.md +357 -0
- package/.local/skills/swiftui-expert-skill/references/macos-window-styling.md +303 -0
- package/.local/skills/swiftui-expert-skill/references/performance-patterns.md +403 -0
- package/.local/skills/swiftui-expert-skill/references/scroll-patterns.md +293 -0
- package/.local/skills/swiftui-expert-skill/references/sheet-navigation-patterns.md +363 -0
- package/.local/skills/swiftui-expert-skill/references/state-management.md +388 -0
- package/.local/skills/swiftui-expert-skill/references/text-patterns.md +32 -0
- package/.local/skills/swiftui-expert-skill/references/trace-analysis.md +295 -0
- package/.local/skills/swiftui-expert-skill/references/trace-recording.md +134 -0
- package/.local/skills/swiftui-expert-skill/references/view-structure.md +780 -0
- package/.local/skills/swiftui-expert-skill/scripts/__pycache__/analyze_trace.cpython-313.pyc +0 -0
- package/.local/skills/swiftui-expert-skill/scripts/__pycache__/record_trace.cpython-313.pyc +0 -0
- package/.local/skills/swiftui-expert-skill/scripts/analyze_trace.py +301 -0
- package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/__init__.py +1 -0
- package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/__pycache__/__init__.cpython-313.pyc +0 -0
- package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/__pycache__/causes.cpython-313.pyc +0 -0
- package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/__pycache__/correlate.cpython-313.pyc +0 -0
- package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/__pycache__/events.cpython-313.pyc +0 -0
- package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/__pycache__/hangs.cpython-313.pyc +0 -0
- package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/__pycache__/hitches.cpython-313.pyc +0 -0
- package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/__pycache__/summary.cpython-313.pyc +0 -0
- package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/__pycache__/swiftui.cpython-313.pyc +0 -0
- package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/__pycache__/time_profiler.cpython-313.pyc +0 -0
- package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/__pycache__/xctrace.cpython-313.pyc +0 -0
- package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/__pycache__/xml_utils.cpython-313.pyc +0 -0
- package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/causes.py +187 -0
- package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/correlate.py +179 -0
- package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/events.py +291 -0
- package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/hangs.py +108 -0
- package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/hitches.py +145 -0
- package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/summary.py +243 -0
- package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/swiftui.py +195 -0
- package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/time_profiler.py +135 -0
- package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/xctrace.py +117 -0
- package/.local/skills/swiftui-expert-skill/scripts/instruments_parser/xml_utils.py +224 -0
- package/.local/skills/swiftui-expert-skill/scripts/record_trace.py +252 -0
- package/.local/skills/swiftui-liquid-glass/SKILL.md +90 -0
- package/.local/skills/swiftui-liquid-glass/agents/openai.yaml +4 -0
- package/.local/skills/swiftui-liquid-glass/references/liquid-glass.md +280 -0
- package/.local/skills/swiftui-performance-audit/SKILL.md +106 -0
- package/.local/skills/swiftui-performance-audit/agents/openai.yaml +4 -0
- package/.local/skills/swiftui-performance-audit/references/code-smells.md +150 -0
- package/.local/skills/swiftui-performance-audit/references/demystify-swiftui-performance-wwdc23.md +46 -0
- package/.local/skills/swiftui-performance-audit/references/optimizing-swiftui-performance-instruments.md +29 -0
- package/.local/skills/swiftui-performance-audit/references/profiling-intake.md +44 -0
- package/.local/skills/swiftui-performance-audit/references/report-template.md +47 -0
- package/.local/skills/swiftui-performance-audit/references/understanding-hangs-in-your-app.md +33 -0
- package/.local/skills/swiftui-performance-audit/references/understanding-improving-swiftui-performance.md +52 -0
- package/.local/skills/swiftui-pro/SKILL.md +108 -0
- package/.local/skills/swiftui-pro/agents/openai.yaml +10 -0
- package/.local/skills/swiftui-pro/assets/swiftui-pro-icon.png +0 -0
- package/.local/skills/swiftui-pro/assets/swiftui-pro-icon.svg +29 -0
- package/.local/skills/swiftui-pro/references/accessibility.md +13 -0
- package/.local/skills/swiftui-pro/references/api.md +39 -0
- package/.local/skills/swiftui-pro/references/data.md +43 -0
- package/.local/skills/swiftui-pro/references/design.md +32 -0
- package/.local/skills/swiftui-pro/references/hygiene.md +9 -0
- package/.local/skills/swiftui-pro/references/navigation.md +14 -0
- package/.local/skills/swiftui-pro/references/performance.md +46 -0
- package/.local/skills/swiftui-pro/references/swift.md +56 -0
- package/.local/skills/swiftui-pro/references/views.md +36 -0
- package/.local/skills/swiftui-ui-patterns/SKILL.md +95 -0
- package/.local/skills/swiftui-ui-patterns/agents/openai.yaml +4 -0
- package/.local/skills/swiftui-ui-patterns/references/app-wiring.md +201 -0
- package/.local/skills/swiftui-ui-patterns/references/async-state.md +96 -0
- package/.local/skills/swiftui-ui-patterns/references/components-index.md +50 -0
- package/.local/skills/swiftui-ui-patterns/references/controls.md +57 -0
- package/.local/skills/swiftui-ui-patterns/references/deeplinks.md +66 -0
- package/.local/skills/swiftui-ui-patterns/references/focus.md +90 -0
- package/.local/skills/swiftui-ui-patterns/references/form.md +97 -0
- package/.local/skills/swiftui-ui-patterns/references/grids.md +71 -0
- package/.local/skills/swiftui-ui-patterns/references/haptics.md +71 -0
- package/.local/skills/swiftui-ui-patterns/references/input-toolbar.md +51 -0
- package/.local/skills/swiftui-ui-patterns/references/lightweight-clients.md +93 -0
- package/.local/skills/swiftui-ui-patterns/references/list.md +86 -0
- package/.local/skills/swiftui-ui-patterns/references/loading-placeholders.md +38 -0
- package/.local/skills/swiftui-ui-patterns/references/macos-settings.md +71 -0
- package/.local/skills/swiftui-ui-patterns/references/matched-transitions.md +59 -0
- package/.local/skills/swiftui-ui-patterns/references/media.md +73 -0
- package/.local/skills/swiftui-ui-patterns/references/menu-bar.md +101 -0
- package/.local/skills/swiftui-ui-patterns/references/navigationstack.md +159 -0
- package/.local/skills/swiftui-ui-patterns/references/overlay.md +45 -0
- package/.local/skills/swiftui-ui-patterns/references/performance.md +62 -0
- package/.local/skills/swiftui-ui-patterns/references/previews.md +48 -0
- package/.local/skills/swiftui-ui-patterns/references/scroll-reveal.md +133 -0
- package/.local/skills/swiftui-ui-patterns/references/scrollview.md +87 -0
- package/.local/skills/swiftui-ui-patterns/references/searchable.md +71 -0
- package/.local/skills/swiftui-ui-patterns/references/sheets.md +155 -0
- package/.local/skills/swiftui-ui-patterns/references/split-views.md +72 -0
- package/.local/skills/swiftui-ui-patterns/references/tabview.md +114 -0
- package/.local/skills/swiftui-ui-patterns/references/theming.md +71 -0
- package/.local/skills/swiftui-ui-patterns/references/title-menus.md +93 -0
- package/.local/skills/swiftui-ui-patterns/references/top-bar.md +49 -0
- package/.local/skills/swiftui-view-refactor/SKILL.md +202 -0
- package/.local/skills/swiftui-view-refactor/agents/openai.yaml +4 -0
- package/.local/skills/swiftui-view-refactor/references/mv-patterns.md +161 -0
- package/.omc-curation/ecc-selection.json +80 -0
- package/.omc-curation/governance.json +113 -0
- package/.omc-curation/sources.lock.json +25 -0
- package/README.md +69 -4
- package/bundled/manifest.json +5 -5
- package/bundled/upstream/anthropic-skills/.omc-source/bundle.json +18 -0
- package/bundled/upstream/anthropic-skills/.omc-source/provenance.json +399 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/SKILL.md +18 -17
- package/bundled/upstream/anthropic-skills/skills/claude-api/curl/examples.md +9 -9
- package/bundled/upstream/anthropic-skills/skills/claude-api/curl/managed-agents.md +4 -4
- package/bundled/upstream/anthropic-skills/skills/claude-api/go/managed-agents/README.md +2 -2
- package/bundled/upstream/anthropic-skills/skills/claude-api/java/claude-api.md +2 -2
- package/bundled/upstream/anthropic-skills/skills/claude-api/java/managed-agents/README.md +2 -2
- package/bundled/upstream/anthropic-skills/skills/claude-api/php/claude-api.md +10 -10
- package/bundled/upstream/anthropic-skills/skills/claude-api/php/managed-agents/README.md +2 -2
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/README.md +16 -16
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/batches.md +3 -3
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/files-api.md +3 -3
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/streaming.md +7 -7
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/tool-use.md +19 -19
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/managed-agents/README.md +3 -3
- package/bundled/upstream/anthropic-skills/skills/claude-api/ruby/claude-api.md +4 -4
- package/bundled/upstream/anthropic-skills/skills/claude-api/ruby/managed-agents/README.md +2 -2
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/error-codes.md +5 -5
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/live-sources.md +3 -1
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-api-reference.md +10 -4
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-core.md +19 -1
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-environments.md +6 -2
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-multiagent.md +1 -1
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-onboarding.md +3 -3
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-overview.md +3 -2
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-self-hosted-sandboxes.md +173 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-tools.md +10 -4
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/model-migration.md +113 -13
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/models.md +14 -11
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/prompt-caching.md +2 -2
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/tool-use-concepts.md +4 -4
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/README.md +15 -15
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/batches.md +2 -2
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/files-api.md +1 -1
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/streaming.md +5 -5
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/tool-use.md +15 -15
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/managed-agents/README.md +3 -3
- package/bundled/upstream/ecc/.omc-source/bundle.json +2 -1
- package/bundled/upstream/ecc/.omc-source/last-plan-apply.json +108 -24
- package/bundled/upstream/ecc/.omc-source/manifests/.claude-plugin/marketplace.json +3 -3
- package/bundled/upstream/ecc/.omc-source/provenance.json +563 -0
- package/bundled/upstream/ecc/agents/marketing-agent.md +159 -0
- package/bundled/upstream/ecc/agents/react-build-resolver.md +215 -0
- package/bundled/upstream/ecc/agents/react-reviewer.md +167 -0
- package/bundled/upstream/ecc/agents/typescript-reviewer.md +3 -0
- package/bundled/upstream/ecc/commands/harness-audit.md +17 -10
- package/bundled/upstream/ecc/commands/marketing-campaign.md +129 -0
- package/bundled/upstream/ecc/commands/react-build.md +187 -0
- package/bundled/upstream/ecc/commands/react-review.md +170 -0
- package/bundled/upstream/ecc/commands/react-test.md +265 -0
- package/bundled/upstream/ecc/skills/benchmark-optimization-loop/SKILL.md +69 -0
- package/bundled/upstream/ecc/skills/blender-motion-state-inspection/SKILL.md +164 -0
- package/bundled/upstream/ecc/skills/canary-watch/SKILL.md +9 -1
- package/bundled/upstream/ecc/skills/continuous-learning-v2/hooks/observe.sh +31 -9
- package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/detect-project.sh +38 -4
- package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/instinct-cli.py +319 -12
- package/bundled/upstream/ecc/skills/data-throughput-accelerator/SKILL.md +72 -0
- package/bundled/upstream/ecc/skills/dynamic-workflow-mode/SKILL.md +123 -0
- package/bundled/upstream/ecc/skills/frontend-a11y/SKILL.md +446 -0
- package/bundled/upstream/ecc/skills/ito-basket-compare/SKILL.md +63 -0
- package/bundled/upstream/ecc/skills/ito-data-atlas-agent/SKILL.md +63 -0
- package/bundled/upstream/ecc/skills/ito-market-intelligence/SKILL.md +60 -0
- package/bundled/upstream/ecc/skills/ito-trade-planner/SKILL.md +67 -0
- package/bundled/upstream/ecc/skills/latency-critical-systems/SKILL.md +73 -0
- package/bundled/upstream/ecc/skills/marketing-campaign/SKILL.md +113 -0
- package/bundled/upstream/ecc/skills/nextjs-turbopack/SKILL.md +13 -0
- package/bundled/upstream/ecc/skills/parallel-execution-optimizer/SKILL.md +72 -0
- package/bundled/upstream/ecc/skills/prediction-market-oracle-research/SKILL.md +63 -0
- package/bundled/upstream/ecc/skills/prediction-market-risk-review/SKILL.md +60 -0
- package/bundled/upstream/ecc/skills/react-patterns/SKILL.md +341 -0
- package/bundled/upstream/ecc/skills/react-performance/SKILL.md +574 -0
- package/bundled/upstream/ecc/skills/react-testing/SKILL.md +423 -0
- package/bundled/upstream/ecc/skills/recsys-pipeline-architect/SKILL.md +114 -0
- package/bundled/upstream/ecc/skills/recursive-decision-ledger/SKILL.md +79 -0
- package/bundled/upstream/ecc/skills/social-publisher/SKILL.md +115 -0
- package/bundled/upstream/ecc/skills/team-agent-orchestration/SKILL.md +110 -0
- package/bundled/upstream/ecc/skills/uncloud/SKILL.md +343 -0
- package/bundled/upstream/ecc/skills/windows-desktop-e2e/SKILL.md +99 -0
- package/bundled/upstream/oh-my-claudecode/.omc-source/bundle.json +2 -1
- package/bundled/upstream/oh-my-claudecode/.omc-source/provenance.json +116 -0
- package/bundled/upstream/oh-my-claudecode/skills/autopilot/SKILL.md +7 -0
- package/bundled/upstream/oh-my-claudecode/skills/cancel/SKILL.md +1 -0
- package/bundled/upstream/oh-my-claudecode/skills/deep-interview/SKILL.md +39 -5
- package/bundled/upstream/oh-my-claudecode/skills/hud/SKILL.md +1 -0
- package/bundled/upstream/oh-my-claudecode/skills/local-build-reminder/SKILL.md +78 -0
- package/bundled/upstream/oh-my-claudecode/skills/omc-doctor/SKILL.md +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/omc-setup/SKILL.md +26 -10
- package/bundled/upstream/oh-my-claudecode/skills/omc-setup/phases/01-install-claude-md.md +3 -3
- package/bundled/upstream/oh-my-claudecode/skills/omc-setup/phases/02-configure.md +6 -4
- package/bundled/upstream/oh-my-claudecode/skills/omc-setup/phases/03-integrations.md +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/omc-setup/phases/04-welcome.md +2 -2
- package/bundled/upstream/oh-my-claudecode/skills/omc-teams/SKILL.md +6 -6
- package/bundled/upstream/oh-my-claudecode/skills/plan/SKILL.md +44 -32
- package/bundled/upstream/oh-my-claudecode/skills/ralph/SKILL.md +45 -21
- package/bundled/upstream/oh-my-claudecode/skills/ralplan/SKILL.md +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/self-improve/SKILL.md +7 -0
- package/bundled/upstream/oh-my-claudecode/skills/self-improve/scripts/resolve-paths.mjs +39 -15
- package/bundled/upstream/oh-my-claudecode/skills/team/SKILL.md +132 -90
- package/bundled/upstream/oh-my-claudecode/skills/ultragoal/SKILL.md +93 -0
- package/bundled/upstream/oh-my-claudecode/skills/ultraqa/SKILL.md +28 -13
- package/bundled/upstream/oh-my-claudecode/skills/ultrawork/SKILL.md +7 -0
- package/bundled/upstream/superpowers/.omc-source/bundle.json +2 -1
- package/bundled/upstream/superpowers/.omc-source/provenance.json +63 -0
- package/package.json +2 -1
- package/src/catalog/source-catalog.js +10 -4
- package/src/cli/index.js +4 -0
- package/src/cli/plan.js +14 -2
- package/src/cli/setup.js +52 -13
- package/src/cli/skill.js +1 -1
- package/src/cli/source.js +265 -14
- package/src/config/sources.js +67 -1
- package/src/merge/content-patch.js +84 -0
- package/templates/merge-config.json +1 -8
- 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.
|
|
@@ -21,8 +21,42 @@ description: >-
|
|
|
21
21
|
origin: community
|
|
22
22
|
metadata:
|
|
23
23
|
author: YannJY02
|
|
24
|
-
version: "1.
|
|
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
|
|
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. /
|
|
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 +
|
|
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, /
|
|
318
|
-
| **Bug Fix** | /
|
|
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) → /
|
|
325
|
-
| Testing | /
|
|
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.
|
|
549
|
-
|
|
550
|
-
|
|
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]. /
|
|
566
|
-
| Bug Fix | `Use systematic-debugging for [bug] — list 3 hypotheses, verify each. Then /
|
|
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 → /
|
|
573
|
-
| Testing | `/
|
|
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. /
|
|
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. /
|
|
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. /
|
|
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. /
|
|
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.
|