buildanything 1.7.1 → 2.0.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/.claude-plugin/marketplace.json +3 -3
- package/.claude-plugin/plugin.json +9 -3
- package/CHANGELOG.md +112 -0
- package/README.md +2 -2
- package/agents/a11y-architect.md +166 -0
- package/agents/business-model.md +80 -29
- package/agents/code-architect.md +75 -0
- package/agents/code-reviewer.md +255 -0
- package/agents/code-simplifier.md +64 -0
- package/agents/design-brand-guardian.md +293 -53
- package/agents/design-critic.md +139 -0
- package/agents/design-inclusive-visuals-specialist.md +6 -19
- package/agents/design-ui-designer.md +335 -56
- package/agents/design-ux-architect.md +403 -55
- package/agents/design-ux-researcher.md +264 -49
- package/agents/engineering-ai-engineer.md +26 -36
- package/agents/engineering-backend-architect.md +185 -36
- package/agents/engineering-data-engineer.md +225 -43
- package/agents/engineering-devops-automator.md +227 -74
- package/agents/engineering-frontend-developer.md +210 -34
- package/agents/engineering-mobile-app-builder.md +6 -1
- package/agents/engineering-rapid-prototyper.md +30 -9
- package/agents/engineering-security-engineer.md +263 -61
- package/agents/engineering-senior-developer.md +128 -19
- package/agents/engineering-sre.md +84 -0
- package/agents/engineering-technical-writer.md +285 -41
- package/agents/feature-intel.md +110 -0
- package/agents/ios-app-review-guardian.md +66 -0
- package/agents/ios-foundation-models-specialist.md +64 -0
- package/agents/ios-storekit-specialist.md +59 -0
- package/agents/ios-swift-architect.md +129 -0
- package/agents/ios-swift-search.md +137 -0
- package/agents/ios-swift-ui-design.md +136 -0
- package/agents/marketing-app-store-optimizer.md +246 -64
- package/agents/planner.md +216 -0
- package/agents/pr-test-analyzer.md +63 -0
- package/agents/product-feedback-synthesizer.md +8 -2
- package/agents/refactor-cleaner.md +102 -0
- package/agents/security-reviewer.md +128 -0
- package/agents/silent-failure-hunter.md +54 -0
- package/agents/swift-build-resolver.md +119 -0
- package/agents/swift-reviewer.md +112 -0
- package/agents/tech-feasibility.md +21 -1
- package/agents/testing-api-tester.md +236 -59
- package/agents/testing-evidence-collector.md +26 -1
- package/agents/testing-performance-benchmarker.md +21 -1
- package/agents/testing-reality-checker.md +6 -1
- package/agents/visual-research.md +116 -0
- package/bin/adapters/cycle-counter-tool.ts +155 -0
- package/bin/adapters/scribe-tool.ts +71 -0
- package/bin/adapters/state-save-tool.ts +130 -0
- package/bin/adapters/write-lease-tool.ts +127 -0
- package/bin/buildanything-runtime.js +15 -0
- package/bin/buildanything-runtime.ts +328 -0
- package/bin/setup.js +83 -8
- package/commands/add-feature.md +2 -0
- package/commands/build.md +752 -332
- package/commands/fix.md +65 -0
- package/commands/self-check.md +121 -0
- package/commands/setup.md +114 -0
- package/commands/ux-review.md +63 -0
- package/commands/verify.md +69 -0
- package/docs/migration/agents.yaml +729 -0
- package/docs/migration/phase-graph.yaml +1088 -0
- package/docs/migration/sdk-host-compat.md +18 -0
- package/hooks/compile-writer-owner-cache.ts +171 -0
- package/hooks/hooks.json +36 -0
- package/hooks/pre-tool-use +19 -0
- package/hooks/pre-tool-use.ts +776 -0
- package/hooks/record-mode-transitions.ts +178 -0
- package/hooks/session-start +89 -2
- package/hooks/subagent-start +17 -0
- package/hooks/subagent-start.ts +471 -0
- package/hooks/subagent-stop +17 -0
- package/hooks/subagent-stop.ts +153 -0
- package/package.json +28 -5
- package/protocols/architecture-schema.md +171 -0
- package/protocols/build-fix.md +52 -0
- package/protocols/cleanup.md +54 -0
- package/protocols/decision-log.md +131 -0
- package/protocols/eval-harness.md +61 -0
- package/protocols/fake-data-detector.md +64 -0
- package/protocols/ios-context.md +234 -0
- package/protocols/ios-frameworks-map.md +323 -0
- package/protocols/ios-phase-branches.md +337 -0
- package/protocols/ios-preflight.md +27 -0
- package/protocols/launch-readiness.md +258 -0
- package/protocols/metric-loop.md +153 -0
- package/protocols/smoke-test.md +118 -0
- package/protocols/state-schema.json +388 -0
- package/protocols/state-schema.md +172 -0
- package/protocols/verify.md +127 -0
- package/protocols/visual-dna.md +185 -0
- package/protocols/web-phase-branches.md +351 -0
- package/skills/ios/_VENDORED.md +62 -0
- package/skills/ios/activitykit/LICENSE +131 -0
- package/skills/ios/activitykit/SKILL.md +505 -0
- package/skills/ios/activitykit/references/activitykit-patterns.md +868 -0
- package/skills/ios/app-intents/LICENSE +131 -0
- package/skills/ios/app-intents/SKILL.md +494 -0
- package/skills/ios/app-intents/references/appintents-advanced.md +1076 -0
- package/skills/ios/app-store-connect-metadata/SKILL.md +148 -0
- package/skills/ios/apple-on-device-ai/LICENSE +131 -0
- package/skills/ios/apple-on-device-ai/SKILL.md +505 -0
- package/skills/ios/apple-on-device-ai/references/coreml-conversion.md +425 -0
- package/skills/ios/apple-on-device-ai/references/coreml-optimization.md +344 -0
- package/skills/ios/apple-on-device-ai/references/foundation-models.md +508 -0
- package/skills/ios/apple-on-device-ai/references/mlx-swift.md +285 -0
- package/skills/ios/asc-privacy-manifest/SKILL.md +350 -0
- package/skills/ios/hig-components-content/SKILL.md +86 -0
- package/skills/ios/hig-components-content/references/activity-views.md +79 -0
- package/skills/ios/hig-components-content/references/charts.md +180 -0
- package/skills/ios/hig-components-content/references/collections.md +48 -0
- package/skills/ios/hig-components-content/references/color-wells.md +42 -0
- package/skills/ios/hig-components-content/references/image-views.md +82 -0
- package/skills/ios/hig-components-content/references/image-wells.md +34 -0
- package/skills/ios/hig-components-content/references/lockups.md +78 -0
- package/skills/ios/hig-components-content/references/web-views.md +36 -0
- package/skills/ios/hig-components-controls/SKILL.md +88 -0
- package/skills/ios/hig-components-controls/references/combo-boxes.md +40 -0
- package/skills/ios/hig-components-controls/references/controls.md +112 -0
- package/skills/ios/hig-components-controls/references/gauges.md +74 -0
- package/skills/ios/hig-components-controls/references/labels.md +92 -0
- package/skills/ios/hig-components-controls/references/pickers.md +128 -0
- package/skills/ios/hig-components-controls/references/rating-indicators.md +38 -0
- package/skills/ios/hig-components-controls/references/segmented-controls.md +94 -0
- package/skills/ios/hig-components-controls/references/sliders.md +92 -0
- package/skills/ios/hig-components-controls/references/steppers.md +40 -0
- package/skills/ios/hig-components-controls/references/text-fields.md +88 -0
- package/skills/ios/hig-components-controls/references/text-views.md +56 -0
- package/skills/ios/hig-components-controls/references/toggles.md +127 -0
- package/skills/ios/hig-components-controls/references/token-fields.md +48 -0
- package/skills/ios/hig-components-controls/references/virtual-keyboards.md +156 -0
- package/skills/ios/hig-components-dialogs/SKILL.md +76 -0
- package/skills/ios/hig-components-dialogs/references/action-sheets.md +74 -0
- package/skills/ios/hig-components-dialogs/references/alerts.md +158 -0
- package/skills/ios/hig-components-dialogs/references/digit-entry-views.md +32 -0
- package/skills/ios/hig-components-dialogs/references/popovers.md +81 -0
- package/skills/ios/hig-components-dialogs/references/sheets.md +157 -0
- package/skills/ios/hig-components-layout/SKILL.md +99 -0
- package/skills/ios/hig-components-layout/references/boxes.md +48 -0
- package/skills/ios/hig-components-layout/references/column-views.md +44 -0
- package/skills/ios/hig-components-layout/references/lists-and-tables.md +99 -0
- package/skills/ios/hig-components-layout/references/ornaments.md +56 -0
- package/skills/ios/hig-components-layout/references/outline-views.md +64 -0
- package/skills/ios/hig-components-layout/references/panels.md +75 -0
- package/skills/ios/hig-components-layout/references/scroll-views.md +123 -0
- package/skills/ios/hig-components-layout/references/sidebars.md +109 -0
- package/skills/ios/hig-components-layout/references/split-views.md +110 -0
- package/skills/ios/hig-components-layout/references/tab-bars.md +173 -0
- package/skills/ios/hig-components-layout/references/tab-views.md +68 -0
- package/skills/ios/hig-components-layout/references/windows.md +188 -0
- package/skills/ios/hig-components-menus/SKILL.md +81 -0
- package/skills/ios/hig-components-menus/references/action-button.md +61 -0
- package/skills/ios/hig-components-menus/references/buttons.md +261 -0
- package/skills/ios/hig-components-menus/references/context-menus.md +105 -0
- package/skills/ios/hig-components-menus/references/disclosure-controls.md +84 -0
- package/skills/ios/hig-components-menus/references/dock-menus.md +40 -0
- package/skills/ios/hig-components-menus/references/edit-menus.md +88 -0
- package/skills/ios/hig-components-menus/references/menus.md +171 -0
- package/skills/ios/hig-components-menus/references/pop-up-buttons.md +70 -0
- package/skills/ios/hig-components-menus/references/pull-down-buttons.md +77 -0
- package/skills/ios/hig-components-menus/references/the-menu-bar.md +303 -0
- package/skills/ios/hig-components-menus/references/toolbars.md +256 -0
- package/skills/ios/hig-components-search/SKILL.md +68 -0
- package/skills/ios/hig-components-search/references/page-controls.md +120 -0
- package/skills/ios/hig-components-search/references/path-controls.md +40 -0
- package/skills/ios/hig-components-search/references/search-fields.md +189 -0
- package/skills/ios/hig-components-status/SKILL.md +80 -0
- package/skills/ios/hig-components-status/references/activity-rings.md +105 -0
- package/skills/ios/hig-components-status/references/progress-indicators.md +116 -0
- package/skills/ios/hig-components-status/references/status-bars.md +38 -0
- package/skills/ios/hig-components-system/SKILL.md +88 -0
- package/skills/ios/hig-components-system/references/app-clips.md +387 -0
- package/skills/ios/hig-components-system/references/app-shortcuts.md +114 -0
- package/skills/ios/hig-components-system/references/complications.md +425 -0
- package/skills/ios/hig-components-system/references/home-screen-quick-actions.md +42 -0
- package/skills/ios/hig-components-system/references/live-activities.md +442 -0
- package/skills/ios/hig-components-system/references/notifications.md +153 -0
- package/skills/ios/hig-components-system/references/top-shelf.md +135 -0
- package/skills/ios/hig-components-system/references/watch-faces.md +40 -0
- package/skills/ios/hig-components-system/references/widgets.md +517 -0
- package/skills/ios/hig-foundations/SKILL.md +98 -0
- package/skills/ios/hig-foundations/references/accessibility.md +291 -0
- package/skills/ios/hig-foundations/references/app-icons.md +210 -0
- package/skills/ios/hig-foundations/references/branding.md +44 -0
- package/skills/ios/hig-foundations/references/color.md +274 -0
- package/skills/ios/hig-foundations/references/dark-mode.md +116 -0
- package/skills/ios/hig-foundations/references/icons.md +263 -0
- package/skills/ios/hig-foundations/references/images.md +176 -0
- package/skills/ios/hig-foundations/references/immersive-experiences.md +174 -0
- package/skills/ios/hig-foundations/references/inclusion.md +189 -0
- package/skills/ios/hig-foundations/references/layout.md +425 -0
- package/skills/ios/hig-foundations/references/materials.md +238 -0
- package/skills/ios/hig-foundations/references/motion.md +103 -0
- package/skills/ios/hig-foundations/references/privacy.md +231 -0
- package/skills/ios/hig-foundations/references/right-to-left.md +206 -0
- package/skills/ios/hig-foundations/references/sf-symbols.md +310 -0
- package/skills/ios/hig-foundations/references/spatial-layout.md +142 -0
- package/skills/ios/hig-foundations/references/typography.md +1146 -0
- package/skills/ios/hig-foundations/references/writing.md +91 -0
- package/skills/ios/hig-inputs/SKILL.md +94 -0
- package/skills/ios/hig-inputs/references/apple-pencil-and-scribble.md +148 -0
- package/skills/ios/hig-inputs/references/camera-control.md +107 -0
- package/skills/ios/hig-inputs/references/digital-crown.md +83 -0
- package/skills/ios/hig-inputs/references/eyes.md +120 -0
- package/skills/ios/hig-inputs/references/focus-and-selection.md +120 -0
- package/skills/ios/hig-inputs/references/game-controls.md +156 -0
- package/skills/ios/hig-inputs/references/gestures.md +208 -0
- package/skills/ios/hig-inputs/references/gyro-and-accelerometer.md +40 -0
- package/skills/ios/hig-inputs/references/keyboards.md +234 -0
- package/skills/ios/hig-inputs/references/nearby-interactions.md +70 -0
- package/skills/ios/hig-inputs/references/pointing-devices.md +237 -0
- package/skills/ios/hig-inputs/references/remotes.md +67 -0
- package/skills/ios/hig-inputs/references/spatial-interactions.md +70 -0
- package/skills/ios/hig-patterns/SKILL.md +104 -0
- package/skills/ios/hig-patterns/references/charting-data.md +81 -0
- package/skills/ios/hig-patterns/references/collaboration-and-sharing.md +86 -0
- package/skills/ios/hig-patterns/references/drag-and-drop.md +134 -0
- package/skills/ios/hig-patterns/references/entering-data.md +69 -0
- package/skills/ios/hig-patterns/references/feedback.md +67 -0
- package/skills/ios/hig-patterns/references/file-management.md +135 -0
- package/skills/ios/hig-patterns/references/going-full-screen.md +79 -0
- package/skills/ios/hig-patterns/references/launching.md +81 -0
- package/skills/ios/hig-patterns/references/live-viewing-apps.md +79 -0
- package/skills/ios/hig-patterns/references/loading.md +59 -0
- package/skills/ios/hig-patterns/references/managing-accounts.md +107 -0
- package/skills/ios/hig-patterns/references/managing-notifications.md +99 -0
- package/skills/ios/hig-patterns/references/modality.md +82 -0
- package/skills/ios/hig-patterns/references/multitasking.md +131 -0
- package/skills/ios/hig-patterns/references/offering-help.md +117 -0
- package/skills/ios/hig-patterns/references/onboarding.md +69 -0
- package/skills/ios/hig-patterns/references/playing-audio.md +124 -0
- package/skills/ios/hig-patterns/references/playing-haptics.md +280 -0
- package/skills/ios/hig-patterns/references/playing-video.md +180 -0
- package/skills/ios/hig-patterns/references/printing.md +50 -0
- package/skills/ios/hig-patterns/references/ratings-and-reviews.md +48 -0
- package/skills/ios/hig-patterns/references/searching.md +70 -0
- package/skills/ios/hig-patterns/references/settings.md +84 -0
- package/skills/ios/hig-patterns/references/undo-and-redo.md +58 -0
- package/skills/ios/hig-patterns/references/workouts.md +76 -0
- package/skills/ios/hig-platforms/SKILL.md +84 -0
- package/skills/ios/hig-platforms/references/designing-for-games.md +159 -0
- package/skills/ios/hig-platforms/references/designing-for-ios.md +66 -0
- package/skills/ios/hig-platforms/references/designing-for-ipados.md +64 -0
- package/skills/ios/hig-platforms/references/designing-for-macos.md +70 -0
- package/skills/ios/hig-platforms/references/designing-for-tvos.md +68 -0
- package/skills/ios/hig-platforms/references/designing-for-visionos.md +85 -0
- package/skills/ios/hig-platforms/references/designing-for-watchos.md +74 -0
- package/skills/ios/hig-project-context/SKILL.md +133 -0
- package/skills/ios/hig-technologies/SKILL.md +107 -0
- package/skills/ios/hig-technologies/references/airplay.md +125 -0
- package/skills/ios/hig-technologies/references/always-on.md +62 -0
- package/skills/ios/hig-technologies/references/apple-pay.md +441 -0
- package/skills/ios/hig-technologies/references/augmented-reality.md +247 -0
- package/skills/ios/hig-technologies/references/carekit.md +224 -0
- package/skills/ios/hig-technologies/references/carplay.md +119 -0
- package/skills/ios/hig-technologies/references/game-center.md +343 -0
- package/skills/ios/hig-technologies/references/generative-ai.md +110 -0
- package/skills/ios/hig-technologies/references/healthkit.md +120 -0
- package/skills/ios/hig-technologies/references/homekit.md +343 -0
- package/skills/ios/hig-technologies/references/icloud.md +52 -0
- package/skills/ios/hig-technologies/references/id-verifier.md +73 -0
- package/skills/ios/hig-technologies/references/imessage-apps-and-stickers.md +105 -0
- package/skills/ios/hig-technologies/references/in-app-purchase.md +263 -0
- package/skills/ios/hig-technologies/references/live-photos.md +54 -0
- package/skills/ios/hig-technologies/references/mac-catalyst.md +216 -0
- package/skills/ios/hig-technologies/references/machine-learning.md +394 -0
- package/skills/ios/hig-technologies/references/maps.md +221 -0
- package/skills/ios/hig-technologies/references/nfc.md +51 -0
- package/skills/ios/hig-technologies/references/photo-editing.md +40 -0
- package/skills/ios/hig-technologies/references/researchkit.md +134 -0
- package/skills/ios/hig-technologies/references/shareplay.md +142 -0
- package/skills/ios/hig-technologies/references/shazamkit.md +47 -0
- package/skills/ios/hig-technologies/references/sign-in-with-apple.md +288 -0
- package/skills/ios/hig-technologies/references/siri.md +523 -0
- package/skills/ios/hig-technologies/references/tap-to-pay-on-iphone.md +208 -0
- package/skills/ios/hig-technologies/references/voiceover.md +90 -0
- package/skills/ios/hig-technologies/references/wallet.md +420 -0
- package/skills/ios/ios-26-platform/SKILL.md +53 -0
- package/skills/ios/ios-26-platform/references/automatic-adoption.md +161 -0
- package/skills/ios/ios-26-platform/references/backward-compat.md +238 -0
- package/skills/ios/ios-26-platform/references/liquid-glass.md +255 -0
- package/skills/ios/ios-26-platform/references/swiftui-apis.md +277 -0
- package/skills/ios/ios-26-platform/references/toolbar-navigation.md +250 -0
- package/skills/ios/ios-bootstrap/SKILL.md +107 -0
- package/skills/ios/ios-bootstrap/references/apple-docs-mcp-config.md +28 -0
- package/skills/ios/ios-bootstrap/references/new-project-dialog.md +41 -0
- package/skills/ios/ios-bootstrap/references/xcode-mcp-config.md +29 -0
- package/skills/ios/ios-debugger-agent/LICENSE +21 -0
- package/skills/ios/ios-debugger-agent/SKILL.md +58 -0
- package/skills/ios/ios-debugger-agent/agents/openai.yaml +4 -0
- package/skills/ios/ios-entitlements-generator/SKILL.md +47 -0
- package/skills/ios/ios-info-plist-hardening/SKILL.md +130 -0
- package/skills/ios/ios-maestro-flow-author/SKILL.md +68 -0
- package/skills/ios/ios-maestro-flow-author/references/input-and-scroll.yaml +17 -0
- package/skills/ios/ios-maestro-flow-author/references/modal-and-dismiss.yaml +14 -0
- package/skills/ios/ios-maestro-flow-author/references/onboarding-flow.yaml +16 -0
- package/skills/ios/ios-maestro-flow-author/references/tab-navigation.yaml +13 -0
- package/skills/ios/ios-maestro-flow-author/references/tap-and-assert.yaml +9 -0
- package/skills/ios/swift-accessibility/LICENSE +21 -0
- package/skills/ios/swift-accessibility/SKILL.md +371 -0
- package/skills/ios/swift-accessibility/examples/before-after-appkit.md +446 -0
- package/skills/ios/swift-accessibility/examples/before-after-swiftui.md +441 -0
- package/skills/ios/swift-accessibility/examples/before-after-uikit.md +464 -0
- package/skills/ios/swift-accessibility/references/assistive-access.md +441 -0
- package/skills/ios/swift-accessibility/references/display-settings.md +491 -0
- package/skills/ios/swift-accessibility/references/dynamic-type.md +420 -0
- package/skills/ios/swift-accessibility/references/media-accessibility.md +421 -0
- package/skills/ios/swift-accessibility/references/motor-input.md +393 -0
- package/skills/ios/swift-accessibility/references/nutrition-labels.md +362 -0
- package/skills/ios/swift-accessibility/references/platform-specifics.md +515 -0
- package/skills/ios/swift-accessibility/references/semantic-structure.md +585 -0
- package/skills/ios/swift-accessibility/references/testing-auditing.md +507 -0
- package/skills/ios/swift-accessibility/references/voice-control.md +317 -0
- package/skills/ios/swift-accessibility/references/voiceover-swiftui.md +584 -0
- package/skills/ios/swift-accessibility/references/voiceover-uikit.md +519 -0
- package/skills/ios/swift-accessibility/references/wcag-mapping.md +167 -0
- package/skills/ios/swift-accessibility/resources/audit-template.swift +128 -0
- package/skills/ios/swift-accessibility/resources/qa-checklist.md +258 -0
- package/skills/ios/swift-actor-persistence/SKILL.md +143 -0
- package/skills/ios/swift-concurrency/LICENSE +21 -0
- package/skills/ios/swift-concurrency/SKILL.md +171 -0
- package/skills/ios/swift-concurrency/references/_index.md +50 -0
- package/skills/ios/swift-concurrency/references/actors.md +660 -0
- package/skills/ios/swift-concurrency/references/async-algorithms.md +847 -0
- package/skills/ios/swift-concurrency/references/async-await-basics.md +266 -0
- package/skills/ios/swift-concurrency/references/async-sequences.md +710 -0
- package/skills/ios/swift-concurrency/references/core-data.md +560 -0
- package/skills/ios/swift-concurrency/references/glossary.md +135 -0
- package/skills/ios/swift-concurrency/references/linting.md +155 -0
- package/skills/ios/swift-concurrency/references/memory-management.md +569 -0
- package/skills/ios/swift-concurrency/references/migration.md +1104 -0
- package/skills/ios/swift-concurrency/references/performance.md +593 -0
- package/skills/ios/swift-concurrency/references/sendable.md +598 -0
- package/skills/ios/swift-concurrency/references/tasks.md +636 -0
- package/skills/ios/swift-concurrency/references/testing.md +592 -0
- package/skills/ios/swift-concurrency/references/threading.md +495 -0
- package/skills/ios/swift-concurrency-6-2/SKILL.md +216 -0
- package/skills/ios/swift-protocol-di-testing/SKILL.md +190 -0
- package/skills/ios/swift-security-expert/LICENSE +21 -0
- package/skills/ios/swift-security-expert/SKILL.md +470 -0
- package/skills/ios/swift-security-expert/references/biometric-authentication.md +565 -0
- package/skills/ios/swift-security-expert/references/certificate-trust.md +592 -0
- package/skills/ios/swift-security-expert/references/common-anti-patterns.md +690 -0
- package/skills/ios/swift-security-expert/references/compliance-owasp-mapping.md +537 -0
- package/skills/ios/swift-security-expert/references/credential-storage-patterns.md +721 -0
- package/skills/ios/swift-security-expert/references/cryptokit-public-key.md +505 -0
- package/skills/ios/swift-security-expert/references/cryptokit-symmetric.md +497 -0
- package/skills/ios/swift-security-expert/references/keychain-access-control.md +508 -0
- package/skills/ios/swift-security-expert/references/keychain-fundamentals.md +596 -0
- package/skills/ios/swift-security-expert/references/keychain-item-classes.md +476 -0
- package/skills/ios/swift-security-expert/references/keychain-sharing.md +458 -0
- package/skills/ios/swift-security-expert/references/migration-legacy-stores.md +727 -0
- package/skills/ios/swift-security-expert/references/secure-enclave.md +539 -0
- package/skills/ios/swift-security-expert/references/testing-security-code.md +781 -0
- package/skills/ios/swift-testing-expert/LICENSE +21 -0
- package/skills/ios/swift-testing-expert/SKILL.md +79 -0
- package/skills/ios/swift-testing-expert/references/_index.md +12 -0
- package/skills/ios/swift-testing-expert/references/async-testing-and-waiting.md +127 -0
- package/skills/ios/swift-testing-expert/references/expectations.md +145 -0
- package/skills/ios/swift-testing-expert/references/fundamentals.md +141 -0
- package/skills/ios/swift-testing-expert/references/migration-from-xctest.md +127 -0
- package/skills/ios/swift-testing-expert/references/parallelization-and-isolation.md +95 -0
- package/skills/ios/swift-testing-expert/references/parameterized-testing.md +284 -0
- package/skills/ios/swift-testing-expert/references/performance-and-best-practices.md +187 -0
- package/skills/ios/swift-testing-expert/references/traits-and-tags.md +114 -0
- package/skills/ios/swift-testing-expert/references/xcode-workflows.md +70 -0
- package/skills/ios/swiftdata-pro/LICENSE +21 -0
- package/skills/ios/swiftdata-pro/SKILL.md +102 -0
- package/skills/ios/swiftdata-pro/agents/openai.yaml +10 -0
- package/skills/ios/swiftdata-pro/assets/swiftdata-pro-icon.png +0 -0
- package/skills/ios/swiftdata-pro/assets/swiftdata-pro-icon.svg +29 -0
- package/skills/ios/swiftdata-pro/references/class-inheritance.md +104 -0
- package/skills/ios/swiftdata-pro/references/cloudkit.md +10 -0
- package/skills/ios/swiftdata-pro/references/core-rules.md +20 -0
- package/skills/ios/swiftdata-pro/references/indexing.md +27 -0
- package/skills/ios/swiftdata-pro/references/predicates.md +73 -0
- package/skills/ios/swiftui-design-principles/AGENTS.md +21 -0
- package/skills/ios/swiftui-design-principles/LICENSE +21 -0
- package/skills/ios/swiftui-design-principles/README.md +41 -0
- package/skills/ios/swiftui-design-principles/SKILL.md +605 -0
- package/skills/ios/swiftui-design-principles/metadata.json +10 -0
- package/skills/ios/swiftui-design-tokens/SKILL.md +475 -0
- package/skills/ios/swiftui-liquid-glass/LICENSE +21 -0
- package/skills/ios/swiftui-liquid-glass/SKILL.md +95 -0
- package/skills/ios/swiftui-liquid-glass/agents/openai.yaml +4 -0
- package/skills/ios/swiftui-liquid-glass/references/liquid-glass.md +280 -0
- package/skills/ios/swiftui-performance-audit/LICENSE +21 -0
- package/skills/ios/swiftui-performance-audit/SKILL.md +111 -0
- package/skills/ios/swiftui-performance-audit/agents/openai.yaml +4 -0
- package/skills/ios/swiftui-performance-audit/references/code-smells.md +150 -0
- package/skills/ios/swiftui-performance-audit/references/demystify-swiftui-performance-wwdc23.md +46 -0
- package/skills/ios/swiftui-performance-audit/references/optimizing-swiftui-performance-instruments.md +29 -0
- package/skills/ios/swiftui-performance-audit/references/profiling-intake.md +44 -0
- package/skills/ios/swiftui-performance-audit/references/report-template.md +47 -0
- package/skills/ios/swiftui-performance-audit/references/understanding-hangs-in-your-app.md +33 -0
- package/skills/ios/swiftui-performance-audit/references/understanding-improving-swiftui-performance.md +52 -0
- package/skills/ios/swiftui-pro/LICENSE +21 -0
- package/skills/ios/swiftui-pro/SKILL.md +108 -0
- package/skills/ios/swiftui-pro/agents/openai.yaml +10 -0
- package/skills/ios/swiftui-pro/assets/swiftui-pro-icon.png +0 -0
- package/skills/ios/swiftui-pro/assets/swiftui-pro-icon.svg +29 -0
- package/skills/ios/swiftui-pro/references/accessibility.md +13 -0
- package/skills/ios/swiftui-pro/references/api.md +39 -0
- package/skills/ios/swiftui-pro/references/data.md +43 -0
- package/skills/ios/swiftui-pro/references/design.md +31 -0
- package/skills/ios/swiftui-pro/references/hygiene.md +9 -0
- package/skills/ios/swiftui-pro/references/navigation.md +14 -0
- package/skills/ios/swiftui-pro/references/performance.md +46 -0
- package/skills/ios/swiftui-pro/references/swift.md +56 -0
- package/skills/ios/swiftui-pro/references/views.md +35 -0
- package/skills/ios/swiftui-ui-patterns/LICENSE +21 -0
- package/skills/ios/swiftui-ui-patterns/SKILL.md +100 -0
- package/skills/ios/swiftui-ui-patterns/agents/openai.yaml +4 -0
- package/skills/ios/swiftui-ui-patterns/references/app-wiring.md +201 -0
- package/skills/ios/swiftui-ui-patterns/references/async-state.md +96 -0
- package/skills/ios/swiftui-ui-patterns/references/components-index.md +50 -0
- package/skills/ios/swiftui-ui-patterns/references/controls.md +57 -0
- package/skills/ios/swiftui-ui-patterns/references/deeplinks.md +66 -0
- package/skills/ios/swiftui-ui-patterns/references/focus.md +90 -0
- package/skills/ios/swiftui-ui-patterns/references/form.md +97 -0
- package/skills/ios/swiftui-ui-patterns/references/grids.md +71 -0
- package/skills/ios/swiftui-ui-patterns/references/haptics.md +71 -0
- package/skills/ios/swiftui-ui-patterns/references/input-toolbar.md +51 -0
- package/skills/ios/swiftui-ui-patterns/references/lightweight-clients.md +93 -0
- package/skills/ios/swiftui-ui-patterns/references/list.md +86 -0
- package/skills/ios/swiftui-ui-patterns/references/loading-placeholders.md +38 -0
- package/skills/ios/swiftui-ui-patterns/references/macos-settings.md +71 -0
- package/skills/ios/swiftui-ui-patterns/references/matched-transitions.md +59 -0
- package/skills/ios/swiftui-ui-patterns/references/media.md +73 -0
- package/skills/ios/swiftui-ui-patterns/references/menu-bar.md +101 -0
- package/skills/ios/swiftui-ui-patterns/references/navigationstack.md +159 -0
- package/skills/ios/swiftui-ui-patterns/references/overlay.md +45 -0
- package/skills/ios/swiftui-ui-patterns/references/performance.md +62 -0
- package/skills/ios/swiftui-ui-patterns/references/previews.md +48 -0
- package/skills/ios/swiftui-ui-patterns/references/scroll-reveal.md +133 -0
- package/skills/ios/swiftui-ui-patterns/references/scrollview.md +87 -0
- package/skills/ios/swiftui-ui-patterns/references/searchable.md +71 -0
- package/skills/ios/swiftui-ui-patterns/references/sheets.md +155 -0
- package/skills/ios/swiftui-ui-patterns/references/split-views.md +72 -0
- package/skills/ios/swiftui-ui-patterns/references/tabview.md +114 -0
- package/skills/ios/swiftui-ui-patterns/references/theming.md +71 -0
- package/skills/ios/swiftui-ui-patterns/references/title-menus.md +93 -0
- package/skills/ios/swiftui-ui-patterns/references/top-bar.md +49 -0
- package/skills/ios/swiftui-view-refactor/LICENSE +21 -0
- package/skills/ios/swiftui-view-refactor/SKILL.md +207 -0
- package/skills/ios/swiftui-view-refactor/agents/openai.yaml +4 -0
- package/skills/ios/swiftui-view-refactor/references/mv-patterns.md +161 -0
- package/skills/ios/widgetkit/LICENSE +131 -0
- package/skills/ios/widgetkit/SKILL.md +502 -0
- package/skills/ios/widgetkit/references/widgetkit-advanced.md +871 -0
- package/skills/ios/writing-for-interfaces/SKILL.md +75 -0
- package/skills/web/accessibility/SKILL.md +146 -0
- package/skills/web/aceternity-ui/SKILL.md +719 -0
- package/skills/web/aceternity-ui/metadata.json +10 -0
- package/skills/web/api-design/SKILL.md +523 -0
- package/skills/web/chart-accessibility/SKILL.md +332 -0
- package/skills/web/composition-patterns/AGENTS.md +946 -0
- package/skills/web/composition-patterns/README.md +60 -0
- package/skills/web/composition-patterns/SKILL.md +89 -0
- package/skills/web/composition-patterns/metadata.json +11 -0
- package/skills/web/composition-patterns/rules/_sections.md +29 -0
- package/skills/web/composition-patterns/rules/_template.md +24 -0
- package/skills/web/composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
- package/skills/web/composition-patterns/rules/architecture-compound-components.md +112 -0
- package/skills/web/composition-patterns/rules/patterns-children-over-render-props.md +87 -0
- package/skills/web/composition-patterns/rules/patterns-explicit-variants.md +100 -0
- package/skills/web/composition-patterns/rules/react19-no-forwardref.md +42 -0
- package/skills/web/composition-patterns/rules/state-context-interface.md +191 -0
- package/skills/web/composition-patterns/rules/state-decouple-implementation.md +113 -0
- package/skills/web/composition-patterns/rules/state-lift-state.md +125 -0
- package/skills/web/cost-aware-llm-pipeline/SKILL.md +183 -0
- package/skills/web/database-migrations/SKILL.md +429 -0
- package/skills/web/deployment-patterns/SKILL.md +427 -0
- package/skills/web/docker-patterns/SKILL.md +364 -0
- package/skills/web/e2e-testing/SKILL.md +326 -0
- package/skills/web/lighthouse-ci/SKILL.md +361 -0
- package/skills/web/mcp-server-patterns/SKILL.md +69 -0
- package/skills/web/next-best-practices/SKILL.md +153 -0
- package/skills/web/next-best-practices/async-patterns.md +87 -0
- package/skills/web/next-best-practices/bundling.md +180 -0
- package/skills/web/next-best-practices/data-patterns.md +297 -0
- package/skills/web/next-best-practices/debug-tricks.md +105 -0
- package/skills/web/next-best-practices/directives.md +73 -0
- package/skills/web/next-best-practices/error-handling.md +227 -0
- package/skills/web/next-best-practices/file-conventions.md +140 -0
- package/skills/web/next-best-practices/font.md +245 -0
- package/skills/web/next-best-practices/functions.md +108 -0
- package/skills/web/next-best-practices/hydration-error.md +91 -0
- package/skills/web/next-best-practices/image.md +173 -0
- package/skills/web/next-best-practices/metadata.md +301 -0
- package/skills/web/next-best-practices/parallel-routes.md +287 -0
- package/skills/web/next-best-practices/route-handlers.md +146 -0
- package/skills/web/next-best-practices/rsc-boundaries.md +159 -0
- package/skills/web/next-best-practices/runtime-selection.md +39 -0
- package/skills/web/next-best-practices/scripts.md +141 -0
- package/skills/web/next-best-practices/self-hosting.md +371 -0
- package/skills/web/next-best-practices/suspense-boundaries.md +67 -0
- package/skills/web/next-cache-components/SKILL.md +411 -0
- package/skills/web/postgres-best-practices/SKILL.md +14 -0
- package/skills/web/postgres-best-practices/references/schema-design.md +9 -0
- package/skills/web/react-best-practices/AGENTS.md +3810 -0
- package/skills/web/react-best-practices/README.md +123 -0
- package/skills/web/react-best-practices/SKILL.md +149 -0
- package/skills/web/react-best-practices/metadata.json +15 -0
- package/skills/web/react-best-practices/rules/_sections.md +46 -0
- package/skills/web/react-best-practices/rules/_template.md +28 -0
- package/skills/web/react-best-practices/rules/advanced-effect-event-deps.md +56 -0
- package/skills/web/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/skills/web/react-best-practices/rules/advanced-init-once.md +42 -0
- package/skills/web/react-best-practices/rules/advanced-use-latest.md +39 -0
- package/skills/web/react-best-practices/rules/async-api-routes.md +38 -0
- package/skills/web/react-best-practices/rules/async-cheap-condition-before-await.md +37 -0
- package/skills/web/react-best-practices/rules/async-defer-await.md +82 -0
- package/skills/web/react-best-practices/rules/async-dependencies.md +51 -0
- package/skills/web/react-best-practices/rules/async-parallel.md +28 -0
- package/skills/web/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/skills/web/react-best-practices/rules/bundle-analyzable-paths.md +63 -0
- package/skills/web/react-best-practices/rules/bundle-barrel-imports.md +60 -0
- package/skills/web/react-best-practices/rules/bundle-conditional.md +31 -0
- package/skills/web/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/skills/web/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/skills/web/react-best-practices/rules/bundle-preload.md +50 -0
- package/skills/web/react-best-practices/rules/client-event-listeners.md +74 -0
- package/skills/web/react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/skills/web/react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/skills/web/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/skills/web/react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/skills/web/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/skills/web/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/skills/web/react-best-practices/rules/js-cache-storage.md +70 -0
- package/skills/web/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/skills/web/react-best-practices/rules/js-early-exit.md +50 -0
- package/skills/web/react-best-practices/rules/js-flatmap-filter.md +60 -0
- package/skills/web/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/skills/web/react-best-practices/rules/js-index-maps.md +37 -0
- package/skills/web/react-best-practices/rules/js-length-check-first.md +49 -0
- package/skills/web/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/skills/web/react-best-practices/rules/js-request-idle-callback.md +105 -0
- package/skills/web/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/skills/web/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/skills/web/react-best-practices/rules/rendering-activity.md +26 -0
- package/skills/web/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/skills/web/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/skills/web/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/skills/web/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/skills/web/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/skills/web/react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/skills/web/react-best-practices/rules/rendering-resource-hints.md +85 -0
- package/skills/web/react-best-practices/rules/rendering-script-defer-async.md +68 -0
- package/skills/web/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/skills/web/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/skills/web/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/skills/web/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/skills/web/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/skills/web/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/skills/web/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/skills/web/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/skills/web/react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/skills/web/react-best-practices/rules/rerender-memo.md +44 -0
- package/skills/web/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/skills/web/react-best-practices/rules/rerender-no-inline-components.md +82 -0
- package/skills/web/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/skills/web/react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
- package/skills/web/react-best-practices/rules/rerender-transitions.md +40 -0
- package/skills/web/react-best-practices/rules/rerender-use-deferred-value.md +59 -0
- package/skills/web/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/skills/web/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/skills/web/react-best-practices/rules/server-auth-actions.md +96 -0
- package/skills/web/react-best-practices/rules/server-cache-lru.md +41 -0
- package/skills/web/react-best-practices/rules/server-cache-react.md +76 -0
- package/skills/web/react-best-practices/rules/server-dedup-props.md +65 -0
- package/skills/web/react-best-practices/rules/server-hoist-static-io.md +149 -0
- package/skills/web/react-best-practices/rules/server-no-shared-module-state.md +50 -0
- package/skills/web/react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/skills/web/react-best-practices/rules/server-parallel-nested-fetching.md +34 -0
- package/skills/web/react-best-practices/rules/server-serialization.md +38 -0
- package/skills/web/seo/SKILL.md +154 -0
- package/skills/web/web-design-guidelines/SKILL.md +39 -0
- package/skills/web/zap-scan-config/SKILL.md +444 -0
- package/skills/web/zap-scan-config/assets/.gitkeep +9 -0
- package/skills/web/zap-scan-config/assets/github_action.yml +207 -0
- package/skills/web/zap-scan-config/assets/gitlab_ci.yml +226 -0
- package/skills/web/zap-scan-config/assets/zap_automation.yaml +196 -0
- package/skills/web/zap-scan-config/assets/zap_context.xml +192 -0
- package/skills/web/zap-scan-config/references/EXAMPLE.md +40 -0
- package/skills/web/zap-scan-config/references/api_testing_guide.md +475 -0
- package/skills/web/zap-scan-config/references/authentication_guide.md +431 -0
- package/skills/web/zap-scan-config/references/false_positive_handling.md +427 -0
- package/skills/web/zap-scan-config/references/owasp_mapping.md +255 -0
- package/src/lrr/aggregator.ts +80 -0
- package/src/orchestrator/hooks/context-header.ts +95 -0
- package/src/orchestrator/hooks/token-accounting-emitter.ts +77 -0
- package/src/orchestrator/hooks/token-accounting.ts +101 -0
- package/src/orchestrator/mcp/cycle-counter.ts +129 -0
- package/src/orchestrator/mcp/scribe.ts +283 -0
- package/src/orchestrator/mcp/state-save.ts +149 -0
- package/src/orchestrator/mcp/write-lease.ts +167 -0
- package/src/orchestrator/phase4-shared-context.ts +41 -0
- package/src/orchestrator/schemas/backward-edge.ts +46 -0
- package/agents/agentic-identity-trust.md +0 -121
- package/agents/data-consolidation-agent.md +0 -39
- package/agents/design-image-prompt-engineer.md +0 -105
- package/agents/design-visual-storyteller.md +0 -147
- package/agents/design-whimsy-injector.md +0 -89
- package/agents/engineering-autonomous-optimization-architect.md +0 -105
- package/agents/market-intel.md +0 -35
- package/agents/marketing-instagram-curator.md +0 -111
- package/agents/marketing-reddit-community-builder.md +0 -121
- package/agents/marketing-social-media-strategist.md +0 -74
- package/agents/marketing-tiktok-strategist.md +0 -123
- package/agents/marketing-twitter-engager.md +0 -124
- package/agents/marketing-wechat-official-account.md +0 -143
- package/agents/marketing-xiaohongshu-specialist.md +0 -136
- package/agents/marketing-zhihu-strategist.md +0 -160
- package/agents/product-behavioral-nudge-engine.md +0 -78
- package/agents/project-management-experiment-tracker.md +0 -102
- package/agents/report-distribution-agent.md +0 -43
- package/agents/risk-analysis.md +0 -45
- package/agents/sales-data-extraction-agent.md +0 -46
- package/agents/specialized-cultural-intelligence-strategist.md +0 -65
- package/agents/specialized-developer-advocate.md +0 -146
- package/agents/support-analytics-reporter.md +0 -133
- package/agents/support-executive-summary-generator.md +0 -64
- package/agents/support-finance-tracker.md +0 -145
- package/agents/support-legal-compliance-checker.md +0 -129
- package/agents/support-support-responder.md +0 -91
- package/agents/testing-accessibility-auditor.md +0 -110
- package/agents/testing-test-results-analyzer.md +0 -97
- package/agents/testing-tool-evaluator.md +0 -76
- package/agents/testing-workflow-optimizer.md +0 -99
- package/agents/user-research.md +0 -40
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
# Accessibility Nutrition Labels
|
|
2
|
+
|
|
3
|
+
All 9 App Store Accessibility Nutrition Labels with official evaluation criteria, required APIs, and implementation checklists.
|
|
4
|
+
|
|
5
|
+
## Contents
|
|
6
|
+
- [Overview](#overview)
|
|
7
|
+
- [1. VoiceOver](#1-voiceover)
|
|
8
|
+
- [2. Voice Control](#2-voice-control)
|
|
9
|
+
- [3. Larger Text](#3-larger-text)
|
|
10
|
+
- [4. Dark Interface](#4-dark-interface)
|
|
11
|
+
- [5. Differentiate Without Color](#5-differentiate-without-color)
|
|
12
|
+
- [6. Sufficient Contrast](#6-sufficient-contrast)
|
|
13
|
+
- [7. Reduced Motion](#7-reduced-motion)
|
|
14
|
+
- [8. Captions](#8-captions)
|
|
15
|
+
- [9. Audio Descriptions](#9-audio-descriptions)
|
|
16
|
+
- [Evaluation Matrix Template](#evaluation-matrix-template)
|
|
17
|
+
- [Accuracy and App Review](#accuracy-and-app-review)
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Overview
|
|
22
|
+
|
|
23
|
+
Accessibility Nutrition Labels appear on App Store product pages. Each label indicates that users can complete **all common tasks** in the app using that accessibility feature. Partial support does not qualify — if any primary task is blocked, the label cannot be claimed.
|
|
24
|
+
|
|
25
|
+
**"Common tasks" typically means:**
|
|
26
|
+
- App launch and onboarding
|
|
27
|
+
- Primary feature usage (the core reason users download the app)
|
|
28
|
+
- Login / account access
|
|
29
|
+
- Settings or preferences
|
|
30
|
+
- Key data entry or purchase flows (if applicable)
|
|
31
|
+
|
|
32
|
+
Labels are currently voluntary. The platform review process checks accuracy during app review. Inaccurate labels violate App Store Review Guideline 2.3.
|
|
33
|
+
|
|
34
|
+
**Native APIs first:** Most built-in SwiftUI and UIKit controls provide accessibility for free. Custom implementations require explicit work for every feature.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 1. VoiceOver
|
|
39
|
+
|
|
40
|
+
**What it is:** Screen reader for blind and low-vision users. Reads UI aloud and enables navigation through gestures.
|
|
41
|
+
|
|
42
|
+
### Pass Criteria
|
|
43
|
+
|
|
44
|
+
- [ ] All interactive controls (buttons, links, text fields) have concise, accurate accessibility labels
|
|
45
|
+
- [ ] Labels do not include the control type ("button", "link") — VoiceOver adds it automatically
|
|
46
|
+
- [ ] Labels do not embed state ("selected", "checked") — use traits for state
|
|
47
|
+
- [ ] Decorative images are hidden (`accessibilityHidden(true)`)
|
|
48
|
+
- [ ] All visible text is speakable by VoiceOver
|
|
49
|
+
- [ ] Reading order is logical and consistent with visual layout
|
|
50
|
+
- [ ] Element type and state are announced correctly (traits match element role)
|
|
51
|
+
- [ ] Navigation is complete — no interactive element is unreachable
|
|
52
|
+
- [ ] No unexpected VoiceOver cursor resets during content refresh
|
|
53
|
+
- [ ] All complex gestures (swipe, long-press, pinch) have accessible alternatives via custom actions
|
|
54
|
+
- [ ] Every modal and alert traps focus within itself (`accessibilityViewIsModal = true`)
|
|
55
|
+
- [ ] Every modal can be dismissed with the two-finger Z gesture (`accessibilityPerformEscape`)
|
|
56
|
+
- [ ] Focus moves to new content after navigation or modal presentation
|
|
57
|
+
- [ ] VoiceOver focus returns to the trigger element after modal dismissal
|
|
58
|
+
- [ ] Dynamic content changes (async loads, live regions) are announced
|
|
59
|
+
|
|
60
|
+
### Key APIs
|
|
61
|
+
|
|
62
|
+
| Feature | SwiftUI | UIKit |
|
|
63
|
+
|---|---|---|
|
|
64
|
+
| Label | `.accessibilityLabel(_:)` | `accessibilityLabel` |
|
|
65
|
+
| Hint | `.accessibilityHint(_:)` | `accessibilityHint` |
|
|
66
|
+
| Value | `.accessibilityValue(_:)` | `accessibilityValue` |
|
|
67
|
+
| Traits | `.accessibilityAddTraits(_:)` | `accessibilityTraits` |
|
|
68
|
+
| Hidden | `.accessibilityHidden(true)` | `isAccessibilityElement = false` |
|
|
69
|
+
| Custom actions | `.accessibilityAction(named:)` | `accessibilityCustomActions` |
|
|
70
|
+
| Modal trapping | Automatic with `.sheet()` | `accessibilityViewIsModal = true` |
|
|
71
|
+
| Focus | `@AccessibilityFocusState` | `UIAccessibility.post(.screenChanged)` |
|
|
72
|
+
| Announcements | `AccessibilityNotification.Announcement` | `UIAccessibility.post(.announcement)` |
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## 2. Voice Control
|
|
77
|
+
|
|
78
|
+
**What it is:** Hands-free navigation by speaking commands. Used by people with motor disabilities who can see the screen.
|
|
79
|
+
|
|
80
|
+
### Pass Criteria
|
|
81
|
+
|
|
82
|
+
- [ ] Every interactive element appears in the "Show numbers" overlay
|
|
83
|
+
- [ ] Every element has a visible text label in the "Show names" overlay
|
|
84
|
+
- [ ] Labels in "Show names" match the text visible in the UI
|
|
85
|
+
- [ ] No generic labels ("button", "image") without specific context
|
|
86
|
+
- [ ] "Tap [visible text]" activates every labeled button
|
|
87
|
+
- [ ] Icon-only buttons have `accessibilityInputLabels` matching their action
|
|
88
|
+
- [ ] Custom actions appear as ">>" in the "Show numbers" overlay and are activatable
|
|
89
|
+
- [ ] "Type [text]" inserts text in every text field
|
|
90
|
+
- [ ] "Select [word]" selects text in text fields
|
|
91
|
+
- [ ] "Scroll up/down/left/right" works in scrollable content
|
|
92
|
+
- [ ] No Voice Control action requires a custom multi-touch gesture without a voice alternative
|
|
93
|
+
|
|
94
|
+
### Key APIs
|
|
95
|
+
|
|
96
|
+
| Feature | SwiftUI | UIKit |
|
|
97
|
+
|---|---|---|
|
|
98
|
+
| Input labels | `.accessibilityInputLabels([_:])` | `accessibilityUserInputLabels` |
|
|
99
|
+
| Make interactive | Use `Button` (preferred) | `isAccessibilityElement = true` + `.button` trait |
|
|
100
|
+
| Custom actions | `.accessibilityAction(named:)` | `accessibilityCustomActions` |
|
|
101
|
+
| Unique labels | `.accessibilityLabel("Delete \(item.name)")` | `accessibilityLabel` with context |
|
|
102
|
+
|
|
103
|
+
### Common Failures
|
|
104
|
+
|
|
105
|
+
- `onTapGesture` on non-Button views — element invisible to Voice Control
|
|
106
|
+
- `accessibilityLabel` says "Submit" but button text is "Send" — "Tap Send" fails
|
|
107
|
+
- Swipe-to-delete has no voice alternative — inaccessible to Voice Control users
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## 3. Larger Text
|
|
112
|
+
|
|
113
|
+
**What it is:** Dynamic Type support — text and layout scale when the user increases their preferred font size.
|
|
114
|
+
|
|
115
|
+
### Pass Criteria
|
|
116
|
+
|
|
117
|
+
- [ ] All text uses Dynamic Type text styles (not fixed font sizes)
|
|
118
|
+
- [ ] Text scales at least to the largest Accessibility size (200% on iOS, 140% on watchOS)
|
|
119
|
+
- [ ] No text clips, overlaps, or truncates severely at Accessibility 5 size
|
|
120
|
+
- [ ] Layout adapts at large sizes (e.g., HStack switches to VStack)
|
|
121
|
+
- [ ] Non-text elements that must scale use `@ScaledMetric`
|
|
122
|
+
- [ ] Icon-only elements that cannot scale use `.accessibilityShowsLargeContentViewer()`
|
|
123
|
+
- [ ] Custom fonts use `Font.custom(_:size:relativeTo:)` or `UIFontMetrics`
|
|
124
|
+
- [ ] Full content is accessible — detail views or "More" affordances exist for truncated text
|
|
125
|
+
|
|
126
|
+
### Text Style Reference
|
|
127
|
+
|
|
128
|
+
| Style | Default Size | Use For |
|
|
129
|
+
|---|---|---|
|
|
130
|
+
| `.largeTitle` | 34pt | Screen titles |
|
|
131
|
+
| `.title` | 28pt | Primary headings |
|
|
132
|
+
| `.title2` | 22pt | Secondary headings |
|
|
133
|
+
| `.title3` | 20pt | Tertiary headings |
|
|
134
|
+
| `.headline` | 17pt bold | Section labels |
|
|
135
|
+
| `.body` | 17pt | Primary content |
|
|
136
|
+
| `.callout` | 16pt | Supporting content |
|
|
137
|
+
| `.subheadline` | 15pt | Secondary content |
|
|
138
|
+
| `.footnote` | 13pt | Footnotes |
|
|
139
|
+
| `.caption` | 12pt | Captions |
|
|
140
|
+
| `.caption2` | 11pt | Fine print |
|
|
141
|
+
|
|
142
|
+
### Key APIs
|
|
143
|
+
|
|
144
|
+
| Feature | SwiftUI | UIKit |
|
|
145
|
+
|---|---|---|
|
|
146
|
+
| Text styles | `.font(.body)`, `.font(.title2)` etc. | `UIFont.preferredFont(forTextStyle:)` |
|
|
147
|
+
| Custom fonts | `Font.custom(_:size:relativeTo:)` | `UIFontMetrics.default.scaledValue(for:)` |
|
|
148
|
+
| Scale non-font values | `@ScaledMetric(relativeTo: .body)` | `UIFontMetrics(forTextStyle:).scaledValue(for:)` |
|
|
149
|
+
| Large Content Viewer | `.accessibilityShowsLargeContentViewer()` | `UILargeContentViewerInteraction` |
|
|
150
|
+
| Detect size | `@Environment(\.dynamicTypeSize)` | `traitCollection.preferredContentSizeCategory` |
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## 4. Dark Interface
|
|
155
|
+
|
|
156
|
+
**What it is:** App supports system Dark Mode, or the app is dark by default.
|
|
157
|
+
|
|
158
|
+
### Pass Criteria
|
|
159
|
+
|
|
160
|
+
- [ ] App responds to system Dark Mode (appearance changes without relaunch) OR app is dark by default
|
|
161
|
+
- [ ] All text has sufficient contrast in dark mode (test with Increase Contrast enabled)
|
|
162
|
+
- [ ] No bright flashes during view transitions
|
|
163
|
+
- [ ] Consistent dark appearance across all views (no screens that stay light)
|
|
164
|
+
- [ ] Semantic colors used throughout (not hardcoded hex values)
|
|
165
|
+
- [ ] Custom colors have dark mode variants (Color Set or UIColor dynamic provider)
|
|
166
|
+
- [ ] Images with white backgrounds use `accessibilityIgnoresInvertColors` if needed
|
|
167
|
+
- [ ] Borders and dividers remain visible in dark mode
|
|
168
|
+
|
|
169
|
+
### Key APIs
|
|
170
|
+
|
|
171
|
+
| Feature | SwiftUI | UIKit |
|
|
172
|
+
|---|---|---|
|
|
173
|
+
| Detect mode | `@Environment(\.colorScheme)` | `traitCollection.userInterfaceStyle` |
|
|
174
|
+
| Semantic colors | `.foregroundStyle(.primary)`, `Color(.systemBackground)` | `.label`, `.systemBackground` |
|
|
175
|
+
| Dynamic color | Asset catalog Color Set | `UIColor { traits in traits.userInterfaceStyle == .dark ? ... : ... }` |
|
|
176
|
+
| Respond to changes | Automatic with semantic colors | `traitCollectionDidChange(_:)` (deprecated iOS 17; use `registerForTraitChanges`) |
|
|
177
|
+
| Force dark for testing | `.environment(\.colorScheme, .dark)` | `overrideUserInterfaceStyle = .dark` |
|
|
178
|
+
|
|
179
|
+
### Common Pitfalls
|
|
180
|
+
|
|
181
|
+
- Sufficient contrast in light mode but broken in dark mode — **always test both**
|
|
182
|
+
- Gray text on dark background — use `.secondary` which adjusts automatically
|
|
183
|
+
- Semi-transparent overlays that pass contrast in light but fail in dark
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## 5. Differentiate Without Color
|
|
188
|
+
|
|
189
|
+
**What it is:** Color is not the only indicator of meaning. Required for users with color vision deficiency (affects ~10% of people).
|
|
190
|
+
|
|
191
|
+
### Pass Criteria
|
|
192
|
+
|
|
193
|
+
- [ ] App passes the Grayscale filter test (all information comprehensible in grayscale)
|
|
194
|
+
- [ ] Status indicators use shape, icon, or text in addition to color
|
|
195
|
+
- [ ] Charts and data visualizations use patterns, labels, or position in addition to color
|
|
196
|
+
- [ ] Interactive state (selected, disabled) is communicated beyond color
|
|
197
|
+
- [ ] Error and success states are distinguishable without color
|
|
198
|
+
- [ ] Links are distinguishable from non-interactive text (underline or weight, not color alone)
|
|
199
|
+
- [ ] `accessibilityDifferentiateWithoutColor` setting is respected when extra indicators are added
|
|
200
|
+
|
|
201
|
+
### Key APIs
|
|
202
|
+
|
|
203
|
+
| Feature | SwiftUI | UIKit |
|
|
204
|
+
|---|---|---|
|
|
205
|
+
| Detect setting | `@Environment(\.accessibilityDifferentiateWithoutColor)` | `UIAccessibility.shouldDifferentiateWithoutColor` |
|
|
206
|
+
| Observe changes | `.onChange(of: differentiateWithoutColor)` | `UIAccessibility.differentiateWithoutColorDidChangeNotification` |
|
|
207
|
+
| Chart symbols | `.symbol(by: .value(...))` on Swift Charts | Per-series symbol shapes |
|
|
208
|
+
|
|
209
|
+
### Test Method
|
|
210
|
+
|
|
211
|
+
Enable: Settings → Accessibility → Display & Text Size → Color Filters → Grayscale. Navigate every screen. If any information becomes ambiguous or invisible, the test fails.
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## 6. Sufficient Contrast
|
|
216
|
+
|
|
217
|
+
**What it is:** Text and interactive elements meet WCAG contrast ratios for users with low vision.
|
|
218
|
+
|
|
219
|
+
### WCAG Contrast Ratios
|
|
220
|
+
|
|
221
|
+
| Element | Minimum | Enhanced (AAA) |
|
|
222
|
+
|---|---|---|
|
|
223
|
+
| Normal text (<18pt regular, <14pt bold) | **4.5:1** | 7:1 |
|
|
224
|
+
| Large text (≥18pt regular or ≥14pt bold) | **3:1** | 4.5:1 |
|
|
225
|
+
| Non-text interactive elements | **3:1** | — |
|
|
226
|
+
| State indicators (checkbox border, toggle track) | **3:1** | — |
|
|
227
|
+
| Decorative text with no informational value | None required | — |
|
|
228
|
+
| Placeholder text | **4.5:1** (must be readable) | — |
|
|
229
|
+
|
|
230
|
+
### Pass Criteria
|
|
231
|
+
|
|
232
|
+
- [ ] All body text meets 4.5:1 in both light and dark mode
|
|
233
|
+
- [ ] Large text meets 3:1 in both light and dark mode
|
|
234
|
+
- [ ] All interactive element borders, focus indicators, and state markers meet 3:1
|
|
235
|
+
- [ ] Placeholder text meets 4.5:1 (visible but distinct from entered text)
|
|
236
|
+
- [ ] Test passes with Bold Text AND Increase Contrast both enabled
|
|
237
|
+
- [ ] Contrast verified with Accessibility Inspector contrast checker or equivalent tool
|
|
238
|
+
|
|
239
|
+
### Key APIs
|
|
240
|
+
|
|
241
|
+
```swift
|
|
242
|
+
// SwiftUI — semantic colors automatically adapt contrast
|
|
243
|
+
@Environment(\.colorSchemeContrast) var contrast
|
|
244
|
+
let increaseContrast = (contrast == .increased)
|
|
245
|
+
|
|
246
|
+
// Example: use thicker borders when contrast is increased
|
|
247
|
+
RoundedRectangle(cornerRadius: 8)
|
|
248
|
+
.stroke(
|
|
249
|
+
increaseContrast ? Color(.label) : Color(.separator),
|
|
250
|
+
lineWidth: increaseContrast ? 2 : 1
|
|
251
|
+
)
|
|
252
|
+
|
|
253
|
+
// UIKit
|
|
254
|
+
UIAccessibility.isDarkerSystemColorsEnabled
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
## 7. Reduced Motion
|
|
260
|
+
|
|
261
|
+
**What it is:** Users who experience vestibular disorders disable motion to avoid nausea and dizziness.
|
|
262
|
+
|
|
263
|
+
### Pass Criteria
|
|
264
|
+
|
|
265
|
+
- [ ] Parallax effects, depth simulation, and animated blur are disabled
|
|
266
|
+
- [ ] Spinning, vortex, or multi-axis animations are removed or replaced
|
|
267
|
+
- [ ] Auto-advancing carousels and slideshows stop or provide manual control
|
|
268
|
+
- [ ] Meaningful animations (those that convey information) are replaced — not removed — with dissolve/fade/color shift
|
|
269
|
+
- [ ] Purely decorative animations are removed entirely
|
|
270
|
+
- [ ] System setting is detected automatically (no in-app setting required to pass)
|
|
271
|
+
|
|
272
|
+
### Decision Rule
|
|
273
|
+
|
|
274
|
+
**Decorative animation** (bouncing logo, particle effect, background ripple): **Remove entirely.**
|
|
275
|
+
|
|
276
|
+
**Functional animation** (card slides to show it's saved, view zooms to show hierarchy): **Replace** with a motion-free equivalent (fade, color change, highlight). Never remove — removing breaks comprehension.
|
|
277
|
+
|
|
278
|
+
### Key APIs
|
|
279
|
+
|
|
280
|
+
| Feature | SwiftUI | UIKit | watchOS |
|
|
281
|
+
|---|---|---|---|
|
|
282
|
+
| Detect | `@Environment(\.accessibilityReduceMotion)` | `UIAccessibility.isReduceMotionEnabled` | `WKAccessibilityIsReduceMotionEnabled()` |
|
|
283
|
+
| Observe | `onChange(of: reduceMotion)` | `UIAccessibility.reduceMotionStatusDidChangeNotification` | `WKAccessibilityReduceMotionStatusDidChange` |
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## 8. Captions
|
|
288
|
+
|
|
289
|
+
**What it is:** Subtitles and captions for video and audio content, for deaf and hard-of-hearing users.
|
|
290
|
+
|
|
291
|
+
### Pass Criteria
|
|
292
|
+
|
|
293
|
+
- [ ] Captions are enabled automatically when the system "Closed Captions + SDH" setting is on
|
|
294
|
+
- [ ] All dialogue in first-party video is captioned
|
|
295
|
+
- [ ] Sound effects relevant to understanding are captioned (SDH format)
|
|
296
|
+
- [ ] Captions for third-party content show a CC or SDH badge indicator
|
|
297
|
+
- [ ] Text transcripts available for audio-only content
|
|
298
|
+
- [ ] Caption appearance follows system preferences (size, color, font)
|
|
299
|
+
- [ ] Do not claim if the app has no video or audio content
|
|
300
|
+
|
|
301
|
+
### Key APIs
|
|
302
|
+
|
|
303
|
+
| Feature | API |
|
|
304
|
+
|---|---|
|
|
305
|
+
| Auto caption support | Use `AVPlayerViewController` — handles everything automatically |
|
|
306
|
+
| Check system setting | `MACaptionAppearanceGetDisplayType(.user)` |
|
|
307
|
+
| Select caption track | `AVMediaSelectionGroup` with `.legible` characteristic |
|
|
308
|
+
| SDH characteristic | `AVMediaCharacteristic.isSDH` |
|
|
309
|
+
| Custom player | Select track when `MACaptionAppearanceGetDisplayType` returns `.alwaysOn` |
|
|
310
|
+
|
|
311
|
+
---
|
|
312
|
+
|
|
313
|
+
## 9. Audio Descriptions
|
|
314
|
+
|
|
315
|
+
**What it is:** Narration of visual content in video for blind users.
|
|
316
|
+
|
|
317
|
+
### Pass Criteria
|
|
318
|
+
|
|
319
|
+
- [ ] Audio Descriptions track activates automatically when system AD setting is on
|
|
320
|
+
- [ ] All first-party video visual actions, scene changes, and on-screen text are described
|
|
321
|
+
- [ ] Game interstitials and cut scenes are covered
|
|
322
|
+
- [ ] Third-party content with AD shows an "AD" badge indicator
|
|
323
|
+
- [ ] Do not claim support if very little described content is available
|
|
324
|
+
- [ ] Do not claim if the app has no video content
|
|
325
|
+
|
|
326
|
+
### Key APIs
|
|
327
|
+
|
|
328
|
+
| Feature | API |
|
|
329
|
+
|---|---|
|
|
330
|
+
| Auto AD support | Use `AVPlayerViewController` — selects AD track automatically |
|
|
331
|
+
| Detect AD track | `AVMediaSelectionGroup` with `.describesVideoForAccessibility` characteristic |
|
|
332
|
+
| Show "AD" badge | Check track exists → display badge in custom player UI |
|
|
333
|
+
| Audio session | `.spokenAudio` mode with `.duckOthers` to coexist with other audio |
|
|
334
|
+
|
|
335
|
+
---
|
|
336
|
+
|
|
337
|
+
## Evaluation Matrix Template
|
|
338
|
+
|
|
339
|
+
Use this table before submitting a Nutrition Label. Mark each common task as Pass (✅), Fail (❌), or Not Applicable (—).
|
|
340
|
+
|
|
341
|
+
| Common Task | VoiceOver | Voice Control | Larger Text | Dark Mode | No Color | Contrast | Motion | Captions | Audio Desc |
|
|
342
|
+
|---|---|---|---|---|---|---|---|---|---|
|
|
343
|
+
| App launch / onboarding | | | | | | | | | |
|
|
344
|
+
| Login / authentication | | | | | | | | | |
|
|
345
|
+
| Core primary feature | | | | | | | | | |
|
|
346
|
+
| Search / browse content | | | | | | | | | |
|
|
347
|
+
| Settings / preferences | | | | | | | | | |
|
|
348
|
+
| Purchase / transaction | | | | | | | | | |
|
|
349
|
+
| Media playback | | | | | | | | — |
|
|
350
|
+
|
|
351
|
+
**All cells in a column must be ✅ or — to claim that Nutrition Label.**
|
|
352
|
+
|
|
353
|
+
---
|
|
354
|
+
|
|
355
|
+
## Accuracy and App Review
|
|
356
|
+
|
|
357
|
+
The platform review process validates Nutrition Label claims during app review. Inaccurate declarations violate **App Store Review Guideline 2.3**.
|
|
358
|
+
|
|
359
|
+
- Incomplete support (e.g., VoiceOver works for browsing but not checkout) → do not claim
|
|
360
|
+
- Partial compliance (e.g., captions for some videos but not all) → do not claim
|
|
361
|
+
- Test on a real device, not only in Simulator or Previews
|
|
362
|
+
- Re-evaluate after every major release that touches UI or media
|