@devo-bmad-custom/agent-orchestration 1.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/bin/bmad.js +36 -0
- package/lib/cli.js +137 -0
- package/lib/filter.js +73 -0
- package/lib/installer.js +787 -0
- package/package.json +30 -0
- package/src/.agents/skills/audit-website/README.md +20 -0
- package/src/.agents/skills/audit-website/SKILL.md +470 -0
- package/src/.agents/skills/audit-website/agents/openai.yaml +6 -0
- package/src/.agents/skills/audit-website/assets/icon-small.svg +41 -0
- package/src/.agents/skills/audit-website/references/OUTPUT-FORMAT.md +250 -0
- package/src/.agents/skills/clean-code-standards/SKILL.md +105 -0
- package/src/.agents/skills/excalidraw-dark-standard/SKILL.md +282 -0
- package/src/.agents/skills/excalidraw-diagram-generator/SKILL.md +613 -0
- package/src/.agents/skills/excalidraw-diagram-generator/references/element-types.md +497 -0
- package/src/.agents/skills/excalidraw-diagram-generator/references/excalidraw-schema.md +350 -0
- package/src/.agents/skills/excalidraw-diagram-generator/scripts/README.md +193 -0
- package/src/.agents/skills/excalidraw-diagram-generator/scripts/add-arrow.py +312 -0
- package/src/.agents/skills/excalidraw-diagram-generator/scripts/add-icon-to-diagram.py +404 -0
- package/src/.agents/skills/excalidraw-diagram-generator/scripts/split-excalidraw-library.py +183 -0
- package/src/.agents/skills/excalidraw-diagram-generator/templates/business-flow-swimlane-template.excalidraw +334 -0
- package/src/.agents/skills/excalidraw-diagram-generator/templates/class-diagram-template.excalidraw +558 -0
- package/src/.agents/skills/excalidraw-diagram-generator/templates/data-flow-diagram-template.excalidraw +279 -0
- package/src/.agents/skills/excalidraw-diagram-generator/templates/er-diagram-template.excalidraw +662 -0
- package/src/.agents/skills/excalidraw-diagram-generator/templates/flowchart-template.excalidraw +179 -0
- package/src/.agents/skills/excalidraw-diagram-generator/templates/mindmap-template.excalidraw +244 -0
- package/src/.agents/skills/excalidraw-diagram-generator/templates/relationship-template.excalidraw +145 -0
- package/src/.agents/skills/excalidraw-diagram-generator/templates/sequence-diagram-template.excalidraw +509 -0
- package/src/.agents/skills/frontend-responsive-design-standards/SKILL.md +434 -0
- package/src/.agents/skills/java-fundamentals/SKILL.md +116 -0
- package/src/.agents/skills/java-performance/SKILL.md +119 -0
- package/src/.agents/skills/next-best-practices/SKILL.md +153 -0
- package/src/.agents/skills/next-best-practices/async-patterns.md +87 -0
- package/src/.agents/skills/next-best-practices/bundling.md +180 -0
- package/src/.agents/skills/next-best-practices/data-patterns.md +297 -0
- package/src/.agents/skills/next-best-practices/debug-tricks.md +105 -0
- package/src/.agents/skills/next-best-practices/directives.md +73 -0
- package/src/.agents/skills/next-best-practices/error-handling.md +227 -0
- package/src/.agents/skills/next-best-practices/file-conventions.md +140 -0
- package/src/.agents/skills/next-best-practices/font.md +245 -0
- package/src/.agents/skills/next-best-practices/functions.md +108 -0
- package/src/.agents/skills/next-best-practices/hydration-error.md +91 -0
- package/src/.agents/skills/next-best-practices/image.md +173 -0
- package/src/.agents/skills/next-best-practices/metadata.md +301 -0
- package/src/.agents/skills/next-best-practices/parallel-routes.md +287 -0
- package/src/.agents/skills/next-best-practices/route-handlers.md +146 -0
- package/src/.agents/skills/next-best-practices/rsc-boundaries.md +159 -0
- package/src/.agents/skills/next-best-practices/runtime-selection.md +39 -0
- package/src/.agents/skills/next-best-practices/scripts.md +141 -0
- package/src/.agents/skills/next-best-practices/self-hosting.md +371 -0
- package/src/.agents/skills/next-best-practices/suspense-boundaries.md +67 -0
- package/src/.agents/skills/nextjs-app-router-patterns/SKILL.md +537 -0
- package/src/.agents/skills/postgresql-optimization/SKILL.md +404 -0
- package/src/.agents/skills/python-backend/SKILL.md +153 -0
- package/src/.agents/skills/python-fundamentals/SKILL.md +234 -0
- package/src/.agents/skills/python-performance/SKILL.md +404 -0
- package/src/.agents/skills/react-expert/SKILL.md +335 -0
- package/src/.agents/skills/redis-best-practices/SKILL.md +438 -0
- package/src/.agents/skills/security-best-practices/SKILL.md +288 -0
- package/src/.agents/skills/security-review/LICENSE +22 -0
- package/src/.agents/skills/security-review/SKILL.md +312 -0
- package/src/.agents/skills/security-review/infrastructure/docker.md +432 -0
- package/src/.agents/skills/security-review/languages/javascript.md +388 -0
- package/src/.agents/skills/security-review/languages/python.md +363 -0
- package/src/.agents/skills/security-review/references/api-security.md +519 -0
- package/src/.agents/skills/security-review/references/authentication.md +353 -0
- package/src/.agents/skills/security-review/references/authorization.md +372 -0
- package/src/.agents/skills/security-review/references/business-logic.md +443 -0
- package/src/.agents/skills/security-review/references/cryptography.md +329 -0
- package/src/.agents/skills/security-review/references/csrf.md +398 -0
- package/src/.agents/skills/security-review/references/data-protection.md +378 -0
- package/src/.agents/skills/security-review/references/deserialization.md +410 -0
- package/src/.agents/skills/security-review/references/error-handling.md +436 -0
- package/src/.agents/skills/security-review/references/file-security.md +457 -0
- package/src/.agents/skills/security-review/references/injection.md +259 -0
- package/src/.agents/skills/security-review/references/logging.md +433 -0
- package/src/.agents/skills/security-review/references/misconfiguration.md +435 -0
- package/src/.agents/skills/security-review/references/modern-threats.md +475 -0
- package/src/.agents/skills/security-review/references/ssrf.md +415 -0
- package/src/.agents/skills/security-review/references/supply-chain.md +405 -0
- package/src/.agents/skills/security-review/references/xss.md +336 -0
- package/src/.agents/skills/subagent-driven-development/SKILL.md +275 -0
- package/src/.agents/skills/subagent-driven-development/code-quality-reviewer-prompt.md +26 -0
- package/src/.agents/skills/subagent-driven-development/implementer-prompt.md +113 -0
- package/src/.agents/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
- package/src/.agents/skills/systematic-debugging/CREATION-LOG.md +119 -0
- package/src/.agents/skills/systematic-debugging/SKILL.md +296 -0
- package/src/.agents/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
- package/src/.agents/skills/systematic-debugging/condition-based-waiting.md +115 -0
- package/src/.agents/skills/systematic-debugging/defense-in-depth.md +122 -0
- package/src/.agents/skills/systematic-debugging/find-polluter.sh +63 -0
- package/src/.agents/skills/systematic-debugging/root-cause-tracing.md +169 -0
- package/src/.agents/skills/systematic-debugging/test-academic.md +14 -0
- package/src/.agents/skills/systematic-debugging/test-pressure-1.md +58 -0
- package/src/.agents/skills/systematic-debugging/test-pressure-2.md +68 -0
- package/src/.agents/skills/systematic-debugging/test-pressure-3.md +69 -0
- package/src/.agents/skills/typescript-best-practices/SKILL.md +373 -0
- package/src/.agents/skills/ui-ux-pro-custom/SKILL.md +348 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/charts.csv +26 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/colors.csv +97 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/icons.csv +101 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/SKILL.md +106 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/accessibility.md +475 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/animation.md +466 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/composition-locals.md +231 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/deprecated-patterns.md +323 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/lists-scrolling.md +400 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/modifiers.md +331 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/navigation.md +416 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/performance.md +446 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/side-effects.md +516 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/source-code/foundation-source.md +13327 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/source-code/material3-source.md +19097 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/source-code/navigation-source.md +2947 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/source-code/runtime-source.md +11316 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/source-code/ui-source.md +7896 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/state-management.md +377 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/styles-experimental.md +470 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/theming-material3.md +349 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/view-composition.md +595 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/landing.csv +31 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/mobile-ui-layout.md +654 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/products.csv +97 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/react-performance.csv +45 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/stacks/astro.csv +54 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/stacks/flutter.csv +53 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/stacks/html-tailwind.csv +56 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/stacks/jetpack-compose.csv +53 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/stacks/nextjs.csv +53 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/stacks/nuxt-ui.csv +51 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/stacks/nuxtjs.csv +59 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/stacks/react-native.csv +56 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/stacks/react.csv +54 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/stacks/shadcn.csv +61 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/stacks/svelte.csv +54 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/stacks/swiftui.csv +51 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/stacks/vue.csv +50 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/styles.csv +68 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/alarmkit/SKILL.md +438 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/alarmkit/references/alarmkit-patterns.md +584 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/app-clips/SKILL.md +436 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/app-intents/SKILL.md +489 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/app-intents/references/appintents-advanced.md +1076 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/app-store-review/SKILL.md +340 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/app-store-review/references/privacy-manifest.md +90 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/app-store-review/references/review-checklists.md +106 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/apple-on-device-ai/SKILL.md +500 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/apple-on-device-ai/references/coreml-conversion.md +425 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/apple-on-device-ai/references/coreml-optimization.md +344 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/apple-on-device-ai/references/foundation-models.md +508 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/apple-on-device-ai/references/mlx-swift.md +285 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/authentication/SKILL.md +496 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/authentication/references/keychain-biometric.md +211 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/background-processing/SKILL.md +499 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/background-processing/references/background-task-patterns.md +390 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/callkit-voip/SKILL.md +461 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/callkit-voip/references/callkit-patterns.md +425 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/cloudkit-sync/SKILL.md +492 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/cloudkit-sync/references/cloudkit-patterns.md +461 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/codable-patterns/SKILL.md +467 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/contacts-framework/SKILL.md +425 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/contacts-framework/references/contacts-patterns.md +409 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/core-bluetooth/SKILL.md +491 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/core-bluetooth/references/ble-patterns.md +435 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/core-motion/SKILL.md +388 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/core-motion/references/motion-patterns.md +405 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/core-nfc/SKILL.md +495 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/core-nfc/references/nfc-patterns.md +420 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/coreml/SKILL.md +459 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/coreml/references/coreml-swift-integration.md +765 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/debugging-instruments/SKILL.md +422 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/debugging-instruments/references/instruments-guide.md +387 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/debugging-instruments/references/lldb-patterns.md +298 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/device-integrity/SKILL.md +477 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/energykit/SKILL.md +460 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/energykit/references/energykit-patterns.md +541 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/eventkit-calendar/SKILL.md +483 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/eventkit-calendar/references/eventkit-patterns.md +326 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/healthkit/SKILL.md +498 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/healthkit/references/healthkit-patterns.md +602 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/homekit-matter/SKILL.md +496 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/homekit-matter/references/matter-commissioning.md +455 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/ios-accessibility/SKILL.md +301 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/ios-accessibility/references/a11y-patterns.md +140 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/ios-localization/SKILL.md +418 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/ios-localization/references/formatstyle-locale.md +627 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/ios-localization/references/string-catalogs.md +462 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/ios-networking/SKILL.md +441 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/ios-networking/references/background-websocket.md +862 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/ios-networking/references/lightweight-clients.md +93 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/ios-networking/references/network-framework.md +563 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/ios-networking/references/urlsession-patterns.md +1116 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/ios-security/SKILL.md +496 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/ios-security/references/app-review-guidelines.md +174 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/ios-security/references/cryptokit-advanced.md +297 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/ios-security/references/file-storage-patterns.md +354 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/ios-security/references/privacy-manifest.md +117 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/live-activities/SKILL.md +500 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/live-activities/references/live-activity-patterns.md +868 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/mapkit-location/SKILL.md +485 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/mapkit-location/references/corelocation-patterns.md +730 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/mapkit-location/references/mapkit-patterns.md +748 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/metrickit-diagnostics/SKILL.md +479 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/musickit-audio/SKILL.md +395 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/musickit-audio/references/musickit-patterns.md +363 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/natural-language/SKILL.md +412 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/natural-language/references/translation-patterns.md +311 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/passkit-wallet/SKILL.md +398 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/passkit-wallet/references/wallet-passes.md +254 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/pencilkit-drawing/SKILL.md +387 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/pencilkit-drawing/references/paperkit-integration.md +376 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/pencilkit-drawing/references/pencilkit-patterns.md +302 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/permissionkit/SKILL.md +446 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/permissionkit/references/permissionkit-patterns.md +435 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/photos-camera-media/SKILL.md +501 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/photos-camera-media/references/av-playback.md +701 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/photos-camera-media/references/camera-capture.md +774 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/photos-camera-media/references/image-loading-caching.md +869 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/photos-camera-media/references/photospicker-patterns.md +597 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/push-notifications/SKILL.md +501 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/push-notifications/references/notification-patterns.md +677 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/push-notifications/references/rich-notifications.md +745 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/realitykit-ar/SKILL.md +479 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/realitykit-ar/references/realitykit-patterns.md +480 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/shareplay-activities/SKILL.md +483 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/shareplay-activities/references/shareplay-patterns.md +544 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/speech-recognition/SKILL.md +485 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/storekit/SKILL.md +478 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/storekit/references/app-review-guidelines.md +58 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/storekit/references/storekit-advanced.md +755 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swift-charts/SKILL.md +487 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swift-charts/references/charts-patterns.md +895 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swift-concurrency/SKILL.md +408 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swift-concurrency/references/approachable-concurrency.md +80 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swift-concurrency/references/swift-6-2-concurrency.md +233 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swift-concurrency/references/swiftui-concurrency.md +187 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swift-concurrency/references/synchronization-primitives.md +341 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swift-language/SKILL.md +498 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swift-language/references/swift-patterns-extended.md +505 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swift-testing/SKILL.md +467 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swift-testing/references/testing-patterns.md +504 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftdata/SKILL.md +334 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftdata/references/core-data-coexistence.md +504 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftdata/references/swiftdata-advanced.md +975 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftdata/references/swiftdata-queries.md +675 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-animation/SKILL.md +481 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-animation/references/animation-advanced.md +804 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-animation/references/core-animation-bridge.md +553 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-gestures/SKILL.md +450 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-gestures/references/gesture-patterns.md +425 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-layout-components/SKILL.md +336 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-layout-components/references/form.md +97 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-layout-components/references/grids.md +69 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-layout-components/references/list.md +99 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-layout-components/references/scrollview.md +147 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-liquid-glass/SKILL.md +325 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-liquid-glass/references/liquid-glass.md +387 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-navigation/SKILL.md +262 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-navigation/references/deeplinks.md +207 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-navigation/references/navigationstack.md +177 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-navigation/references/sheets.md +169 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-navigation/references/tabview.md +178 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-patterns/SKILL.md +381 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-patterns/references/architecture-patterns.md +486 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-patterns/references/deprecated-migration.md +1097 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-patterns/references/design-polish.md +780 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-patterns/references/platform-and-sharing.md +696 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-performance/SKILL.md +491 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-performance/references/demystify-swiftui-performance-wwdc23.md +46 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-performance/references/optimizing-swiftui-performance-instruments.md +29 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-performance/references/understanding-hangs-in-your-app.md +33 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-performance/references/understanding-improving-swiftui-performance.md +52 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-uikit-interop/SKILL.md +428 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-uikit-interop/references/hosting-migration.md +534 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-uikit-interop/references/representable-recipes.md +1133 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/tipkit/SKILL.md +494 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/tipkit/references/tipkit-patterns.md +782 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/vision-framework/SKILL.md +475 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/vision-framework/references/vision-requests.md +736 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/vision-framework/references/visionkit-scanner.md +738 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/weatherkit/SKILL.md +410 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/weatherkit/references/weatherkit-patterns.md +567 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/widgetkit/SKILL.md +497 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/widgetkit/references/widgetkit-advanced.md +871 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/typography.csv +58 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/ui-reasoning.csv +101 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/ux-guidelines.csv +100 -0
- package/src/.agents/skills/ui-ux-pro-custom/data/web-interface.csv +31 -0
- package/src/.agents/skills/ui-ux-pro-custom/scripts/core.py +253 -0
- package/src/.agents/skills/ui-ux-pro-custom/scripts/design_system.py +1067 -0
- package/src/.agents/skills/ui-ux-pro-custom/scripts/search.py +114 -0
- package/src/.agents/skills/ux-audit/SKILL.md +151 -0
- package/src/.agents/skills/websocket-engineer/SKILL.md +168 -0
- package/src/.agents/skills/websocket-engineer/references/alternatives.md +391 -0
- package/src/.agents/skills/websocket-engineer/references/patterns.md +400 -0
- package/src/.agents/skills/websocket-engineer/references/protocol.md +195 -0
- package/src/.agents/skills/websocket-engineer/references/scaling.md +333 -0
- package/src/.agents/skills/websocket-engineer/references/security.md +474 -0
- package/src/.agents/skills/writing-skills/SKILL.md +655 -0
- package/src/.agents/skills/writing-skills/anthropic-best-practices.md +1150 -0
- package/src/.agents/skills/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -0
- package/src/.agents/skills/writing-skills/graphviz-conventions.dot +172 -0
- package/src/.agents/skills/writing-skills/persuasion-principles.md +187 -0
- package/src/.agents/skills/writing-skills/render-graphs.js +168 -0
- package/src/.agents/skills/writing-skills/testing-skills-with-subagents.md +384 -0
- package/src/.claude/commands/bmad-track-compact.md +19 -0
- package/src/.claude/commands/bmad-track-extended.md +19 -0
- package/src/.claude/commands/bmad-track-large.md +19 -0
- package/src/.claude/commands/bmad-track-medium.md +19 -0
- package/src/.claude/commands/bmad-track-nano.md +19 -0
- package/src/.claude/commands/bmad-track-rv.md +18 -0
- package/src/.claude/commands/bmad-track-small.md +19 -0
- package/src/_memory/config.yaml +11 -0
- package/src/_memory/master-orchestrator-sidecar/docs-index.md +3 -0
- package/src/_memory/master-orchestrator-sidecar/instructions.md +2566 -0
- package/src/_memory/master-orchestrator-sidecar/memories.md +8 -0
- package/src/_memory/master-orchestrator-sidecar/session-state.md +15 -0
- package/src/_memory/master-orchestrator-sidecar/triage-history.md +3 -0
- package/src/_memory/master-orchestrator-sidecar/workflows-overview.html +1230 -0
- package/src/_memory/skills/excalidraw/SKILL.md +78 -0
- package/src/_memory/skills/excalidraw/diagram-patterns.md +53 -0
- package/src/_memory/skills/nimbalyst-tracking/SKILL.md +103 -0
- package/src/_memory/skills/writing-skills/SKILL.md +655 -0
- package/src/bmb/agents/agent-builder.md +59 -0
- package/src/bmb/agents/module-builder.md +60 -0
- package/src/bmb/agents/workflow-builder.md +61 -0
- package/src/bmb/config.yaml +12 -0
- package/src/bmb/module-help.csv +13 -0
- package/src/bmb/workflows/agent/data/agent-architecture.md +258 -0
- package/src/bmb/workflows/agent/data/agent-compilation.md +185 -0
- package/src/bmb/workflows/agent/data/agent-menu-patterns.md +189 -0
- package/src/bmb/workflows/agent/data/agent-metadata.md +133 -0
- package/src/bmb/workflows/agent/data/agent-validation.md +111 -0
- package/src/bmb/workflows/agent/data/brainstorm-context.md +96 -0
- package/src/bmb/workflows/agent/data/communication-presets.csv +61 -0
- package/src/bmb/workflows/agent/data/critical-actions.md +75 -0
- package/src/bmb/workflows/agent/data/persona-properties.md +252 -0
- package/src/bmb/workflows/agent/data/principles-crafting.md +142 -0
- package/src/bmb/workflows/agent/data/reference/module-examples/architect.md +68 -0
- package/src/bmb/workflows/agent/data/reference/with-sidecar/journal-keeper/journal-keeper-sidecar/entries/yy-mm-dd-entry-template.md +17 -0
- package/src/bmb/workflows/agent/data/understanding-agent-types.md +126 -0
- package/src/bmb/workflows/agent/steps-c/step-01-brainstorm.md +129 -0
- package/src/bmb/workflows/agent/steps-c/step-02-discovery.md +170 -0
- package/src/bmb/workflows/agent/steps-c/step-03-sidecar-metadata.md +309 -0
- package/src/bmb/workflows/agent/steps-c/step-04-persona.md +213 -0
- package/src/bmb/workflows/agent/steps-c/step-05-commands-menu.md +179 -0
- package/src/bmb/workflows/agent/steps-c/step-06-activation.md +278 -0
- package/src/bmb/workflows/agent/steps-c/step-07-build-agent.md +316 -0
- package/src/bmb/workflows/agent/steps-c/step-08-celebrate.md +247 -0
- package/src/bmb/workflows/agent/steps-e/e-01-load-existing.md +221 -0
- package/src/bmb/workflows/agent/steps-e/e-02-discover-edits.md +195 -0
- package/src/bmb/workflows/agent/steps-e/e-03-placeholder.md +1 -0
- package/src/bmb/workflows/agent/steps-e/e-04-sidecar-metadata.md +126 -0
- package/src/bmb/workflows/agent/steps-e/e-05-persona.md +135 -0
- package/src/bmb/workflows/agent/steps-e/e-06-commands-menu.md +123 -0
- package/src/bmb/workflows/agent/steps-e/e-07-activation.md +124 -0
- package/src/bmb/workflows/agent/steps-e/e-08-edit-agent.md +197 -0
- package/src/bmb/workflows/agent/steps-e/e-09-celebrate.md +155 -0
- package/src/bmb/workflows/agent/steps-v/v-01-load-review.md +137 -0
- package/src/bmb/workflows/agent/steps-v/v-02a-validate-metadata.md +116 -0
- package/src/bmb/workflows/agent/steps-v/v-02b-validate-persona.md +124 -0
- package/src/bmb/workflows/agent/steps-v/v-02c-validate-menu.md +127 -0
- package/src/bmb/workflows/agent/steps-v/v-02d-validate-structure.md +134 -0
- package/src/bmb/workflows/agent/steps-v/v-02e-validate-sidecar.md +134 -0
- package/src/bmb/workflows/agent/steps-v/v-03-summary.md +104 -0
- package/src/bmb/workflows/agent/templates/agent-plan.template.md +5 -0
- package/src/bmb/workflows/agent/templates/agent-template.md +89 -0
- package/src/bmb/workflows/agent/workflow-create-agent.md +72 -0
- package/src/bmb/workflows/agent/workflow-edit-agent.md +75 -0
- package/src/bmb/workflows/agent/workflow-validate-agent.md +73 -0
- package/src/bmb/workflows/module/data/agent-architecture.md +179 -0
- package/src/bmb/workflows/module/data/agent-spec-template.md +79 -0
- package/src/bmb/workflows/module/data/module-standards.md +263 -0
- package/src/bmb/workflows/module/data/module-yaml-conventions.md +392 -0
- package/src/bmb/workflows/module/module-help-generate.md +254 -0
- package/src/bmb/workflows/module/steps-b/step-01-welcome.md +148 -0
- package/src/bmb/workflows/module/steps-b/step-02-spark.md +141 -0
- package/src/bmb/workflows/module/steps-b/step-03-module-type.md +149 -0
- package/src/bmb/workflows/module/steps-b/step-04-vision.md +83 -0
- package/src/bmb/workflows/module/steps-b/step-05-identity.md +97 -0
- package/src/bmb/workflows/module/steps-b/step-06-users.md +86 -0
- package/src/bmb/workflows/module/steps-b/step-07-value.md +76 -0
- package/src/bmb/workflows/module/steps-b/step-08-agents.md +97 -0
- package/src/bmb/workflows/module/steps-b/step-09-workflows.md +83 -0
- package/src/bmb/workflows/module/steps-b/step-10-tools.md +91 -0
- package/src/bmb/workflows/module/steps-b/step-11-scenarios.md +84 -0
- package/src/bmb/workflows/module/steps-b/step-12-creative.md +95 -0
- package/src/bmb/workflows/module/steps-b/step-13-review.md +105 -0
- package/src/bmb/workflows/module/steps-b/step-14-finalize.md +117 -0
- package/src/bmb/workflows/module/steps-c/step-01-load-brief.md +179 -0
- package/src/bmb/workflows/module/steps-c/step-01b-continue.md +82 -0
- package/src/bmb/workflows/module/steps-c/step-02-structure.md +105 -0
- package/src/bmb/workflows/module/steps-c/step-03-config.md +119 -0
- package/src/bmb/workflows/module/steps-c/step-04-agents.md +168 -0
- package/src/bmb/workflows/module/steps-c/step-05-workflows.md +184 -0
- package/src/bmb/workflows/module/steps-c/step-06-docs.md +401 -0
- package/src/bmb/workflows/module/steps-c/step-07-complete.md +152 -0
- package/src/bmb/workflows/module/steps-e/step-01-load-target.md +81 -0
- package/src/bmb/workflows/module/steps-e/step-02-select-edit.md +77 -0
- package/src/bmb/workflows/module/steps-e/step-03-apply-edit.md +77 -0
- package/src/bmb/workflows/module/steps-e/step-04-review.md +80 -0
- package/src/bmb/workflows/module/steps-e/step-05-confirm.md +75 -0
- package/src/bmb/workflows/module/steps-v/step-01-load-target.md +96 -0
- package/src/bmb/workflows/module/steps-v/step-02-file-structure.md +93 -0
- package/src/bmb/workflows/module/steps-v/step-03-module-yaml.md +99 -0
- package/src/bmb/workflows/module/steps-v/step-04-agent-specs.md +152 -0
- package/src/bmb/workflows/module/steps-v/step-05-workflow-specs.md +152 -0
- package/src/bmb/workflows/module/steps-v/step-06-documentation.md +143 -0
- package/src/bmb/workflows/module/steps-v/step-07-installation.md +102 -0
- package/src/bmb/workflows/module/steps-v/step-08-report.md +197 -0
- package/src/bmb/workflows/module/templates/brief-template.md +154 -0
- package/src/bmb/workflows/module/templates/workflow-spec-template.md +96 -0
- package/src/bmb/workflows/module/workflow-create-module-brief.md +71 -0
- package/src/bmb/workflows/module/workflow-create-module.md +86 -0
- package/src/bmb/workflows/module/workflow-edit-module.md +66 -0
- package/src/bmb/workflows/module/workflow-validate-module.md +66 -0
- package/src/bmb/workflows/workflow/data/architecture.md +150 -0
- package/src/bmb/workflows/workflow/data/common-workflow-tools.csv +19 -0
- package/src/bmb/workflows/workflow/data/csv-data-file-standards.md +53 -0
- package/src/bmb/workflows/workflow/data/frontmatter-standards.md +184 -0
- package/src/bmb/workflows/workflow/data/input-discovery-standards.md +191 -0
- package/src/bmb/workflows/workflow/data/intent-vs-prescriptive-spectrum.md +44 -0
- package/src/bmb/workflows/workflow/data/menu-handling-standards.md +133 -0
- package/src/bmb/workflows/workflow/data/output-format-standards.md +135 -0
- package/src/bmb/workflows/workflow/data/step-file-rules.md +235 -0
- package/src/bmb/workflows/workflow/data/step-type-patterns.md +257 -0
- package/src/bmb/workflows/workflow/data/subprocess-optimization-patterns.md +188 -0
- package/src/bmb/workflows/workflow/data/trimodal-workflow-structure.md +164 -0
- package/src/bmb/workflows/workflow/data/workflow-chaining-standards.md +222 -0
- package/src/bmb/workflows/workflow/data/workflow-examples.md +232 -0
- package/src/bmb/workflows/workflow/data/workflow-type-criteria.md +134 -0
- package/src/bmb/workflows/workflow/steps-c/step-00-conversion.md +263 -0
- package/src/bmb/workflows/workflow/steps-c/step-01-discovery.md +194 -0
- package/src/bmb/workflows/workflow/steps-c/step-01b-continuation.md +3 -0
- package/src/bmb/workflows/workflow/steps-c/step-02-classification.md +270 -0
- package/src/bmb/workflows/workflow/steps-c/step-03-requirements.md +283 -0
- package/src/bmb/workflows/workflow/steps-c/step-04-tools.md +282 -0
- package/src/bmb/workflows/workflow/steps-c/step-05-plan-review.md +243 -0
- package/src/bmb/workflows/workflow/steps-c/step-06-design.md +330 -0
- package/src/bmb/workflows/workflow/steps-c/step-07-foundation.md +239 -0
- package/src/bmb/workflows/workflow/steps-c/step-08-build-step-01.md +379 -0
- package/src/bmb/workflows/workflow/steps-c/step-09-build-next-step.md +350 -0
- package/src/bmb/workflows/workflow/steps-c/step-10-confirmation.md +322 -0
- package/src/bmb/workflows/workflow/steps-c/step-11-completion.md +191 -0
- package/src/bmb/workflows/workflow/steps-e/step-e-01-assess-workflow.md +237 -0
- package/src/bmb/workflows/workflow/steps-e/step-e-02-discover-edits.md +251 -0
- package/src/bmb/workflows/workflow/steps-e/step-e-03-fix-validation.md +254 -0
- package/src/bmb/workflows/workflow/steps-e/step-e-04-direct-edit.md +277 -0
- package/src/bmb/workflows/workflow/steps-e/step-e-05-apply-edit.md +154 -0
- package/src/bmb/workflows/workflow/steps-e/step-e-06-validate-after.md +190 -0
- package/src/bmb/workflows/workflow/steps-e/step-e-07-complete.md +206 -0
- package/src/bmb/workflows/workflow/steps-v/step-01-validate-max-mode.md +109 -0
- package/src/bmb/workflows/workflow/steps-v/step-01-validate.md +221 -0
- package/src/bmb/workflows/workflow/steps-v/step-01b-structure.md +152 -0
- package/src/bmb/workflows/workflow/steps-v/step-02-frontmatter-validation.md +199 -0
- package/src/bmb/workflows/workflow/steps-v/step-02b-path-violations.md +265 -0
- package/src/bmb/workflows/workflow/steps-v/step-03-menu-validation.md +164 -0
- package/src/bmb/workflows/workflow/steps-v/step-04-step-type-validation.md +211 -0
- package/src/bmb/workflows/workflow/steps-v/step-05-output-format-validation.md +200 -0
- package/src/bmb/workflows/workflow/steps-v/step-06-validation-design-check.md +195 -0
- package/src/bmb/workflows/workflow/steps-v/step-07-instruction-style-check.md +209 -0
- package/src/bmb/workflows/workflow/steps-v/step-08-collaborative-experience-check.md +199 -0
- package/src/bmb/workflows/workflow/steps-v/step-08b-subprocess-optimization.md +179 -0
- package/src/bmb/workflows/workflow/steps-v/step-09-cohesive-review.md +186 -0
- package/src/bmb/workflows/workflow/steps-v/step-10-report-complete.md +154 -0
- package/src/bmb/workflows/workflow/steps-v/step-11-plan-validation.md +237 -0
- package/src/bmb/workflows/workflow/templates/minimal-output-template.md +11 -0
- package/src/bmb/workflows/workflow/templates/step-01-init-continuable-template.md +241 -0
- package/src/bmb/workflows/workflow/templates/step-1b-template.md +224 -0
- package/src/bmb/workflows/workflow/templates/step-template.md +294 -0
- package/src/bmb/workflows/workflow/templates/workflow-template.md +102 -0
- package/src/bmb/workflows/workflow/workflow-create-workflow.md +79 -0
- package/src/bmb/workflows/workflow/workflow-edit-workflow.md +65 -0
- package/src/bmb/workflows/workflow/workflow-rework-workflow.md +65 -0
- package/src/bmb/workflows/workflow/workflow-validate-max-parallel-workflow.md +66 -0
- package/src/bmb/workflows/workflow/workflow-validate-workflow.md +65 -0
- package/src/bmm/agents/analyst.md +104 -0
- package/src/bmm/agents/architect.md +85 -0
- package/src/bmm/agents/dev.md +100 -0
- package/src/bmm/agents/pm.md +98 -0
- package/src/bmm/agents/qa.md +90 -0
- package/src/bmm/agents/quick-flow-solo-dev.md +92 -0
- package/src/bmm/agents/review-agent.md +129 -0
- package/src/bmm/agents/sm.md +90 -0
- package/src/bmm/agents/tech-writer/tech-writer.md +94 -0
- package/src/bmm/agents/ux-designer.md +124 -0
- package/src/bmm/data/project-context-template.md +26 -0
- package/src/bmm/module-help.csv +31 -0
- package/src/bmm/teams/default-party.csv +20 -0
- package/src/bmm/teams/team-fullstack.yaml +12 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/product-brief.template.md +10 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md +115 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md +107 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +141 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +144 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +147 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +161 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +99 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/workflow.md +57 -0
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +87 -0
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +156 -0
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +165 -0
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +140 -0
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +152 -0
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +345 -0
- package/src/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +92 -0
- package/src/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +164 -0
- package/src/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +174 -0
- package/src/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +184 -0
- package/src/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +105 -0
- package/src/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +360 -0
- package/src/bmm/workflows/1-analysis/research/research.template.md +29 -0
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +87 -0
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +165 -0
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +174 -0
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +141 -0
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +159 -0
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +387 -0
- package/src/bmm/workflows/1-analysis/research/workflow-domain-research.md +54 -0
- package/src/bmm/workflows/1-analysis/research/workflow-market-research.md +54 -0
- package/src/bmm/workflows/1-analysis/research/workflow-technical-research.md +54 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/data/domain-complexity.csv +15 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md +197 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/data/project-types.csv +11 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01-init.md +139 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01b-continue.md +100 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02-discovery.md +160 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02b-vision.md +88 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02c-executive-summary.md +99 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-03-success.md +169 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-04-journeys.md +156 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-05-domain.md +136 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-06-innovation.md +176 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-07-project-type.md +184 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-08-scoping.md +174 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-09-functional.md +175 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-10-nonfunctional.md +189 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-11-polish.md +162 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-12-complete.md +79 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01-discovery.md +183 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01b-legacy-conversion.md +149 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-02-review.md +187 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-03-edit.md +192 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-04-complete.md +108 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md +166 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02-format-detection.md +131 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02b-parity-check.md +150 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-03-density-validation.md +118 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-04-brief-coverage-validation.md +155 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-05-measurability-validation.md +170 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-06-traceability-validation.md +158 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-07-implementation-leakage-validation.md +147 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-08-domain-compliance-validation.md +182 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-09-project-type-validation.md +202 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-10-smart-validation.md +148 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-11-holistic-quality-validation.md +201 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-12-completeness-validation.md +179 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-13-report-complete.md +164 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/templates/prd-template.md +10 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/workflow-create-prd.md +65 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/workflow-edit-prd.md +65 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/workflow-validate-prd.md +63 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +63 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +63 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +106 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +111 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +115 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +127 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +167 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +143 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +118 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +154 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +136 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +165 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +135 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +192 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +101 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +13 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +45 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md +185 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md +129 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md +130 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md +93 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md +196 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +129 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/templates/readiness-report-template.md +4 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +54 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/architecture-decision-template.md +12 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/data/domain-complexity.csv +13 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/data/project-types.csv +7 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md +89 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md +82 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +106 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +138 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +129 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +166 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +186 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +163 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +38 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/workflow.md +49 -0
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +129 -0
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +124 -0
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +122 -0
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +84 -0
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +57 -0
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +58 -0
- package/src/bmm/workflows/4-implementation/code-review/checklist.md +23 -0
- package/src/bmm/workflows/4-implementation/code-review/instructions.xml +227 -0
- package/src/bmm/workflows/4-implementation/code-review/workflow.yaml +43 -0
- package/src/bmm/workflows/4-implementation/correct-course/checklist.md +288 -0
- package/src/bmm/workflows/4-implementation/correct-course/instructions.md +207 -0
- package/src/bmm/workflows/4-implementation/correct-course/workflow.yaml +53 -0
- package/src/bmm/workflows/4-implementation/create-story/checklist.md +159 -0
- package/src/bmm/workflows/4-implementation/create-story/instructions.xml +574 -0
- package/src/bmm/workflows/4-implementation/create-story/template.md +79 -0
- package/src/bmm/workflows/4-implementation/create-story/workflow.yaml +52 -0
- package/src/bmm/workflows/4-implementation/dev-story/checklist.md +80 -0
- package/src/bmm/workflows/4-implementation/dev-story/instructions.xml +493 -0
- package/src/bmm/workflows/4-implementation/dev-story/workflow.yaml +20 -0
- package/src/bmm/workflows/4-implementation/retrospective/instructions.md +1444 -0
- package/src/bmm/workflows/4-implementation/retrospective/workflow.yaml +52 -0
- package/src/bmm/workflows/4-implementation/sprint-planning/checklist.md +33 -0
- package/src/bmm/workflows/4-implementation/sprint-planning/instructions.md +232 -0
- package/src/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +55 -0
- package/src/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +52 -0
- package/src/bmm/workflows/4-implementation/sprint-status/instructions.md +230 -0
- package/src/bmm/workflows/4-implementation/sprint-status/workflow.yaml +25 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md +158 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md +122 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md +93 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md +93 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md +87 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md +146 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +50 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-01-understand.md +204 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-02-investigate.md +152 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-03-generate.md +123 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-04-review.md +201 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/tech-spec-template.md +74 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md +79 -0
- package/src/bmm/workflows/document-project/checklist.md +245 -0
- package/src/bmm/workflows/document-project/documentation-requirements.csv +12 -0
- package/src/bmm/workflows/document-project/instructions.md +130 -0
- package/src/bmm/workflows/document-project/templates/deep-dive-template.md +345 -0
- package/src/bmm/workflows/document-project/templates/index-template.md +169 -0
- package/src/bmm/workflows/document-project/templates/project-overview-template.md +103 -0
- package/src/bmm/workflows/document-project/templates/project-scan-report-schema.json +160 -0
- package/src/bmm/workflows/document-project/templates/source-tree-template.md +135 -0
- package/src/bmm/workflows/document-project/workflow.yaml +22 -0
- package/src/bmm/workflows/document-project/workflows/deep-dive-instructions.md +298 -0
- package/src/bmm/workflows/document-project/workflows/deep-dive.yaml +31 -0
- package/src/bmm/workflows/document-project/workflows/full-scan-instructions.md +1106 -0
- package/src/bmm/workflows/document-project/workflows/full-scan.yaml +31 -0
- package/src/bmm/workflows/generate-project-context/project-context-template.md +21 -0
- package/src/bmm/workflows/generate-project-context/steps/step-01-discover.md +184 -0
- package/src/bmm/workflows/generate-project-context/steps/step-02-generate.md +322 -0
- package/src/bmm/workflows/generate-project-context/steps/step-03-complete.md +235 -0
- package/src/bmm/workflows/generate-project-context/workflow.md +49 -0
- package/src/bmm/workflows/qa/automate/workflow.yaml +233 -0
- package/src/bmm/workflows/qa-generate-e2e-tests/checklist.md +33 -0
- package/src/bmm/workflows/qa-generate-e2e-tests/instructions.md +110 -0
- package/src/bmm/workflows/qa-generate-e2e-tests/workflow.yaml +42 -0
- package/src/core/agents/bmad-master.md +56 -0
- package/src/core/agents/master-orchestrator.md +54 -0
- package/src/core/config.yaml +9 -0
- package/src/core/module-help.csv +10 -0
- package/src/core/scripts/generate-loop-report.py +72 -0
- package/src/core/skills/prepare-to-merge/SKILL.md +77 -0
- package/src/core/tasks/editorial-review-prose.xml +102 -0
- package/src/core/tasks/editorial-review-structure.xml +208 -0
- package/src/core/tasks/help.md +86 -0
- package/src/core/tasks/index-docs.xml +65 -0
- package/src/core/tasks/review-adversarial-general.xml +66 -0
- package/src/core/tasks/review-adversarial-loop.xml +46 -0
- package/src/core/tasks/review-edge-case-hunter.xml +63 -0
- package/src/core/tasks/review-party-loop.xml +46 -0
- package/src/core/tasks/shard-doc.xml +108 -0
- package/src/core/tasks/workflow.xml +236 -0
- package/src/core/templates/review-loop-report.html +88 -0
- package/src/core/templates/review-loop-report.md +5 -0
- package/src/core/workflows/advanced-elicitation/methods.csv +51 -0
- package/src/core/workflows/advanced-elicitation/workflow.xml +118 -0
- package/src/core/workflows/brainstorming/brain-methods.csv +62 -0
- package/src/core/workflows/brainstorming/steps/step-01-session-setup.md +212 -0
- package/src/core/workflows/brainstorming/steps/step-01b-continue.md +122 -0
- package/src/core/workflows/brainstorming/steps/step-02a-user-selected.md +225 -0
- package/src/core/workflows/brainstorming/steps/step-02b-ai-recommended.md +237 -0
- package/src/core/workflows/brainstorming/steps/step-02c-random-selection.md +209 -0
- package/src/core/workflows/brainstorming/steps/step-02d-progressive-flow.md +264 -0
- package/src/core/workflows/brainstorming/steps/step-02e-deep-dive.md +68 -0
- package/src/core/workflows/brainstorming/steps/step-03-technique-execution.md +403 -0
- package/src/core/workflows/brainstorming/steps/step-04-idea-organization.md +303 -0
- package/src/core/workflows/brainstorming/template.md +15 -0
- package/src/core/workflows/brainstorming/workflow.md +60 -0
- package/src/core/workflows/extract-trackers/workflow.md +45 -0
- package/src/core/workflows/party-mode/steps/step-01-agent-loading.md +142 -0
- package/src/core/workflows/party-mode/steps/step-02-discussion-orchestration.md +187 -0
- package/src/core/workflows/party-mode/steps/step-03-graceful-exit.md +168 -0
- package/src/core/workflows/party-mode/workflow.md +194 -0
- package/src/docs/dev/tmux/actions_popup.py +291 -0
- package/src/docs/dev/tmux/actions_popup.sh +110 -0
- package/src/docs/dev/tmux/claude_usage.sh +15 -0
- package/src/docs/dev/tmux/colors.conf +34 -0
- package/src/docs/dev/tmux/cpu_usage.sh +7 -0
- package/src/docs/dev/tmux/dispatch.sh +10 -0
- package/src/docs/dev/tmux/float_init.sh +13 -0
- package/src/docs/dev/tmux/float_term.sh +23 -0
- package/src/docs/dev/tmux/open_clip.sh +14 -0
- package/src/docs/dev/tmux/paste_clipboard.sh +13 -0
- package/src/docs/dev/tmux/paste_image_wrapper.sh +83 -0
- package/src/docs/dev/tmux/ram_usage.sh +3 -0
- package/src/docs/dev/tmux/title_sync.sh +54 -0
- package/src/docs/dev/tmux/tmux-setup.md +806 -0
- package/src/docs/dev/tmux/tmux.conf +127 -0
- package/src/docs/dev/tmux/xclip +18 -0
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
# Instruments Guide Reference
|
|
2
|
+
|
|
3
|
+
Detailed template-by-template guide for profiling iOS apps with Instruments. Companion to the main `debugging-instruments` skill.
|
|
4
|
+
|
|
5
|
+
## Contents
|
|
6
|
+
|
|
7
|
+
- [General Workflow](#general-workflow)
|
|
8
|
+
- [Time Profiler](#time-profiler)
|
|
9
|
+
- [Allocations](#allocations)
|
|
10
|
+
- [Leaks](#leaks)
|
|
11
|
+
- [Network](#network)
|
|
12
|
+
- [SwiftUI Instruments](#swiftui-instruments)
|
|
13
|
+
- [Core Animation](#core-animation)
|
|
14
|
+
- [Energy Log](#energy-log)
|
|
15
|
+
- [File Activity](#file-activity)
|
|
16
|
+
- [System Trace](#system-trace)
|
|
17
|
+
- [xctrace CLI](#xctrace-cli)
|
|
18
|
+
- [Custom Instruments with os_signpost](#custom-instruments-with-os_signpost)
|
|
19
|
+
- [Automation and CI Integration](#automation-and-ci-integration)
|
|
20
|
+
|
|
21
|
+
## General Workflow
|
|
22
|
+
|
|
23
|
+
1. **Build for profiling**: Product > Profile (Cmd+I). This builds with Release optimization by default.
|
|
24
|
+
2. **Select a template** from the Instruments chooser.
|
|
25
|
+
3. **Configure recording**: Set the target device and process.
|
|
26
|
+
4. **Record**: Press the red record button and reproduce the scenario.
|
|
27
|
+
5. **Analyze**: Use the timeline, detail views, and call tree to find issues.
|
|
28
|
+
6. **Filter**: Check "Hide System Libraries" and use the search bar to focus on your code.
|
|
29
|
+
|
|
30
|
+
Always profile on a **physical device** for accurate measurements. Simulator
|
|
31
|
+
performance does not reflect real-world behavior.
|
|
32
|
+
|
|
33
|
+
## Time Profiler
|
|
34
|
+
|
|
35
|
+
**When to use**: CPU is high, UI is slow, animations stutter, or you need to
|
|
36
|
+
find which functions consume the most time.
|
|
37
|
+
|
|
38
|
+
### Key Workflow
|
|
39
|
+
|
|
40
|
+
1. Record while reproducing the slow interaction.
|
|
41
|
+
2. Select the time range of interest in the timeline.
|
|
42
|
+
3. Switch to the **Call Tree** view in the detail pane.
|
|
43
|
+
4. Enable these checkboxes:
|
|
44
|
+
- **Separate by Thread** — isolate main thread vs background
|
|
45
|
+
- **Invert Call Tree** — show leaf functions (actual work) first
|
|
46
|
+
- **Hide System Libraries** — focus on your code
|
|
47
|
+
5. Sort by **Weight** (self time) to find the hottest functions.
|
|
48
|
+
6. Double-click a function to view source with per-line timing.
|
|
49
|
+
|
|
50
|
+
### Reading the Call Tree
|
|
51
|
+
|
|
52
|
+
- **Weight**: total time in this function and all its callees
|
|
53
|
+
- **Self Weight**: time spent in this function alone (not callees)
|
|
54
|
+
- **Symbol Name**: the function — look for your module prefix
|
|
55
|
+
|
|
56
|
+
Focus on functions with high **Self Weight** — these are doing the actual work.
|
|
57
|
+
|
|
58
|
+
### Tips
|
|
59
|
+
|
|
60
|
+
- Profile the same user interaction 3 times to get stable measurements.
|
|
61
|
+
- Use the **Comparison** view to diff traces before/after a fix.
|
|
62
|
+
- Check "Flatten Recursion" if recursive calls make the tree hard to read.
|
|
63
|
+
|
|
64
|
+
## Allocations
|
|
65
|
+
|
|
66
|
+
**When to use**: Memory grows over time, you suspect objects are not being
|
|
67
|
+
freed, or you need to track object lifetimes.
|
|
68
|
+
|
|
69
|
+
### Key Workflow
|
|
70
|
+
|
|
71
|
+
1. Record while reproducing the scenario.
|
|
72
|
+
2. Use **Mark Generation** (button in the detail pane) to snapshot allocations
|
|
73
|
+
at specific points. For example:
|
|
74
|
+
- Mark before navigating to a screen
|
|
75
|
+
- Navigate to the screen
|
|
76
|
+
- Navigate back
|
|
77
|
+
- Mark again
|
|
78
|
+
- The difference shows objects that were not freed
|
|
79
|
+
3. Expand a generation to see allocations grouped by category.
|
|
80
|
+
4. Filter by your module name to exclude system allocations.
|
|
81
|
+
|
|
82
|
+
### Allocation Lifespan
|
|
83
|
+
|
|
84
|
+
- **Created & Still Living**: objects allocated and not yet freed
|
|
85
|
+
- **Created & Destroyed**: objects with normal lifetimes
|
|
86
|
+
- **Persistent**: long-lived allocations (singletons, caches)
|
|
87
|
+
- **Transient**: short-lived allocations (autoreleased, temporary)
|
|
88
|
+
|
|
89
|
+
Focus on "Created & Still Living" objects in the generation diff — these
|
|
90
|
+
are your potential leaks.
|
|
91
|
+
|
|
92
|
+
### Heap Growth Analysis
|
|
93
|
+
|
|
94
|
+
Enable the **Allocations List** and sort by **Persistent Bytes**. Look for:
|
|
95
|
+
- Classes with unexpectedly high instance counts
|
|
96
|
+
- Image data or NSData objects that should have been released
|
|
97
|
+
- View controllers that persist after dismissal
|
|
98
|
+
|
|
99
|
+
## Leaks
|
|
100
|
+
|
|
101
|
+
**When to use**: Suspected retain cycles or abandoned memory.
|
|
102
|
+
|
|
103
|
+
### Key Workflow
|
|
104
|
+
|
|
105
|
+
1. Run with the Leaks template.
|
|
106
|
+
2. The tool automatically checks for leaks every 10 seconds.
|
|
107
|
+
3. Red "Leak" markers appear in the timeline when leaks are detected.
|
|
108
|
+
4. Click a leak marker to see the leaked object and its retain/release history.
|
|
109
|
+
5. The **Cycles & Roots** view shows the reference graph — follow the arrows
|
|
110
|
+
to find the cycle.
|
|
111
|
+
|
|
112
|
+
### Interpreting Results
|
|
113
|
+
|
|
114
|
+
- **Leak**: an object with no references pointing to it (true orphan)
|
|
115
|
+
- **Root Leak**: the object at the head of a leaked object graph
|
|
116
|
+
- **Cycles & Roots graph**: arrows show retain relationships — look for
|
|
117
|
+
bidirectional arrows indicating a cycle
|
|
118
|
+
|
|
119
|
+
### Common Cycle Patterns
|
|
120
|
+
|
|
121
|
+
Leaks instrument commonly catches:
|
|
122
|
+
- Closure -> self -> closure cycles
|
|
123
|
+
- Delegate strong reference cycles
|
|
124
|
+
- NotificationCenter observer blocks retaining self
|
|
125
|
+
- CADisplayLink/Timer retaining target
|
|
126
|
+
|
|
127
|
+
## Network
|
|
128
|
+
|
|
129
|
+
**When to use**: Inspecting HTTP request/response timing, payload sizes,
|
|
130
|
+
or connection reuse.
|
|
131
|
+
|
|
132
|
+
### Key Workflow
|
|
133
|
+
|
|
134
|
+
1. Record with the Network template.
|
|
135
|
+
2. Each HTTP request appears as a bar in the timeline.
|
|
136
|
+
3. Select a request to see:
|
|
137
|
+
- URL, method, status code
|
|
138
|
+
- Request/response headers
|
|
139
|
+
- Timing breakdown (DNS, connect, TLS, request, response)
|
|
140
|
+
- Payload size
|
|
141
|
+
|
|
142
|
+
### What to Look For
|
|
143
|
+
|
|
144
|
+
- **Waterfall gaps**: sequential requests that could be parallelized
|
|
145
|
+
- **Large payloads**: responses that could use pagination or compression
|
|
146
|
+
- **Redundant requests**: duplicate calls to the same endpoint
|
|
147
|
+
- **DNS/TLS latency**: consider connection prewarming
|
|
148
|
+
|
|
149
|
+
## SwiftUI Instruments
|
|
150
|
+
|
|
151
|
+
**When to use**: SwiftUI view body is evaluated too frequently, unnecessary
|
|
152
|
+
redraws, or identity churn in lists.
|
|
153
|
+
|
|
154
|
+
### Key Workflow
|
|
155
|
+
|
|
156
|
+
1. Select the **SwiftUI** template in Instruments.
|
|
157
|
+
2. Record while interacting with the UI.
|
|
158
|
+
3. Check these lanes:
|
|
159
|
+
- **View Body**: shows each body evaluation with the view type
|
|
160
|
+
- **View Properties**: tracks property changes that trigger updates
|
|
161
|
+
4. Look for views with excessive body evaluations during a single interaction.
|
|
162
|
+
|
|
163
|
+
### Tips
|
|
164
|
+
|
|
165
|
+
- Filter by view name to focus on a specific component.
|
|
166
|
+
- Cross-reference with Time Profiler to see if body evaluations are expensive.
|
|
167
|
+
- See the `swiftui-performance` skill for remediation patterns.
|
|
168
|
+
|
|
169
|
+
## Core Animation
|
|
170
|
+
|
|
171
|
+
**When to use**: Frame drops, off-screen rendering, excessive blending.
|
|
172
|
+
|
|
173
|
+
### Key Workflow
|
|
174
|
+
|
|
175
|
+
1. Record with the Core Animation template on a real device.
|
|
176
|
+
2. Check the **FPS** lane for drops below 60 (or 120 on ProMotion devices).
|
|
177
|
+
3. Enable these debug options in the Recording Options:
|
|
178
|
+
- **Color Blended Layers** — red areas have multiple overlapping layers
|
|
179
|
+
- **Color Off-screen Rendered** — yellow areas use off-screen passes
|
|
180
|
+
- **Color Hits Green and Misses Red** — rasterization cache hits/misses
|
|
181
|
+
|
|
182
|
+
### Common Issues
|
|
183
|
+
|
|
184
|
+
| Issue | Indicator | Fix |
|
|
185
|
+
|-------|-----------|-----|
|
|
186
|
+
| Transparent overlapping views | Red blended layers | Use opaque backgrounds |
|
|
187
|
+
| Corner radius + clip | Off-screen rendering | Use `cornerCurve` with pre-masked images |
|
|
188
|
+
| Shadow without path | Off-screen rendering | Set `shadowPath` explicitly |
|
|
189
|
+
| Large images not downsampled | High memory + slow rendering | Downsample before display |
|
|
190
|
+
|
|
191
|
+
## Energy Log
|
|
192
|
+
|
|
193
|
+
**When to use**: Battery drain complaints, background energy impact, or
|
|
194
|
+
App Store rejection for excessive energy use.
|
|
195
|
+
|
|
196
|
+
### Key Workflow
|
|
197
|
+
|
|
198
|
+
1. Record with the Energy Log template on a physical device.
|
|
199
|
+
2. Check the **Energy Impact** lane for high/very high readings.
|
|
200
|
+
3. Examine component breakdown:
|
|
201
|
+
- CPU
|
|
202
|
+
- Network
|
|
203
|
+
- Location
|
|
204
|
+
- GPU
|
|
205
|
+
- Background tasks
|
|
206
|
+
|
|
207
|
+
### Tips
|
|
208
|
+
|
|
209
|
+
- Profile typical user sessions (5-10 minutes of real usage).
|
|
210
|
+
- Compare foreground vs background energy impact.
|
|
211
|
+
- Check that background tasks complete and do not run indefinitely.
|
|
212
|
+
- Cross-reference with MetricKit energy metrics from production.
|
|
213
|
+
|
|
214
|
+
## File Activity
|
|
215
|
+
|
|
216
|
+
**When to use**: Slow file operations, excessive disk I/O, or disk write
|
|
217
|
+
exceptions from MetricKit.
|
|
218
|
+
|
|
219
|
+
### Key Workflow
|
|
220
|
+
|
|
221
|
+
1. Record with the File Activity template.
|
|
222
|
+
2. Look for:
|
|
223
|
+
- Frequent writes to the same file (journaling, logging)
|
|
224
|
+
- Large reads on the main thread
|
|
225
|
+
- Unintended file access patterns
|
|
226
|
+
|
|
227
|
+
## System Trace
|
|
228
|
+
|
|
229
|
+
**When to use**: Deep investigation of thread scheduling, virtual memory
|
|
230
|
+
faults, system calls, and inter-process communication.
|
|
231
|
+
|
|
232
|
+
### Key Workflow
|
|
233
|
+
|
|
234
|
+
1. Record with the System Trace template.
|
|
235
|
+
2. Focus on the main thread lane.
|
|
236
|
+
3. Look for:
|
|
237
|
+
- **Thread blocks**: main thread waiting on locks, semaphores, or dispatch queues
|
|
238
|
+
- **VM faults**: page faults from memory-mapped files or large allocations
|
|
239
|
+
- **Context switches**: excessive switching between threads
|
|
240
|
+
|
|
241
|
+
This is the most advanced template — use it after Time Profiler when you
|
|
242
|
+
need OS-level detail.
|
|
243
|
+
|
|
244
|
+
## xctrace CLI
|
|
245
|
+
|
|
246
|
+
### Recording
|
|
247
|
+
|
|
248
|
+
```bash
|
|
249
|
+
# Record Time Profiler trace
|
|
250
|
+
xcrun xctrace record \
|
|
251
|
+
--template "Time Profiler" \
|
|
252
|
+
--device "iPhone" \
|
|
253
|
+
--output ~/traces/profile.trace \
|
|
254
|
+
--time-limit 30s \
|
|
255
|
+
--launch com.example.MyApp
|
|
256
|
+
|
|
257
|
+
# Record Allocations trace for a running app
|
|
258
|
+
xcrun xctrace record \
|
|
259
|
+
--template "Allocations" \
|
|
260
|
+
--device "iPhone" \
|
|
261
|
+
--output ~/traces/alloc.trace \
|
|
262
|
+
--attach com.example.MyApp
|
|
263
|
+
|
|
264
|
+
# Record with multiple instruments
|
|
265
|
+
xcrun xctrace record \
|
|
266
|
+
--template "Time Profiler" \
|
|
267
|
+
--template "Allocations" \
|
|
268
|
+
--output ~/traces/combined.trace \
|
|
269
|
+
--launch com.example.MyApp
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
### Exporting Data
|
|
273
|
+
|
|
274
|
+
```bash
|
|
275
|
+
# List available tables in a trace
|
|
276
|
+
xcrun xctrace export --input profile.trace --toc
|
|
277
|
+
|
|
278
|
+
# Export specific table as XML
|
|
279
|
+
xcrun xctrace export --input profile.trace \
|
|
280
|
+
--xpath '/trace-toc/run/data/table[@schema="time-profile"]'
|
|
281
|
+
|
|
282
|
+
# Export to a file
|
|
283
|
+
xcrun xctrace export --input profile.trace \
|
|
284
|
+
--xpath '/trace-toc/run/data/table[@schema="time-profile"]' \
|
|
285
|
+
--output profile_data.xml
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
### Listing Resources
|
|
289
|
+
|
|
290
|
+
```bash
|
|
291
|
+
# Available templates
|
|
292
|
+
xcrun xctrace list templates
|
|
293
|
+
|
|
294
|
+
# Connected devices
|
|
295
|
+
xcrun xctrace list devices
|
|
296
|
+
|
|
297
|
+
# Running processes on a device
|
|
298
|
+
xcrun xctrace list processes --device "iPhone"
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
## Custom Instruments with os_signpost
|
|
302
|
+
|
|
303
|
+
### Emitting Signposts for Instruments
|
|
304
|
+
|
|
305
|
+
```swift
|
|
306
|
+
import os
|
|
307
|
+
|
|
308
|
+
let signposter = OSSignposter(subsystem: "com.example.app", category: "Networking")
|
|
309
|
+
|
|
310
|
+
func fetchUser(id: String) async throws -> User {
|
|
311
|
+
let state = signposter.beginInterval("fetchUser", id: signposter.makeSignpostID())
|
|
312
|
+
defer { signposter.endInterval("fetchUser", state) }
|
|
313
|
+
|
|
314
|
+
let (data, _) = try await URLSession.shared.data(from: userURL(id))
|
|
315
|
+
signposter.emitEvent("dataReceived", "\(data.count) bytes")
|
|
316
|
+
|
|
317
|
+
return try JSONDecoder().decode(User.self, from: data)
|
|
318
|
+
}
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
### Viewing in Instruments
|
|
322
|
+
|
|
323
|
+
1. Open Instruments with the **os_signpost** or **Points of Interest** template.
|
|
324
|
+
2. Your custom intervals appear as labeled bars in the timeline.
|
|
325
|
+
3. Events appear as point markers.
|
|
326
|
+
4. Filter by subsystem or category to isolate your signposts.
|
|
327
|
+
|
|
328
|
+
### Integration with MetricKit
|
|
329
|
+
|
|
330
|
+
Signposts emitted through `MXMetricManager.makeLogHandle(category:)` are
|
|
331
|
+
also reported in MetricKit payloads. See the `metrickit-diagnostics` skill
|
|
332
|
+
for details on custom signpost metrics.
|
|
333
|
+
|
|
334
|
+
## Automation and CI Integration
|
|
335
|
+
|
|
336
|
+
### Performance Baselines with xctrace
|
|
337
|
+
|
|
338
|
+
Create a shell script for CI:
|
|
339
|
+
|
|
340
|
+
```bash
|
|
341
|
+
#!/bin/bash
|
|
342
|
+
set -euo pipefail
|
|
343
|
+
|
|
344
|
+
APP_BUNDLE="build/MyApp.app"
|
|
345
|
+
TRACE_OUTPUT="traces/ci_profile_$(date +%s).trace"
|
|
346
|
+
TEMPLATE="Time Profiler"
|
|
347
|
+
|
|
348
|
+
# Record trace
|
|
349
|
+
xcrun xctrace record \
|
|
350
|
+
--template "$TEMPLATE" \
|
|
351
|
+
--output "$TRACE_OUTPUT" \
|
|
352
|
+
--time-limit 60s \
|
|
353
|
+
--launch "$APP_BUNDLE"
|
|
354
|
+
|
|
355
|
+
# Export data for analysis
|
|
356
|
+
xcrun xctrace export \
|
|
357
|
+
--input "$TRACE_OUTPUT" \
|
|
358
|
+
--toc > "traces/toc.xml"
|
|
359
|
+
|
|
360
|
+
echo "Trace saved to $TRACE_OUTPUT"
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
### XCTest Performance Metrics
|
|
364
|
+
|
|
365
|
+
Complement Instruments with in-test measurements:
|
|
366
|
+
|
|
367
|
+
```swift
|
|
368
|
+
func testScrollPerformance() {
|
|
369
|
+
let app = XCUIApplication()
|
|
370
|
+
app.launch()
|
|
371
|
+
|
|
372
|
+
let measureOptions = XCTMeasureOptions()
|
|
373
|
+
measureOptions.iterationCount = 5
|
|
374
|
+
|
|
375
|
+
measure(metrics: [
|
|
376
|
+
XCTClockMetric(),
|
|
377
|
+
XCTCPUMetric(),
|
|
378
|
+
XCTMemoryMetric(),
|
|
379
|
+
XCTStorageMetric()
|
|
380
|
+
], options: measureOptions) {
|
|
381
|
+
app.swipeUp()
|
|
382
|
+
app.swipeDown()
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
Set performance baselines in Xcode to automatically flag regressions in CI.
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
# LLDB Patterns Reference
|
|
2
|
+
|
|
3
|
+
Complete LLDB command reference for iOS debugging. Companion to the main `debugging-instruments` skill.
|
|
4
|
+
|
|
5
|
+
## Contents
|
|
6
|
+
|
|
7
|
+
- [Inspection Commands](#inspection-commands)
|
|
8
|
+
- [Breakpoint Patterns](#breakpoint-patterns)
|
|
9
|
+
- [Expression Evaluation](#expression-evaluation)
|
|
10
|
+
- [Watchpoints](#watchpoints)
|
|
11
|
+
- [Thread and Stack Navigation](#thread-and-stack-navigation)
|
|
12
|
+
- [Memory Inspection](#memory-inspection)
|
|
13
|
+
- [Custom Type Summaries](#custom-type-summaries)
|
|
14
|
+
- [Python Scripting](#python-scripting)
|
|
15
|
+
- [Useful Symbolic Breakpoints](#useful-symbolic-breakpoints)
|
|
16
|
+
- [LLDB Init File](#lldb-init-file)
|
|
17
|
+
|
|
18
|
+
## Inspection Commands
|
|
19
|
+
|
|
20
|
+
### po vs p vs v
|
|
21
|
+
|
|
22
|
+
| Command | Mechanism | Side Effects | Speed |
|
|
23
|
+
|---------|-----------|--------------|-------|
|
|
24
|
+
| `po expr` | Calls `debugDescription` via expression eval | Yes — runs code | Slow |
|
|
25
|
+
| `p expr` | LLDB formatter on expression result | Yes — runs code | Medium |
|
|
26
|
+
| `v varname` | Reads frame memory directly | No | Fast |
|
|
27
|
+
|
|
28
|
+
```text
|
|
29
|
+
(lldb) po myArray # Calls CustomDebugStringConvertible
|
|
30
|
+
(lldb) p myArray # Shows type + formatted value
|
|
31
|
+
(lldb) v myArray # Fastest, no code execution
|
|
32
|
+
(lldb) v myArray[0] # Access elements directly
|
|
33
|
+
(lldb) v self.viewModel.state # Dot-path into properties
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Use `v` as the default. Fall back to `po` when you need `debugDescription`
|
|
37
|
+
or custom string output. Use `p` when you need type information.
|
|
38
|
+
|
|
39
|
+
### Register and Memory
|
|
40
|
+
|
|
41
|
+
```text
|
|
42
|
+
(lldb) register read # All registers
|
|
43
|
+
(lldb) register read x0 x1 # Specific registers (ARM64)
|
|
44
|
+
(lldb) memory read 0x600003a04000 # Read raw memory
|
|
45
|
+
(lldb) memory read -s1 -fx -c32 addr # 32 bytes as hex
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Breakpoint Patterns
|
|
49
|
+
|
|
50
|
+
### File and Line
|
|
51
|
+
|
|
52
|
+
```text
|
|
53
|
+
(lldb) br set -f ViewModel.swift -l 42
|
|
54
|
+
(lldb) br set -f ViewModel.swift -l 42 -c "count > 10"
|
|
55
|
+
(lldb) br set -f ViewModel.swift -l 42 --one-shot true # Delete after first hit
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Function and Method Names
|
|
59
|
+
|
|
60
|
+
```text
|
|
61
|
+
(lldb) br set -n viewDidLoad # Any function named viewDidLoad
|
|
62
|
+
(lldb) br set -n "MyApp.ViewModel.loadData()" # Fully qualified Swift name
|
|
63
|
+
(lldb) br set -S "setValue:forKey:" # ObjC selector
|
|
64
|
+
(lldb) br set -r ".*Error.*" # Regex match on symbol name
|
|
65
|
+
(lldb) br set -r "MyModule\..*\.deinit" # All deinits in a module
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Breakpoint Actions
|
|
69
|
+
|
|
70
|
+
```text
|
|
71
|
+
(lldb) br set -n loadData
|
|
72
|
+
(lldb) br command add 1
|
|
73
|
+
> po "loadData called at \(Date())"
|
|
74
|
+
> bt
|
|
75
|
+
> continue
|
|
76
|
+
> DONE
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Logpoints (Auto-Continue Breakpoints)
|
|
80
|
+
|
|
81
|
+
```text
|
|
82
|
+
(lldb) br set -f File.swift -l 42
|
|
83
|
+
(lldb) br modify 1 --auto-continue true
|
|
84
|
+
(lldb) br command add 1
|
|
85
|
+
> po "state = \(self.state)"
|
|
86
|
+
> DONE
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
This prints the value every time line 42 is hit without stopping execution.
|
|
90
|
+
Equivalent to Xcode's "Log Message" breakpoint action with auto-continue.
|
|
91
|
+
|
|
92
|
+
### Listing and Managing
|
|
93
|
+
|
|
94
|
+
```text
|
|
95
|
+
(lldb) br list # Show all breakpoints
|
|
96
|
+
(lldb) br disable 1 # Disable breakpoint 1
|
|
97
|
+
(lldb) br enable 1 # Re-enable
|
|
98
|
+
(lldb) br delete 1 # Remove
|
|
99
|
+
(lldb) br delete # Remove ALL breakpoints
|
|
100
|
+
(lldb) br modify 1 -i 5 # Skip first 5 hits (ignore count)
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Expression Evaluation
|
|
104
|
+
|
|
105
|
+
### Swift Expressions
|
|
106
|
+
|
|
107
|
+
```text
|
|
108
|
+
(lldb) expr myArray.count
|
|
109
|
+
(lldb) expr myArray.filter { $0.isActive }.count
|
|
110
|
+
(lldb) expr let result = myFunc(); print(result)
|
|
111
|
+
(lldb) e -l swift -- import Foundation
|
|
112
|
+
(lldb) e -l swift -- self.title = "Debug Title"
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Objective-C Expressions (for UIKit internals)
|
|
116
|
+
|
|
117
|
+
```text
|
|
118
|
+
(lldb) e -l objc -- (void)[CATransaction flush]
|
|
119
|
+
(lldb) e -l objc -- (void)[[UIApplication sharedApplication] _performMemoryWarning]
|
|
120
|
+
(lldb) e -l objc -- (BOOL)[(id)0x7fc... isKindOfClass:[UIView class]]
|
|
121
|
+
(lldb) e -l objc -- (void)[0x7fc... recursiveDescription] # View hierarchy dump
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Modifying State at Runtime
|
|
125
|
+
|
|
126
|
+
```text
|
|
127
|
+
(lldb) e self.debugLabel.text = "Modified in debugger"
|
|
128
|
+
(lldb) e self.view.backgroundColor = UIColor.red
|
|
129
|
+
(lldb) e -l objc -- (void)[CATransaction flush] # Force redraw
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Calling Functions
|
|
133
|
+
|
|
134
|
+
```text
|
|
135
|
+
(lldb) e self.viewModel.reset()
|
|
136
|
+
(lldb) e UserDefaults.standard.set(true, forKey: "debug_mode")
|
|
137
|
+
(lldb) e NotificationCenter.default.post(name: .init("DebugReload"), object: nil)
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Watchpoints
|
|
141
|
+
|
|
142
|
+
```text
|
|
143
|
+
(lldb) w set v self.score # Watch for writes
|
|
144
|
+
(lldb) w set v self.score -w read # Watch for reads
|
|
145
|
+
(lldb) w set v self.score -w read_write # Watch both
|
|
146
|
+
(lldb) w set e -- 0x600003a04000 # Watch memory address
|
|
147
|
+
(lldb) w modify 1 -c "self.score > 100" # Conditional
|
|
148
|
+
(lldb) w list # Show active watchpoints
|
|
149
|
+
(lldb) w delete 1 # Remove
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Hardware watchpoint limit on Apple Silicon: 4 watchpoints. Use them
|
|
153
|
+
sparingly for tracking unexpected mutations.
|
|
154
|
+
|
|
155
|
+
## Thread and Stack Navigation
|
|
156
|
+
|
|
157
|
+
```text
|
|
158
|
+
(lldb) thread list # All threads with status
|
|
159
|
+
(lldb) thread select 3 # Switch to thread 3
|
|
160
|
+
(lldb) bt # Backtrace current thread
|
|
161
|
+
(lldb) bt all # Backtrace every thread
|
|
162
|
+
(lldb) bt 5 # Show only top 5 frames
|
|
163
|
+
(lldb) frame select 2 # Jump to frame #2
|
|
164
|
+
(lldb) frame info # Current frame info
|
|
165
|
+
(lldb) frame variable # All variables in frame
|
|
166
|
+
(lldb) up # Move up one frame
|
|
167
|
+
(lldb) down # Move down one frame
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### Thread Return (skip execution)
|
|
171
|
+
|
|
172
|
+
```text
|
|
173
|
+
(lldb) thread return # Return from current frame
|
|
174
|
+
(lldb) thread return false # Return false from a Bool func
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Use `thread return` to skip the rest of a function during debugging.
|
|
178
|
+
Useful for bypassing a crash or testing a different code path.
|
|
179
|
+
|
|
180
|
+
## Memory Inspection
|
|
181
|
+
|
|
182
|
+
```text
|
|
183
|
+
(lldb) memory read 0x600003a04000 # Default format
|
|
184
|
+
(lldb) memory read -s4 -fx -c8 addr # 8 x 4-byte hex words
|
|
185
|
+
(lldb) memory read -f s addr # Read as C string
|
|
186
|
+
(lldb) memory find 0x100000 0x200000 -e "DEADBEEF" # Search memory range
|
|
187
|
+
(lldb) image lookup -a 0x100004500 # Symbol at address
|
|
188
|
+
(lldb) image lookup -n loadData # Address of symbol
|
|
189
|
+
(lldb) image list # All loaded images/frameworks
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### Swift Metadata Inspection
|
|
193
|
+
|
|
194
|
+
```text
|
|
195
|
+
(lldb) e -l swift -- print(type(of: myObject))
|
|
196
|
+
(lldb) e -l swift -- dump(myObject) # Full mirror dump
|
|
197
|
+
(lldb) e -l swift -- Mirror(reflecting: myObject).children.map { $0.label }
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
## Custom Type Summaries
|
|
201
|
+
|
|
202
|
+
Add type summaries to `.lldbinit` for cleaner debugger output:
|
|
203
|
+
|
|
204
|
+
```text
|
|
205
|
+
# ~/.lldbinit
|
|
206
|
+
|
|
207
|
+
# Show CLLocationCoordinate2D as "lat, lon"
|
|
208
|
+
type summary add CLLocationCoordinate2D \
|
|
209
|
+
--summary-string "lat=${var.latitude}, lon=${var.longitude}"
|
|
210
|
+
|
|
211
|
+
# Show Date as readable string
|
|
212
|
+
type summary add Foundation.Date \
|
|
213
|
+
--summary-string "${var.timeIntervalSinceReferenceDate} secs since 2001"
|
|
214
|
+
|
|
215
|
+
# Custom summary for your own types
|
|
216
|
+
type summary add MyApp.UserProfile \
|
|
217
|
+
--summary-string "User(${var.name}, id=${var.id})"
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
## Python Scripting
|
|
221
|
+
|
|
222
|
+
### Inline Python
|
|
223
|
+
|
|
224
|
+
```text
|
|
225
|
+
(lldb) script import os
|
|
226
|
+
(lldb) script print(os.getpid())
|
|
227
|
+
(lldb) script lldb.debugger.GetSelectedTarget().GetProcess().GetNumThreads()
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
### Custom Python Command
|
|
231
|
+
|
|
232
|
+
Create `~/lldb_commands/dump_views.py`:
|
|
233
|
+
|
|
234
|
+
```python
|
|
235
|
+
import lldb
|
|
236
|
+
|
|
237
|
+
def dump_view_hierarchy(debugger, command, result, internal_dict):
|
|
238
|
+
"""Dump the key window's view hierarchy."""
|
|
239
|
+
target = debugger.GetSelectedTarget()
|
|
240
|
+
process = target.GetProcess()
|
|
241
|
+
thread = process.GetSelectedThread()
|
|
242
|
+
frame = thread.GetSelectedFrame()
|
|
243
|
+
|
|
244
|
+
expr = '(NSString *)[[UIApplication sharedApplication].keyWindow recursiveDescription]'
|
|
245
|
+
value = frame.EvaluateExpression(expr)
|
|
246
|
+
result.AppendMessage(str(value.GetObjectDescription()))
|
|
247
|
+
|
|
248
|
+
def __lldb_init_module(debugger, internal_dict):
|
|
249
|
+
debugger.HandleCommand(
|
|
250
|
+
'command script add -f dump_views.dump_view_hierarchy dump_views'
|
|
251
|
+
)
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
Load in `.lldbinit`:
|
|
255
|
+
|
|
256
|
+
```text
|
|
257
|
+
command script import ~/lldb_commands/dump_views.py
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
Then use in LLDB:
|
|
261
|
+
|
|
262
|
+
```text
|
|
263
|
+
(lldb) dump_views
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
## Useful Symbolic Breakpoints
|
|
267
|
+
|
|
268
|
+
Set these in Xcode's Breakpoint Navigator for common debugging scenarios:
|
|
269
|
+
|
|
270
|
+
| Symbol | Purpose |
|
|
271
|
+
|--------|---------|
|
|
272
|
+
| `UIViewAlertForUnsatisfiableConstraints` | Auto Layout constraint conflicts |
|
|
273
|
+
| `swift_willThrow` | Break on all Swift throws |
|
|
274
|
+
| `malloc_error_break` | Heap corruption detection |
|
|
275
|
+
| `_UITraitCollectionChangeObserverNotify` | Track trait collection changes |
|
|
276
|
+
| `objc_exception_throw` | Break on ObjC exceptions |
|
|
277
|
+
| `-[UIApplication _performMemoryWarning]` | Memory warning simulation |
|
|
278
|
+
| `NSInternalInconsistencyException` | Foundation assertion failures |
|
|
279
|
+
|
|
280
|
+
## LLDB Init File
|
|
281
|
+
|
|
282
|
+
Place commonly used configuration in `~/.lldbinit`:
|
|
283
|
+
|
|
284
|
+
```text
|
|
285
|
+
# Custom aliases
|
|
286
|
+
command alias -- pp e -l swift -- import Foundation
|
|
287
|
+
command alias -- pjson e -l swift -- print(String(data: try! JSONSerialization.data(withJSONObject: %1, options: .prettyPrinted), encoding: .utf8)!)
|
|
288
|
+
|
|
289
|
+
# Type summaries
|
|
290
|
+
type summary add --summary-string "${var.rawValue}" -x "^.*RawRepresentable$"
|
|
291
|
+
|
|
292
|
+
# Load custom scripts
|
|
293
|
+
command script import ~/lldb_commands/dump_views.py
|
|
294
|
+
|
|
295
|
+
# Settings
|
|
296
|
+
settings set target.language swift
|
|
297
|
+
settings set frame-format "frame #${frame.index}: ${frame.pc}{ ${module.file.basename}{\`${function.name-with-args}{${frame.no-debug}}}}\n"
|
|
298
|
+
```
|