@mmerterden/multi-agent-pipeline 20.33.0 → 20.35.0
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/CHANGELOG.md +98 -1
- package/README.md +3 -1
- package/README.tr.md +2 -1
- package/docs/adr/0018-cross-repo-links-not-a-global-graph.md +43 -0
- package/docs/adr/README.md +2 -1
- package/docs/facts.json +5 -4
- package/docs/features.md +1 -1
- package/install/_dev-only-files.mjs +1 -0
- package/install/catalog-history.json +1 -1
- package/install/claude.mjs +24 -2
- package/install/templates/claude-hooks.json +34 -1
- package/manifest.json +393 -339
- package/package.json +3 -1
- package/pipeline/agents/bulk-reader.md +3 -0
- package/pipeline/agents/code-reviewer.md +9 -0
- package/pipeline/agents/explorer.md +4 -0
- package/pipeline/agents/plan-critic.md +4 -2
- package/pipeline/commands/multi-agent/SKILL.md +17 -136
- package/pipeline/commands/multi-agent/channels/SKILL.md +16 -298
- package/pipeline/commands/multi-agent/graph/SKILL.md +5 -2
- package/pipeline/commands/multi-agent/language/SKILL.md +3 -3
- package/pipeline/commands/multi-agent/office-on/SKILL.md +7 -3
- package/pipeline/commands/multi-agent/office-status/SKILL.md +3 -2
- package/pipeline/commands/multi-agent/resume/SKILL.md +8 -22
- package/pipeline/commands/multi-agent/review/SKILL.md +7 -131
- package/pipeline/commands/multi-agent/setup/SKILL.md +19 -224
- package/pipeline/contract/CHANGELOG.md +9 -0
- package/pipeline/contract/README.md +6 -2
- package/pipeline/contract/fixtures/error-invalid-request.json +1 -1
- package/pipeline/contract/fixtures/error-unauthorized.json +1 -1
- package/pipeline/contract/fixtures/error-unsigned.json +1 -1
- package/pipeline/contract/manifest.json +14 -1
- package/pipeline/contract/types/index.d.ts +24 -2
- package/pipeline/lib/json-file-lock.mjs +61 -15
- package/pipeline/lib/office-remote.mjs +228 -0
- package/pipeline/lib/qr-code.mjs +360 -0
- package/pipeline/lib/repo-hygiene.sh +1 -0
- package/pipeline/lib/run-completion.mjs +17 -0
- package/pipeline/multi-agent-refs/channels/generator.md +146 -0
- package/pipeline/multi-agent-refs/channels/issue-comment.md +1 -1
- package/pipeline/multi-agent-refs/channels/menu.md +55 -0
- package/pipeline/multi-agent-refs/channels/multi-repo.md +6 -0
- package/pipeline/multi-agent-refs/channels/preview.md +25 -0
- package/pipeline/multi-agent-refs/channels/reference.md +98 -0
- package/pipeline/multi-agent-refs/features/autopilot-circuit-breaker.md +1 -1
- package/pipeline/multi-agent-refs/features/code-graph.md +27 -0
- package/pipeline/multi-agent-refs/features/office-remote-protocol.md +166 -0
- package/pipeline/multi-agent-refs/features/office-threat-model.md +2 -2
- package/pipeline/multi-agent-refs/features/plan-critic.md +5 -2
- package/pipeline/multi-agent-refs/features/review-delta.md +4 -1
- package/pipeline/multi-agent-refs/features/scope-check.md +25 -1
- package/pipeline/multi-agent-refs/features/verify-by-test.md +10 -0
- package/pipeline/multi-agent-refs/keychain.md +7 -0
- package/pipeline/multi-agent-refs/knowledge.md +9 -0
- package/pipeline/multi-agent-refs/orchestrator/dispatcher.md +163 -0
- package/pipeline/multi-agent-refs/phases/phase-0-init.md +6 -2
- package/pipeline/multi-agent-refs/phases/phase-1-plan.md +8 -10
- package/pipeline/multi-agent-refs/phases/phase-2-dev.md +18 -20
- package/pipeline/multi-agent-refs/phases/phase-3-review.md +20 -14
- package/pipeline/multi-agent-refs/phases/phase-4-commit.md +8 -7
- package/pipeline/multi-agent-refs/phases/phase-5-report.md +6 -3
- package/pipeline/multi-agent-refs/picker-contract.md +1 -1
- package/pipeline/multi-agent-refs/resume/details.md +35 -0
- package/pipeline/multi-agent-refs/review/inputs.md +87 -0
- package/pipeline/multi-agent-refs/review/module-guides.md +25 -0
- package/pipeline/multi-agent-refs/review/valven.md +42 -0
- package/pipeline/multi-agent-refs/rules.md +3 -2
- package/pipeline/multi-agent-refs/setup/accounts.md +27 -0
- package/pipeline/multi-agent-refs/setup/app-store-connect.md +5 -0
- package/pipeline/multi-agent-refs/setup/firebase.md +5 -0
- package/pipeline/multi-agent-refs/setup/google-play.md +4 -0
- package/pipeline/multi-agent-refs/setup/hooks-and-plugins.md +21 -0
- package/pipeline/multi-agent-refs/setup/language.md +46 -0
- package/pipeline/multi-agent-refs/setup/multi-repo-group.md +51 -0
- package/pipeline/multi-agent-refs/setup/summaries.md +63 -0
- package/pipeline/multi-agent-refs/setup/token-save-flow.md +51 -0
- package/pipeline/multi-agent-refs/tracker-contract.md +1 -1
- package/pipeline/office/NOTICE.md +4 -1
- package/pipeline/office/assets/char_12.png +0 -0
- package/pipeline/office/assets/char_13.png +0 -0
- package/pipeline/office/assets/char_14.png +0 -0
- package/pipeline/office/assets/char_15.png +0 -0
- package/pipeline/office/assets/char_16.png +0 -0
- package/pipeline/office/assets/char_17.png +0 -0
- package/pipeline/office/assets/char_18.png +0 -0
- package/pipeline/office/assets/char_19.png +0 -0
- package/pipeline/office/assets/char_20.png +0 -0
- package/pipeline/office/assets/char_21.png +0 -0
- package/pipeline/office/assets/char_22.png +0 -0
- package/pipeline/office/assets/char_23.png +0 -0
- package/pipeline/office/assets/char_24.png +0 -0
- package/pipeline/office/assets/char_25.png +0 -0
- package/pipeline/office/assets/char_26.png +0 -0
- package/pipeline/office/assets/char_27.png +0 -0
- package/pipeline/office/assets/char_28.png +0 -0
- package/pipeline/office/assets/char_29.png +0 -0
- package/pipeline/office/assets/char_30.png +0 -0
- package/pipeline/office/index.html +304 -55
- package/pipeline/office/toolkit.json +1 -1
- package/pipeline/rules/response-shape.md +6 -7
- package/pipeline/schemas/agent-state.schema.json +36 -0
- package/pipeline/schemas/phases.json +4 -4
- package/pipeline/schemas/plan-critique.schema.json +9 -2
- package/pipeline/schemas/planning-output.schema.json +43 -2
- package/pipeline/schemas/pr-reach.schema.json +55 -0
- package/pipeline/schemas/prefs.schema.json +37 -8
- package/pipeline/schemas/reviewer-output.schema.json +20 -2
- package/pipeline/schemas/token-budget.json +4 -4
- package/pipeline/schemas/triage-output.schema.json +32 -3
- package/pipeline/schemas/unattended-policy.json +2 -1
- package/pipeline/scripts/_graph-analysis.mjs +270 -0
- package/pipeline/scripts/_guard_rules.py +449 -1
- package/pipeline/scripts/_memory-policy.mjs +165 -0
- package/pipeline/scripts/_secret-scan.mjs +105 -0
- package/pipeline/scripts/_test-gaming.mjs +36 -0
- package/pipeline/scripts/_unified-diff.mjs +2 -2
- package/pipeline/scripts/agent-guard.py +79 -19
- package/pipeline/scripts/anonymize-findings.mjs +99 -0
- package/pipeline/scripts/answer-check.mjs +113 -0
- package/pipeline/scripts/answer-check.sh +20 -0
- package/pipeline/scripts/autopilot-publish.mjs +9 -2
- package/pipeline/scripts/capture-flush.sh +12 -2
- package/pipeline/scripts/check-read-size.sh +9 -0
- package/pipeline/scripts/code-graph-rules/android.json +8 -3
- package/pipeline/scripts/contract-server.mjs +71 -16
- package/pipeline/scripts/debt-ledger.mjs +323 -0
- package/pipeline/scripts/file-context.mjs +261 -0
- package/pipeline/scripts/file-context.sh +20 -0
- package/pipeline/scripts/gate-ledger.mjs +144 -21
- package/pipeline/scripts/graph-links.mjs +230 -0
- package/pipeline/scripts/graph-query.mjs +133 -1
- package/pipeline/scripts/graph-report.mjs +65 -0
- package/pipeline/scripts/learn-from-transcripts.mjs +12 -48
- package/pipeline/scripts/learnings-ledger.mjs +143 -24
- package/pipeline/scripts/office-build.mjs +276 -5
- package/pipeline/scripts/office-control.mjs +70 -10
- package/pipeline/scripts/office-pair.mjs +407 -0
- package/pipeline/scripts/office-remote-client.mjs +463 -0
- package/pipeline/scripts/phase-tracker.sh +8 -0
- package/pipeline/scripts/phase0-exit-gate.mjs +40 -37
- package/pipeline/scripts/phone-devices.mjs +9 -1
- package/pipeline/scripts/plan-critique-gate.mjs +11 -2
- package/pipeline/scripts/pre-commit-check.sh +28 -2
- package/pipeline/scripts/pre-push-check.sh +6 -12
- package/pipeline/scripts/rework-base.mjs +87 -0
- package/pipeline/scripts/rework-rulings.mjs +106 -0
- package/pipeline/scripts/run-commit-check.mjs +104 -0
- package/pipeline/scripts/run-scope-guard.mjs +58 -3
- package/pipeline/scripts/run-scope-guard.sh +13 -1
- package/pipeline/scripts/scope-check-gate.mjs +213 -2
- package/pipeline/scripts/task-mirror.mjs +106 -15
- package/pipeline/scripts/task-mirror.sh +3 -2
- package/pipeline/scripts/test-stability-gate.mjs +112 -0
- package/pipeline/scripts/triage-memory.mjs +64 -37
- package/pipeline/scripts/update-check.sh +7 -1
- package/pipeline/scripts/update-issue-progress.sh +73 -8
- package/pipeline/scripts/validate-planning.mjs +172 -4
- package/pipeline/scripts/validate-reviewer.mjs +20 -0
- package/pipeline/scripts/validate-triage.mjs +149 -4
- package/pipeline/scripts/work-items.mjs +119 -1
- package/pipeline/scripts/worktree-prepare-all.mjs +200 -0
- package/pipeline/scripts/worktree-prepare.sh +40 -4
- package/pipeline/scripts/write-state.mjs +67 -24
- package/pipeline/skills/.skill-manifest.json +9 -9
- package/pipeline/skills/shared/core/google-play-compliance/SKILL.md +5 -5
- package/pipeline/skills/shared/core/google-play-compliance/references/rules.yml +1 -1
- package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +1 -1
- package/pipeline/skills/shared/core/multi-agent-graph/SKILL.md +5 -2
- package/pipeline/skills/shared/core/multi-agent-language/SKILL.md +4 -4
- package/pipeline/skills/shared/core/multi-agent-office-status/SKILL.md +2 -2
- package/pipeline/skills/shared/core/multi-agent-review/SKILL.md +2 -0
- package/pipeline/skills/shared/core/multi-agent-setup/SKILL.md +4 -4
- package/pipeline/skills/shared/external/alarmkit/references/alarmkit-patterns.md +14 -0
- package/pipeline/skills/shared/external/android-architecture/references/patterns.md +6 -0
- package/pipeline/skills/shared/external/android-build-quality-gates/references/patterns.md +10 -0
- package/pipeline/skills/shared/external/android-datastore/references/patterns.md +11 -0
- package/pipeline/skills/shared/external/android-design-tokens-codegen/references/patterns.md +8 -0
- package/pipeline/skills/shared/external/android-jetpack-compose-expert/references/patterns.md +6 -0
- package/pipeline/skills/shared/external/android-mvi-viewmodel/references/patterns.md +10 -0
- package/pipeline/skills/shared/external/android-performance/references/patterns.md +13 -0
- package/pipeline/skills/shared/external/android-security/references/patterns.md +16 -0
- package/pipeline/skills/shared/external/api-patterns/references/contract-details.md +9 -0
- package/pipeline/skills/shared/external/api-security-best-practices/references/abuse-controls.md +12 -0
- package/pipeline/skills/shared/external/api-security-best-practices/references/identity-and-access.md +13 -0
- package/pipeline/skills/shared/external/api-security-best-practices/references/request-handling.md +12 -0
- package/pipeline/skills/shared/external/app-clips/references/data-handoff-notifications-location.md +9 -0
- package/pipeline/skills/shared/external/app-clips/references/routing-and-experiences.md +8 -0
- package/pipeline/skills/shared/external/app-clips/references/size-capabilities-and-promotion.md +10 -0
- package/pipeline/skills/shared/external/app-intents/references/appintents-advanced.md +21 -0
- package/pipeline/skills/shared/external/app-store-optimization/references/keyword-research-methodology.md +9 -0
- package/pipeline/skills/shared/external/app-store-optimization/references/product-page-variants.md +7 -0
- package/pipeline/skills/shared/external/app-store-review/SKILL.md +2 -2
- package/pipeline/skills/shared/external/app-store-review/references/privacy-manifest.md +10 -0
- package/pipeline/skills/shared/external/app-store-review/references/review-checklists.md +10 -1
- package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-conversion.md +22 -0
- package/pipeline/skills/shared/external/apple-on-device-ai/references/coreml-optimization.md +17 -0
- package/pipeline/skills/shared/external/apple-on-device-ai/references/foundation-models.md +22 -0
- package/pipeline/skills/shared/external/apple-on-device-ai/references/mlx-swift.md +17 -0
- package/pipeline/skills/shared/external/authentication/references/keychain-biometric.md +9 -0
- package/pipeline/skills/shared/external/authentication/references/passkeys.md +11 -0
- package/pipeline/skills/shared/external/avkit/references/avkit-patterns.md +13 -0
- package/pipeline/skills/shared/external/background-processing/references/background-task-patterns.md +9 -0
- package/pipeline/skills/shared/external/callkit-voip/references/callkit-patterns.md +10 -0
- package/pipeline/skills/shared/external/cloudkit-sync/references/cloudkit-patterns.md +15 -0
- package/pipeline/skills/shared/external/compose-components/references/patterns.md +7 -0
- package/pipeline/skills/shared/external/compose-navigation/references/patterns.md +7 -0
- package/pipeline/skills/shared/external/compose-testing/references/patterns.md +15 -0
- package/pipeline/skills/shared/external/contacts-framework/references/contacts-patterns.md +9 -0
- package/pipeline/skills/shared/external/core-bluetooth/references/ble-patterns.md +11 -0
- package/pipeline/skills/shared/external/core-motion/references/motion-patterns.md +10 -0
- package/pipeline/skills/shared/external/core-nfc/references/nfc-patterns.md +13 -0
- package/pipeline/skills/shared/external/coreml/references/coreml-swift-integration.md +20 -0
- package/pipeline/skills/shared/external/cryptokit/references/cryptokit-patterns.md +16 -0
- package/pipeline/skills/shared/external/debugging-instruments/references/instruments-guide.md +16 -0
- package/pipeline/skills/shared/external/debugging-instruments/references/lldb-patterns.md +14 -0
- package/pipeline/skills/shared/external/device-integrity/references/device-integrity-patterns.md +13 -0
- package/pipeline/skills/shared/external/energykit/references/energykit-patterns.md +10 -0
- package/pipeline/skills/shared/external/eventkit-calendar/references/eventkit-patterns.md +10 -0
- package/pipeline/skills/shared/external/fastapi-pro/references/app-structure.md +10 -0
- package/pipeline/skills/shared/external/gradle-kotlin-dsl/references/patterns.md +17 -0
- package/pipeline/skills/shared/external/healthkit/references/healthkit-patterns.md +12 -0
- package/pipeline/skills/shared/external/hig-app-icons/references/icon-workflow.md +10 -0
- package/pipeline/skills/shared/external/hig-components-content/references/content-views.md +10 -0
- package/pipeline/skills/shared/external/hig-components-layout/references/bars-and-tabs.md +11 -0
- package/pipeline/skills/shared/external/hig-foundations/references/foundations-detail.md +13 -0
- package/pipeline/skills/shared/external/hig-foundations/references/type-color-spacing.md +13 -0
- package/pipeline/skills/shared/external/hig-patterns/references/onboarding-and-states.md +11 -0
- package/pipeline/skills/shared/external/hig-platforms/references/ipad-layout.md +12 -0
- package/pipeline/skills/shared/external/hig-technologies/references/technologies.md +16 -0
- package/pipeline/skills/shared/external/homekit-matter/references/matter-commissioning.md +9 -0
- package/pipeline/skills/shared/external/ios-accessibility/references/a11y-patterns.md +18 -0
- package/pipeline/skills/shared/external/ios-accessibility/references/large-content-and-appearance.md +9 -0
- package/pipeline/skills/shared/external/ios-accessibility/references/media-accessibility.md +9 -0
- package/pipeline/skills/shared/external/ios-accessibility/references/nutrition-labels.md +7 -0
- package/pipeline/skills/shared/external/ios-coding-standard/references/STANDARD.md +13 -0
- package/pipeline/skills/shared/external/ios-design-review/references/appearance-matrix.md +9 -0
- package/pipeline/skills/shared/external/ios-design-review/references/checklist.md +15 -0
- package/pipeline/skills/shared/external/ios-haptics/references/core-haptics.md +11 -0
- package/pipeline/skills/shared/external/ios-iphone-duo/references/api-map.md +11 -0
- package/pipeline/skills/shared/external/ios-iphone-duo/references/fixed-assumptions.md +15 -0
- package/pipeline/skills/shared/external/ios-iphone-duo/references/poses-and-panes.md +11 -0
- package/pipeline/skills/shared/external/ios-localization/references/formatstyle-locale.md +18 -0
- package/pipeline/skills/shared/external/ios-localization/references/string-catalogs.md +19 -0
- package/pipeline/skills/shared/external/ios-networking/references/background-websocket.md +15 -0
- package/pipeline/skills/shared/external/ios-networking/references/file-storage-patterns.md +7 -0
- package/pipeline/skills/shared/external/ios-networking/references/lightweight-clients.md +8 -0
- package/pipeline/skills/shared/external/ios-networking/references/network-framework.md +12 -0
- package/pipeline/skills/shared/external/ios-networking/references/urlsession-patterns.md +17 -0
- package/pipeline/skills/shared/external/ios-security/references/app-review-guidelines.md +8 -0
- package/pipeline/skills/shared/external/ios-security/references/cryptokit-advanced.md +14 -0
- package/pipeline/skills/shared/external/ios-security/references/file-storage-patterns.md +8 -0
- package/pipeline/skills/shared/external/ios-security/references/privacy-manifest.md +9 -0
- package/pipeline/skills/shared/external/ios-sf-symbols/references/effects-and-custom-symbols.md +9 -0
- package/pipeline/skills/shared/external/ios-simulator/references/simctl-commands.md +13 -0
- package/pipeline/skills/shared/external/kotlin-coroutines-expert/references/patterns.md +8 -0
- package/pipeline/skills/shared/external/live-activities/references/activitykit-patterns.md +21 -0
- package/pipeline/skills/shared/external/localization-reuse-map/reference/format-and-output.md +9 -0
- package/pipeline/skills/shared/external/localization-reuse-map/reference/sources-and-recipes.md +12 -0
- package/pipeline/skills/shared/external/mapkit-location/references/mapkit-corelocation-patterns.md +16 -0
- package/pipeline/skills/shared/external/mapkit-location/references/mapkit-patterns.md +21 -0
- package/pipeline/skills/shared/external/metrickit-diagnostics/references/metrickit-patterns.md +10 -0
- package/pipeline/skills/shared/external/musickit-audio/references/musickit-patterns.md +9 -0
- package/pipeline/skills/shared/external/natural-language/references/translation-patterns.md +12 -0
- package/pipeline/skills/shared/external/nodejs-backend-patterns/references/runtime-patterns.md +11 -0
- package/pipeline/skills/shared/external/passkit-wallet/references/wallet-passes.md +11 -0
- package/pipeline/skills/shared/external/pdfkit/references/pdfkit-patterns.md +18 -0
- package/pipeline/skills/shared/external/pencilkit-drawing/references/pencilkit-patterns.md +11 -0
- package/pipeline/skills/shared/external/permissionkit/references/permissionkit-patterns.md +11 -0
- package/pipeline/skills/shared/external/photos-camera-media/references/av-playback.md +15 -0
- package/pipeline/skills/shared/external/photos-camera-media/references/camera-capture.md +14 -0
- package/pipeline/skills/shared/external/photos-camera-media/references/image-loading-caching.md +14 -0
- package/pipeline/skills/shared/external/photos-camera-media/references/photokit-patterns.md +14 -0
- package/pipeline/skills/shared/external/push-notifications/references/notification-patterns.md +14 -0
- package/pipeline/skills/shared/external/push-notifications/references/rich-notifications.md +10 -0
- package/pipeline/skills/shared/external/realitykit-ar/references/realitykit-patterns.md +12 -0
- package/pipeline/skills/shared/external/retrofit-networking/references/patterns.md +14 -0
- package/pipeline/skills/shared/external/room-database/references/patterns.md +16 -0
- package/pipeline/skills/shared/external/shareplay-activities/references/shareplay-patterns.md +10 -0
- package/pipeline/skills/shared/external/speech-recognition/references/speechanalyzer-patterns.md +10 -0
- package/pipeline/skills/shared/external/spm-build-analysis/references/build-optimization-sources.md +14 -0
- package/pipeline/skills/shared/external/spm-build-analysis/references/spm-analysis-checks.md +19 -0
- package/pipeline/skills/shared/external/storekit/references/core-patterns.md +13 -0
- package/pipeline/skills/shared/external/storekit/references/storekit-advanced.md +31 -0
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/argument-labels-and-parameters.md +8 -0
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/conventions-and-special-rules.md +9 -0
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/naming-and-clarity.md +10 -0
- package/pipeline/skills/shared/external/swift-api-design-guidelines/references/side-effects-and-mutating-pairs.md +8 -0
- package/pipeline/skills/shared/external/swift-charts/references/charts-patterns.md +24 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/bridging-interop.md +8 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/concurrency-patterns.md +14 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/swiftui-concurrency.md +12 -0
- package/pipeline/skills/shared/external/swift-concurrency/references/synchronization-primitives.md +10 -0
- package/pipeline/skills/shared/external/swift-concurrency-expert/references/swift-6-2-concurrency.md +8 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/actors.md +10 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/cancellation.md +7 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/interop.md +10 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/new-features.md +11 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/structured.md +9 -0
- package/pipeline/skills/shared/external/swift-concurrency-pro/references/testing.md +13 -0
- package/pipeline/skills/shared/external/swift-language/references/swift-attributes-interop.md +7 -0
- package/pipeline/skills/shared/external/swift-language/references/swift-patterns-extended.md +14 -0
- package/pipeline/skills/shared/external/swift-security/references/biometric-authentication.md +16 -0
- package/pipeline/skills/shared/external/swift-security/references/certificate-trust.md +17 -0
- package/pipeline/skills/shared/external/swift-security/references/common-anti-patterns.md +19 -0
- package/pipeline/skills/shared/external/swift-security/references/compliance-owasp-mapping.md +16 -0
- package/pipeline/skills/shared/external/swift-security/references/credential-storage-patterns.md +19 -0
- package/pipeline/skills/shared/external/swift-security/references/cryptokit-public-key.md +18 -0
- package/pipeline/skills/shared/external/swift-security/references/cryptokit-symmetric.md +16 -0
- package/pipeline/skills/shared/external/swift-security/references/keychain-access-control.md +17 -0
- package/pipeline/skills/shared/external/swift-security/references/keychain-fundamentals.md +17 -0
- package/pipeline/skills/shared/external/swift-security/references/keychain-item-classes.md +17 -0
- package/pipeline/skills/shared/external/swift-security/references/keychain-sharing.md +18 -0
- package/pipeline/skills/shared/external/swift-security/references/migration-legacy-stores.md +21 -0
- package/pipeline/skills/shared/external/swift-security/references/secure-enclave.md +16 -0
- package/pipeline/skills/shared/external/swift-security/references/testing-security-code.md +16 -0
- package/pipeline/skills/shared/external/swift-testing/references/testing-advanced.md +9 -0
- package/pipeline/skills/shared/external/swift-testing/references/testing-patterns.md +24 -0
- package/pipeline/skills/shared/external/swift-testing-pro/references/async-tests.md +9 -0
- package/pipeline/skills/shared/external/swift-testing-pro/references/new-features.md +11 -0
- package/pipeline/skills/shared/external/swift-testing-pro/references/writing-better-tests.md +13 -0
- package/pipeline/skills/shared/external/swiftdata/references/core-data-coexistence.md +8 -0
- package/pipeline/skills/shared/external/swiftdata/references/swiftdata-advanced.md +17 -0
- package/pipeline/skills/shared/external/swiftdata/references/swiftdata-queries.md +12 -0
- package/pipeline/skills/shared/external/swiftlint/references/adoption-and-configuration.md +11 -0
- package/pipeline/skills/shared/external/swiftlint/references/custom-rules-and-analyze.md +7 -0
- package/pipeline/skills/shared/external/swiftlint/references/plugins-run-scripts-and-integrations.md +13 -0
- package/pipeline/skills/shared/external/swiftlint/references/rule-reference.md +24 -0
- package/pipeline/skills/shared/external/swiftlint/references/rules-suppressions-and-baselines.md +12 -0
- package/pipeline/skills/shared/external/swiftui-animation/references/animation-advanced.md +15 -0
- package/pipeline/skills/shared/external/swiftui-animation/references/core-animation-bridge.md +15 -0
- package/pipeline/skills/shared/external/swiftui-animation/references/scroll-effects.md +12 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/accessibility-patterns.md +11 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/animation-advanced.md +7 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/animation-basics.md +13 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/animation-transitions.md +9 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/charts-accessibility.md +9 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/charts.md +17 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/image-optimization.md +9 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/latest-apis.md +10 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/layout-best-practices.md +12 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/list-patterns.md +12 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/macos-scenes.md +13 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/macos-views.md +12 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/macos-window-styling.md +12 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/performance-patterns.md +7 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/scroll-patterns.md +9 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/sheet-navigation-patterns.md +10 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/state-management.md +18 -0
- package/pipeline/skills/shared/external/swiftui-expert-skill/references/view-structure.md +16 -0
- package/pipeline/skills/shared/external/swiftui-gestures/references/gesture-patterns.md +11 -0
- package/pipeline/skills/shared/external/swiftui-layout-components/references/form.md +8 -0
- package/pipeline/skills/shared/external/swiftui-layout-components/references/grids.md +14 -0
- package/pipeline/skills/shared/external/swiftui-layout-components/references/scrollview.md +9 -0
- package/pipeline/skills/shared/external/swiftui-liquid-glass/references/liquid-glass.md +22 -0
- package/pipeline/skills/shared/external/swiftui-liquid-glass/references/uikit-glass.md +14 -0
- package/pipeline/skills/shared/external/swiftui-navigation/references/deeplinks.md +10 -0
- package/pipeline/skills/shared/external/swiftui-navigation/references/navigationstack.md +10 -0
- package/pipeline/skills/shared/external/swiftui-navigation/references/sheets.md +13 -0
- package/pipeline/skills/shared/external/swiftui-navigation/references/tabview.md +10 -0
- package/pipeline/skills/shared/external/swiftui-patterns/references/architecture-patterns.md +14 -0
- package/pipeline/skills/shared/external/swiftui-patterns/references/deprecated-migration.md +30 -0
- package/pipeline/skills/shared/external/swiftui-patterns/references/platform-and-sharing.md +16 -0
- package/pipeline/skills/shared/external/swiftui-performance/references/demystify-swiftui-performance-wwdc23.md +11 -0
- package/pipeline/skills/shared/external/swiftui-performance/references/optimizing-swiftui-performance-instruments.md +11 -0
- package/pipeline/skills/shared/external/swiftui-performance/references/understanding-hangs-in-your-app.md +10 -0
- package/pipeline/skills/shared/external/swiftui-performance-audit/references/code-smells.md +8 -0
- package/pipeline/skills/shared/external/swiftui-ui-patterns/references/app-wiring.md +12 -0
- package/pipeline/skills/shared/external/swiftui-ui-patterns/references/menu-bar.md +10 -0
- package/pipeline/skills/shared/external/swiftui-ui-patterns/references/navigationstack.md +11 -0
- package/pipeline/skills/shared/external/swiftui-ui-patterns/references/scroll-reveal.md +12 -0
- package/pipeline/skills/shared/external/swiftui-ui-patterns/references/sheets.md +14 -0
- package/pipeline/skills/shared/external/swiftui-ui-patterns/references/tabview.md +10 -0
- package/pipeline/skills/shared/external/swiftui-uikit-interop/references/hosting-migration.md +10 -0
- package/pipeline/skills/shared/external/swiftui-uikit-interop/references/representable-recipes.md +13 -0
- package/pipeline/skills/shared/external/swiftui-view-refactor/references/mv-patterns.md +12 -0
- package/pipeline/skills/shared/external/swiftui-webkit/references/loading-and-observation.md +8 -0
- package/pipeline/skills/shared/external/swiftui-webkit/references/navigation-and-javascript.md +8 -0
- package/pipeline/skills/shared/external/tipkit/references/tipkit-patterns.md +14 -0
- package/pipeline/skills/shared/external/vision-framework/references/vision-requests.md +17 -0
- package/pipeline/skills/shared/external/vision-framework/references/visionkit-scanner.md +11 -0
- package/pipeline/skills/shared/external/weatherkit/references/weatherkit-patterns.md +11 -0
- package/pipeline/skills/shared/external/widgetkit/references/widgetkit-advanced.md +27 -0
- package/pipeline/skills/shared/external/xcode-build-fixer/references/build-settings-best-practices.md +9 -0
- package/pipeline/skills/shared/external/xcode-build-fixer/references/fix-patterns.md +7 -0
- package/pipeline/skills/shared/external/xcode-build-orchestrator/references/build-settings-best-practices.md +9 -0
- package/pipeline/skills/shared/external/xcode-compilation-analyzer/references/build-optimization-sources.md +14 -0
- package/pipeline/skills/shared/external/xcode-compilation-analyzer/references/code-compilation-checks.md +8 -0
- package/pipeline/skills/shared/external/xcode-project-analyzer/references/build-optimization-sources.md +14 -0
- package/pipeline/skills/shared/external/xcode-project-analyzer/references/build-settings-best-practices.md +9 -0
- package/pipeline/skills/shared/external/xcode-project-analyzer/references/project-audit-checks.md +13 -0
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# Liquid Glass API Reference
|
|
2
2
|
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [Contents](#contents)
|
|
5
|
+
- [Overview](#overview)
|
|
6
|
+
- [glassEffect(_:in:)](#glasseffect_in)
|
|
7
|
+
- [Glass](#glass)
|
|
8
|
+
- [Clear glass and the dimming layer](#clear-glass-and-the-dimming-layer)
|
|
9
|
+
- [GlassEffectContainer](#glasseffectcontainer)
|
|
10
|
+
- [glassEffectID(_:in:)](#glasseffectid_in)
|
|
11
|
+
- [glassEffectUnion(id:namespace:)](#glasseffectunionidnamespace)
|
|
12
|
+
- [glassEffectTransition(_:) and GlassEffectTransition](#glasseffecttransition_-and-glasseffecttransition)
|
|
13
|
+
- [Button styles](#button-styles)
|
|
14
|
+
- [DefaultGlassEffectShape](#defaultglasseffectshape)
|
|
15
|
+
- [Concentric shapes](#concentric-shapes)
|
|
16
|
+
- [Custom bars: safeAreaBar](#custom-bars-safeareabar)
|
|
17
|
+
- [Scroll edge effect](#scroll-edge-effect)
|
|
18
|
+
- [Background extension (split views)](#background-extension-split-views)
|
|
19
|
+
- [Availability gating](#availability-gating)
|
|
20
|
+
- [Performance guidelines](#performance-guidelines)
|
|
21
|
+
- [Examples](#examples)
|
|
22
|
+
- [Apple documentation links](#apple-documentation-links)
|
|
23
|
+
<!-- /toc -->
|
|
24
|
+
|
|
3
25
|
Signatures and behaviour behind the `swiftui-liquid-glass` skill. Read its
|
|
4
26
|
SKILL.md first for where glass belongs and the workflow; this file is the
|
|
5
27
|
SwiftUI detail. UIKit is in [uikit-glass.md](uikit-glass.md).
|
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Liquid Glass in UIKit
|
|
2
2
|
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [Contents](#contents)
|
|
5
|
+
- [Standard components first](#standard-components-first)
|
|
6
|
+
- [UIGlassEffect](#uiglasseffect)
|
|
7
|
+
- [UIGlassContainerEffect](#uiglasscontainereffect)
|
|
8
|
+
- [Glass buttons](#glass-buttons)
|
|
9
|
+
- [Corners: UICornerConfiguration](#corners-uicornerconfiguration)
|
|
10
|
+
- [Scroll edge effects](#scroll-edge-effects)
|
|
11
|
+
- [UIBackgroundExtensionView](#uibackgroundextensionview)
|
|
12
|
+
- [Fallback and accessibility](#fallback-and-accessibility)
|
|
13
|
+
- [Opting out for one release](#opting-out-for-one-release)
|
|
14
|
+
- [Links](#links)
|
|
15
|
+
<!-- /toc -->
|
|
16
|
+
|
|
3
17
|
UIKit side of the `swiftui-liquid-glass` skill. Where glass belongs, regular
|
|
4
18
|
versus clear, and the accessibility rules are in `../SKILL.md` and apply
|
|
5
19
|
unchanged here. Every API in this file is iOS, iPadOS, Mac Catalyst and tvOS
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Incoming Links and Handoff
|
|
2
2
|
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [Shape of the solution](#shape-of-the-solution)
|
|
5
|
+
- [Router entry points](#router-entry-points)
|
|
6
|
+
- [Installing it once at the top](#installing-it-once-at-the-top)
|
|
7
|
+
- [Rules and pitfalls](#rules-and-pitfalls)
|
|
8
|
+
- [Universal links](#universal-links)
|
|
9
|
+
- [Custom URL schemes](#custom-url-schemes)
|
|
10
|
+
- [Handoff with NSUserActivity](#handoff-with-nsuseractivity)
|
|
11
|
+
<!-- /toc -->
|
|
12
|
+
|
|
3
13
|
Part of the `swiftui-navigation` skill. The aim is to send external URLs to
|
|
4
14
|
the right screen inside the app, and to let the system handle anything the app
|
|
5
15
|
does not own.
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# NavigationStack and Routers
|
|
2
2
|
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [Building blocks](#building-blocks)
|
|
5
|
+
- [A router with a per-tab stack](#a-router-with-a-per-tab-stack)
|
|
6
|
+
- [Mapping destinations once](#mapping-destinations-once)
|
|
7
|
+
- [One router per tab](#one-router-per-tab)
|
|
8
|
+
- [Data-driven tabs, each with its own stack](#data-driven-tabs-each-with-its-own-stack)
|
|
9
|
+
- [Rules worth keeping](#rules-worth-keeping)
|
|
10
|
+
- [Pitfalls](#pitfalls)
|
|
11
|
+
<!-- /toc -->
|
|
12
|
+
|
|
3
13
|
Part of the `swiftui-navigation` skill. Use this when navigation is driven from
|
|
4
14
|
code or from deep links and every tab needs a history of its own: one
|
|
5
15
|
`NavigationStack` per tab, each bound to its own path and router.
|
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Sheet Routing
|
|
2
2
|
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [Building blocks](#building-blocks)
|
|
5
|
+
- [The destination enum](#the-destination-enum)
|
|
6
|
+
- [The mapping modifier](#the-mapping-modifier)
|
|
7
|
+
- [Opening a sheet from deep in the tree](#opening-a-sheet-from-deep-in-the-tree)
|
|
8
|
+
- [Wiring at the root](#wiring-at-the-root)
|
|
9
|
+
- [Sheets that push their own screens](#sheets-that-push-their-own-screens)
|
|
10
|
+
- [Rules worth keeping](#rules-worth-keeping)
|
|
11
|
+
- [Presentation sizing](#presentation-sizing)
|
|
12
|
+
- [Confirming dismissal](#confirming-dismissal)
|
|
13
|
+
- [Pitfalls](#pitfalls)
|
|
14
|
+
<!-- /toc -->
|
|
15
|
+
|
|
3
16
|
Part of the `swiftui-navigation` skill. Routing every modal through one place
|
|
4
17
|
lets any view open a sheet without threading bindings through its parents, and
|
|
5
18
|
it keeps working as screens are added.
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# TabView Architecture
|
|
2
2
|
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [Building blocks](#building-blocks)
|
|
5
|
+
- [Selection with side effects](#selection-with-side-effects)
|
|
6
|
+
- [Selection without side effects](#selection-without-side-effects)
|
|
7
|
+
- [Rules worth keeping](#rules-worth-keeping)
|
|
8
|
+
- [Tabs generated from data](#tabs-generated-from-data)
|
|
9
|
+
- [Tab APIs from iOS 18 and iOS 26](#tab-apis-from-ios-18-and-ios-26)
|
|
10
|
+
- [Pitfalls](#pitfalls)
|
|
11
|
+
<!-- /toc -->
|
|
12
|
+
|
|
3
13
|
Part of the `swiftui-navigation` skill. Goal: tabs that scale across platforms,
|
|
4
14
|
with one source of truth for what each tab is and shows, different tab sets and
|
|
5
15
|
sidebar groupings per platform, tabs generated from data, and a hook that can
|
package/pipeline/skills/shared/external/swiftui-patterns/references/architecture-patterns.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Architecture Patterns
|
|
2
2
|
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [Contents](#contents)
|
|
5
|
+
- [1. MV Principles](#1-mv-principles)
|
|
6
|
+
- [2. Why Not MVVM](#2-why-not-mvvm)
|
|
7
|
+
- [3. MV in Practice](#3-mv-in-practice)
|
|
8
|
+
- [4. Working With an Existing View Model](#4-working-with-an-existing-view-model)
|
|
9
|
+
- [5. When a New View Model Is Justified](#5-when-a-new-view-model-is-justified)
|
|
10
|
+
- [6. Environment or Initializer Injection](#6-environment-or-initializer-injection)
|
|
11
|
+
- [7. Testing Strategy](#7-testing-strategy)
|
|
12
|
+
- [8. App Shell and Dependency Graph](#8-app-shell-and-dependency-graph)
|
|
13
|
+
- [9. Lightweight Clients](#9-lightweight-clients)
|
|
14
|
+
- [10. Further Reading](#10-further-reading)
|
|
15
|
+
<!-- /toc -->
|
|
16
|
+
|
|
3
17
|
The reasoning behind the Model-View default, the cases where a view model still
|
|
4
18
|
earns its place, and a reference wiring for the app shell.
|
|
5
19
|
|
|
@@ -1,5 +1,35 @@
|
|
|
1
1
|
# Deprecated API Migration
|
|
2
2
|
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [Contents](#contents)
|
|
5
|
+
- [1. NavigationView to NavigationStack](#1-navigationview-to-navigationstack)
|
|
6
|
+
- [2. NavigationView Sidebar to NavigationSplitView](#2-navigationview-sidebar-to-navigationsplitview)
|
|
7
|
+
- [3. ObservableObject and @StateObject to @Observable and @State](#3-observableobject-and-stateobject-to-observable-and-state)
|
|
8
|
+
- [4. @ObservedObject to let or @Bindable](#4-observedobject-to-let-or-bindable)
|
|
9
|
+
- [5. @EnvironmentObject to @Environment](#5-environmentobject-to-environment)
|
|
10
|
+
- [6. foregroundColor to foregroundStyle](#6-foregroundcolor-to-foregroundstyle)
|
|
11
|
+
- [7. Single-Value onChange to Two-Value onChange](#7-single-value-onchange-to-two-value-onchange)
|
|
12
|
+
- [8. ActionSheet to confirmationDialog](#8-actionsheet-to-confirmationdialog)
|
|
13
|
+
- [9. Legacy Alert to alert with Actions](#9-legacy-alert-to-alert-with-actions)
|
|
14
|
+
- [10. AnyView to @ViewBuilder and Concrete Types](#10-anyview-to-viewbuilder-and-concrete-types)
|
|
15
|
+
- [11. onAppear with Task to .task](#11-onappear-with-task-to-task)
|
|
16
|
+
- [12. presentationMode to dismiss](#12-presentationmode-to-dismiss)
|
|
17
|
+
- [13. GeometryReader Overuse to containerRelativeFrame and Layout](#13-geometryreader-overuse-to-containerrelativeframe-and-layout)
|
|
18
|
+
- [14. PreviewProvider to the #Preview Macro](#14-previewprovider-to-the-preview-macro)
|
|
19
|
+
- [15. XCTest to Swift Testing](#15-xctest-to-swift-testing)
|
|
20
|
+
- [16. onDelete and EditButton to swipeActions](#16-ondelete-and-editbutton-to-swipeactions)
|
|
21
|
+
- [17. UIApplication.shared.open to openURL](#17-uiapplicationsharedopen-to-openurl)
|
|
22
|
+
- [18. @FetchRequest to @Query](#18-fetchrequest-to-query)
|
|
23
|
+
- [19. Type-Erased Returns to some and any](#19-type-erased-returns-to-some-and-any)
|
|
24
|
+
- [20. sheet(isPresented:) with an Optional to sheet(item:)](#20-sheetispresented-with-an-optional-to-sheetitem)
|
|
25
|
+
- [21. UIColor Interop to Asset Colors and Color.resolve](#21-uicolor-interop-to-asset-colors-and-colorresolve)
|
|
26
|
+
- [22. ForEach over a Range to Identifiable Data](#22-foreach-over-a-range-to-identifiable-data)
|
|
27
|
+
- [23. Toolbar Placements navigationBar to topBar](#23-toolbar-placements-navigationbar-to-topbar)
|
|
28
|
+
- [24. cornerRadius to clipShape](#24-cornerradius-to-clipshape)
|
|
29
|
+
- [25. tabItem to Tab (iOS 18)](#25-tabitem-to-tab-ios-18)
|
|
30
|
+
- [26. showsIndicators to scrollIndicators](#26-showsindicators-to-scrollindicators)
|
|
31
|
+
<!-- /toc -->
|
|
32
|
+
|
|
3
33
|
A map from older SwiftUI and iOS patterns (iOS 15 era through iOS 26) to their
|
|
4
34
|
current replacements. Each entry shows the old form, the new form, and notes.
|
|
5
35
|
Code is written for iOS 26 and Swift 6.3. Every entry names the release its
|
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# Platform and Sharing
|
|
2
2
|
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [Contents](#contents)
|
|
5
|
+
- [1. Transferable](#1-transferable)
|
|
6
|
+
- [2. ShareLink](#2-sharelink)
|
|
7
|
+
- [3. Drag and Drop](#3-drag-and-drop)
|
|
8
|
+
- [4. Pasteboard](#4-pasteboard)
|
|
9
|
+
- [5. Transferable Recipes](#5-transferable-recipes)
|
|
10
|
+
- [6. Transferable Pitfalls](#6-transferable-pitfalls)
|
|
11
|
+
- [7. Media Previews and Viewer](#7-media-previews-and-viewer)
|
|
12
|
+
- [8. Top Bar Overlays](#8-top-bar-overlays)
|
|
13
|
+
- [9. Title Menus](#9-title-menus)
|
|
14
|
+
- [10. Input Toolbar](#10-input-toolbar)
|
|
15
|
+
- [11. Menu Bar Commands](#11-menu-bar-commands)
|
|
16
|
+
- [12. macOS Settings](#12-macos-settings)
|
|
17
|
+
<!-- /toc -->
|
|
18
|
+
|
|
3
19
|
Moving data in and out of the app (`Transferable`, `ShareLink`, drag and drop,
|
|
4
20
|
the pasteboard), media previews, top bar overlays, title menus, input bars,
|
|
5
21
|
menu bar commands and the macOS Settings window.
|
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Mental Model: Dependencies, Identity and Lifecycle
|
|
2
2
|
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [The Model](#the-model)
|
|
5
|
+
- [Dependencies Decide What Updates](#dependencies-decide-what-updates)
|
|
6
|
+
- [Work That Does Not Belong in `body`](#work-that-does-not-belong-in-body)
|
|
7
|
+
- [Identity for Lists and Tables](#identity-for-lists-and-tables)
|
|
8
|
+
- [Initialisation and Lifecycle](#initialisation-and-lifecycle)
|
|
9
|
+
- [Tools](#tools)
|
|
10
|
+
- [Fix Patterns](#fix-patterns)
|
|
11
|
+
- [Checking a Fix](#checking-a-fix)
|
|
12
|
+
<!-- /toc -->
|
|
13
|
+
|
|
3
14
|
Notes drawn from the WWDC23 session "Demystify SwiftUI performance". Use them
|
|
4
15
|
to explain why a SwiftUI screen does more work than it should.
|
|
5
16
|
|
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Profiling with the SwiftUI Instrument
|
|
2
2
|
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [When It Is the Right Tool](#when-it-is-the-right-tool)
|
|
5
|
+
- [Capture Setup](#capture-setup)
|
|
6
|
+
- [The SwiftUI Lanes](#the-swiftui-lanes)
|
|
7
|
+
- [Workflow: One Update Is Too Slow](#workflow-one-update-is-too-slow)
|
|
8
|
+
- [Workflow: Too Many Updates](#workflow-too-many-updates)
|
|
9
|
+
- [Cause and Effect Graph](#cause-and-effect-graph)
|
|
10
|
+
- [Hot Spots and How to Fix Them](#hot-spots-and-how-to-fix-them)
|
|
11
|
+
- [Measuring Again](#measuring-again)
|
|
12
|
+
<!-- /toc -->
|
|
13
|
+
|
|
3
14
|
Based on the WWDC25 session "Optimize SwiftUI performance with Instruments".
|
|
4
15
|
The SwiftUI Instrument described here ships with Instruments 26.
|
|
5
16
|
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Hangs and the Main Run Loop
|
|
2
2
|
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [What Counts as a Hang](#what-counts-as-a-hang)
|
|
5
|
+
- [How the Main Thread Spends a Frame](#how-the-main-thread-spends-a-frame)
|
|
6
|
+
- [Triage](#triage)
|
|
7
|
+
- [Common Causes](#common-causes)
|
|
8
|
+
- [Fix Patterns](#fix-patterns)
|
|
9
|
+
- [Verification](#verification)
|
|
10
|
+
- [What This Means for SwiftUI](#what-this-means-for-swiftui)
|
|
11
|
+
<!-- /toc -->
|
|
12
|
+
|
|
3
13
|
Based on Apple's article "Understanding hangs in your app" and the WWDC23
|
|
4
14
|
session "Analyze hangs with Instruments".
|
|
5
15
|
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Common code smells and remediation patterns
|
|
2
2
|
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [Intent](#intent)
|
|
5
|
+
- [High-priority smells](#high-priority-smells)
|
|
6
|
+
- [Observation fan-out](#observation-fan-out)
|
|
7
|
+
- [Remediation notes](#remediation-notes)
|
|
8
|
+
- [Triage order](#triage-order)
|
|
9
|
+
<!-- /toc -->
|
|
10
|
+
|
|
3
11
|
## Intent
|
|
4
12
|
|
|
5
13
|
Use this reference during code-first review to map visible SwiftUI patterns to likely runtime costs and safer remediation guidance.
|
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# App wiring and dependency graph
|
|
2
2
|
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [Intent](#intent)
|
|
5
|
+
- [Recommended structure](#recommended-structure)
|
|
6
|
+
- [Dependency selection](#dependency-selection)
|
|
7
|
+
- [Root shell example (generic)](#root-shell-example-generic)
|
|
8
|
+
- [Dependency graph modifier (generic)](#dependency-graph-modifier-generic)
|
|
9
|
+
- [SwiftData / ModelContainer](#swiftdata-modelcontainer)
|
|
10
|
+
- [Sheet routing (enum-driven)](#sheet-routing-enum-driven)
|
|
11
|
+
- [When to use](#when-to-use)
|
|
12
|
+
- [Caveats](#caveats)
|
|
13
|
+
<!-- /toc -->
|
|
14
|
+
|
|
3
15
|
## Intent
|
|
4
16
|
|
|
5
17
|
Show how to wire the app shell (TabView + NavigationStack + sheets) and install a global dependency graph (environment objects, services, streaming clients, SwiftData ModelContainer) in one place.
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Menu Bar
|
|
2
2
|
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [Intent](#intent)
|
|
5
|
+
- [Core patterns](#core-patterns)
|
|
6
|
+
- [Example: basic command menu](#example-basic-command-menu)
|
|
7
|
+
- [Example: insert and replace groups](#example-insert-and-replace-groups)
|
|
8
|
+
- [Example: focused menu state](#example-focused-menu-state)
|
|
9
|
+
- [Menu bar and Settings](#menu-bar-and-settings)
|
|
10
|
+
- [Pitfalls](#pitfalls)
|
|
11
|
+
<!-- /toc -->
|
|
12
|
+
|
|
3
13
|
## Intent
|
|
4
14
|
|
|
5
15
|
Use this when adding or customizing the macOS/iPadOS menu bar with SwiftUI commands.
|
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# NavigationStack
|
|
2
2
|
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [Intent](#intent)
|
|
5
|
+
- [Core architecture](#core-architecture)
|
|
6
|
+
- [Example: custom router with per-tab stack](#example-custom-router-with-per-tab-stack)
|
|
7
|
+
- [Example: centralized destination mapping](#example-centralized-destination-mapping)
|
|
8
|
+
- [Example: binding per tab (tabs with independent history)](#example-binding-per-tab-tabs-with-independent-history)
|
|
9
|
+
- [Example: generic tabs with per-tab NavigationStack](#example-generic-tabs-with-per-tab-navigationstack)
|
|
10
|
+
- [Design choices to keep](#design-choices-to-keep)
|
|
11
|
+
- [Pitfalls](#pitfalls)
|
|
12
|
+
<!-- /toc -->
|
|
13
|
+
|
|
3
14
|
## Intent
|
|
4
15
|
|
|
5
16
|
Use this pattern for programmatic navigation and deep links, especially when each tab needs an independent navigation history. The key idea is one `NavigationStack` per tab, each with its own path binding and router object.
|
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Scroll-reveal detail surfaces
|
|
2
2
|
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [Intent](#intent)
|
|
5
|
+
- [Core pattern](#core-pattern)
|
|
6
|
+
- [Minimal structure](#minimal-structure)
|
|
7
|
+
- [Design choices to keep](#design-choices-to-keep)
|
|
8
|
+
- [Morphing a shared control](#morphing-a-shared-control)
|
|
9
|
+
- [Haptics and affordances](#haptics-and-affordances)
|
|
10
|
+
- [Interaction guards](#interaction-guards)
|
|
11
|
+
- [Pitfalls](#pitfalls)
|
|
12
|
+
- [Concrete example](#concrete-example)
|
|
13
|
+
<!-- /toc -->
|
|
14
|
+
|
|
3
15
|
## Intent
|
|
4
16
|
|
|
5
17
|
Use this pattern when a detail screen has a primary surface first and secondary content behind it, and you want the user to reveal that secondary layer by scrolling or swiping instead of tapping a separate button.
|
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Sheets
|
|
2
2
|
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [Intent](#intent)
|
|
5
|
+
- [Core architecture](#core-architecture)
|
|
6
|
+
- [Example: item-driven local sheet](#example-item-driven-local-sheet)
|
|
7
|
+
- [Example: SheetDestination enum](#example-sheetdestination-enum)
|
|
8
|
+
- [Example: withSheetDestinations modifier](#example-withsheetdestinations-modifier)
|
|
9
|
+
- [Example: presenting from a child view](#example-presenting-from-a-child-view)
|
|
10
|
+
- [Required wiring](#required-wiring)
|
|
11
|
+
- [Example: sheets that need their own navigation](#example-sheets-that-need-their-own-navigation)
|
|
12
|
+
- [Example: sheet owns its actions](#example-sheet-owns-its-actions)
|
|
13
|
+
- [Design choices to keep](#design-choices-to-keep)
|
|
14
|
+
- [Pitfalls](#pitfalls)
|
|
15
|
+
<!-- /toc -->
|
|
16
|
+
|
|
3
17
|
## Intent
|
|
4
18
|
|
|
5
19
|
Use a centralized sheet routing pattern so any view can present modals without prop-drilling. This keeps sheet state in one place and scales as the app grows.
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# TabView
|
|
2
2
|
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [Intent](#intent)
|
|
5
|
+
- [Core architecture](#core-architecture)
|
|
6
|
+
- [Example: custom binding with side effects](#example-custom-binding-with-side-effects)
|
|
7
|
+
- [Example: direct binding without side effects](#example-direct-binding-without-side-effects)
|
|
8
|
+
- [Design choices to keep](#design-choices-to-keep)
|
|
9
|
+
- [Dynamic tabs pattern](#dynamic-tabs-pattern)
|
|
10
|
+
- [Pitfalls](#pitfalls)
|
|
11
|
+
<!-- /toc -->
|
|
12
|
+
|
|
3
13
|
## Intent
|
|
4
14
|
|
|
5
15
|
Use this pattern for a scalable, multi-platform tab architecture with:
|
package/pipeline/skills/shared/external/swiftui-uikit-interop/references/hosting-migration.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Hosting and Incremental Migration
|
|
2
2
|
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [Contents](#contents)
|
|
5
|
+
- [1. Screen-by-Screen Migration](#1-screen-by-screen-migration)
|
|
6
|
+
- [2. UIHostingController as Child](#2-uihostingcontroller-as-child)
|
|
7
|
+
- [3. Navigation Bridging](#3-navigation-bridging)
|
|
8
|
+
- [4. Data Sharing Between UIKit and SwiftUI](#4-data-sharing-between-uikit-and-swiftui)
|
|
9
|
+
- [5. UIHostingConfiguration (iOS 16+)](#5-uihostingconfiguration-ios-16)
|
|
10
|
+
- [6. Environment Bridging](#6-environment-bridging)
|
|
11
|
+
<!-- /toc -->
|
|
12
|
+
|
|
3
13
|
A UIKit app does not have to switch to SwiftUI in one release. These six
|
|
4
14
|
patterns move it over piece by piece while both frameworks share the same
|
|
5
15
|
navigation stack, the same models and the same traits.
|
package/pipeline/skills/shared/external/swiftui-uikit-interop/references/representable-recipes.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Representable Recipes
|
|
2
2
|
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [Contents](#contents)
|
|
5
|
+
- [1. MKMapView Wrapper](#1-mkmapview-wrapper)
|
|
6
|
+
- [2. UITextView Wrapper (Attributed Text)](#2-uitextview-wrapper-attributed-text)
|
|
7
|
+
- [3. AVCaptureVideoPreviewLayer Wrapper](#3-avcapturevideopreviewlayer-wrapper)
|
|
8
|
+
- [4. PHPickerViewController Wrapper](#4-phpickerviewcontroller-wrapper)
|
|
9
|
+
- [5. MFMailComposeViewController Wrapper](#5-mfmailcomposeviewcontroller-wrapper)
|
|
10
|
+
- [6. UIActivityViewController Wrapper (Share Sheet)](#6-uiactivityviewcontroller-wrapper-share-sheet)
|
|
11
|
+
- [7. UISearchBar Wrapper](#7-uisearchbar-wrapper)
|
|
12
|
+
- [8. PDFView Wrapper (PDFKit)](#8-pdfview-wrapper-pdfkit)
|
|
13
|
+
- [9. MFMessageComposeViewController Wrapper](#9-mfmessagecomposeviewcontroller-wrapper)
|
|
14
|
+
<!-- /toc -->
|
|
15
|
+
|
|
3
16
|
Nine wrappers for UIKit surfaces that SwiftUI apps still reach for. Every recipe
|
|
4
17
|
gives the representable itself, its Coordinator and the delegate methods that
|
|
5
18
|
matter, a short SwiftUI call site, and the traps specific to that wrapper. Many
|
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# MV Patterns Reference
|
|
2
2
|
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [Default stance](#default-stance)
|
|
5
|
+
- [When to avoid a view model](#when-to-avoid-a-view-model)
|
|
6
|
+
- [When a view model may be justified](#when-a-view-model-may-be-justified)
|
|
7
|
+
- [Preferred pattern: local state plus environment](#preferred-pattern-local-state-plus-environment)
|
|
8
|
+
- [Preferred pattern: use modifiers as lightweight orchestration](#preferred-pattern-use-modifiers-as-lightweight-orchestration)
|
|
9
|
+
- [SwiftData note](#swiftdata-note)
|
|
10
|
+
- [Testing guidance](#testing-guidance)
|
|
11
|
+
- [Refactor checklist](#refactor-checklist)
|
|
12
|
+
- [Bottom line](#bottom-line)
|
|
13
|
+
<!-- /toc -->
|
|
14
|
+
|
|
3
15
|
Distilled guidance for deciding whether a SwiftUI feature should stay as plain MV or introduce a view model.
|
|
4
16
|
|
|
5
17
|
Inspired by the user's provided source, "SwiftUI in 2025: Forget MVVM" (Thomas Ricouard), but rewritten here as a practical refactoring reference.
|
package/pipeline/skills/shared/external/swiftui-webkit/references/loading-and-observation.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Loading and observing pages
|
|
2
2
|
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [The URL-only view](#the-url-only-view)
|
|
5
|
+
- [Loading through a WebPage](#loading-through-a-webpage)
|
|
6
|
+
- [Progress, title and other state](#progress-title-and-other-state)
|
|
7
|
+
- [Following navigation events](#following-navigation-events)
|
|
8
|
+
- [Throwaway pages and custom user agents](#throwaway-pages-and-custom-user-agents)
|
|
9
|
+
<!-- /toc -->
|
|
10
|
+
|
|
3
11
|
Part of the `swiftui-webkit` skill ([../SKILL.md](../SKILL.md)). All code
|
|
4
12
|
needs iOS 26, iPadOS 26, macOS 26 or visionOS 26 and `import WebKit`.
|
|
5
13
|
|
package/pipeline/skills/shared/external/swiftui-webkit/references/navigation-and-javascript.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Navigation and JavaScript
|
|
2
2
|
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [An observable navigation decider](#an-observable-navigation-decider)
|
|
5
|
+
- [Sending outside links to the system](#sending-outside-links-to-the-system)
|
|
6
|
+
- [Running JavaScript](#running-javascript)
|
|
7
|
+
- [Handing values to the script](#handing-values-to-the-script)
|
|
8
|
+
- [Simple signals from the page to the app](#simple-signals-from-the-page-to-the-app)
|
|
9
|
+
<!-- /toc -->
|
|
10
|
+
|
|
3
11
|
Part of the `swiftui-webkit` skill ([../SKILL.md](../SKILL.md)).
|
|
4
12
|
|
|
5
13
|
## An observable navigation decider
|
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# TipKit Patterns
|
|
2
2
|
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [Contents](#contents)
|
|
5
|
+
- [A tip with both a parameter and an event rule](#a-tip-with-both-a-parameter-and-an-event-rule)
|
|
6
|
+
- [Placing TipView and popoverTip](#placing-tipview-and-popovertip)
|
|
7
|
+
- [Counting a manual action to suggest a shortcut](#counting-a-manual-action-to-suggest-a-shortcut)
|
|
8
|
+
- [Events that carry a value](#events-that-carry-a-value)
|
|
9
|
+
- [Custom TipViewStyle](#custom-tipviewstyle)
|
|
10
|
+
- [Sequencing with TipGroup (iOS 18)](#sequencing-with-tipgroup-ios-18)
|
|
11
|
+
- [Testing](#testing)
|
|
12
|
+
- [Actions that open a feature](#actions-that-open-a-feature)
|
|
13
|
+
- [Working alongside an onboarding flow](#working-alongside-an-onboarding-flow)
|
|
14
|
+
- [A full app](#a-full-app)
|
|
15
|
+
<!-- /toc -->
|
|
16
|
+
|
|
3
17
|
Longer worked patterns for the `tipkit` skill. Every example targets iOS 17 or
|
|
4
18
|
later and follows Swift 6.3 conventions; a heading says so when a newer
|
|
5
19
|
release is needed.
|
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# Vision request recipes
|
|
2
2
|
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [Contents](#contents)
|
|
5
|
+
- [Text recognition pipeline](#text-recognition-pipeline)
|
|
6
|
+
- [Faces with landmarks and quality](#faces-with-landmarks-and-quality)
|
|
7
|
+
- [Barcodes](#barcodes)
|
|
8
|
+
- [Person segmentation and background blur](#person-segmentation-and-background-blur)
|
|
9
|
+
- [Classification](#classification)
|
|
10
|
+
- [Saliency](#saliency)
|
|
11
|
+
- [Rectangles](#rectangles)
|
|
12
|
+
- [Horizon](#horizon)
|
|
13
|
+
- [Several requests on one image](#several-requests-on-one-image)
|
|
14
|
+
- [Camera frames from AVFoundation](#camera-frames-from-avfoundation)
|
|
15
|
+
- [Tracking across frames](#tracking-across-frames)
|
|
16
|
+
- [Coordinate helpers](#coordinate-helpers)
|
|
17
|
+
- [Performance](#performance)
|
|
18
|
+
<!-- /toc -->
|
|
19
|
+
|
|
3
20
|
Longer examples for the requests summarized in `../SKILL.md`. Swift-native
|
|
4
21
|
examples need iOS 18 or later unless marked otherwise; legacy examples are
|
|
5
22
|
labelled.
|
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# VisionKit scanners
|
|
2
2
|
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [Contents](#contents)
|
|
5
|
+
- [Camera permission](#camera-permission)
|
|
6
|
+
- [DataScannerViewController](#datascannerviewcontroller)
|
|
7
|
+
- [Delegate callbacks](#delegate-callbacks)
|
|
8
|
+
- [SwiftUI](#swiftui)
|
|
9
|
+
- [Custom overlay](#custom-overlay)
|
|
10
|
+
- [VNDocumentCameraViewController](#vndocumentcameraviewcontroller)
|
|
11
|
+
- [Performance](#performance)
|
|
12
|
+
<!-- /toc -->
|
|
13
|
+
|
|
3
14
|
Camera UI that VisionKit provides on top of Vision: the live
|
|
4
15
|
`DataScannerViewController` and the paper-oriented
|
|
5
16
|
`VNDocumentCameraViewController`. Summary in `../SKILL.md`.
|
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# WeatherKit Patterns
|
|
2
2
|
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [Contents](#contents)
|
|
5
|
+
- [WeatherKit SwiftUI integration](#weatherkit-swiftui-integration)
|
|
6
|
+
- [Attribution view](#attribution-view)
|
|
7
|
+
- [Charts integration](#charts-integration)
|
|
8
|
+
- [Historical weather statistics](#historical-weather-statistics)
|
|
9
|
+
- [Weather condition mapping](#weather-condition-mapping)
|
|
10
|
+
- [Caching strategy](#caching-strategy)
|
|
11
|
+
- [Location-based weather](#location-based-weather)
|
|
12
|
+
<!-- /toc -->
|
|
13
|
+
|
|
3
14
|
Larger building blocks for the `weatherkit` skill. Its SKILL.md covers setup,
|
|
4
15
|
queries, alerts, availability and the attribution rules; this file puts them
|
|
5
16
|
together.
|
|
@@ -1,5 +1,32 @@
|
|
|
1
1
|
# WidgetKit: extended patterns
|
|
2
2
|
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [Contents](#contents)
|
|
5
|
+
- [Timeline Strategies](#timeline-strategies)
|
|
6
|
+
- [Reloading timelines by push](#reloading-timelines-by-push)
|
|
7
|
+
- [Deep Links and Widget URLs](#deep-links-and-widget-urls)
|
|
8
|
+
- [User-configurable widgets through App Intents](#user-configurable-widgets-through-app-intents)
|
|
9
|
+
- [Multiple Widget Support](#multiple-widget-support)
|
|
10
|
+
- [Previewing widgets and their snapshot state](#previewing-widgets-and-their-snapshot-state)
|
|
11
|
+
- [AccessoryWidgetBackground](#accessorywidgetbackground)
|
|
12
|
+
- [Lock Screen Accessory Widget Example](#lock-screen-accessory-widget-example)
|
|
13
|
+
- [Live Activity Full ActivityConfiguration Example](#live-activity-full-activityconfiguration-example)
|
|
14
|
+
- [Control Center Control Examples](#control-center-control-examples)
|
|
15
|
+
- [Laying out the expanded Dynamic Island](#laying-out-the-expanded-dynamic-island)
|
|
16
|
+
- [Live Activity alerts](#live-activity-alerts)
|
|
17
|
+
- [Live Activity Push Updates](#live-activity-push-updates)
|
|
18
|
+
- [ActivityAuthorizationInfo](#activityauthorizationinfo)
|
|
19
|
+
- [Keeping widgets fast](#keeping-widgets-fast)
|
|
20
|
+
- [Xcode Setup](#xcode-setup)
|
|
21
|
+
- [Smart Stack relevance](#smart-stack-relevance)
|
|
22
|
+
- [ActivityState Lifecycle](#activitystate-lifecycle)
|
|
23
|
+
- [ActivityStyle](#activitystyle)
|
|
24
|
+
- [Dismissal Policies](#dismissal-policies)
|
|
25
|
+
- [Finding which widgets and activities are live](#finding-which-widgets-and-activities-are-live)
|
|
26
|
+
- [Design Patterns](#design-patterns)
|
|
27
|
+
- [Further reading from Apple](#further-reading-from-apple)
|
|
28
|
+
<!-- /toc -->
|
|
29
|
+
|
|
3
30
|
Companion to the `widgetkit` skill. Everything here assumes iOS 26 SDKs unless a
|
|
4
31
|
heading says otherwise.
|
|
5
32
|
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Build Settings Best Practices
|
|
2
2
|
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [How To Read This Reference](#how-to-read-this-reference)
|
|
5
|
+
- [Debug Configuration](#debug-configuration)
|
|
6
|
+
- [Release Configuration](#release-configuration)
|
|
7
|
+
- [General (All Configurations)](#general-all-configurations)
|
|
8
|
+
- [Cross-Target Consistency](#cross-target-consistency)
|
|
9
|
+
- [Checklist Output Format](#checklist-output-format)
|
|
10
|
+
<!-- /toc -->
|
|
11
|
+
|
|
3
12
|
This reference lists Xcode build settings that affect build performance. Use it to audit a project and produce a pass/fail checklist.
|
|
4
13
|
|
|
5
14
|
The scope is strictly **build performance**. Do not flag language-migration settings like `SWIFT_STRICT_CONCURRENCY` or `SWIFT_UPCOMING_FEATURE_*` -- those are developer adoption choices unrelated to build speed.
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Fix Patterns
|
|
2
2
|
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [Build Settings Fixes](#build-settings-fixes)
|
|
5
|
+
- [Script Phase Fixes](#script-phase-fixes)
|
|
6
|
+
- [Source-Level Fixes](#source-level-fixes)
|
|
7
|
+
- [SPM Restructuring Fixes](#spm-restructuring-fixes)
|
|
8
|
+
<!-- /toc -->
|
|
9
|
+
|
|
3
10
|
Concrete before/after examples for each fix category. Reference this when applying approved changes to ensure consistency.
|
|
4
11
|
|
|
5
12
|
## Build Settings Fixes
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Build Settings Best Practices
|
|
2
2
|
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [How To Read This Reference](#how-to-read-this-reference)
|
|
5
|
+
- [Debug Configuration](#debug-configuration)
|
|
6
|
+
- [Release Configuration](#release-configuration)
|
|
7
|
+
- [General (All Configurations)](#general-all-configurations)
|
|
8
|
+
- [Cross-Target Consistency](#cross-target-consistency)
|
|
9
|
+
- [Checklist Output Format](#checklist-output-format)
|
|
10
|
+
<!-- /toc -->
|
|
11
|
+
|
|
3
12
|
This reference lists Xcode build settings that affect build performance. Use it to audit a project and produce a pass/fail checklist.
|
|
4
13
|
|
|
5
14
|
The scope is strictly **build performance**. Do not flag language-migration settings like `SWIFT_STRICT_CONCURRENCY` or `SWIFT_UPCOMING_FEATURE_*` -- those are developer adoption choices unrelated to build speed.
|
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Build Optimization Sources
|
|
2
2
|
|
|
3
|
+
<!-- toc -->
|
|
4
|
+
- [Apple: Improving the speed of incremental builds](#apple-improving-the-speed-of-incremental-builds)
|
|
5
|
+
- [Apple: Improving build efficiency with good coding practices](#apple-improving-build-efficiency-with-good-coding-practices)
|
|
6
|
+
- [Apple: Building your project with explicit module dependencies](#apple-building-your-project-with-explicit-module-dependencies)
|
|
7
|
+
- [SwiftLee: Build performance analysis for speeding up Xcode builds](#swiftlee-build-performance-analysis-for-speeding-up-xcode-builds)
|
|
8
|
+
- [Apple: Xcode Release Notes -- Compilation Caching](#apple-xcode-release-notes----compilation-caching)
|
|
9
|
+
- [Apple: Demystify explicitly built modules (WWDC24)](#apple-demystify-explicitly-built-modules-wwdc24)
|
|
10
|
+
- [Swift Compile-Time Best Practices](#swift-compile-time-best-practices)
|
|
11
|
+
- [Bitrise: Demystifying Explicitly Built Modules for Xcode](#bitrise-demystifying-explicitly-built-modules-for-xcode)
|
|
12
|
+
- [Bitrise: Xcode Compilation Cache FAQ](#bitrise-xcode-compilation-cache-faq)
|
|
13
|
+
- [RocketSim Docs: Build Insights](#rocketsim-docs-build-insights)
|
|
14
|
+
- [Swift Forums: Slow incremental builds because of planning swift module](#swift-forums-slow-incremental-builds-because-of-planning-swift-module)
|
|
15
|
+
<!-- /toc -->
|
|
16
|
+
|
|
3
17
|
This file stores the external sources that the README and skill docs should cite consistently.
|
|
4
18
|
|
|
5
19
|
## Apple: Improving the speed of incremental builds
|