@devo-bmad-custom/agent-orchestration 1.0.2 → 1.0.4
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/lib/installer.js +33 -0
- package/package.json +1 -1
- package/src/.agents/skills/audit-website/README.md +20 -20
- package/src/.agents/skills/audit-website/SKILL.md +470 -470
- package/src/.agents/skills/audit-website/agents/openai.yaml +6 -6
- package/src/.agents/skills/audit-website/assets/icon-small.svg +41 -41
- package/src/.agents/skills/audit-website/references/OUTPUT-FORMAT.md +250 -250
- package/src/.agents/skills/clean-code-standards/SKILL.md +104 -104
- package/src/.agents/skills/excalidraw-dark-standard/SKILL.md +281 -281
- package/src/.agents/skills/frontend-responsive-design-standards/SKILL.md +434 -434
- package/src/.agents/skills/java-fundamentals/SKILL.md +116 -116
- package/src/.agents/skills/java-performance/SKILL.md +119 -119
- package/src/.agents/skills/next-best-practices/SKILL.md +153 -153
- package/src/.agents/skills/next-best-practices/async-patterns.md +87 -87
- package/src/.agents/skills/next-best-practices/bundling.md +180 -180
- package/src/.agents/skills/next-best-practices/data-patterns.md +297 -297
- package/src/.agents/skills/next-best-practices/debug-tricks.md +105 -105
- package/src/.agents/skills/next-best-practices/directives.md +73 -73
- package/src/.agents/skills/next-best-practices/error-handling.md +227 -227
- package/src/.agents/skills/next-best-practices/file-conventions.md +140 -140
- package/src/.agents/skills/next-best-practices/font.md +245 -245
- package/src/.agents/skills/next-best-practices/functions.md +108 -108
- package/src/.agents/skills/next-best-practices/hydration-error.md +91 -91
- package/src/.agents/skills/next-best-practices/image.md +173 -173
- package/src/.agents/skills/next-best-practices/metadata.md +301 -301
- package/src/.agents/skills/next-best-practices/parallel-routes.md +287 -287
- package/src/.agents/skills/next-best-practices/route-handlers.md +146 -146
- package/src/.agents/skills/next-best-practices/rsc-boundaries.md +159 -159
- package/src/.agents/skills/next-best-practices/runtime-selection.md +39 -39
- package/src/.agents/skills/next-best-practices/scripts.md +141 -141
- package/src/.agents/skills/next-best-practices/self-hosting.md +371 -371
- package/src/.agents/skills/next-best-practices/suspense-boundaries.md +67 -67
- package/src/.agents/skills/nextjs-app-router-patterns/SKILL.md +537 -537
- package/src/.agents/skills/postgresql-optimization/SKILL.md +404 -404
- package/src/.agents/skills/python-backend/SKILL.md +153 -153
- package/src/.agents/skills/python-fundamentals/SKILL.md +234 -234
- package/src/.agents/skills/python-performance/SKILL.md +404 -404
- package/src/.agents/skills/react-expert/SKILL.md +335 -335
- package/src/.agents/skills/redis-best-practices/SKILL.md +438 -438
- package/src/.agents/skills/security-best-practices/SKILL.md +288 -288
- package/src/.agents/skills/security-review/LICENSE +22 -22
- package/src/.agents/skills/security-review/SKILL.md +312 -312
- package/src/.agents/skills/security-review/infrastructure/docker.md +432 -432
- package/src/.agents/skills/security-review/languages/javascript.md +388 -388
- package/src/.agents/skills/security-review/languages/python.md +363 -363
- package/src/.agents/skills/security-review/references/api-security.md +519 -519
- package/src/.agents/skills/security-review/references/authentication.md +353 -353
- package/src/.agents/skills/security-review/references/authorization.md +372 -372
- package/src/.agents/skills/security-review/references/business-logic.md +443 -443
- package/src/.agents/skills/security-review/references/cryptography.md +329 -329
- package/src/.agents/skills/security-review/references/csrf.md +398 -398
- package/src/.agents/skills/security-review/references/data-protection.md +378 -378
- package/src/.agents/skills/security-review/references/deserialization.md +410 -410
- package/src/.agents/skills/security-review/references/error-handling.md +436 -436
- package/src/.agents/skills/security-review/references/file-security.md +457 -457
- package/src/.agents/skills/security-review/references/injection.md +259 -259
- package/src/.agents/skills/security-review/references/logging.md +433 -433
- package/src/.agents/skills/security-review/references/misconfiguration.md +435 -435
- package/src/.agents/skills/security-review/references/modern-threats.md +475 -475
- package/src/.agents/skills/security-review/references/ssrf.md +415 -415
- package/src/.agents/skills/security-review/references/supply-chain.md +405 -405
- package/src/.agents/skills/security-review/references/xss.md +336 -336
- package/src/.agents/skills/subagent-driven-development/SKILL.md +275 -275
- package/src/.agents/skills/subagent-driven-development/code-quality-reviewer-prompt.md +26 -26
- package/src/.agents/skills/subagent-driven-development/implementer-prompt.md +113 -113
- package/src/.agents/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -61
- package/src/.agents/skills/systematic-debugging/CREATION-LOG.md +119 -119
- package/src/.agents/skills/systematic-debugging/SKILL.md +296 -296
- package/src/.agents/skills/systematic-debugging/condition-based-waiting-example.ts +158 -158
- package/src/.agents/skills/systematic-debugging/condition-based-waiting.md +115 -115
- package/src/.agents/skills/systematic-debugging/defense-in-depth.md +122 -122
- package/src/.agents/skills/systematic-debugging/root-cause-tracing.md +169 -169
- package/src/.agents/skills/systematic-debugging/test-academic.md +14 -14
- package/src/.agents/skills/systematic-debugging/test-pressure-1.md +58 -58
- package/src/.agents/skills/systematic-debugging/test-pressure-2.md +68 -68
- package/src/.agents/skills/systematic-debugging/test-pressure-3.md +69 -69
- package/src/.agents/skills/typescript-best-practices/SKILL.md +373 -373
- package/src/.agents/skills/ui-ux-pro-custom/SKILL.md +348 -348
- package/src/.agents/skills/ui-ux-pro-custom/data/charts.csv +26 -26
- package/src/.agents/skills/ui-ux-pro-custom/data/colors.csv +97 -97
- package/src/.agents/skills/ui-ux-pro-custom/data/icons.csv +101 -101
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/SKILL.md +106 -106
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/accessibility.md +475 -475
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/animation.md +466 -466
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/composition-locals.md +231 -231
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/deprecated-patterns.md +323 -323
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/lists-scrolling.md +400 -400
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/modifiers.md +331 -331
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/navigation.md +416 -416
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/performance.md +446 -446
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/side-effects.md +516 -516
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/source-code/foundation-source.md +13327 -13327
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/source-code/material3-source.md +19097 -19097
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/source-code/navigation-source.md +2947 -2947
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/source-code/runtime-source.md +11316 -11316
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/source-code/ui-source.md +7896 -7896
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/state-management.md +377 -377
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/styles-experimental.md +470 -470
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/theming-material3.md +349 -349
- package/src/.agents/skills/ui-ux-pro-custom/data/jetpack-compose-expert-skill/references/view-composition.md +595 -595
- package/src/.agents/skills/ui-ux-pro-custom/data/landing.csv +31 -31
- package/src/.agents/skills/ui-ux-pro-custom/data/mobile-ui-layout.md +654 -654
- package/src/.agents/skills/ui-ux-pro-custom/data/products.csv +96 -96
- package/src/.agents/skills/ui-ux-pro-custom/data/react-performance.csv +45 -45
- package/src/.agents/skills/ui-ux-pro-custom/data/stacks/astro.csv +54 -54
- package/src/.agents/skills/ui-ux-pro-custom/data/stacks/flutter.csv +53 -53
- package/src/.agents/skills/ui-ux-pro-custom/data/stacks/html-tailwind.csv +56 -56
- package/src/.agents/skills/ui-ux-pro-custom/data/stacks/jetpack-compose.csv +53 -53
- package/src/.agents/skills/ui-ux-pro-custom/data/stacks/nextjs.csv +53 -53
- package/src/.agents/skills/ui-ux-pro-custom/data/stacks/nuxt-ui.csv +51 -51
- package/src/.agents/skills/ui-ux-pro-custom/data/stacks/nuxtjs.csv +59 -59
- package/src/.agents/skills/ui-ux-pro-custom/data/stacks/react-native.csv +56 -56
- package/src/.agents/skills/ui-ux-pro-custom/data/stacks/react.csv +54 -54
- package/src/.agents/skills/ui-ux-pro-custom/data/stacks/shadcn.csv +61 -61
- package/src/.agents/skills/ui-ux-pro-custom/data/stacks/svelte.csv +54 -54
- package/src/.agents/skills/ui-ux-pro-custom/data/stacks/swiftui.csv +51 -51
- package/src/.agents/skills/ui-ux-pro-custom/data/stacks/vue.csv +50 -50
- package/src/.agents/skills/ui-ux-pro-custom/data/styles.csv +68 -68
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/alarmkit/SKILL.md +438 -438
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/alarmkit/references/alarmkit-patterns.md +584 -584
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/app-clips/SKILL.md +436 -436
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/app-intents/SKILL.md +489 -489
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/app-intents/references/appintents-advanced.md +1076 -1076
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/app-store-review/SKILL.md +340 -340
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/app-store-review/references/privacy-manifest.md +90 -90
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/app-store-review/references/review-checklists.md +106 -106
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/apple-on-device-ai/SKILL.md +500 -500
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/apple-on-device-ai/references/coreml-conversion.md +425 -425
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/apple-on-device-ai/references/coreml-optimization.md +344 -344
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/apple-on-device-ai/references/foundation-models.md +508 -508
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/apple-on-device-ai/references/mlx-swift.md +285 -285
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/authentication/SKILL.md +496 -496
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/authentication/references/keychain-biometric.md +211 -211
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/background-processing/SKILL.md +499 -499
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/background-processing/references/background-task-patterns.md +390 -390
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/callkit-voip/SKILL.md +461 -461
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/callkit-voip/references/callkit-patterns.md +425 -425
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/cloudkit-sync/SKILL.md +492 -492
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/cloudkit-sync/references/cloudkit-patterns.md +461 -461
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/codable-patterns/SKILL.md +467 -467
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/contacts-framework/SKILL.md +425 -425
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/contacts-framework/references/contacts-patterns.md +409 -409
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/core-bluetooth/SKILL.md +491 -491
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/core-bluetooth/references/ble-patterns.md +435 -435
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/core-motion/SKILL.md +388 -388
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/core-motion/references/motion-patterns.md +405 -405
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/core-nfc/SKILL.md +495 -495
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/core-nfc/references/nfc-patterns.md +420 -420
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/coreml/SKILL.md +459 -459
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/coreml/references/coreml-swift-integration.md +765 -765
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/debugging-instruments/SKILL.md +422 -422
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/debugging-instruments/references/instruments-guide.md +387 -387
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/debugging-instruments/references/lldb-patterns.md +298 -298
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/device-integrity/SKILL.md +477 -477
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/energykit/SKILL.md +460 -460
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/energykit/references/energykit-patterns.md +541 -541
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/eventkit-calendar/SKILL.md +483 -483
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/eventkit-calendar/references/eventkit-patterns.md +326 -326
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/healthkit/SKILL.md +498 -498
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/healthkit/references/healthkit-patterns.md +602 -602
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/homekit-matter/SKILL.md +496 -496
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/homekit-matter/references/matter-commissioning.md +455 -455
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/ios-accessibility/SKILL.md +301 -301
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/ios-accessibility/references/a11y-patterns.md +140 -140
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/ios-localization/SKILL.md +418 -418
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/ios-localization/references/formatstyle-locale.md +627 -627
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/ios-localization/references/string-catalogs.md +462 -462
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/ios-networking/SKILL.md +441 -441
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/ios-networking/references/background-websocket.md +862 -862
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/ios-networking/references/lightweight-clients.md +93 -93
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/ios-networking/references/network-framework.md +563 -563
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/ios-networking/references/urlsession-patterns.md +1116 -1116
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/ios-security/SKILL.md +496 -496
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/ios-security/references/app-review-guidelines.md +174 -174
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/ios-security/references/cryptokit-advanced.md +296 -296
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/ios-security/references/file-storage-patterns.md +354 -354
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/ios-security/references/privacy-manifest.md +117 -117
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/live-activities/SKILL.md +500 -500
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/live-activities/references/live-activity-patterns.md +868 -868
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/mapkit-location/SKILL.md +485 -485
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/mapkit-location/references/corelocation-patterns.md +730 -730
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/mapkit-location/references/mapkit-patterns.md +748 -748
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/metrickit-diagnostics/SKILL.md +479 -479
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/musickit-audio/SKILL.md +395 -395
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/musickit-audio/references/musickit-patterns.md +363 -363
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/natural-language/SKILL.md +412 -412
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/natural-language/references/translation-patterns.md +311 -311
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/passkit-wallet/SKILL.md +398 -398
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/passkit-wallet/references/wallet-passes.md +254 -254
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/pencilkit-drawing/SKILL.md +387 -387
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/pencilkit-drawing/references/paperkit-integration.md +376 -376
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/pencilkit-drawing/references/pencilkit-patterns.md +302 -302
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/permissionkit/SKILL.md +446 -446
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/permissionkit/references/permissionkit-patterns.md +435 -435
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/photos-camera-media/SKILL.md +500 -500
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/photos-camera-media/references/av-playback.md +701 -701
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/photos-camera-media/references/camera-capture.md +774 -774
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/photos-camera-media/references/image-loading-caching.md +869 -869
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/photos-camera-media/references/photospicker-patterns.md +597 -597
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/push-notifications/SKILL.md +500 -500
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/push-notifications/references/notification-patterns.md +677 -677
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/push-notifications/references/rich-notifications.md +745 -745
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/realitykit-ar/SKILL.md +479 -479
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/realitykit-ar/references/realitykit-patterns.md +480 -480
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/shareplay-activities/SKILL.md +483 -483
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/shareplay-activities/references/shareplay-patterns.md +544 -544
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/speech-recognition/SKILL.md +485 -485
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/storekit/SKILL.md +478 -478
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/storekit/references/app-review-guidelines.md +58 -58
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/storekit/references/storekit-advanced.md +755 -755
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swift-charts/SKILL.md +487 -487
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swift-charts/references/charts-patterns.md +895 -895
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swift-concurrency/SKILL.md +408 -408
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swift-concurrency/references/approachable-concurrency.md +80 -80
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swift-concurrency/references/swift-6-2-concurrency.md +233 -233
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swift-concurrency/references/swiftui-concurrency.md +187 -187
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swift-concurrency/references/synchronization-primitives.md +341 -341
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swift-language/SKILL.md +498 -498
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swift-language/references/swift-patterns-extended.md +505 -505
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swift-testing/SKILL.md +467 -467
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swift-testing/references/testing-patterns.md +504 -504
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftdata/SKILL.md +334 -334
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftdata/references/core-data-coexistence.md +504 -504
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftdata/references/swiftdata-advanced.md +975 -975
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftdata/references/swiftdata-queries.md +675 -675
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-animation/SKILL.md +481 -481
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-animation/references/animation-advanced.md +804 -804
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-animation/references/core-animation-bridge.md +553 -553
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-gestures/SKILL.md +450 -450
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-gestures/references/gesture-patterns.md +425 -425
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-layout-components/SKILL.md +336 -336
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-layout-components/references/form.md +97 -97
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-layout-components/references/grids.md +69 -69
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-layout-components/references/list.md +99 -99
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-layout-components/references/scrollview.md +147 -147
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-liquid-glass/SKILL.md +325 -325
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-liquid-glass/references/liquid-glass.md +387 -387
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-navigation/SKILL.md +262 -262
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-navigation/references/deeplinks.md +207 -207
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-navigation/references/navigationstack.md +177 -177
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-navigation/references/sheets.md +169 -169
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-navigation/references/tabview.md +178 -178
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-patterns/SKILL.md +381 -381
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-patterns/references/architecture-patterns.md +486 -486
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-patterns/references/deprecated-migration.md +1097 -1097
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-patterns/references/design-polish.md +780 -780
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-patterns/references/platform-and-sharing.md +696 -696
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-performance/SKILL.md +491 -491
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-performance/references/demystify-swiftui-performance-wwdc23.md +46 -46
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-performance/references/optimizing-swiftui-performance-instruments.md +29 -29
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-performance/references/understanding-hangs-in-your-app.md +33 -33
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-performance/references/understanding-improving-swiftui-performance.md +52 -52
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-uikit-interop/SKILL.md +428 -428
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-uikit-interop/references/hosting-migration.md +534 -534
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/swiftui-uikit-interop/references/representable-recipes.md +1133 -1133
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/tipkit/SKILL.md +494 -494
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/tipkit/references/tipkit-patterns.md +782 -782
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/vision-framework/SKILL.md +475 -475
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/vision-framework/references/vision-requests.md +736 -736
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/vision-framework/references/visionkit-scanner.md +738 -738
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/weatherkit/SKILL.md +410 -410
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/weatherkit/references/weatherkit-patterns.md +567 -567
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/widgetkit/SKILL.md +497 -497
- package/src/.agents/skills/ui-ux-pro-custom/data/swift-ios-skills/widgetkit/references/widgetkit-advanced.md +871 -871
- package/src/.agents/skills/ui-ux-pro-custom/data/typography.csv +57 -57
- package/src/.agents/skills/ui-ux-pro-custom/data/ui-reasoning.csv +101 -101
- package/src/.agents/skills/ui-ux-pro-custom/data/ux-guidelines.csv +99 -99
- package/src/.agents/skills/ui-ux-pro-custom/data/web-interface.csv +31 -31
- package/src/.agents/skills/ui-ux-pro-custom/scripts/core.py +253 -253
- package/src/.agents/skills/ui-ux-pro-custom/scripts/design_system.py +1067 -1067
- package/src/.agents/skills/ui-ux-pro-custom/scripts/search.py +114 -114
- package/src/.agents/skills/ux-audit/SKILL.md +150 -150
- package/src/.agents/skills/websocket-engineer/SKILL.md +168 -168
- package/src/.agents/skills/websocket-engineer/references/alternatives.md +391 -391
- package/src/.agents/skills/websocket-engineer/references/patterns.md +400 -400
- package/src/.agents/skills/websocket-engineer/references/protocol.md +195 -195
- package/src/.agents/skills/websocket-engineer/references/scaling.md +333 -333
- package/src/.agents/skills/websocket-engineer/references/security.md +474 -474
- package/src/.agents/skills/writing-skills/SKILL.md +655 -655
- package/src/.agents/skills/writing-skills/anthropic-best-practices.md +1150 -1150
- package/src/.agents/skills/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -189
- package/src/.agents/skills/writing-skills/graphviz-conventions.dot +171 -171
- package/src/.agents/skills/writing-skills/persuasion-principles.md +187 -187
- package/src/.agents/skills/writing-skills/render-graphs.js +168 -168
- package/src/.agents/skills/writing-skills/testing-skills-with-subagents.md +384 -384
- package/src/.claude/commands/master-orchestrator.md +15 -0
- package/src/_memory/config.yaml +11 -11
- package/src/_memory/master-orchestrator-sidecar/instructions.md +97 -47
- package/src/_memory/skills/nimbalyst-tracking/SKILL.md +103 -103
- package/src/_memory/skills/writing-skills/SKILL.md +655 -655
- package/src/bmb/agents/agent-builder.md +59 -59
- package/src/bmb/agents/module-builder.md +60 -60
- package/src/bmb/agents/workflow-builder.md +61 -61
- package/src/bmb/config.yaml +12 -12
- package/src/bmb/module-help.csv +13 -13
- package/src/bmb/workflows/agent/data/agent-architecture.md +258 -258
- package/src/bmb/workflows/agent/data/agent-compilation.md +185 -185
- package/src/bmb/workflows/agent/data/agent-menu-patterns.md +189 -189
- package/src/bmb/workflows/agent/data/agent-metadata.md +133 -133
- package/src/bmb/workflows/agent/data/agent-validation.md +111 -111
- package/src/bmb/workflows/agent/data/brainstorm-context.md +96 -96
- package/src/bmb/workflows/agent/data/communication-presets.csv +61 -61
- package/src/bmb/workflows/agent/data/critical-actions.md +75 -75
- package/src/bmb/workflows/agent/data/persona-properties.md +252 -252
- package/src/bmb/workflows/agent/data/principles-crafting.md +142 -142
- package/src/bmb/workflows/agent/data/reference/module-examples/architect.md +68 -68
- package/src/bmb/workflows/agent/data/reference/with-sidecar/journal-keeper/journal-keeper-sidecar/entries/yy-mm-dd-entry-template.md +16 -16
- package/src/bmb/workflows/agent/data/understanding-agent-types.md +126 -126
- package/src/bmb/workflows/agent/steps-c/step-01-brainstorm.md +129 -129
- package/src/bmb/workflows/agent/steps-c/step-02-discovery.md +170 -170
- package/src/bmb/workflows/agent/steps-c/step-03-sidecar-metadata.md +309 -309
- package/src/bmb/workflows/agent/steps-c/step-04-persona.md +213 -213
- package/src/bmb/workflows/agent/steps-c/step-05-commands-menu.md +179 -179
- package/src/bmb/workflows/agent/steps-c/step-06-activation.md +278 -278
- package/src/bmb/workflows/agent/steps-c/step-07-build-agent.md +316 -316
- package/src/bmb/workflows/agent/steps-c/step-08-celebrate.md +247 -247
- package/src/bmb/workflows/agent/steps-e/e-01-load-existing.md +221 -221
- package/src/bmb/workflows/agent/steps-e/e-02-discover-edits.md +195 -195
- package/src/bmb/workflows/agent/steps-e/e-04-sidecar-metadata.md +126 -126
- package/src/bmb/workflows/agent/steps-e/e-05-persona.md +135 -135
- package/src/bmb/workflows/agent/steps-e/e-06-commands-menu.md +123 -123
- package/src/bmb/workflows/agent/steps-e/e-07-activation.md +124 -124
- package/src/bmb/workflows/agent/steps-e/e-08-edit-agent.md +197 -197
- package/src/bmb/workflows/agent/steps-e/e-09-celebrate.md +155 -155
- package/src/bmb/workflows/agent/steps-v/v-01-load-review.md +137 -137
- package/src/bmb/workflows/agent/steps-v/v-02a-validate-metadata.md +116 -116
- package/src/bmb/workflows/agent/steps-v/v-02b-validate-persona.md +124 -124
- package/src/bmb/workflows/agent/steps-v/v-02c-validate-menu.md +127 -127
- package/src/bmb/workflows/agent/steps-v/v-02d-validate-structure.md +134 -134
- package/src/bmb/workflows/agent/steps-v/v-02e-validate-sidecar.md +134 -134
- package/src/bmb/workflows/agent/steps-v/v-03-summary.md +104 -104
- package/src/bmb/workflows/agent/templates/agent-plan.template.md +5 -5
- package/src/bmb/workflows/agent/templates/agent-template.md +89 -89
- package/src/bmb/workflows/agent/workflow-create-agent.md +72 -72
- package/src/bmb/workflows/agent/workflow-edit-agent.md +75 -75
- package/src/bmb/workflows/agent/workflow-validate-agent.md +73 -73
- package/src/bmb/workflows/module/data/agent-architecture.md +179 -179
- package/src/bmb/workflows/module/data/agent-spec-template.md +79 -79
- package/src/bmb/workflows/module/data/module-standards.md +263 -263
- package/src/bmb/workflows/module/data/module-yaml-conventions.md +392 -392
- package/src/bmb/workflows/module/module-help-generate.md +254 -254
- package/src/bmb/workflows/module/steps-b/step-01-welcome.md +148 -148
- package/src/bmb/workflows/module/steps-b/step-02-spark.md +141 -141
- package/src/bmb/workflows/module/steps-b/step-03-module-type.md +149 -149
- package/src/bmb/workflows/module/steps-b/step-04-vision.md +83 -83
- package/src/bmb/workflows/module/steps-b/step-05-identity.md +97 -97
- package/src/bmb/workflows/module/steps-b/step-06-users.md +86 -86
- package/src/bmb/workflows/module/steps-b/step-07-value.md +76 -76
- package/src/bmb/workflows/module/steps-b/step-08-agents.md +97 -97
- package/src/bmb/workflows/module/steps-b/step-09-workflows.md +83 -83
- package/src/bmb/workflows/module/steps-b/step-10-tools.md +91 -91
- package/src/bmb/workflows/module/steps-b/step-11-scenarios.md +84 -84
- package/src/bmb/workflows/module/steps-b/step-12-creative.md +95 -95
- package/src/bmb/workflows/module/steps-b/step-13-review.md +105 -105
- package/src/bmb/workflows/module/steps-b/step-14-finalize.md +117 -117
- package/src/bmb/workflows/module/steps-c/step-01-load-brief.md +179 -179
- package/src/bmb/workflows/module/steps-c/step-01b-continue.md +82 -82
- package/src/bmb/workflows/module/steps-c/step-02-structure.md +105 -105
- package/src/bmb/workflows/module/steps-c/step-03-config.md +119 -119
- package/src/bmb/workflows/module/steps-c/step-04-agents.md +168 -168
- package/src/bmb/workflows/module/steps-c/step-05-workflows.md +184 -184
- package/src/bmb/workflows/module/steps-c/step-06-docs.md +401 -401
- package/src/bmb/workflows/module/steps-c/step-07-complete.md +152 -152
- package/src/bmb/workflows/module/steps-e/step-01-load-target.md +81 -81
- package/src/bmb/workflows/module/steps-e/step-02-select-edit.md +77 -77
- package/src/bmb/workflows/module/steps-e/step-03-apply-edit.md +77 -77
- package/src/bmb/workflows/module/steps-e/step-04-review.md +80 -80
- package/src/bmb/workflows/module/steps-e/step-05-confirm.md +75 -75
- package/src/bmb/workflows/module/steps-v/step-01-load-target.md +96 -96
- package/src/bmb/workflows/module/steps-v/step-02-file-structure.md +93 -93
- package/src/bmb/workflows/module/steps-v/step-03-module-yaml.md +99 -99
- package/src/bmb/workflows/module/steps-v/step-04-agent-specs.md +152 -152
- package/src/bmb/workflows/module/steps-v/step-05-workflow-specs.md +152 -152
- package/src/bmb/workflows/module/steps-v/step-06-documentation.md +143 -143
- package/src/bmb/workflows/module/steps-v/step-07-installation.md +102 -102
- package/src/bmb/workflows/module/steps-v/step-08-report.md +197 -197
- package/src/bmb/workflows/module/templates/brief-template.md +154 -154
- package/src/bmb/workflows/module/templates/workflow-spec-template.md +96 -96
- package/src/bmb/workflows/module/workflow-create-module-brief.md +71 -71
- package/src/bmb/workflows/module/workflow-create-module.md +86 -86
- package/src/bmb/workflows/module/workflow-edit-module.md +66 -66
- package/src/bmb/workflows/module/workflow-validate-module.md +66 -66
- package/src/bmb/workflows/workflow/data/architecture.md +150 -150
- package/src/bmb/workflows/workflow/data/common-workflow-tools.csv +19 -19
- package/src/bmb/workflows/workflow/data/csv-data-file-standards.md +53 -53
- package/src/bmb/workflows/workflow/data/frontmatter-standards.md +184 -184
- package/src/bmb/workflows/workflow/data/input-discovery-standards.md +191 -191
- package/src/bmb/workflows/workflow/data/intent-vs-prescriptive-spectrum.md +44 -44
- package/src/bmb/workflows/workflow/data/menu-handling-standards.md +133 -133
- package/src/bmb/workflows/workflow/data/output-format-standards.md +135 -135
- package/src/bmb/workflows/workflow/data/step-file-rules.md +235 -235
- package/src/bmb/workflows/workflow/data/step-type-patterns.md +257 -257
- package/src/bmb/workflows/workflow/data/subprocess-optimization-patterns.md +188 -188
- package/src/bmb/workflows/workflow/data/trimodal-workflow-structure.md +164 -164
- package/src/bmb/workflows/workflow/data/workflow-chaining-standards.md +222 -222
- package/src/bmb/workflows/workflow/data/workflow-examples.md +232 -232
- package/src/bmb/workflows/workflow/data/workflow-type-criteria.md +134 -134
- package/src/bmb/workflows/workflow/steps-c/step-00-conversion.md +263 -263
- package/src/bmb/workflows/workflow/steps-c/step-01-discovery.md +194 -194
- package/src/bmb/workflows/workflow/steps-c/step-01b-continuation.md +3 -3
- package/src/bmb/workflows/workflow/steps-c/step-02-classification.md +270 -270
- package/src/bmb/workflows/workflow/steps-c/step-03-requirements.md +283 -283
- package/src/bmb/workflows/workflow/steps-c/step-04-tools.md +282 -282
- package/src/bmb/workflows/workflow/steps-c/step-05-plan-review.md +243 -243
- package/src/bmb/workflows/workflow/steps-c/step-06-design.md +330 -330
- package/src/bmb/workflows/workflow/steps-c/step-07-foundation.md +239 -239
- package/src/bmb/workflows/workflow/steps-c/step-08-build-step-01.md +379 -379
- package/src/bmb/workflows/workflow/steps-c/step-09-build-next-step.md +350 -350
- package/src/bmb/workflows/workflow/steps-c/step-10-confirmation.md +322 -322
- package/src/bmb/workflows/workflow/steps-c/step-11-completion.md +191 -191
- package/src/bmb/workflows/workflow/steps-e/step-e-01-assess-workflow.md +237 -237
- package/src/bmb/workflows/workflow/steps-e/step-e-02-discover-edits.md +251 -251
- package/src/bmb/workflows/workflow/steps-e/step-e-03-fix-validation.md +254 -254
- package/src/bmb/workflows/workflow/steps-e/step-e-04-direct-edit.md +277 -277
- package/src/bmb/workflows/workflow/steps-e/step-e-05-apply-edit.md +154 -154
- package/src/bmb/workflows/workflow/steps-e/step-e-06-validate-after.md +190 -190
- package/src/bmb/workflows/workflow/steps-e/step-e-07-complete.md +206 -206
- package/src/bmb/workflows/workflow/steps-v/step-01-validate-max-mode.md +109 -109
- package/src/bmb/workflows/workflow/steps-v/step-01-validate.md +221 -221
- package/src/bmb/workflows/workflow/steps-v/step-01b-structure.md +152 -152
- package/src/bmb/workflows/workflow/steps-v/step-02-frontmatter-validation.md +199 -199
- package/src/bmb/workflows/workflow/steps-v/step-02b-path-violations.md +265 -265
- package/src/bmb/workflows/workflow/steps-v/step-03-menu-validation.md +164 -164
- package/src/bmb/workflows/workflow/steps-v/step-04-step-type-validation.md +211 -211
- package/src/bmb/workflows/workflow/steps-v/step-05-output-format-validation.md +200 -200
- package/src/bmb/workflows/workflow/steps-v/step-06-validation-design-check.md +195 -195
- package/src/bmb/workflows/workflow/steps-v/step-07-instruction-style-check.md +209 -209
- package/src/bmb/workflows/workflow/steps-v/step-08-collaborative-experience-check.md +199 -199
- package/src/bmb/workflows/workflow/steps-v/step-08b-subprocess-optimization.md +179 -179
- package/src/bmb/workflows/workflow/steps-v/step-09-cohesive-review.md +186 -186
- package/src/bmb/workflows/workflow/steps-v/step-10-report-complete.md +154 -154
- package/src/bmb/workflows/workflow/steps-v/step-11-plan-validation.md +237 -237
- package/src/bmb/workflows/workflow/templates/minimal-output-template.md +11 -11
- package/src/bmb/workflows/workflow/templates/step-01-init-continuable-template.md +241 -241
- package/src/bmb/workflows/workflow/templates/step-1b-template.md +224 -224
- package/src/bmb/workflows/workflow/templates/step-template.md +294 -294
- package/src/bmb/workflows/workflow/templates/workflow-template.md +102 -102
- package/src/bmb/workflows/workflow/workflow-create-workflow.md +79 -79
- package/src/bmb/workflows/workflow/workflow-edit-workflow.md +65 -65
- package/src/bmb/workflows/workflow/workflow-rework-workflow.md +65 -65
- package/src/bmb/workflows/workflow/workflow-validate-max-parallel-workflow.md +66 -66
- package/src/bmb/workflows/workflow/workflow-validate-workflow.md +65 -65
- package/src/bmm/agents/analyst.md +104 -104
- package/src/bmm/agents/dev.md +100 -100
- package/src/bmm/agents/qa.md +100 -90
- package/src/bmm/agents/tech-writer/tech-writer.md +94 -94
- package/src/bmm/module-help.csv +31 -31
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md +115 -115
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md +107 -107
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +141 -141
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +144 -144
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +147 -147
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +161 -161
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +99 -99
- package/src/bmm/workflows/1-analysis/create-product-brief/workflow.md +57 -57
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +87 -87
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +156 -156
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +165 -165
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +140 -140
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +152 -152
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +345 -345
- package/src/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +92 -92
- package/src/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +164 -164
- package/src/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +174 -174
- package/src/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +184 -184
- package/src/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +105 -105
- package/src/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +360 -360
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +87 -87
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +165 -165
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +174 -174
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +141 -141
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +159 -159
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +387 -387
- package/src/bmm/workflows/1-analysis/research/workflow-domain-research.md +54 -54
- package/src/bmm/workflows/1-analysis/research/workflow-market-research.md +54 -54
- package/src/bmm/workflows/1-analysis/research/workflow-technical-research.md +54 -54
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01b-continue.md +100 -100
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02-discovery.md +160 -160
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02b-vision.md +88 -88
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02c-executive-summary.md +99 -99
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-03-success.md +169 -169
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-04-journeys.md +156 -156
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-05-domain.md +136 -136
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-06-innovation.md +176 -176
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-07-project-type.md +184 -184
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-08-scoping.md +174 -174
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-09-functional.md +175 -175
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-10-nonfunctional.md +189 -189
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-11-polish.md +162 -162
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-12-complete.md +79 -79
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01-discovery.md +183 -183
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01b-legacy-conversion.md +149 -149
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-02-review.md +187 -187
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-03-edit.md +192 -192
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-04-complete.md +108 -108
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md +166 -166
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02-format-detection.md +131 -131
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02b-parity-check.md +150 -150
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-03-density-validation.md +118 -118
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-04-brief-coverage-validation.md +155 -155
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-05-measurability-validation.md +170 -170
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-06-traceability-validation.md +158 -158
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-07-implementation-leakage-validation.md +147 -147
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-08-domain-compliance-validation.md +182 -182
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-09-project-type-validation.md +202 -202
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-10-smart-validation.md +148 -148
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-11-holistic-quality-validation.md +201 -201
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-12-completeness-validation.md +179 -179
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-13-report-complete.md +164 -164
- package/src/bmm/workflows/2-plan-workflows/create-prd/workflow-create-prd.md +65 -65
- package/src/bmm/workflows/2-plan-workflows/create-prd/workflow-edit-prd.md +65 -65
- package/src/bmm/workflows/2-plan-workflows/create-prd/workflow-validate-prd.md +63 -63
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +63 -63
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +106 -106
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +111 -111
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +115 -115
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +127 -127
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +167 -167
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +143 -143
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +118 -118
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +154 -154
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +136 -136
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +165 -165
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +135 -135
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +192 -192
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +101 -101
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +45 -45
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md +185 -185
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md +129 -129
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md +130 -130
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md +93 -93
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md +196 -196
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +129 -129
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +54 -54
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md +82 -82
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +106 -106
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +138 -138
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +129 -129
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +166 -166
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +186 -186
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +163 -163
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +38 -38
- package/src/bmm/workflows/3-solutioning/create-architecture/workflow.md +49 -49
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +124 -124
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +122 -122
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +84 -84
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +58 -58
- package/src/bmm/workflows/4-implementation/code-review/workflow.yaml +43 -43
- package/src/bmm/workflows/4-implementation/correct-course/workflow.yaml +53 -53
- package/src/bmm/workflows/4-implementation/create-story/checklist.md +159 -159
- package/src/bmm/workflows/4-implementation/create-story/template.md +79 -79
- package/src/bmm/workflows/4-implementation/create-story/workflow.yaml +52 -52
- package/src/bmm/workflows/4-implementation/dev-story/workflow.yaml +20 -20
- package/src/bmm/workflows/4-implementation/retrospective/workflow.yaml +52 -52
- package/src/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +52 -52
- package/src/bmm/workflows/4-implementation/sprint-status/workflow.yaml +25 -25
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md +158 -158
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md +122 -122
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md +93 -93
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md +93 -93
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md +87 -87
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md +146 -146
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +50 -50
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-02-investigate.md +152 -152
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-03-generate.md +123 -123
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-04-review.md +201 -201
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md +79 -79
- package/src/bmm/workflows/document-project/workflow.yaml +22 -22
- package/src/bmm/workflows/generate-project-context/steps/step-01-discover.md +184 -184
- package/src/bmm/workflows/generate-project-context/steps/step-02-generate.md +322 -322
- package/src/bmm/workflows/generate-project-context/steps/step-03-complete.md +235 -235
- package/src/bmm/workflows/generate-project-context/workflow.md +49 -49
- package/src/bmm/workflows/qa/automate/workflow.yaml +233 -233
- package/src/bmm/workflows/qa-generate-e2e-tests/workflow.yaml +42 -42
- package/src/core/config.yaml +9 -9
- package/src/core/module-help.csv +10 -10
- package/src/core/scripts/generate-loop-report.py +72 -72
- package/src/core/tasks/editorial-review-prose.xml +101 -101
- package/src/core/tasks/editorial-review-structure.xml +207 -207
- package/src/core/tasks/help.md +86 -86
- package/src/core/tasks/index-docs.xml +64 -64
- package/src/core/tasks/review-adversarial-general.xml +66 -66
- package/src/core/tasks/review-adversarial-loop.xml +46 -46
- package/src/core/tasks/review-edge-case-hunter.xml +63 -63
- package/src/core/tasks/review-party-loop.xml +46 -46
- package/src/core/tasks/shard-doc.xml +107 -107
- package/src/core/tasks/workflow.xml +235 -235
- package/src/core/templates/review-loop-report.html +88 -88
- package/src/core/templates/review-loop-report.md +5 -5
- package/src/core/workflows/advanced-elicitation/workflow.xml +117 -117
- package/src/core/workflows/brainstorming/steps/step-01-session-setup.md +212 -212
- package/src/core/workflows/brainstorming/steps/step-01b-continue.md +122 -122
- package/src/core/workflows/brainstorming/steps/step-02a-user-selected.md +225 -225
- package/src/core/workflows/brainstorming/steps/step-02b-ai-recommended.md +237 -237
- package/src/core/workflows/brainstorming/steps/step-02c-random-selection.md +209 -209
- package/src/core/workflows/brainstorming/steps/step-02d-progressive-flow.md +264 -264
- package/src/core/workflows/brainstorming/steps/step-02e-deep-dive.md +68 -68
- package/src/core/workflows/brainstorming/steps/step-03-technique-execution.md +403 -403
- package/src/core/workflows/brainstorming/steps/step-04-idea-organization.md +303 -303
- package/src/core/workflows/brainstorming/workflow.md +60 -60
- package/src/core/workflows/extract-trackers/workflow.md +45 -45
- package/src/core/workflows/party-mode/steps/step-01-agent-loading.md +142 -142
- package/src/core/workflows/party-mode/workflow.md +194 -194
- package/src/docs/dev/tmux/actions_popup.py +291 -291
- package/src/docs/dev/tmux/tmux-setup.md +62 -1
|
@@ -1,404 +1,404 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: Python Performance
|
|
3
|
-
description: Master Python optimization techniques, profiling, memory management, and high-performance computing
|
|
4
|
-
version: "2.1.0"
|
|
5
|
-
sasmp_version: "1.3.0"
|
|
6
|
-
bonded_agent: 07-best-practices
|
|
7
|
-
bond_type: PRIMARY_BOND
|
|
8
|
-
|
|
9
|
-
# Skill Configuration
|
|
10
|
-
retry_strategy: exponential_backoff
|
|
11
|
-
observability:
|
|
12
|
-
logging: true
|
|
13
|
-
metrics: execution_time_improvement
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
# Python Performance Optimization
|
|
17
|
-
|
|
18
|
-
## Overview
|
|
19
|
-
|
|
20
|
-
Master performance optimization in Python. Learn to profile code, identify bottlenecks, optimize algorithms, manage memory efficiently, and leverage high-performance libraries for compute-intensive tasks.
|
|
21
|
-
|
|
22
|
-
## Learning Objectives
|
|
23
|
-
|
|
24
|
-
- Profile Python code to identify bottlenecks
|
|
25
|
-
- Optimize algorithms and data structures
|
|
26
|
-
- Manage memory efficiently
|
|
27
|
-
- Use compiled extensions (Cython, NumPy)
|
|
28
|
-
- Implement caching strategies
|
|
29
|
-
- Parallelize CPU-bound operations
|
|
30
|
-
- Benchmark and measure improvements
|
|
31
|
-
|
|
32
|
-
## Core Topics
|
|
33
|
-
|
|
34
|
-
### 1. Profiling & Benchmarking
|
|
35
|
-
- timeit module for micro-benchmarks
|
|
36
|
-
- cProfile for function-level profiling
|
|
37
|
-
- line_profiler for line-by-line analysis
|
|
38
|
-
- memory_profiler for memory usage
|
|
39
|
-
- py-spy for production profiling
|
|
40
|
-
- Flame graphs and visualization
|
|
41
|
-
|
|
42
|
-
**Code Example:**
|
|
43
|
-
```python
|
|
44
|
-
import timeit
|
|
45
|
-
import cProfile
|
|
46
|
-
import pstats
|
|
47
|
-
|
|
48
|
-
# 1. timeit for micro-benchmarks
|
|
49
|
-
def list_comprehension():
|
|
50
|
-
return [x**2 for x in range(1000)]
|
|
51
|
-
|
|
52
|
-
def map_function():
|
|
53
|
-
return list(map(lambda x: x**2, range(1000)))
|
|
54
|
-
|
|
55
|
-
# Compare performance
|
|
56
|
-
time_lc = timeit.timeit(list_comprehension, number=10000)
|
|
57
|
-
time_map = timeit.timeit(map_function, number=10000)
|
|
58
|
-
print(f"List comprehension: {time_lc:.4f}s")
|
|
59
|
-
print(f"Map function: {time_map:.4f}s")
|
|
60
|
-
|
|
61
|
-
# 2. cProfile for function profiling
|
|
62
|
-
def process_data():
|
|
63
|
-
data = []
|
|
64
|
-
for i in range(100000):
|
|
65
|
-
data.append(i ** 2)
|
|
66
|
-
return sum(data)
|
|
67
|
-
|
|
68
|
-
profiler = cProfile.Profile()
|
|
69
|
-
profiler.enable()
|
|
70
|
-
result = process_data()
|
|
71
|
-
profiler.disable()
|
|
72
|
-
|
|
73
|
-
stats = pstats.Stats(profiler)
|
|
74
|
-
stats.sort_stats('cumulative')
|
|
75
|
-
stats.print_stats(10)
|
|
76
|
-
|
|
77
|
-
# 3. Line profiling (requires line_profiler package)
|
|
78
|
-
# @profile decorator (add manually for line_profiler)
|
|
79
|
-
def slow_function():
|
|
80
|
-
total = 0
|
|
81
|
-
for i in range(1000000):
|
|
82
|
-
total += i ** 2
|
|
83
|
-
return total
|
|
84
|
-
|
|
85
|
-
# Run with: kernprof -l -v script.py
|
|
86
|
-
|
|
87
|
-
# 4. Memory profiling
|
|
88
|
-
from memory_profiler import profile
|
|
89
|
-
|
|
90
|
-
@profile
|
|
91
|
-
def memory_intensive():
|
|
92
|
-
large_list = [i for i in range(1000000)]
|
|
93
|
-
large_dict = {i: i**2 for i in range(1000000)}
|
|
94
|
-
return len(large_list) + len(large_dict)
|
|
95
|
-
|
|
96
|
-
# Run with: python -m memory_profiler script.py
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
### 2. Algorithm & Data Structure Optimization
|
|
100
|
-
- Choosing efficient data structures
|
|
101
|
-
- Time complexity analysis
|
|
102
|
-
- Generator expressions vs lists
|
|
103
|
-
- Set operations for lookups
|
|
104
|
-
- Deque for queue operations
|
|
105
|
-
- Bisect for sorted lists
|
|
106
|
-
|
|
107
|
-
**Code Example:**
|
|
108
|
-
```python
|
|
109
|
-
import bisect
|
|
110
|
-
from collections import deque, Counter, defaultdict
|
|
111
|
-
import time
|
|
112
|
-
|
|
113
|
-
# 1. List vs Set for membership testing
|
|
114
|
-
# Bad: O(n) lookup
|
|
115
|
-
def find_in_list(items, target):
|
|
116
|
-
return target in items # Linear search
|
|
117
|
-
|
|
118
|
-
# Good: O(1) lookup
|
|
119
|
-
def find_in_set(items, target):
|
|
120
|
-
items_set = set(items)
|
|
121
|
-
return target in items_set
|
|
122
|
-
|
|
123
|
-
items = list(range(100000))
|
|
124
|
-
# List: 0.001s, Set: 0.000001s (1000x faster!)
|
|
125
|
-
|
|
126
|
-
# 2. Generator expressions for memory efficiency
|
|
127
|
-
# Bad: Creates entire list in memory
|
|
128
|
-
squares_list = [x**2 for x in range(1000000)] # ~4MB
|
|
129
|
-
|
|
130
|
-
# Good: Generates on-demand
|
|
131
|
-
squares_gen = (x**2 for x in range(1000000)) # ~128 bytes
|
|
132
|
-
|
|
133
|
-
# 3. Deque for efficient queue operations
|
|
134
|
-
# Bad: O(n) pop from beginning
|
|
135
|
-
queue_list = list(range(10000))
|
|
136
|
-
queue_list.pop(0) # Slow
|
|
137
|
-
|
|
138
|
-
# Good: O(1) pop from both ends
|
|
139
|
-
queue_deque = deque(range(10000))
|
|
140
|
-
queue_deque.popleft() # Fast
|
|
141
|
-
|
|
142
|
-
# 4. Bisect for maintaining sorted lists
|
|
143
|
-
# Bad: O(n) insertion into sorted list
|
|
144
|
-
sorted_list = []
|
|
145
|
-
for i in [5, 2, 8, 1, 9]:
|
|
146
|
-
sorted_list.append(i)
|
|
147
|
-
sorted_list.sort()
|
|
148
|
-
|
|
149
|
-
# Good: O(log n) insertion
|
|
150
|
-
sorted_list = []
|
|
151
|
-
for i in [5, 2, 8, 1, 9]:
|
|
152
|
-
bisect.insort(sorted_list, i)
|
|
153
|
-
|
|
154
|
-
# 5. Counter for frequency counting
|
|
155
|
-
# Bad: Manual counting
|
|
156
|
-
word_count = {}
|
|
157
|
-
for word in words:
|
|
158
|
-
if word in word_count:
|
|
159
|
-
word_count[word] += 1
|
|
160
|
-
else:
|
|
161
|
-
word_count[word] = 1
|
|
162
|
-
|
|
163
|
-
# Good: Counter
|
|
164
|
-
word_count = Counter(words)
|
|
165
|
-
most_common = word_count.most_common(10)
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
### 3. Memory Management
|
|
169
|
-
- Memory allocation and garbage collection
|
|
170
|
-
- Object pooling
|
|
171
|
-
- Slots for memory-efficient classes
|
|
172
|
-
- Reference counting
|
|
173
|
-
- Weak references
|
|
174
|
-
- Memory leaks detection
|
|
175
|
-
|
|
176
|
-
**Code Example:**
|
|
177
|
-
```python
|
|
178
|
-
import gc
|
|
179
|
-
import sys
|
|
180
|
-
from weakref import WeakValueDictionary
|
|
181
|
-
|
|
182
|
-
# 1. __slots__ for memory-efficient classes
|
|
183
|
-
# Bad: Regular class (56 bytes per instance)
|
|
184
|
-
class RegularPoint:
|
|
185
|
-
def __init__(self, x, y):
|
|
186
|
-
self.x = x
|
|
187
|
-
self.y = y
|
|
188
|
-
|
|
189
|
-
# Good: Slots class (32 bytes per instance - 43% smaller!)
|
|
190
|
-
class SlottedPoint:
|
|
191
|
-
__slots__ = ['x', 'y']
|
|
192
|
-
|
|
193
|
-
def __init__(self, x, y):
|
|
194
|
-
self.x = x
|
|
195
|
-
self.y = y
|
|
196
|
-
|
|
197
|
-
print(sys.getsizeof(RegularPoint(1, 2))) # 56 bytes
|
|
198
|
-
print(sys.getsizeof(SlottedPoint(1, 2))) # 32 bytes
|
|
199
|
-
|
|
200
|
-
# 2. Object pooling for expensive objects
|
|
201
|
-
class ObjectPool:
|
|
202
|
-
def __init__(self, factory, max_size=10):
|
|
203
|
-
self.factory = factory
|
|
204
|
-
self.max_size = max_size
|
|
205
|
-
self.pool = []
|
|
206
|
-
|
|
207
|
-
def acquire(self):
|
|
208
|
-
if self.pool:
|
|
209
|
-
return self.pool.pop()
|
|
210
|
-
return self.factory()
|
|
211
|
-
|
|
212
|
-
def release(self, obj):
|
|
213
|
-
if len(self.pool) < self.max_size:
|
|
214
|
-
self.pool.append(obj)
|
|
215
|
-
|
|
216
|
-
# Usage
|
|
217
|
-
db_pool = ObjectPool(lambda: DatabaseConnection(), max_size=5)
|
|
218
|
-
conn = db_pool.acquire()
|
|
219
|
-
# Use connection
|
|
220
|
-
db_pool.release(conn)
|
|
221
|
-
|
|
222
|
-
# 3. Weak references to prevent memory leaks
|
|
223
|
-
class Cache:
|
|
224
|
-
def __init__(self):
|
|
225
|
-
self._cache = WeakValueDictionary()
|
|
226
|
-
|
|
227
|
-
def get(self, key):
|
|
228
|
-
return self._cache.get(key)
|
|
229
|
-
|
|
230
|
-
def set(self, key, value):
|
|
231
|
-
self._cache[key] = value
|
|
232
|
-
|
|
233
|
-
# 4. Manual garbage collection for large operations
|
|
234
|
-
def process_large_dataset():
|
|
235
|
-
for batch in large_data:
|
|
236
|
-
process_batch(batch)
|
|
237
|
-
# Force garbage collection after each batch
|
|
238
|
-
gc.collect()
|
|
239
|
-
|
|
240
|
-
# 5. Context managers for resource cleanup
|
|
241
|
-
class ManagedResource:
|
|
242
|
-
def __enter__(self):
|
|
243
|
-
self.resource = allocate_resource()
|
|
244
|
-
return self.resource
|
|
245
|
-
|
|
246
|
-
def __exit__(self, exc_type, exc_val, exc_tb):
|
|
247
|
-
self.resource.cleanup()
|
|
248
|
-
return False
|
|
249
|
-
```
|
|
250
|
-
|
|
251
|
-
### 4. High-Performance Computing
|
|
252
|
-
- NumPy vectorization
|
|
253
|
-
- Numba JIT compilation
|
|
254
|
-
- Cython for C extensions
|
|
255
|
-
- Multiprocessing for parallelism
|
|
256
|
-
- Concurrent.futures
|
|
257
|
-
- Performance comparison
|
|
258
|
-
|
|
259
|
-
**Code Example:**
|
|
260
|
-
```python
|
|
261
|
-
import numpy as np
|
|
262
|
-
from numba import jit
|
|
263
|
-
import multiprocessing as mp
|
|
264
|
-
from concurrent.futures import ProcessPoolExecutor
|
|
265
|
-
|
|
266
|
-
# 1. NumPy vectorization
|
|
267
|
-
# Bad: Python loops (slow)
|
|
268
|
-
def python_sum(n):
|
|
269
|
-
total = 0
|
|
270
|
-
for i in range(n):
|
|
271
|
-
total += i ** 2
|
|
272
|
-
return total
|
|
273
|
-
|
|
274
|
-
# Good: NumPy vectorization (100x faster!)
|
|
275
|
-
def numpy_sum(n):
|
|
276
|
-
arr = np.arange(n)
|
|
277
|
-
return np.sum(arr ** 2)
|
|
278
|
-
|
|
279
|
-
# Benchmark: python_sum(1000000) = 0.15s
|
|
280
|
-
# numpy_sum(1000000) = 0.002s
|
|
281
|
-
|
|
282
|
-
# 2. Numba JIT compilation
|
|
283
|
-
@jit(nopython=True) # Compile to machine code
|
|
284
|
-
def fast_function(n):
|
|
285
|
-
total = 0
|
|
286
|
-
for i in range(n):
|
|
287
|
-
total += i ** 2
|
|
288
|
-
return total
|
|
289
|
-
|
|
290
|
-
# First call: compilation + execution
|
|
291
|
-
# Subsequent calls: 50x faster than pure Python!
|
|
292
|
-
|
|
293
|
-
# 3. Multiprocessing for CPU-bound tasks
|
|
294
|
-
def cpu_intensive_task(n):
|
|
295
|
-
return sum(i * i for i in range(n))
|
|
296
|
-
|
|
297
|
-
# Single process
|
|
298
|
-
result = cpu_intensive_task(10000000)
|
|
299
|
-
|
|
300
|
-
# Multiple processes
|
|
301
|
-
with ProcessPoolExecutor(max_workers=4) as executor:
|
|
302
|
-
ranges = [2500000, 2500000, 2500000, 2500000]
|
|
303
|
-
results = executor.map(cpu_intensive_task, ranges)
|
|
304
|
-
total = sum(results)
|
|
305
|
-
|
|
306
|
-
# 4x speedup on 4 cores!
|
|
307
|
-
|
|
308
|
-
# 4. Caching for expensive computations
|
|
309
|
-
from functools import lru_cache
|
|
310
|
-
|
|
311
|
-
@lru_cache(maxsize=128)
|
|
312
|
-
def fibonacci(n):
|
|
313
|
-
if n < 2:
|
|
314
|
-
return n
|
|
315
|
-
return fibonacci(n-1) + fibonacci(n-2)
|
|
316
|
-
|
|
317
|
-
# fibonacci(100) without cache: ~forever
|
|
318
|
-
# fibonacci(100) with cache: instant
|
|
319
|
-
|
|
320
|
-
# 5. Memory views for zero-copy operations
|
|
321
|
-
def process_array(data):
|
|
322
|
-
# Bad: Creates copy
|
|
323
|
-
subset = data[1000:2000]
|
|
324
|
-
|
|
325
|
-
# Good: Zero-copy view
|
|
326
|
-
view = memoryview(data)[1000:2000]
|
|
327
|
-
```
|
|
328
|
-
|
|
329
|
-
## Hands-On Practice
|
|
330
|
-
|
|
331
|
-
### Project 1: Performance Profiler
|
|
332
|
-
Build a comprehensive profiling tool.
|
|
333
|
-
|
|
334
|
-
**Requirements:**
|
|
335
|
-
- CPU profiling with cProfile
|
|
336
|
-
- Memory profiling
|
|
337
|
-
- Line-by-line analysis
|
|
338
|
-
- Visualization (flame graphs)
|
|
339
|
-
- HTML report generation
|
|
340
|
-
- Bottleneck identification
|
|
341
|
-
|
|
342
|
-
**Key Skills:** Profiling tools, visualization, analysis
|
|
343
|
-
|
|
344
|
-
### Project 2: Data Processing Pipeline
|
|
345
|
-
Optimize data processing pipeline.
|
|
346
|
-
|
|
347
|
-
**Requirements:**
|
|
348
|
-
- Load large CSV files (1GB+)
|
|
349
|
-
- Transform and clean data
|
|
350
|
-
- Aggregate statistics
|
|
351
|
-
- Compare Python/NumPy/Pandas approaches
|
|
352
|
-
- Measure memory usage
|
|
353
|
-
- Optimize to <2GB RAM
|
|
354
|
-
|
|
355
|
-
**Key Skills:** NumPy, memory optimization, benchmarking
|
|
356
|
-
|
|
357
|
-
### Project 3: Parallel Computing
|
|
358
|
-
Implement parallel algorithms.
|
|
359
|
-
|
|
360
|
-
**Requirements:**
|
|
361
|
-
- Matrix multiplication
|
|
362
|
-
- Image processing
|
|
363
|
-
- Monte Carlo simulation
|
|
364
|
-
- Compare threading/multiprocessing/asyncio
|
|
365
|
-
- Measure speedup
|
|
366
|
-
- Handle shared state
|
|
367
|
-
|
|
368
|
-
**Key Skills:** Parallelism, performance measurement
|
|
369
|
-
|
|
370
|
-
## Assessment Criteria
|
|
371
|
-
|
|
372
|
-
- [ ] Profile code to identify bottlenecks
|
|
373
|
-
- [ ] Choose appropriate data structures
|
|
374
|
-
- [ ] Optimize algorithms for time complexity
|
|
375
|
-
- [ ] Manage memory efficiently
|
|
376
|
-
- [ ] Use vectorization where applicable
|
|
377
|
-
- [ ] Implement effective caching
|
|
378
|
-
- [ ] Parallelize CPU-bound operations
|
|
379
|
-
|
|
380
|
-
## Resources
|
|
381
|
-
|
|
382
|
-
### Official Documentation
|
|
383
|
-
- [Python Performance Tips](https://wiki.python.org/moin/PythonSpeed/PerformanceTips) - Official tips
|
|
384
|
-
- [NumPy Docs](https://numpy.org/doc/) - NumPy documentation
|
|
385
|
-
- [Numba Docs](https://numba.pydata.org/) - JIT compilation
|
|
386
|
-
|
|
387
|
-
### Learning Platforms
|
|
388
|
-
- [High Performance Python](https://www.oreilly.com/library/view/high-performance-python/9781492055013/) - O'Reilly book
|
|
389
|
-
- [Python Performance](https://realpython.com/python-performance/) - Real Python guide
|
|
390
|
-
- [Optimizing Python](https://www.youtube.com/watch?v=zQeYx87mfyw) - PyCon talks
|
|
391
|
-
|
|
392
|
-
### Tools
|
|
393
|
-
- [cProfile](https://docs.python.org/3/library/profile.html) - CPU profiling
|
|
394
|
-
- [memory_profiler](https://pypi.org/project/memory-profiler/) - Memory profiling
|
|
395
|
-
- [py-spy](https://github.com/benfred/py-spy) - Sampling profiler
|
|
396
|
-
- [Scalene](https://github.com/plasma-umass/scalene) - CPU/GPU/memory profiler
|
|
397
|
-
|
|
398
|
-
## Next Steps
|
|
399
|
-
|
|
400
|
-
After mastering Python performance, explore:
|
|
401
|
-
- **Cython** - C extensions for Python
|
|
402
|
-
- **PyPy** - Alternative Python interpreter
|
|
403
|
-
- **Dask** - Parallel computing library
|
|
404
|
-
- **CUDA** - GPU programming with Python
|
|
1
|
+
---
|
|
2
|
+
name: Python Performance
|
|
3
|
+
description: Master Python optimization techniques, profiling, memory management, and high-performance computing
|
|
4
|
+
version: "2.1.0"
|
|
5
|
+
sasmp_version: "1.3.0"
|
|
6
|
+
bonded_agent: 07-best-practices
|
|
7
|
+
bond_type: PRIMARY_BOND
|
|
8
|
+
|
|
9
|
+
# Skill Configuration
|
|
10
|
+
retry_strategy: exponential_backoff
|
|
11
|
+
observability:
|
|
12
|
+
logging: true
|
|
13
|
+
metrics: execution_time_improvement
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Python Performance Optimization
|
|
17
|
+
|
|
18
|
+
## Overview
|
|
19
|
+
|
|
20
|
+
Master performance optimization in Python. Learn to profile code, identify bottlenecks, optimize algorithms, manage memory efficiently, and leverage high-performance libraries for compute-intensive tasks.
|
|
21
|
+
|
|
22
|
+
## Learning Objectives
|
|
23
|
+
|
|
24
|
+
- Profile Python code to identify bottlenecks
|
|
25
|
+
- Optimize algorithms and data structures
|
|
26
|
+
- Manage memory efficiently
|
|
27
|
+
- Use compiled extensions (Cython, NumPy)
|
|
28
|
+
- Implement caching strategies
|
|
29
|
+
- Parallelize CPU-bound operations
|
|
30
|
+
- Benchmark and measure improvements
|
|
31
|
+
|
|
32
|
+
## Core Topics
|
|
33
|
+
|
|
34
|
+
### 1. Profiling & Benchmarking
|
|
35
|
+
- timeit module for micro-benchmarks
|
|
36
|
+
- cProfile for function-level profiling
|
|
37
|
+
- line_profiler for line-by-line analysis
|
|
38
|
+
- memory_profiler for memory usage
|
|
39
|
+
- py-spy for production profiling
|
|
40
|
+
- Flame graphs and visualization
|
|
41
|
+
|
|
42
|
+
**Code Example:**
|
|
43
|
+
```python
|
|
44
|
+
import timeit
|
|
45
|
+
import cProfile
|
|
46
|
+
import pstats
|
|
47
|
+
|
|
48
|
+
# 1. timeit for micro-benchmarks
|
|
49
|
+
def list_comprehension():
|
|
50
|
+
return [x**2 for x in range(1000)]
|
|
51
|
+
|
|
52
|
+
def map_function():
|
|
53
|
+
return list(map(lambda x: x**2, range(1000)))
|
|
54
|
+
|
|
55
|
+
# Compare performance
|
|
56
|
+
time_lc = timeit.timeit(list_comprehension, number=10000)
|
|
57
|
+
time_map = timeit.timeit(map_function, number=10000)
|
|
58
|
+
print(f"List comprehension: {time_lc:.4f}s")
|
|
59
|
+
print(f"Map function: {time_map:.4f}s")
|
|
60
|
+
|
|
61
|
+
# 2. cProfile for function profiling
|
|
62
|
+
def process_data():
|
|
63
|
+
data = []
|
|
64
|
+
for i in range(100000):
|
|
65
|
+
data.append(i ** 2)
|
|
66
|
+
return sum(data)
|
|
67
|
+
|
|
68
|
+
profiler = cProfile.Profile()
|
|
69
|
+
profiler.enable()
|
|
70
|
+
result = process_data()
|
|
71
|
+
profiler.disable()
|
|
72
|
+
|
|
73
|
+
stats = pstats.Stats(profiler)
|
|
74
|
+
stats.sort_stats('cumulative')
|
|
75
|
+
stats.print_stats(10)
|
|
76
|
+
|
|
77
|
+
# 3. Line profiling (requires line_profiler package)
|
|
78
|
+
# @profile decorator (add manually for line_profiler)
|
|
79
|
+
def slow_function():
|
|
80
|
+
total = 0
|
|
81
|
+
for i in range(1000000):
|
|
82
|
+
total += i ** 2
|
|
83
|
+
return total
|
|
84
|
+
|
|
85
|
+
# Run with: kernprof -l -v script.py
|
|
86
|
+
|
|
87
|
+
# 4. Memory profiling
|
|
88
|
+
from memory_profiler import profile
|
|
89
|
+
|
|
90
|
+
@profile
|
|
91
|
+
def memory_intensive():
|
|
92
|
+
large_list = [i for i in range(1000000)]
|
|
93
|
+
large_dict = {i: i**2 for i in range(1000000)}
|
|
94
|
+
return len(large_list) + len(large_dict)
|
|
95
|
+
|
|
96
|
+
# Run with: python -m memory_profiler script.py
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### 2. Algorithm & Data Structure Optimization
|
|
100
|
+
- Choosing efficient data structures
|
|
101
|
+
- Time complexity analysis
|
|
102
|
+
- Generator expressions vs lists
|
|
103
|
+
- Set operations for lookups
|
|
104
|
+
- Deque for queue operations
|
|
105
|
+
- Bisect for sorted lists
|
|
106
|
+
|
|
107
|
+
**Code Example:**
|
|
108
|
+
```python
|
|
109
|
+
import bisect
|
|
110
|
+
from collections import deque, Counter, defaultdict
|
|
111
|
+
import time
|
|
112
|
+
|
|
113
|
+
# 1. List vs Set for membership testing
|
|
114
|
+
# Bad: O(n) lookup
|
|
115
|
+
def find_in_list(items, target):
|
|
116
|
+
return target in items # Linear search
|
|
117
|
+
|
|
118
|
+
# Good: O(1) lookup
|
|
119
|
+
def find_in_set(items, target):
|
|
120
|
+
items_set = set(items)
|
|
121
|
+
return target in items_set
|
|
122
|
+
|
|
123
|
+
items = list(range(100000))
|
|
124
|
+
# List: 0.001s, Set: 0.000001s (1000x faster!)
|
|
125
|
+
|
|
126
|
+
# 2. Generator expressions for memory efficiency
|
|
127
|
+
# Bad: Creates entire list in memory
|
|
128
|
+
squares_list = [x**2 for x in range(1000000)] # ~4MB
|
|
129
|
+
|
|
130
|
+
# Good: Generates on-demand
|
|
131
|
+
squares_gen = (x**2 for x in range(1000000)) # ~128 bytes
|
|
132
|
+
|
|
133
|
+
# 3. Deque for efficient queue operations
|
|
134
|
+
# Bad: O(n) pop from beginning
|
|
135
|
+
queue_list = list(range(10000))
|
|
136
|
+
queue_list.pop(0) # Slow
|
|
137
|
+
|
|
138
|
+
# Good: O(1) pop from both ends
|
|
139
|
+
queue_deque = deque(range(10000))
|
|
140
|
+
queue_deque.popleft() # Fast
|
|
141
|
+
|
|
142
|
+
# 4. Bisect for maintaining sorted lists
|
|
143
|
+
# Bad: O(n) insertion into sorted list
|
|
144
|
+
sorted_list = []
|
|
145
|
+
for i in [5, 2, 8, 1, 9]:
|
|
146
|
+
sorted_list.append(i)
|
|
147
|
+
sorted_list.sort()
|
|
148
|
+
|
|
149
|
+
# Good: O(log n) insertion
|
|
150
|
+
sorted_list = []
|
|
151
|
+
for i in [5, 2, 8, 1, 9]:
|
|
152
|
+
bisect.insort(sorted_list, i)
|
|
153
|
+
|
|
154
|
+
# 5. Counter for frequency counting
|
|
155
|
+
# Bad: Manual counting
|
|
156
|
+
word_count = {}
|
|
157
|
+
for word in words:
|
|
158
|
+
if word in word_count:
|
|
159
|
+
word_count[word] += 1
|
|
160
|
+
else:
|
|
161
|
+
word_count[word] = 1
|
|
162
|
+
|
|
163
|
+
# Good: Counter
|
|
164
|
+
word_count = Counter(words)
|
|
165
|
+
most_common = word_count.most_common(10)
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### 3. Memory Management
|
|
169
|
+
- Memory allocation and garbage collection
|
|
170
|
+
- Object pooling
|
|
171
|
+
- Slots for memory-efficient classes
|
|
172
|
+
- Reference counting
|
|
173
|
+
- Weak references
|
|
174
|
+
- Memory leaks detection
|
|
175
|
+
|
|
176
|
+
**Code Example:**
|
|
177
|
+
```python
|
|
178
|
+
import gc
|
|
179
|
+
import sys
|
|
180
|
+
from weakref import WeakValueDictionary
|
|
181
|
+
|
|
182
|
+
# 1. __slots__ for memory-efficient classes
|
|
183
|
+
# Bad: Regular class (56 bytes per instance)
|
|
184
|
+
class RegularPoint:
|
|
185
|
+
def __init__(self, x, y):
|
|
186
|
+
self.x = x
|
|
187
|
+
self.y = y
|
|
188
|
+
|
|
189
|
+
# Good: Slots class (32 bytes per instance - 43% smaller!)
|
|
190
|
+
class SlottedPoint:
|
|
191
|
+
__slots__ = ['x', 'y']
|
|
192
|
+
|
|
193
|
+
def __init__(self, x, y):
|
|
194
|
+
self.x = x
|
|
195
|
+
self.y = y
|
|
196
|
+
|
|
197
|
+
print(sys.getsizeof(RegularPoint(1, 2))) # 56 bytes
|
|
198
|
+
print(sys.getsizeof(SlottedPoint(1, 2))) # 32 bytes
|
|
199
|
+
|
|
200
|
+
# 2. Object pooling for expensive objects
|
|
201
|
+
class ObjectPool:
|
|
202
|
+
def __init__(self, factory, max_size=10):
|
|
203
|
+
self.factory = factory
|
|
204
|
+
self.max_size = max_size
|
|
205
|
+
self.pool = []
|
|
206
|
+
|
|
207
|
+
def acquire(self):
|
|
208
|
+
if self.pool:
|
|
209
|
+
return self.pool.pop()
|
|
210
|
+
return self.factory()
|
|
211
|
+
|
|
212
|
+
def release(self, obj):
|
|
213
|
+
if len(self.pool) < self.max_size:
|
|
214
|
+
self.pool.append(obj)
|
|
215
|
+
|
|
216
|
+
# Usage
|
|
217
|
+
db_pool = ObjectPool(lambda: DatabaseConnection(), max_size=5)
|
|
218
|
+
conn = db_pool.acquire()
|
|
219
|
+
# Use connection
|
|
220
|
+
db_pool.release(conn)
|
|
221
|
+
|
|
222
|
+
# 3. Weak references to prevent memory leaks
|
|
223
|
+
class Cache:
|
|
224
|
+
def __init__(self):
|
|
225
|
+
self._cache = WeakValueDictionary()
|
|
226
|
+
|
|
227
|
+
def get(self, key):
|
|
228
|
+
return self._cache.get(key)
|
|
229
|
+
|
|
230
|
+
def set(self, key, value):
|
|
231
|
+
self._cache[key] = value
|
|
232
|
+
|
|
233
|
+
# 4. Manual garbage collection for large operations
|
|
234
|
+
def process_large_dataset():
|
|
235
|
+
for batch in large_data:
|
|
236
|
+
process_batch(batch)
|
|
237
|
+
# Force garbage collection after each batch
|
|
238
|
+
gc.collect()
|
|
239
|
+
|
|
240
|
+
# 5. Context managers for resource cleanup
|
|
241
|
+
class ManagedResource:
|
|
242
|
+
def __enter__(self):
|
|
243
|
+
self.resource = allocate_resource()
|
|
244
|
+
return self.resource
|
|
245
|
+
|
|
246
|
+
def __exit__(self, exc_type, exc_val, exc_tb):
|
|
247
|
+
self.resource.cleanup()
|
|
248
|
+
return False
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### 4. High-Performance Computing
|
|
252
|
+
- NumPy vectorization
|
|
253
|
+
- Numba JIT compilation
|
|
254
|
+
- Cython for C extensions
|
|
255
|
+
- Multiprocessing for parallelism
|
|
256
|
+
- Concurrent.futures
|
|
257
|
+
- Performance comparison
|
|
258
|
+
|
|
259
|
+
**Code Example:**
|
|
260
|
+
```python
|
|
261
|
+
import numpy as np
|
|
262
|
+
from numba import jit
|
|
263
|
+
import multiprocessing as mp
|
|
264
|
+
from concurrent.futures import ProcessPoolExecutor
|
|
265
|
+
|
|
266
|
+
# 1. NumPy vectorization
|
|
267
|
+
# Bad: Python loops (slow)
|
|
268
|
+
def python_sum(n):
|
|
269
|
+
total = 0
|
|
270
|
+
for i in range(n):
|
|
271
|
+
total += i ** 2
|
|
272
|
+
return total
|
|
273
|
+
|
|
274
|
+
# Good: NumPy vectorization (100x faster!)
|
|
275
|
+
def numpy_sum(n):
|
|
276
|
+
arr = np.arange(n)
|
|
277
|
+
return np.sum(arr ** 2)
|
|
278
|
+
|
|
279
|
+
# Benchmark: python_sum(1000000) = 0.15s
|
|
280
|
+
# numpy_sum(1000000) = 0.002s
|
|
281
|
+
|
|
282
|
+
# 2. Numba JIT compilation
|
|
283
|
+
@jit(nopython=True) # Compile to machine code
|
|
284
|
+
def fast_function(n):
|
|
285
|
+
total = 0
|
|
286
|
+
for i in range(n):
|
|
287
|
+
total += i ** 2
|
|
288
|
+
return total
|
|
289
|
+
|
|
290
|
+
# First call: compilation + execution
|
|
291
|
+
# Subsequent calls: 50x faster than pure Python!
|
|
292
|
+
|
|
293
|
+
# 3. Multiprocessing for CPU-bound tasks
|
|
294
|
+
def cpu_intensive_task(n):
|
|
295
|
+
return sum(i * i for i in range(n))
|
|
296
|
+
|
|
297
|
+
# Single process
|
|
298
|
+
result = cpu_intensive_task(10000000)
|
|
299
|
+
|
|
300
|
+
# Multiple processes
|
|
301
|
+
with ProcessPoolExecutor(max_workers=4) as executor:
|
|
302
|
+
ranges = [2500000, 2500000, 2500000, 2500000]
|
|
303
|
+
results = executor.map(cpu_intensive_task, ranges)
|
|
304
|
+
total = sum(results)
|
|
305
|
+
|
|
306
|
+
# 4x speedup on 4 cores!
|
|
307
|
+
|
|
308
|
+
# 4. Caching for expensive computations
|
|
309
|
+
from functools import lru_cache
|
|
310
|
+
|
|
311
|
+
@lru_cache(maxsize=128)
|
|
312
|
+
def fibonacci(n):
|
|
313
|
+
if n < 2:
|
|
314
|
+
return n
|
|
315
|
+
return fibonacci(n-1) + fibonacci(n-2)
|
|
316
|
+
|
|
317
|
+
# fibonacci(100) without cache: ~forever
|
|
318
|
+
# fibonacci(100) with cache: instant
|
|
319
|
+
|
|
320
|
+
# 5. Memory views for zero-copy operations
|
|
321
|
+
def process_array(data):
|
|
322
|
+
# Bad: Creates copy
|
|
323
|
+
subset = data[1000:2000]
|
|
324
|
+
|
|
325
|
+
# Good: Zero-copy view
|
|
326
|
+
view = memoryview(data)[1000:2000]
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
## Hands-On Practice
|
|
330
|
+
|
|
331
|
+
### Project 1: Performance Profiler
|
|
332
|
+
Build a comprehensive profiling tool.
|
|
333
|
+
|
|
334
|
+
**Requirements:**
|
|
335
|
+
- CPU profiling with cProfile
|
|
336
|
+
- Memory profiling
|
|
337
|
+
- Line-by-line analysis
|
|
338
|
+
- Visualization (flame graphs)
|
|
339
|
+
- HTML report generation
|
|
340
|
+
- Bottleneck identification
|
|
341
|
+
|
|
342
|
+
**Key Skills:** Profiling tools, visualization, analysis
|
|
343
|
+
|
|
344
|
+
### Project 2: Data Processing Pipeline
|
|
345
|
+
Optimize data processing pipeline.
|
|
346
|
+
|
|
347
|
+
**Requirements:**
|
|
348
|
+
- Load large CSV files (1GB+)
|
|
349
|
+
- Transform and clean data
|
|
350
|
+
- Aggregate statistics
|
|
351
|
+
- Compare Python/NumPy/Pandas approaches
|
|
352
|
+
- Measure memory usage
|
|
353
|
+
- Optimize to <2GB RAM
|
|
354
|
+
|
|
355
|
+
**Key Skills:** NumPy, memory optimization, benchmarking
|
|
356
|
+
|
|
357
|
+
### Project 3: Parallel Computing
|
|
358
|
+
Implement parallel algorithms.
|
|
359
|
+
|
|
360
|
+
**Requirements:**
|
|
361
|
+
- Matrix multiplication
|
|
362
|
+
- Image processing
|
|
363
|
+
- Monte Carlo simulation
|
|
364
|
+
- Compare threading/multiprocessing/asyncio
|
|
365
|
+
- Measure speedup
|
|
366
|
+
- Handle shared state
|
|
367
|
+
|
|
368
|
+
**Key Skills:** Parallelism, performance measurement
|
|
369
|
+
|
|
370
|
+
## Assessment Criteria
|
|
371
|
+
|
|
372
|
+
- [ ] Profile code to identify bottlenecks
|
|
373
|
+
- [ ] Choose appropriate data structures
|
|
374
|
+
- [ ] Optimize algorithms for time complexity
|
|
375
|
+
- [ ] Manage memory efficiently
|
|
376
|
+
- [ ] Use vectorization where applicable
|
|
377
|
+
- [ ] Implement effective caching
|
|
378
|
+
- [ ] Parallelize CPU-bound operations
|
|
379
|
+
|
|
380
|
+
## Resources
|
|
381
|
+
|
|
382
|
+
### Official Documentation
|
|
383
|
+
- [Python Performance Tips](https://wiki.python.org/moin/PythonSpeed/PerformanceTips) - Official tips
|
|
384
|
+
- [NumPy Docs](https://numpy.org/doc/) - NumPy documentation
|
|
385
|
+
- [Numba Docs](https://numba.pydata.org/) - JIT compilation
|
|
386
|
+
|
|
387
|
+
### Learning Platforms
|
|
388
|
+
- [High Performance Python](https://www.oreilly.com/library/view/high-performance-python/9781492055013/) - O'Reilly book
|
|
389
|
+
- [Python Performance](https://realpython.com/python-performance/) - Real Python guide
|
|
390
|
+
- [Optimizing Python](https://www.youtube.com/watch?v=zQeYx87mfyw) - PyCon talks
|
|
391
|
+
|
|
392
|
+
### Tools
|
|
393
|
+
- [cProfile](https://docs.python.org/3/library/profile.html) - CPU profiling
|
|
394
|
+
- [memory_profiler](https://pypi.org/project/memory-profiler/) - Memory profiling
|
|
395
|
+
- [py-spy](https://github.com/benfred/py-spy) - Sampling profiler
|
|
396
|
+
- [Scalene](https://github.com/plasma-umass/scalene) - CPU/GPU/memory profiler
|
|
397
|
+
|
|
398
|
+
## Next Steps
|
|
399
|
+
|
|
400
|
+
After mastering Python performance, explore:
|
|
401
|
+
- **Cython** - C extensions for Python
|
|
402
|
+
- **PyPy** - Alternative Python interpreter
|
|
403
|
+
- **Dask** - Parallel computing library
|
|
404
|
+
- **CUDA** - GPU programming with Python
|