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,29 @@
|
|
|
1
|
+
# XcodeBuildMCP — MCP config snippet
|
|
2
|
+
|
|
3
|
+
Add the following under the `mcpServers` object in `~/.claude.json` (user-wide) or `./.mcp.json` (project-scoped).
|
|
4
|
+
|
|
5
|
+
```json
|
|
6
|
+
{
|
|
7
|
+
"mcpServers": {
|
|
8
|
+
"xcodebuildmcp": {
|
|
9
|
+
"command": "npx",
|
|
10
|
+
"args": ["-y", "xcodebuildmcp@latest"]
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## What it gives you
|
|
17
|
+
- Discover schemes, targets, and destinations from `.xcodeproj` / `.xcworkspace`
|
|
18
|
+
- Build, clean, archive via `xcodebuild` with structured output
|
|
19
|
+
- Boot, shutdown, and install apps on simulators
|
|
20
|
+
- Toggle target capabilities (Push, HealthKit, App Groups, iCloud, Sign in with Apple)
|
|
21
|
+
- Read and patch Info.plist / entitlements plists safely
|
|
22
|
+
|
|
23
|
+
## Verification
|
|
24
|
+
After adding and restarting Claude Code, confirm tools prefixed `mcp__xcodebuildmcp__` appear in the tool list.
|
|
25
|
+
|
|
26
|
+
## Troubleshooting
|
|
27
|
+
- **`npx` missing** — install Node 20+ (`brew install node`).
|
|
28
|
+
- **Server never initializes** — check Claude Code logs; usually first-run `npx` download stalled behind a proxy.
|
|
29
|
+
- **Multiple Xcode installs** — run `sudo xcode-select -s /Applications/Xcode.app` so the MCP picks up 26.3.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Thomas Ricouard
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ios-debugger-agent
|
|
3
|
+
description: Use XcodeBuildMCP to build, run, launch, and debug the current iOS project on a booted simulator. Trigger when asked to run an iOS app, interact with the simulator UI, inspect on-screen state, capture logs/console output, or diagnose runtime behavior using XcodeBuildMCP tools.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# iOS Debugger Agent
|
|
7
|
+
|
|
8
|
+
> scope=inner dev-loop; Maestro owns E2E
|
|
9
|
+
|
|
10
|
+
## Overview
|
|
11
|
+
Use XcodeBuildMCP to build and run the current project scheme on a booted iOS simulator, interact with the UI, and capture logs. Prefer the MCP tools for simulator control, logs, and view inspection.
|
|
12
|
+
|
|
13
|
+
## Core Workflow
|
|
14
|
+
Follow this sequence unless the user asks for a narrower action.
|
|
15
|
+
|
|
16
|
+
### 1) Discover the booted simulator
|
|
17
|
+
- Call `mcp__XcodeBuildMCP__list_sims` and select the simulator with state `Booted`.
|
|
18
|
+
- If none are booted, ask the user to boot one (do not boot automatically unless asked).
|
|
19
|
+
|
|
20
|
+
### 2) Set session defaults
|
|
21
|
+
- Call `mcp__XcodeBuildMCP__session-set-defaults` with:
|
|
22
|
+
- `projectPath` or `workspacePath` (whichever the repo uses)
|
|
23
|
+
- `scheme` for the current app
|
|
24
|
+
- `simulatorId` from the booted device
|
|
25
|
+
- Optional: `configuration: "Debug"`, `useLatestOS: true`
|
|
26
|
+
|
|
27
|
+
### 3) Build + run (when requested)
|
|
28
|
+
- Call `mcp__XcodeBuildMCP__build_run_sim`.
|
|
29
|
+
- **If the build fails**, check the error output and retry (optionally with `preferXcodebuild: true`) or escalate to the user before attempting any UI interaction.
|
|
30
|
+
- **After a successful build**, verify the app launched by calling `mcp__XcodeBuildMCP__describe_ui` or `mcp__XcodeBuildMCP__screenshot` before proceeding to UI interaction.
|
|
31
|
+
- If the app is already built and only launch is requested, use `mcp__XcodeBuildMCP__launch_app_sim`.
|
|
32
|
+
- If bundle id is unknown:
|
|
33
|
+
1) `mcp__XcodeBuildMCP__get_sim_app_path`
|
|
34
|
+
2) `mcp__XcodeBuildMCP__get_app_bundle_id`
|
|
35
|
+
|
|
36
|
+
## UI Interaction & Debugging
|
|
37
|
+
Use these when asked to inspect or interact with the running app.
|
|
38
|
+
|
|
39
|
+
- **Describe UI**: `mcp__XcodeBuildMCP__describe_ui` before tapping or swiping.
|
|
40
|
+
- **Tap**: `mcp__XcodeBuildMCP__tap` (prefer `id` or `label`; use coordinates only if needed).
|
|
41
|
+
- **Type**: `mcp__XcodeBuildMCP__type_text` after focusing a field.
|
|
42
|
+
- **Gestures**: `mcp__XcodeBuildMCP__gesture` for common scrolls and edge swipes.
|
|
43
|
+
- **Screenshot**: `mcp__XcodeBuildMCP__screenshot` for visual confirmation.
|
|
44
|
+
|
|
45
|
+
## Logs & Console Output
|
|
46
|
+
- Start logs: `mcp__XcodeBuildMCP__start_sim_log_cap` with the app bundle id.
|
|
47
|
+
- Stop logs: `mcp__XcodeBuildMCP__stop_sim_log_cap` and summarize important lines.
|
|
48
|
+
- For console output, set `captureConsole: true` and relaunch if required.
|
|
49
|
+
|
|
50
|
+
## Troubleshooting
|
|
51
|
+
- If build fails, ask whether to retry with `preferXcodebuild: true`.
|
|
52
|
+
- If the wrong app launches, confirm the scheme and bundle id.
|
|
53
|
+
- If UI elements are not hittable, re-run `describe_ui` after layout changes.
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
Vendored from: https://github.com/Dimillian/Skills/tree/main/ios-debugger-agent
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ios-entitlements-generator
|
|
3
|
+
description: Generates a .entitlements plist from ios_features flags and syncs Xcode capability toggles via XcodeBuildMCP. Delegates the capability→entitlement table to protocols/ios-frameworks-map.md §4. Use during Phase 4 Foundation.
|
|
4
|
+
version: 0.2.0
|
|
5
|
+
status: ready
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# iOS Entitlements Generator (Phase 4)
|
|
9
|
+
|
|
10
|
+
## Purpose
|
|
11
|
+
Turns the `ios_features` checklist in `.build-state.md` into a correct `.entitlements` plist and syncs the Xcode capability UI. Removes the foot-gun of hand-editing entitlement keys.
|
|
12
|
+
|
|
13
|
+
## Authoritative mapping source
|
|
14
|
+
**This skill does NOT maintain its own capability→entitlement table.** It DELEGATES to `protocols/ios-frameworks-map.md` **§4 Entitlement Mapping**. Always consult that table at generation time — it is the single source of truth and is kept in sync with iOS SDK releases.
|
|
15
|
+
|
|
16
|
+
## When this fires
|
|
17
|
+
- Phase 4 Foundation, after architecture decisions finalized
|
|
18
|
+
- A new capability is added mid-project (Push, App Groups, CloudKit, …)
|
|
19
|
+
- Pre-archive audit to confirm entitlements match used capabilities
|
|
20
|
+
|
|
21
|
+
## Inputs
|
|
22
|
+
- `ios_features` object from `docs/plans/.build-state.md` — boolean flags like `push`, `cloudKit`, `healthKit`, `appGroups`, `signInWithApple`, `associatedDomains`, `keychainSharing`, `weatherKit`, `musicKit`, `networkExtension`
|
|
23
|
+
- `app_groups_ids` (string[], optional)
|
|
24
|
+
- `associated_domains` (string[], optional — e.g. `applinks:app.example.com`)
|
|
25
|
+
- `icloud_container_ids` (string[], optional)
|
|
26
|
+
- `background_modes` (string[], optional — `fetch`, `remote-notification`, `processing`, `audio`, `location`, `bluetooth-central`, `voip`)
|
|
27
|
+
|
|
28
|
+
## Outputs
|
|
29
|
+
- `<ProjectName>.entitlements` plist at the target's Signing/Capabilities dir
|
|
30
|
+
- `docs/plans/entitlements-summary.md` — diff of added/removed keys, per-capability rationale
|
|
31
|
+
- XcodeBuildMCP capability toggles (Push, HealthKit, CloudKit, App Groups, Sign in with Apple) flipped on in the target UI
|
|
32
|
+
|
|
33
|
+
## Workflow
|
|
34
|
+
1. **Read state** — load `ios_features` from `docs/plans/.build-state.md`.
|
|
35
|
+
2. **Resolve entitlements** — for each flag set `true`, look up the entitlement key(s) in `protocols/ios-frameworks-map.md §4`. Do not invent keys; if the table doesn't cover it, query `apple-docs-mcp` and surface as a TODO in the summary.
|
|
36
|
+
3. **Merge plist immutably** — read existing `<ProjectName>.entitlements` if present, compute new dict as a merge (never clobber user-added keys), write a new file. Preserve key ordering for clean diffs.
|
|
37
|
+
4. **Sync Xcode capability UI** — for capabilities that require target-level toggles (Push, HealthKit, CloudKit, App Groups, Sign in with Apple, Background Modes), call XcodeBuildMCP's capability-toggle tool so the Signing & Capabilities tab matches the plist.
|
|
38
|
+
5. **Emit summary** — write `entitlements-summary.md` listing each capability, keys added, and values requiring user input (team ID, container IDs, domain list).
|
|
39
|
+
|
|
40
|
+
## Validation
|
|
41
|
+
- Every key in the output must trace back to a row in `ios-frameworks-map.md §4` or an explicit user-provided value.
|
|
42
|
+
- `aps-environment` must be `development` in debug configs, `production` in release.
|
|
43
|
+
- Associated domains must be prefixed (`applinks:`, `webcredentials:`, `activitycontinuation:`).
|
|
44
|
+
- iCloud container IDs must start with `iCloud.` and match the CloudKit dashboard.
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
_Part of buildanything iOS mode. Delegates to `protocols/ios-frameworks-map.md §4`. See `protocols/ios-context.md` for persona._
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ios-info-plist-hardening
|
|
3
|
+
description: Generates and audits Info.plist defaults (usage-description strings, URL schemes, background modes, scene manifest) AND produces PrivacyInfo.xcprivacy so the app clears App Review and launches cleanly. Use during Phase 4 Foundation on every iOS project.
|
|
4
|
+
version: 0.2.0
|
|
5
|
+
status: ready
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# iOS Info.plist Hardening (Phase 4)
|
|
9
|
+
|
|
10
|
+
## Purpose
|
|
11
|
+
Ensures `Info.plist` carries every required usage-description string, correctly registered URL schemes, declared background modes, and a sane SwiftUI scene manifest. Also emits the iOS 17+ `PrivacyInfo.xcprivacy` manifest. Catches "rejected because NSCameraUsageDescription is missing" before it happens.
|
|
12
|
+
|
|
13
|
+
## When this fires
|
|
14
|
+
- Phase 4 Foundation (always, for iOS projects)
|
|
15
|
+
- Whenever a new API that requires a usage-description is added
|
|
16
|
+
- Pre-archive audit
|
|
17
|
+
|
|
18
|
+
## Inputs
|
|
19
|
+
- `ios_features` from `docs/plans/.build-state.md` (boolean flags: camera, microphone, location_when_in_use, location_always, photos, contacts, calendar, reminders, motion, health, bluetooth, localNetwork, tracking, faceID, music, homeKit, siri, nearbyInteraction, speech, appleMusic)
|
|
20
|
+
- `url_schemes` (string[], optional)
|
|
21
|
+
- `background_modes` (string[], optional)
|
|
22
|
+
- `app_lifecycle` (enum: `swiftui_app` | `uikit_appdelegate`, default `swiftui_app`)
|
|
23
|
+
- `tracking_required_reasons` (object, optional) — required-reason API categories in use
|
|
24
|
+
- `collects_tracking_data` (bool, default false)
|
|
25
|
+
|
|
26
|
+
## Outputs
|
|
27
|
+
- Updated `Info.plist` with merged keys (via XcodeBuildMCP)
|
|
28
|
+
- `PrivacyInfo.xcprivacy` at target root (iOS 17+)
|
|
29
|
+
- Audit report `docs/plans/plist-audit.md`: missing keys, stale keys, weak description strings
|
|
30
|
+
|
|
31
|
+
## Required usage-description keys
|
|
32
|
+
|
|
33
|
+
| Info.plist key | Triggered by |
|
|
34
|
+
|---|---|
|
|
35
|
+
| `NSCameraUsageDescription` | Camera / AVFoundation / Vision / ARKit / VisionKit |
|
|
36
|
+
| `NSMicrophoneUsageDescription` | Microphone / Speech / ShazamKit |
|
|
37
|
+
| `NSPhotoLibraryUsageDescription` | PhotoKit read |
|
|
38
|
+
| `NSPhotoLibraryAddUsageDescription` | Writing to photo library |
|
|
39
|
+
| `NSLocationWhenInUseUsageDescription` | CoreLocation foreground |
|
|
40
|
+
| `NSLocationAlwaysAndWhenInUseUsageDescription` | CoreLocation background |
|
|
41
|
+
| `NSContactsUsageDescription` | Contacts |
|
|
42
|
+
| `NSCalendarsUsageDescription` / `NSCalendarsFullAccessUsageDescription` | EventKit (iOS 17+ split) |
|
|
43
|
+
| `NSRemindersUsageDescription` / `NSRemindersFullAccessUsageDescription` | EventKit reminders |
|
|
44
|
+
| `NSMotionUsageDescription` | CoreMotion |
|
|
45
|
+
| `NSHealthShareUsageDescription` | HealthKit read |
|
|
46
|
+
| `NSHealthUpdateUsageDescription` | HealthKit write |
|
|
47
|
+
| `NSSpeechRecognitionUsageDescription` | Speech |
|
|
48
|
+
| `NSBluetoothAlwaysUsageDescription` | CoreBluetooth |
|
|
49
|
+
| `NSLocalNetworkUsageDescription` | Bonjour / Multipeer / Network framework LAN |
|
|
50
|
+
| `NSUserTrackingUsageDescription` | AppTrackingTransparency / IDFA |
|
|
51
|
+
| `NSFaceIDUsageDescription` | LocalAuthentication biometrics |
|
|
52
|
+
| `NSAppleMusicUsageDescription` | MediaPlayer / MusicKit |
|
|
53
|
+
| `NSHomeKitUsageDescription` | HomeKit |
|
|
54
|
+
| `NSSiriUsageDescription` | SiriKit / App Intents w/ Siri |
|
|
55
|
+
| `NSNearbyInteractionUsageDescription` | NearbyInteraction (UWB) |
|
|
56
|
+
|
|
57
|
+
Usage descriptions must be **specific and user-facing** ("To scan receipts with your camera" beats "Needs camera"). Reject strings under 20 characters or containing placeholder text.
|
|
58
|
+
|
|
59
|
+
## URL scheme registration template
|
|
60
|
+
```xml
|
|
61
|
+
<key>CFBundleURLTypes</key>
|
|
62
|
+
<array>
|
|
63
|
+
<dict>
|
|
64
|
+
<key>CFBundleURLName</key>
|
|
65
|
+
<string>com.acme.habitforge</string>
|
|
66
|
+
<key>CFBundleURLSchemes</key>
|
|
67
|
+
<array>
|
|
68
|
+
<string>habitforge</string>
|
|
69
|
+
</array>
|
|
70
|
+
<key>CFBundleTypeRole</key>
|
|
71
|
+
<string>Editor</string>
|
|
72
|
+
</dict>
|
|
73
|
+
</array>
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## UIBackgroundModes enumeration
|
|
77
|
+
Valid values (set only what the app actually uses):
|
|
78
|
+
- `fetch` — background app refresh
|
|
79
|
+
- `remote-notification` — silent push wake
|
|
80
|
+
- `audio` — background audio playback
|
|
81
|
+
- `location` — continuous location updates
|
|
82
|
+
- `bluetooth-central` — BLE central role
|
|
83
|
+
- `bluetooth-peripheral` — BLE peripheral role
|
|
84
|
+
- `voip` — VoIP calls
|
|
85
|
+
- `external-accessory`
|
|
86
|
+
- `processing` — BGProcessingTask (long-running)
|
|
87
|
+
- `nearby-interaction`
|
|
88
|
+
|
|
89
|
+
## Scene manifest (SwiftUI app lifecycle default)
|
|
90
|
+
```xml
|
|
91
|
+
<key>UIApplicationSceneManifest</key>
|
|
92
|
+
<dict>
|
|
93
|
+
<key>UIApplicationSupportsMultipleScenes</key>
|
|
94
|
+
<true/>
|
|
95
|
+
<key>UISceneConfigurations</key>
|
|
96
|
+
<dict/>
|
|
97
|
+
</dict>
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## PrivacyInfo.xcprivacy (iOS 17+ — this skill owns creation at Phase 4)
|
|
101
|
+
Generate with four top-level keys:
|
|
102
|
+
|
|
103
|
+
- **`NSPrivacyTracking`** — bool; true only if `collects_tracking_data` is true.
|
|
104
|
+
- **`NSPrivacyTrackingDomains`** — array of tracking domains contacted (only if tracking is true).
|
|
105
|
+
- **`NSPrivacyCollectedDataTypes`** — array of dicts, one per data category collected, each with: `NSPrivacyCollectedDataType`, `NSPrivacyCollectedDataTypeLinked`, `NSPrivacyCollectedDataTypeTracking`, `NSPrivacyCollectedDataTypePurposes`.
|
|
106
|
+
- **`NSPrivacyAccessedAPITypes`** — array of required-reason API declarations. Each entry has `NSPrivacyAccessedAPIType` + `NSPrivacyAccessedAPITypeReasons`. Common categories:
|
|
107
|
+
- `NSPrivacyAccessedAPICategoryFileTimestamp`
|
|
108
|
+
- `NSPrivacyAccessedAPICategorySystemBootTime`
|
|
109
|
+
- `NSPrivacyAccessedAPICategoryDiskSpace`
|
|
110
|
+
- `NSPrivacyAccessedAPICategoryActiveKeyboards`
|
|
111
|
+
- `NSPrivacyAccessedAPICategoryUserDefaults`
|
|
112
|
+
|
|
113
|
+
Detect required-reason API usage by scanning code for patterns (e.g. `FileManager` attributes, `UserDefaults` access, `UIDevice` boot time). Emit a declaration for each detected category with the appropriate reason code.
|
|
114
|
+
|
|
115
|
+
## Workflow
|
|
116
|
+
1. **Read state** — load `ios_features` flags from `docs/plans/.build-state.md`.
|
|
117
|
+
2. **Select required keys** — for each true flag, resolve to usage-description key(s) from the table above (cross-check `ios-frameworks-map.md §4` column "Info.plist keys").
|
|
118
|
+
3. **Scan code for required-reason APIs** — grep for `FileManager`, `UserDefaults`, `systemUptime`, `.systemFreeSize`, keyboard APIs; build privacy-manifest entries.
|
|
119
|
+
4. **Generate patches** — compute Info.plist additions and PrivacyInfo.xcprivacy content.
|
|
120
|
+
5. **Write via XcodeBuildMCP** — merge Info.plist (never clobber user keys), create/overwrite `PrivacyInfo.xcprivacy` at target root.
|
|
121
|
+
6. **Emit audit report** — `docs/plans/plist-audit.md` listing additions, weak descriptions, and any manual follow-ups (e.g. "add tracking domain list").
|
|
122
|
+
|
|
123
|
+
## Validation
|
|
124
|
+
- Every usage-description string is ≥ 20 chars and references the concrete app action.
|
|
125
|
+
- No placeholder strings (`TODO`, `lorem`, `test`, `permission required`).
|
|
126
|
+
- Background modes in plist match entitlements and actual runtime usage.
|
|
127
|
+
- PrivacyInfo.xcprivacy includes a required-reason entry for every detected API category — missing entries block App Store submission.
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
_Part of buildanything iOS mode. See `protocols/ios-context.md` for persona. Cross-references `protocols/ios-frameworks-map.md §4`._
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ios-maestro-flow-author
|
|
3
|
+
description: Generates Maestro .yaml E2E flow files from natural-language user journeys. Use during /verify iOS branch whenever a critical user journey needs automated coverage.
|
|
4
|
+
version: 0.2.0
|
|
5
|
+
status: ready
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# iOS Maestro Flow Author (Phase 6, /verify twin)
|
|
9
|
+
|
|
10
|
+
## Purpose
|
|
11
|
+
Converts a plain-English user journey ("sign up, create first habit, mark complete") into a runnable Maestro flow YAML, ready to execute against a booted simulator via `maestro test`.
|
|
12
|
+
|
|
13
|
+
## When this fires
|
|
14
|
+
- `/verify` iOS branch
|
|
15
|
+
- A new critical user journey needs E2E coverage
|
|
16
|
+
- Regression: existing flow drifted from current UI
|
|
17
|
+
|
|
18
|
+
## Inputs
|
|
19
|
+
- `journey_nl` (string) — natural-language user journey
|
|
20
|
+
- `app_id` (string) — bundle identifier under test (e.g. `com.acme.HabitForge`)
|
|
21
|
+
- `test_name` (string, optional) — defaults to slugified journey
|
|
22
|
+
|
|
23
|
+
## Outputs
|
|
24
|
+
- `maestro/<test_name>.yaml`
|
|
25
|
+
- Dry-run summary (commands emitted, accessibility-id assumptions, skipped steps)
|
|
26
|
+
|
|
27
|
+
## Workflow
|
|
28
|
+
1. Parse `journey_nl` into ordered discrete user actions (one sentence = one action group).
|
|
29
|
+
2. Match each action to a Maestro command pattern from the cheat-sheet below; prefer accessibility IDs over visible text when the app exposes them.
|
|
30
|
+
3. Emit YAML with `appId: {app_id}` header and one command per step.
|
|
31
|
+
4. Write to `maestro/<test_name>.yaml`.
|
|
32
|
+
5. Validate via `maestro test maestro/<test_name>.yaml` on a booted simulator (Maestro has no true `--dry-run`; shortest validation is to run it once against the sim).
|
|
33
|
+
|
|
34
|
+
## Maestro cheat-sheet (10 core commands)
|
|
35
|
+
|
|
36
|
+
```yaml
|
|
37
|
+
- launchApp # launches the appId declared in the header
|
|
38
|
+
- tapOn: "Sign Up" # tap element by visible text
|
|
39
|
+
- tapOn:
|
|
40
|
+
id: "emailField" # tap by accessibility identifier (preferred)
|
|
41
|
+
- assertVisible: "Welcome back" # assert text/element visible, fails flow if not
|
|
42
|
+
- inputText: "alice@example.com" # types into currently focused field
|
|
43
|
+
- scroll # scroll down on current screen
|
|
44
|
+
- swipe:
|
|
45
|
+
direction: LEFT # swipe: LEFT | RIGHT | UP | DOWN
|
|
46
|
+
- hideKeyboard # dismiss soft keyboard
|
|
47
|
+
- back # system back / pop navigation
|
|
48
|
+
- pressKey: Enter # hardware key: Enter, Backspace, Home, Lock
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
See `references/` for five copy-and-adapt templates covering the 90% cases.
|
|
52
|
+
|
|
53
|
+
## Authoring rules
|
|
54
|
+
- Always start with `- launchApp`.
|
|
55
|
+
- Prefer `id:` selectors (stable) over raw text (fragile to copy changes).
|
|
56
|
+
- After every `inputText`, insert `hideKeyboard` before the next `tapOn` to avoid the keyboard intercepting taps.
|
|
57
|
+
- End every flow with at least one `assertVisible` that confirms the user reached the destination screen.
|
|
58
|
+
- Keep flows single-purpose — one user journey per file. Compose with `runFlow:` in a parent flow if needed.
|
|
59
|
+
|
|
60
|
+
## Reference templates
|
|
61
|
+
- `references/onboarding-flow.yaml` — launch → splash → signup → main screen
|
|
62
|
+
- `references/tap-and-assert.yaml` — minimal tap + assertVisible pattern
|
|
63
|
+
- `references/input-and-scroll.yaml` — form input + scroll + tap
|
|
64
|
+
- `references/modal-and-dismiss.yaml` — open sheet, interact, dismiss
|
|
65
|
+
- `references/tab-navigation.yaml` — switch tabs, verify each screen
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
_Part of buildanything iOS mode. See `protocols/ios-context.md` for Senior iOS Engineer persona._
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Form fill + scroll + submit
|
|
2
|
+
appId: com.acme.HabitForge
|
|
3
|
+
---
|
|
4
|
+
- launchApp
|
|
5
|
+
- tapOn: "Add Habit"
|
|
6
|
+
- assertVisible: "New Habit"
|
|
7
|
+
- tapOn:
|
|
8
|
+
id: "habitNameField"
|
|
9
|
+
- inputText: "Drink water"
|
|
10
|
+
- hideKeyboard
|
|
11
|
+
- tapOn:
|
|
12
|
+
id: "notesField"
|
|
13
|
+
- inputText: "Eight glasses per day, spread across mornings and afternoons"
|
|
14
|
+
- hideKeyboard
|
|
15
|
+
- scroll
|
|
16
|
+
- tapOn: "Save"
|
|
17
|
+
- assertVisible: "Drink water"
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Open modal sheet, interact, dismiss
|
|
2
|
+
appId: com.acme.HabitForge
|
|
3
|
+
---
|
|
4
|
+
- launchApp
|
|
5
|
+
- tapOn: "Settings"
|
|
6
|
+
- assertVisible: "Preferences"
|
|
7
|
+
- tapOn: "Appearance"
|
|
8
|
+
- assertVisible: "Theme"
|
|
9
|
+
- tapOn: "Dark"
|
|
10
|
+
- swipe:
|
|
11
|
+
direction: DOWN
|
|
12
|
+
- assertVisible: "Preferences"
|
|
13
|
+
- back
|
|
14
|
+
- assertVisible: "Your Habits"
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Onboarding: launch -> splash -> sign up -> main screen
|
|
2
|
+
appId: com.acme.HabitForge
|
|
3
|
+
---
|
|
4
|
+
- launchApp
|
|
5
|
+
- assertVisible: "Welcome"
|
|
6
|
+
- tapOn: "Sign Up"
|
|
7
|
+
- assertVisible: "Create your account"
|
|
8
|
+
- tapOn:
|
|
9
|
+
id: "emailField"
|
|
10
|
+
- inputText: "alice@example.com"
|
|
11
|
+
- tapOn:
|
|
12
|
+
id: "passwordField"
|
|
13
|
+
- inputText: "hunter2hunter2"
|
|
14
|
+
- hideKeyboard
|
|
15
|
+
- tapOn: "Continue"
|
|
16
|
+
- assertVisible: "Your Habits"
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Tab bar navigation — verify each tab loads its root screen
|
|
2
|
+
appId: com.acme.HabitForge
|
|
3
|
+
---
|
|
4
|
+
- launchApp
|
|
5
|
+
- assertVisible: "Your Habits"
|
|
6
|
+
- tapOn: "Stats"
|
|
7
|
+
- assertVisible: "Weekly Progress"
|
|
8
|
+
- tapOn: "Journal"
|
|
9
|
+
- assertVisible: "Entries"
|
|
10
|
+
- tapOn: "Settings"
|
|
11
|
+
- assertVisible: "Preferences"
|
|
12
|
+
- tapOn: "Habits"
|
|
13
|
+
- assertVisible: "Your Habits"
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Pasquale Vittoriosi
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|