appiq-solution 1.2.0 → 1.3.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.
Files changed (903) hide show
  1. package/#NEW APP PROMPT/ARCHITECTURE.md +279 -0
  2. package/#NEW APP PROMPT/ARCHITECTURE_UNIFIED.md +414 -0
  3. package/#NEW APP PROMPT/accesibility_prompt.md +103 -0
  4. package/#NEW APP PROMPT/clean-code.mdc +55 -0
  5. package/#NEW APP PROMPT/codequality.mdc +47 -0
  6. package/#NEW APP PROMPT/flutter-ai-rules/LICENSE +21 -0
  7. package/#NEW APP PROMPT/flutter-ai-rules/README.md +104 -0
  8. package/#NEW APP PROMPT/flutter-ai-rules/combined/README.md +25 -0
  9. package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart.md +192 -0
  10. package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart__under_6K.md +99 -0
  11. package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart_bloc_mocktail.md +308 -0
  12. package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart_bloc_mocktail__under_6K.md +87 -0
  13. package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart_change_notifier.md +254 -0
  14. package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart_change_notifier__under_6K.md +98 -0
  15. package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart_provider.md +261 -0
  16. package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart_provider__under_6K.md +105 -0
  17. package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart_riverpod_mockito.md +371 -0
  18. package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart_riverpod_mockito__under_6K.md +92 -0
  19. package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_with_bloc.md +287 -0
  20. package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_with_bloc__under_6K.md +68 -0
  21. package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_with_riverpod.md +375 -0
  22. package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_with_riverpod__under_6K.md +106 -0
  23. package/#NEW APP PROMPT/flutter-ai-rules/media/flutter_ai_rules.png +0 -0
  24. package/#NEW APP PROMPT/flutter-ai-rules/media/mocktail_md_01.png +0 -0
  25. package/#NEW APP PROMPT/flutter-ai-rules/media/mocktail_md_02.png +0 -0
  26. package/#NEW APP PROMPT/flutter-ai-rules/rules/bloc.md +94 -0
  27. package/#NEW APP PROMPT/flutter-ai-rules/rules/dart_3_updates.md +93 -0
  28. package/#NEW APP PROMPT/flutter-ai-rules/rules/effective_dart.md +105 -0
  29. package/#NEW APP PROMPT/flutter-ai-rules/rules/flutter_app_architecture.md +57 -0
  30. package/#NEW APP PROMPT/flutter-ai-rules/rules/flutter_change_notifier.md +62 -0
  31. package/#NEW APP PROMPT/flutter-ai-rules/rules/flutter_errors.md +11 -0
  32. package/#NEW APP PROMPT/flutter-ai-rules/rules/mockito.md +31 -0
  33. package/#NEW APP PROMPT/flutter-ai-rules/rules/mocktail.md +24 -0
  34. package/#NEW APP PROMPT/flutter-ai-rules/rules/provider.md +69 -0
  35. package/#NEW APP PROMPT/flutter-ai-rules/rules/riverpod.md +188 -0
  36. package/#NEW APP PROMPT/generate ssh.md +4 -0
  37. package/#NEW APP PROMPT/project_ai_prompt.md +544 -0
  38. package/{CHANGELOG.md → #Tools/APPIQ-METHOD/CHANGELOG.md} +173 -119
  39. package/#Tools/APPIQ-METHOD/README.md +139 -0
  40. package/#Tools/APPIQ-METHOD/appiq_start.md +232 -0
  41. package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/agents/architect.md +0 -6
  42. package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/agents/bmad-orchestrator.md +84 -0
  43. package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/agents/dev.md +9 -23
  44. package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/agents/pm.md +1 -3
  45. package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/agents/qa.md +0 -17
  46. package/#Tools/APPIQ-METHOD/bmad-core/data/technical-preferences.md +3 -0
  47. package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/templates/fullstack-architecture-tmpl.yaml +5 -12
  48. package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/user-guide.md +9 -10
  49. package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/working-in-the-brownfield.md +36 -39
  50. package/#Tools/APPIQ-METHOD/deployment/DEPLOYMENT_GUIDE.md +426 -0
  51. package/#Tools/APPIQ-METHOD/deployment/GITHUB_RELEASE_GUIDE.md +326 -0
  52. package/#Tools/APPIQ-METHOD/deployment/README.md +331 -0
  53. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agent-teams/team-all.yaml +14 -0
  54. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agent-teams/team-fullstack.yaml +18 -0
  55. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agent-teams/team-ide-minimal.yaml +10 -0
  56. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agent-teams/team-no-ui.yaml +13 -0
  57. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agents/analyst.md +81 -0
  58. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agents/architect.md +84 -0
  59. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agents/bmad-master.md +108 -0
  60. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agents/bmad-orchestrator.md +234 -0
  61. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agents/dev.md +76 -0
  62. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agents/pm.md +79 -0
  63. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agents/po.md +76 -0
  64. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agents/qa.md +69 -0
  65. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agents/sm.md +62 -0
  66. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/agents/ux-expert.md +66 -0
  67. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/checklists/architect-checklist.md +443 -0
  68. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/checklists/change-checklist.md +182 -0
  69. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/checklists/pm-checklist.md +375 -0
  70. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/checklists/po-master-checklist.md +441 -0
  71. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/checklists/story-dod-checklist.md +101 -0
  72. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/checklists/story-draft-checklist.md +156 -0
  73. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/data/bmad-kb.md +803 -0
  74. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/data/brainstorming-techniques.md +36 -0
  75. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/data/elicitation-methods.md +134 -0
  76. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/data/technical-preferences.md +3 -0
  77. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/advanced-elicitation.md +117 -0
  78. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/brownfield-create-epic.md +160 -0
  79. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/brownfield-create-story.md +147 -0
  80. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/correct-course.md +70 -0
  81. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/create-brownfield-story.md +304 -0
  82. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/create-deep-research-prompt.md +289 -0
  83. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/create-next-story.md +112 -0
  84. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/document-project.md +341 -0
  85. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/facilitate-brainstorming-session.md +136 -0
  86. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/generate-ai-frontend-prompt.md +51 -0
  87. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/index-docs.md +179 -0
  88. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/kb-mode-interaction.md +75 -0
  89. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/review-story.md +145 -0
  90. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/shard-doc.md +187 -0
  91. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/tasks/validate-next-story.md +134 -0
  92. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/architecture-tmpl.yaml +650 -0
  93. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/brainstorming-output-tmpl.yaml +156 -0
  94. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/brownfield-architecture-tmpl.yaml +476 -0
  95. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/brownfield-prd-tmpl.yaml +280 -0
  96. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/competitor-analysis-tmpl.yaml +293 -0
  97. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/front-end-architecture-tmpl.yaml +206 -0
  98. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/front-end-spec-tmpl.yaml +349 -0
  99. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/fullstack-architecture-tmpl.yaml +805 -0
  100. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/market-research-tmpl.yaml +252 -0
  101. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/prd-tmpl.yaml +202 -0
  102. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/project-brief-tmpl.yaml +221 -0
  103. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/templates/story-tmpl.yaml +137 -0
  104. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/user-guide.md +250 -0
  105. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/workflows/brownfield-fullstack.yaml +297 -0
  106. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/workflows/brownfield-service.yaml +187 -0
  107. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/workflows/brownfield-ui.yaml +197 -0
  108. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/workflows/greenfield-fullstack.yaml +240 -0
  109. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/workflows/greenfield-service.yaml +206 -0
  110. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/workflows/greenfield-ui.yaml +235 -0
  111. package/#Tools/APPIQ-METHOD/deployment/build/bmad-core/working-in-the-brownfield.md +361 -0
  112. package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-phaser-game-dev/config.yaml +1 -1
  113. package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-unity-game-dev/config.yaml +1 -1
  114. package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-infrastructure-devops/config.yaml +1 -1
  115. package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/agent-teams/mobile-team-cross-platform.yaml +22 -0
  116. package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/agent-teams/mobile-team-flutter.yaml +20 -0
  117. package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/agent-teams/mobile-team-minimal.yaml +13 -0
  118. package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/agent-teams/mobile-team-react-native.yaml +20 -0
  119. package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/agents/mobile-analytics.md +1487 -0
  120. package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/agents/mobile-architect.md +279 -0
  121. package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/agents/mobile-developer.md +649 -0
  122. package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/agents/mobile-pm.md +339 -0
  123. package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/agents/mobile-qa.md +622 -0
  124. package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/agents/mobile-security.md +1027 -0
  125. package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/agents/mobile-ux-expert.md +1451 -0
  126. package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/checklists/mobile-development-checklist.md +490 -0
  127. package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/config.yaml +54 -0
  128. package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/data/bmad-kb.md +292 -0
  129. package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/data/flutter-development-guidelines.md +483 -0
  130. package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/tasks/existing-app-analysis.md +645 -0
  131. package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/tasks/platform-selection.md +489 -0
  132. package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/templates/mobile-architecture-tmpl.yaml +437 -0
  133. package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/templates/mobile-prd-tmpl.yaml +408 -0
  134. package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/workflows/mobile-app-development-init.yaml +555 -0
  135. package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/workflows/mobile-brownfield-flutter.yaml +336 -0
  136. package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/workflows/mobile-brownfield-react-native.yaml +345 -0
  137. package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/workflows/mobile-greenfield-flutter.yaml +281 -0
  138. package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/workflows/mobile-greenfield-react-native.yaml +283 -0
  139. package/#Tools/APPIQ-METHOD/deployment/build/expansion-packs/bmad-mobile-app-dev/workflows/mobile-platform-selection.yaml +404 -0
  140. package/#Tools/APPIQ-METHOD/deployment/build/slash-commands/appiq.md +273 -0
  141. package/#Tools/APPIQ-METHOD/deployment/build/slash-commands/ide-integrations/claude-appiq.md +294 -0
  142. package/#Tools/APPIQ-METHOD/deployment/build/slash-commands/ide-integrations/cursor-appiq.md +516 -0
  143. package/#Tools/APPIQ-METHOD/deployment/build/slash-commands/ide-integrations/universal-appiq.md +448 -0
  144. package/#Tools/APPIQ-METHOD/deployment/build/slash-commands/ide-integrations/windsurf-appiq.md +698 -0
  145. package/#Tools/APPIQ-METHOD/deployment/build/slash-commands/start.md +211 -0
  146. package/#Tools/APPIQ-METHOD/deployment/build-release.sh +449 -0
  147. package/#Tools/APPIQ-METHOD/deployment/create-release.sh +196 -0
  148. package/#Tools/APPIQ-METHOD/deployment/dist/appiq_installer.sh +678 -0
  149. package/#Tools/APPIQ-METHOD/deployment/docs/main_prd.md +36 -0
  150. package/#Tools/APPIQ-METHOD/deployment/init_appiq.sh +805 -0
  151. package/#Tools/APPIQ-METHOD/deployment/init_appiq_v2.sh +678 -0
  152. package/#Tools/APPIQ-METHOD/deployment/installers/appiq-global.sh +91 -0
  153. package/#Tools/APPIQ-METHOD/deployment/installers/claude-integration.sh +281 -0
  154. package/#Tools/APPIQ-METHOD/deployment/installers/cursor-integration.sh +257 -0
  155. package/#Tools/APPIQ-METHOD/deployment/installers/terminal-integration.sh +645 -0
  156. package/#Tools/APPIQ-METHOD/deployment/installers/windsurf-integration.sh +350 -0
  157. package/#Tools/APPIQ-METHOD/deployment/package-v2.sh +97 -0
  158. package/#Tools/APPIQ-METHOD/deployment/package.sh +363 -0
  159. package/#Tools/APPIQ-METHOD/deployment/quick-install.sh +57 -0
  160. package/#Tools/APPIQ-METHOD/dist/agents/analyst.txt +2882 -0
  161. package/#Tools/APPIQ-METHOD/dist/agents/architect.txt +3543 -0
  162. package/#Tools/APPIQ-METHOD/dist/agents/bmad-master.txt +8756 -0
  163. package/#Tools/APPIQ-METHOD/dist/agents/bmad-orchestrator.txt +1601 -0
  164. package/#Tools/APPIQ-METHOD/dist/agents/dev.txt +428 -0
  165. package/#Tools/APPIQ-METHOD/dist/agents/pm.txt +2227 -0
  166. package/#Tools/APPIQ-METHOD/dist/agents/po.txt +1364 -0
  167. package/#Tools/APPIQ-METHOD/dist/agents/qa.txt +386 -0
  168. package/#Tools/APPIQ-METHOD/dist/agents/sm.txt +668 -0
  169. package/#Tools/APPIQ-METHOD/dist/agents/ux-expert.txt +701 -0
  170. package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.txt +2408 -0
  171. package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.txt +1631 -0
  172. package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.txt +822 -0
  173. package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-phaser-game-dev/teams/phaser-2d-nodejs-game-team.txt +11100 -0
  174. package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-architect.txt +4047 -0
  175. package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-designer.txt +3744 -0
  176. package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.txt +465 -0
  177. package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-sm.txt +990 -0
  178. package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-unity-game-dev/teams/unity-2d-game-team.txt +15578 -0
  179. package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.txt +2077 -0
  180. package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-analytics.txt +1530 -0
  181. package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-architect.txt +322 -0
  182. package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-developer.txt +692 -0
  183. package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-pm.txt +382 -0
  184. package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-qa.txt +665 -0
  185. package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-security.txt +1070 -0
  186. package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-ux-expert.txt +1494 -0
  187. package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-mobile-app-dev/teams/mobile-team-cross-platform.txt +15613 -0
  188. package/#Tools/APPIQ-METHOD/dist/teams/team-all.txt +11171 -0
  189. package/#Tools/APPIQ-METHOD/dist/teams/team-fullstack.txt +10501 -0
  190. package/#Tools/APPIQ-METHOD/dist/teams/team-ide-minimal.txt +3618 -0
  191. package/#Tools/APPIQ-METHOD/dist/teams/team-no-ui.txt +9060 -0
  192. package/#Tools/APPIQ-METHOD/expansion-packs/README.md +3 -0
  193. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-phaser-game-dev/agent-teams/phaser-2d-nodejs-game-team.yaml +13 -0
  194. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.md +71 -0
  195. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.md +78 -0
  196. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.md +64 -0
  197. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-phaser-game-dev/checklists/game-design-checklist.md +201 -0
  198. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-phaser-game-dev/checklists/game-story-dod-checklist.md +160 -0
  199. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-phaser-game-dev/config.yaml +8 -0
  200. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-phaser-game-dev/data/bmad-kb.md +254 -0
  201. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-phaser-game-dev/data/development-guidelines.md +651 -0
  202. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-phaser-game-dev/tasks/advanced-elicitation.md +111 -0
  203. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-phaser-game-dev/tasks/create-game-story.md +216 -0
  204. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-phaser-game-dev/tasks/game-design-brainstorming.md +308 -0
  205. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-phaser-game-dev/templates/game-architecture-tmpl.yaml +613 -0
  206. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-phaser-game-dev/templates/game-brief-tmpl.yaml +356 -0
  207. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-phaser-game-dev/templates/game-design-doc-tmpl.yaml +343 -0
  208. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-phaser-game-dev/templates/game-story-tmpl.yaml +253 -0
  209. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-phaser-game-dev/templates/level-design-doc-tmpl.yaml +484 -0
  210. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-dev-greenfield.yaml +183 -0
  211. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-prototype.yaml +175 -0
  212. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-unity-game-dev/agent-teams/unity-2d-game-team.yaml +14 -0
  213. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-unity-game-dev/agents/game-architect.md +80 -0
  214. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-unity-game-dev/agents/game-designer.md +77 -0
  215. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.md +78 -0
  216. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-unity-game-dev/agents/game-sm.md +65 -0
  217. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-unity-game-dev/checklists/game-architect-checklist.md +396 -0
  218. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-unity-game-dev/checklists/game-change-checklist.md +203 -0
  219. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-unity-game-dev/checklists/game-design-checklist.md +201 -0
  220. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-unity-game-dev/checklists/game-story-dod-checklist.md +132 -0
  221. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-unity-game-dev/config.yaml +6 -0
  222. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-unity-game-dev/data/bmad-kb.md +776 -0
  223. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-unity-game-dev/data/development-guidelines.md +590 -0
  224. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-unity-game-dev/tasks/advanced-elicitation.md +111 -0
  225. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-unity-game-dev/tasks/correct-course-game.md +151 -0
  226. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-unity-game-dev/tasks/create-game-story.md +184 -0
  227. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-unity-game-dev/tasks/game-design-brainstorming.md +308 -0
  228. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-unity-game-dev/tasks/validate-game-story.md +200 -0
  229. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-unity-game-dev/templates/game-architecture-tmpl.yaml +1030 -0
  230. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-unity-game-dev/templates/game-brief-tmpl.yaml +356 -0
  231. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-unity-game-dev/templates/game-design-doc-tmpl.yaml +705 -0
  232. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-unity-game-dev/templates/game-story-tmpl.yaml +256 -0
  233. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-unity-game-dev/templates/level-design-doc-tmpl.yaml +484 -0
  234. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-unity-game-dev/workflows/game-dev-greenfield.yaml +183 -0
  235. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-2d-unity-game-dev/workflows/game-prototype.yaml +175 -0
  236. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-infrastructure-devops/README.md +147 -0
  237. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.md +71 -0
  238. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-infrastructure-devops/checklists/infrastructure-checklist.md +484 -0
  239. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-infrastructure-devops/config.yaml +9 -0
  240. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-infrastructure-devops/data/bmad-kb.md +308 -0
  241. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-infrastructure-devops/tasks/review-infrastructure.md +160 -0
  242. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-infrastructure-devops/tasks/validate-infrastructure.md +154 -0
  243. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-architecture-tmpl.yaml +424 -0
  244. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-platform-from-arch-tmpl.yaml +629 -0
  245. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/agent-teams/mobile-team-cross-platform.yaml +22 -0
  246. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/agent-teams/mobile-team-flutter.yaml +20 -0
  247. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/agent-teams/mobile-team-minimal.yaml +13 -0
  248. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/agent-teams/mobile-team-react-native.yaml +20 -0
  249. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/agents/mobile-analytics.md +1487 -0
  250. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/agents/mobile-architect.md +279 -0
  251. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/agents/mobile-developer.md +649 -0
  252. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/agents/mobile-pm.md +339 -0
  253. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/agents/mobile-qa.md +622 -0
  254. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/agents/mobile-security.md +1027 -0
  255. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/agents/mobile-ux-expert.md +1451 -0
  256. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/checklists/mobile-development-checklist.md +490 -0
  257. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/config.yaml +54 -0
  258. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/data/bmad-kb.md +292 -0
  259. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/data/flutter-development-guidelines.md +483 -0
  260. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/tasks/existing-app-analysis.md +645 -0
  261. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/tasks/platform-selection.md +489 -0
  262. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/templates/mobile-architecture-tmpl.yaml +437 -0
  263. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/templates/mobile-prd-tmpl.yaml +408 -0
  264. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/workflows/mobile-app-development-init.yaml +555 -0
  265. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/workflows/mobile-brownfield-flutter.yaml +336 -0
  266. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/workflows/mobile-brownfield-react-native.yaml +345 -0
  267. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/workflows/mobile-greenfield-flutter.yaml +281 -0
  268. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/workflows/mobile-greenfield-react-native.yaml +283 -0
  269. package/#Tools/APPIQ-METHOD/expansion-packs/bmad-mobile-app-dev/workflows/mobile-platform-selection.yaml +404 -0
  270. package/#Tools/APPIQ-METHOD/package-bmad-backup.json +78 -0
  271. package/#Tools/APPIQ-METHOD/package.json +93 -0
  272. package/#Tools/APPIQ-METHOD/slash-commands/appiq.md +273 -0
  273. package/#Tools/APPIQ-METHOD/slash-commands/ide-integrations/claude-appiq.md +294 -0
  274. package/#Tools/APPIQ-METHOD/slash-commands/ide-integrations/cursor-appiq.md +516 -0
  275. package/#Tools/APPIQ-METHOD/slash-commands/ide-integrations/universal-appiq.md +448 -0
  276. package/#Tools/APPIQ-METHOD/slash-commands/ide-integrations/windsurf-appiq.md +698 -0
  277. package/#Tools/APPIQ-METHOD/slash-commands/start.md +211 -0
  278. package/#Tools/APPIQ-METHOD/tools/bmad-npx-wrapper.js +41 -0
  279. package/#Tools/APPIQ-METHOD/tools/builders/web-builder.js +681 -0
  280. package/#Tools/APPIQ-METHOD/tools/bump-all-versions.js +106 -0
  281. package/#Tools/APPIQ-METHOD/tools/bump-expansion-version.js +83 -0
  282. package/#Tools/APPIQ-METHOD/tools/cli.js +152 -0
  283. package/#Tools/APPIQ-METHOD/tools/installer/README.md +8 -0
  284. package/#Tools/APPIQ-METHOD/tools/installer/bin/bmad.js +469 -0
  285. package/#Tools/APPIQ-METHOD/tools/installer/config/ide-agent-config.yaml +58 -0
  286. package/#Tools/APPIQ-METHOD/tools/installer/config/install.config.yaml +92 -0
  287. package/#Tools/APPIQ-METHOD/tools/installer/lib/config-loader.js +253 -0
  288. package/#Tools/APPIQ-METHOD/tools/installer/lib/file-manager.js +411 -0
  289. package/#Tools/APPIQ-METHOD/tools/installer/lib/ide-base-setup.js +227 -0
  290. package/#Tools/APPIQ-METHOD/tools/installer/lib/ide-setup.js +1096 -0
  291. package/#Tools/APPIQ-METHOD/tools/installer/lib/installer.js +1746 -0
  292. package/#Tools/APPIQ-METHOD/tools/installer/lib/memory-profiler.js +224 -0
  293. package/#Tools/APPIQ-METHOD/tools/installer/lib/module-manager.js +110 -0
  294. package/#Tools/APPIQ-METHOD/tools/installer/lib/resource-locator.js +310 -0
  295. package/#Tools/APPIQ-METHOD/tools/installer/package.json +43 -0
  296. package/#Tools/APPIQ-METHOD/tools/lib/dependency-resolver.js +179 -0
  297. package/#Tools/APPIQ-METHOD/tools/lib/yaml-utils.js +29 -0
  298. package/#Tools/APPIQ-METHOD/tools/md-assets/web-agent-startup-instructions.md +39 -0
  299. package/#Tools/APPIQ-METHOD/tools/semantic-release-sync-installer.js +30 -0
  300. package/#Tools/APPIQ-METHOD/tools/sync-installer-version.js +34 -0
  301. package/#Tools/APPIQ-METHOD/tools/update-expansion-version.js +54 -0
  302. package/#Tools/APPIQ-METHOD/tools/upgraders/v3-to-v4-upgrader.js +763 -0
  303. package/#Tools/APPIQ-METHOD/tools/version-bump.js +79 -0
  304. package/#Tools/APPIQ-METHOD/tools/yaml-format.js +240 -0
  305. package/#Tools/SkyReels-V2/.pre-commit-config.yaml +25 -0
  306. package/#Tools/SkyReels-V2/LICENSE.txt +38 -0
  307. package/#Tools/SkyReels-V2/README.md +766 -0
  308. package/#Tools/SkyReels-V2/generate_video.py +161 -0
  309. package/#Tools/SkyReels-V2/generate_video_df.py +220 -0
  310. package/#Tools/SkyReels-V2/requirements.txt +16 -0
  311. package/#Tools/SkyReels-V2/skycaptioner_v1/README.md +278 -0
  312. package/#Tools/SkyReels-V2/skycaptioner_v1/examples/test.csv +5 -0
  313. package/#Tools/SkyReels-V2/skycaptioner_v1/examples/test_result.csv +5 -0
  314. package/#Tools/SkyReels-V2/skycaptioner_v1/infer_fusion_caption.sh +9 -0
  315. package/#Tools/SkyReels-V2/skycaptioner_v1/infer_struct_caption.sh +8 -0
  316. package/#Tools/SkyReels-V2/skycaptioner_v1/requirements.txt +3 -0
  317. package/#Tools/SkyReels-V2/skycaptioner_v1/scripts/gradio_fusion_caption.py +146 -0
  318. package/#Tools/SkyReels-V2/skycaptioner_v1/scripts/gradio_struct_caption.py +92 -0
  319. package/#Tools/SkyReels-V2/skycaptioner_v1/scripts/utils.py +19 -0
  320. package/#Tools/SkyReels-V2/skycaptioner_v1/scripts/vllm_fusion_caption.py +256 -0
  321. package/#Tools/SkyReels-V2/skycaptioner_v1/scripts/vllm_struct_caption.py +156 -0
  322. package/#Tools/SkyReels-V2/skyreels_v2_infer/__init__.py +1 -0
  323. package/#Tools/SkyReels-V2/skyreels_v2_infer/distributed/xdit_context_parallel.py +286 -0
  324. package/#Tools/SkyReels-V2/skyreels_v2_infer/modules/__init__.py +69 -0
  325. package/#Tools/SkyReels-V2/skyreels_v2_infer/modules/attention.py +179 -0
  326. package/#Tools/SkyReels-V2/skyreels_v2_infer/modules/clip.py +525 -0
  327. package/#Tools/SkyReels-V2/skyreels_v2_infer/modules/t5.py +454 -0
  328. package/#Tools/SkyReels-V2/skyreels_v2_infer/modules/tokenizers.py +78 -0
  329. package/#Tools/SkyReels-V2/skyreels_v2_infer/modules/transformer.py +839 -0
  330. package/#Tools/SkyReels-V2/skyreels_v2_infer/modules/vae.py +639 -0
  331. package/#Tools/SkyReels-V2/skyreels_v2_infer/modules/xlm_roberta.py +165 -0
  332. package/#Tools/SkyReels-V2/skyreels_v2_infer/pipelines/__init__.py +5 -0
  333. package/#Tools/SkyReels-V2/skyreels_v2_infer/pipelines/diffusion_forcing_pipeline.py +659 -0
  334. package/#Tools/SkyReels-V2/skyreels_v2_infer/pipelines/image2video_pipeline.py +156 -0
  335. package/#Tools/SkyReels-V2/skyreels_v2_infer/pipelines/prompt_enhancer.py +65 -0
  336. package/#Tools/SkyReels-V2/skyreels_v2_infer/pipelines/text2video_pipeline.py +110 -0
  337. package/#Tools/SkyReels-V2/skyreels_v2_infer/scheduler/__init__.py +0 -0
  338. package/#Tools/SkyReels-V2/skyreels_v2_infer/scheduler/fm_solvers_unipc.py +759 -0
  339. package/#Tools/SuperClaude/.claude/commands/analyze.md +36 -0
  340. package/#Tools/SuperClaude/.claude/commands/build.md +35 -0
  341. package/#Tools/SuperClaude/.claude/commands/cleanup.md +46 -0
  342. package/#Tools/SuperClaude/.claude/commands/deploy.md +55 -0
  343. package/#Tools/SuperClaude/.claude/commands/design.md +91 -0
  344. package/#Tools/SuperClaude/.claude/commands/dev-setup.md +37 -0
  345. package/#Tools/SuperClaude/.claude/commands/document.md +99 -0
  346. package/#Tools/SuperClaude/.claude/commands/estimate.md +69 -0
  347. package/#Tools/SuperClaude/.claude/commands/explain.md +85 -0
  348. package/#Tools/SuperClaude/.claude/commands/git.md +47 -0
  349. package/#Tools/SuperClaude/.claude/commands/improve.md +162 -0
  350. package/#Tools/SuperClaude/.claude/commands/index.md +159 -0
  351. package/#Tools/SuperClaude/.claude/commands/load.md +65 -0
  352. package/#Tools/SuperClaude/.claude/commands/migrate.md +76 -0
  353. package/#Tools/SuperClaude/.claude/commands/scan.md +163 -0
  354. package/#Tools/SuperClaude/.claude/commands/shared/ambiguity-check.yml +40 -0
  355. package/#Tools/SuperClaude/.claude/commands/shared/audit.yml +21 -0
  356. package/#Tools/SuperClaude/.claude/commands/shared/checkpoint.yml +28 -0
  357. package/#Tools/SuperClaude/.claude/commands/shared/cleanup-patterns.yml +107 -0
  358. package/#Tools/SuperClaude/.claude/commands/shared/command-memory.yml +52 -0
  359. package/#Tools/SuperClaude/.claude/commands/shared/command-templates.yml +167 -0
  360. package/#Tools/SuperClaude/.claude/commands/shared/config-validator.yml +206 -0
  361. package/#Tools/SuperClaude/.claude/commands/shared/constants.yml +311 -0
  362. package/#Tools/SuperClaude/.claude/commands/shared/documentation-dirs.yml +134 -0
  363. package/#Tools/SuperClaude/.claude/commands/shared/error-handling.yml +341 -0
  364. package/#Tools/SuperClaude/.claude/commands/shared/evidence.yml +75 -0
  365. package/#Tools/SuperClaude/.claude/commands/shared/execution-lifecycle.yml +277 -0
  366. package/#Tools/SuperClaude/.claude/commands/shared/git-operations.yml +217 -0
  367. package/#Tools/SuperClaude/.claude/commands/shared/git-workflow.yml +37 -0
  368. package/#Tools/SuperClaude/.claude/commands/shared/implementation.yml +199 -0
  369. package/#Tools/SuperClaude/.claude/commands/shared/loading-config.yml +73 -0
  370. package/#Tools/SuperClaude/.claude/commands/shared/mcp-flags.yml +109 -0
  371. package/#Tools/SuperClaude/.claude/commands/shared/migration-report.md +165 -0
  372. package/#Tools/SuperClaude/.claude/commands/shared/patterns.yml +155 -0
  373. package/#Tools/SuperClaude/.claude/commands/shared/performance.yml +317 -0
  374. package/#Tools/SuperClaude/.claude/commands/shared/planning-mode.yml +51 -0
  375. package/#Tools/SuperClaude/.claude/commands/shared/research-first.yml +278 -0
  376. package/#Tools/SuperClaude/.claude/commands/shared/session-recovery.yml +144 -0
  377. package/#Tools/SuperClaude/.claude/commands/shared/severity-levels.yml +252 -0
  378. package/#Tools/SuperClaude/.claude/commands/shared/task-system.yml +380 -0
  379. package/#Tools/SuperClaude/.claude/commands/shared/task-ultracompressed.yml +88 -0
  380. package/#Tools/SuperClaude/.claude/commands/shared/templates/feature-template.md +59 -0
  381. package/#Tools/SuperClaude/.claude/commands/shared/templates/task-ultracompressed.md +26 -0
  382. package/#Tools/SuperClaude/.claude/commands/shared/thinking-modes.yml +61 -0
  383. package/#Tools/SuperClaude/.claude/commands/shared/ultracompressed.yml +97 -0
  384. package/#Tools/SuperClaude/.claude/commands/shared/user-experience.yml +208 -0
  385. package/#Tools/SuperClaude/.claude/commands/shared/validation.yml +54 -0
  386. package/#Tools/SuperClaude/.claude/commands/shared/workflow-chains.yml +138 -0
  387. package/#Tools/SuperClaude/.claude/commands/spawn.md +106 -0
  388. package/#Tools/SuperClaude/.claude/commands/task.md +110 -0
  389. package/#Tools/SuperClaude/.claude/commands/test.md +67 -0
  390. package/#Tools/SuperClaude/.claude/commands/troubleshoot.md +93 -0
  391. package/#Tools/SuperClaude/.github/ISSUE_TEMPLATE/bug_report.yml +114 -0
  392. package/#Tools/SuperClaude/.github/ISSUE_TEMPLATE/feature_request.yml +119 -0
  393. package/#Tools/SuperClaude/.github/ISSUE_TEMPLATE/question.yml +87 -0
  394. package/#Tools/SuperClaude/.github/pull_request_template.md +62 -0
  395. package/#Tools/SuperClaude/CHANGELOG.md +109 -0
  396. package/#Tools/SuperClaude/CLAUDE.md +95 -0
  397. package/#Tools/SuperClaude/CODE_OF_CONDUCT.md +45 -0
  398. package/#Tools/SuperClaude/CONTRIBUTING.md +225 -0
  399. package/#Tools/SuperClaude/Commands_Cheat_Sheet.md +160 -0
  400. package/#Tools/SuperClaude/LICENSE +21 -0
  401. package/#Tools/SuperClaude/MCP.md +117 -0
  402. package/#Tools/SuperClaude/PERSONAS.md +115 -0
  403. package/#Tools/SuperClaude/README.md +249 -0
  404. package/#Tools/SuperClaude/RULES.md +220 -0
  405. package/#Tools/SuperClaude/SECURITY.md +91 -0
  406. package/#Tools/SuperClaude/install.sh +296 -0
  407. package/#Tools/claude-talk-to-figma-mcp/.github/workflows/test.yml +36 -0
  408. package/#Tools/claude-talk-to-figma-mcp/CHANGELOG.md +88 -0
  409. package/#Tools/claude-talk-to-figma-mcp/Dockerfile +16 -0
  410. package/#Tools/claude-talk-to-figma-mcp/LICENSE +22 -0
  411. package/#Tools/claude-talk-to-figma-mcp/TESTING.md +216 -0
  412. package/#Tools/claude-talk-to-figma-mcp/bun.lock +964 -0
  413. package/#Tools/claude-talk-to-figma-mcp/context/01/00-analisis.md +151 -0
  414. package/#Tools/claude-talk-to-figma-mcp/context/01/01-tools-refactor.md +370 -0
  415. package/#Tools/claude-talk-to-figma-mcp/context/01/02-tools-refactor-backlog.md +253 -0
  416. package/#Tools/claude-talk-to-figma-mcp/context/01/03-tools-refactor-test.md +138 -0
  417. package/#Tools/claude-talk-to-figma-mcp/context/01/04-tools-refactor-channel-error.md +133 -0
  418. package/#Tools/claude-talk-to-figma-mcp/context/01/04-tools-refactor-test-backlog.md +0 -0
  419. package/#Tools/claude-talk-to-figma-mcp/context/01/05-tools-refactor-four-tools-error.md +356 -0
  420. package/#Tools/claude-talk-to-figma-mcp/context/01/06-tools-refactor-four-tools-error-backlog.md +425 -0
  421. package/#Tools/claude-talk-to-figma-mcp/context/01/prompt-dev-nodejs-bun.md +105 -0
  422. package/#Tools/claude-talk-to-figma-mcp/context/01-prompt.md +135 -0
  423. package/#Tools/claude-talk-to-figma-mcp/context/02/00-analisis.md +131 -0
  424. package/#Tools/claude-talk-to-figma-mcp/context/02/01-plan.md +162 -0
  425. package/#Tools/claude-talk-to-figma-mcp/context/02/02-backlog.md +241 -0
  426. package/#Tools/claude-talk-to-figma-mcp/context/02-analisis.md +202 -0
  427. package/#Tools/claude-talk-to-figma-mcp/context/99-notas.md +139 -0
  428. package/#Tools/claude-talk-to-figma-mcp/context/pr-14/pr-14-analisis.md +221 -0
  429. package/#Tools/claude-talk-to-figma-mcp/context/pr-14/pr-14-claude-tests.md +152 -0
  430. package/#Tools/claude-talk-to-figma-mcp/context/pr-14/pr-14-npm-publishing.md +272 -0
  431. package/#Tools/claude-talk-to-figma-mcp/images/claude-talk-to-figma.png +0 -0
  432. package/#Tools/claude-talk-to-figma-mcp/images/mcp-figma-plugin-configuration.png +0 -0
  433. package/#Tools/claude-talk-to-figma-mcp/jest.config.cjs +25 -0
  434. package/#Tools/claude-talk-to-figma-mcp/package.json +67 -0
  435. package/#Tools/claude-talk-to-figma-mcp/prompts/prompt-ux-ui-especialista-es.md +82 -0
  436. package/#Tools/claude-talk-to-figma-mcp/prompts/prompt-ux-ui-especialista-gal.md +80 -0
  437. package/#Tools/claude-talk-to-figma-mcp/prompts/prompt-ux-ui-especialista-pt.md +80 -0
  438. package/#Tools/claude-talk-to-figma-mcp/prompts/prompt-ux-ui-specialist.md +80 -0
  439. package/#Tools/claude-talk-to-figma-mcp/readme.md +307 -0
  440. package/#Tools/claude-talk-to-figma-mcp/scripts/configure-claude.js +90 -0
  441. package/#Tools/claude-talk-to-figma-mcp/scripts/setup.sh +30 -0
  442. package/#Tools/claude-talk-to-figma-mcp/scripts/test-integration.js +339 -0
  443. package/#Tools/claude-talk-to-figma-mcp/smithery.yaml +26 -0
  444. package/#Tools/claude-talk-to-figma-mcp/src/claude_mcp_plugin/code.js +3295 -0
  445. package/#Tools/claude-talk-to-figma-mcp/src/claude_mcp_plugin/manifest.json +24 -0
  446. package/#Tools/claude-talk-to-figma-mcp/src/claude_mcp_plugin/setcharacters.js +215 -0
  447. package/#Tools/claude-talk-to-figma-mcp/src/claude_mcp_plugin/ui.html +656 -0
  448. package/#Tools/claude-talk-to-figma-mcp/src/socket.ts +349 -0
  449. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/bun.lock +246 -0
  450. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/config/config.ts +22 -0
  451. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/package.json +31 -0
  452. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/prompts/index.ts +297 -0
  453. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/server.ts +62 -0
  454. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/tools/component-tools.ts +48 -0
  455. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/tools/creation-tools.ts +620 -0
  456. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/tools/document-tools.ts +390 -0
  457. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/tools/index.ts +28 -0
  458. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/tools/modification-tools.ts +408 -0
  459. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/tools/text-tools.ts +531 -0
  460. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/tsconfig.json +18 -0
  461. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/types/color.ts +13 -0
  462. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/types/index.ts +87 -0
  463. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/utils/defaults.ts +23 -0
  464. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/utils/figma-helpers.ts +142 -0
  465. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/utils/logger.ts +8 -0
  466. package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/utils/websocket.ts +258 -0
  467. package/#Tools/claude-talk-to-figma-mcp/tests/fixtures/test-data.ts +32 -0
  468. package/#Tools/claude-talk-to-figma-mcp/tests/integration/set-fill-color.test.ts +309 -0
  469. package/#Tools/claude-talk-to-figma-mcp/tests/integration/set-stroke-color.test.ts +387 -0
  470. package/#Tools/claude-talk-to-figma-mcp/tests/setup.ts +7 -0
  471. package/#Tools/claude-talk-to-figma-mcp/tests/unit/utils/defaults.test.ts +131 -0
  472. package/#Tools/claude-talk-to-figma-mcp/tsconfig.json +17 -0
  473. package/#Tools/claude-talk-to-figma-mcp/tsup.config.ts +14 -0
  474. package/#Tools/jwt creator/AuthKey_MZ7UQGFV2Q.p8 +6 -0
  475. package/#Tools/jwt creator/generate_apple_jwt.js +18 -0
  476. package/#Tools/jwt creator/node_modules/.package-lock.json +145 -0
  477. package/#Tools/jwt creator/node_modules/buffer-equal-constant-time/.travis.yml +4 -0
  478. package/#Tools/jwt creator/node_modules/buffer-equal-constant-time/LICENSE.txt +12 -0
  479. package/#Tools/jwt creator/node_modules/buffer-equal-constant-time/README.md +50 -0
  480. package/#Tools/jwt creator/node_modules/buffer-equal-constant-time/index.js +41 -0
  481. package/#Tools/jwt creator/node_modules/buffer-equal-constant-time/package.json +21 -0
  482. package/#Tools/jwt creator/node_modules/buffer-equal-constant-time/test.js +42 -0
  483. package/#Tools/jwt creator/node_modules/ecdsa-sig-formatter/CODEOWNERS +1 -0
  484. package/#Tools/jwt creator/node_modules/ecdsa-sig-formatter/LICENSE +201 -0
  485. package/#Tools/jwt creator/node_modules/ecdsa-sig-formatter/README.md +65 -0
  486. package/#Tools/jwt creator/node_modules/ecdsa-sig-formatter/package.json +46 -0
  487. package/#Tools/jwt creator/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.d.ts +17 -0
  488. package/#Tools/jwt creator/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js +187 -0
  489. package/#Tools/jwt creator/node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js +23 -0
  490. package/#Tools/jwt creator/node_modules/jsonwebtoken/LICENSE +21 -0
  491. package/#Tools/jwt creator/node_modules/jsonwebtoken/README.md +396 -0
  492. package/#Tools/jwt creator/node_modules/jsonwebtoken/decode.js +30 -0
  493. package/#Tools/jwt creator/node_modules/jsonwebtoken/index.js +8 -0
  494. package/#Tools/jwt creator/node_modules/jsonwebtoken/lib/JsonWebTokenError.js +14 -0
  495. package/#Tools/jwt creator/node_modules/jsonwebtoken/lib/NotBeforeError.js +13 -0
  496. package/#Tools/jwt creator/node_modules/jsonwebtoken/lib/TokenExpiredError.js +13 -0
  497. package/#Tools/jwt creator/node_modules/jsonwebtoken/lib/asymmetricKeyDetailsSupported.js +3 -0
  498. package/#Tools/jwt creator/node_modules/jsonwebtoken/lib/psSupported.js +3 -0
  499. package/#Tools/jwt creator/node_modules/jsonwebtoken/lib/rsaPssKeyDetailsSupported.js +3 -0
  500. package/#Tools/jwt creator/node_modules/jsonwebtoken/lib/timespan.js +18 -0
  501. package/#Tools/jwt creator/node_modules/jsonwebtoken/lib/validateAsymmetricKey.js +66 -0
  502. package/#Tools/jwt creator/node_modules/jsonwebtoken/package.json +71 -0
  503. package/#Tools/jwt creator/node_modules/jsonwebtoken/sign.js +253 -0
  504. package/#Tools/jwt creator/node_modules/jsonwebtoken/verify.js +263 -0
  505. package/#Tools/jwt creator/node_modules/jwa/LICENSE +17 -0
  506. package/#Tools/jwt creator/node_modules/jwa/README.md +150 -0
  507. package/#Tools/jwt creator/node_modules/jwa/index.js +266 -0
  508. package/#Tools/jwt creator/node_modules/jwa/package.json +37 -0
  509. package/#Tools/jwt creator/node_modules/jws/CHANGELOG.md +34 -0
  510. package/#Tools/jwt creator/node_modules/jws/LICENSE +17 -0
  511. package/#Tools/jwt creator/node_modules/jws/index.js +22 -0
  512. package/#Tools/jwt creator/node_modules/jws/lib/data-stream.js +55 -0
  513. package/#Tools/jwt creator/node_modules/jws/lib/sign-stream.js +78 -0
  514. package/#Tools/jwt creator/node_modules/jws/lib/tostring.js +10 -0
  515. package/#Tools/jwt creator/node_modules/jws/lib/verify-stream.js +120 -0
  516. package/#Tools/jwt creator/node_modules/jws/package.json +34 -0
  517. package/#Tools/jwt creator/node_modules/jws/readme.md +255 -0
  518. package/#Tools/jwt creator/node_modules/lodash.includes/LICENSE +47 -0
  519. package/#Tools/jwt creator/node_modules/lodash.includes/README.md +18 -0
  520. package/#Tools/jwt creator/node_modules/lodash.includes/index.js +745 -0
  521. package/#Tools/jwt creator/node_modules/lodash.includes/package.json +17 -0
  522. package/#Tools/jwt creator/node_modules/lodash.isboolean/LICENSE +22 -0
  523. package/#Tools/jwt creator/node_modules/lodash.isboolean/README.md +18 -0
  524. package/#Tools/jwt creator/node_modules/lodash.isboolean/index.js +70 -0
  525. package/#Tools/jwt creator/node_modules/lodash.isboolean/package.json +17 -0
  526. package/#Tools/jwt creator/node_modules/lodash.isinteger/LICENSE +47 -0
  527. package/#Tools/jwt creator/node_modules/lodash.isinteger/README.md +18 -0
  528. package/#Tools/jwt creator/node_modules/lodash.isinteger/index.js +265 -0
  529. package/#Tools/jwt creator/node_modules/lodash.isinteger/package.json +17 -0
  530. package/#Tools/jwt creator/node_modules/lodash.isnumber/LICENSE +22 -0
  531. package/#Tools/jwt creator/node_modules/lodash.isnumber/README.md +18 -0
  532. package/#Tools/jwt creator/node_modules/lodash.isnumber/index.js +79 -0
  533. package/#Tools/jwt creator/node_modules/lodash.isnumber/package.json +17 -0
  534. package/#Tools/jwt creator/node_modules/lodash.isplainobject/LICENSE +47 -0
  535. package/#Tools/jwt creator/node_modules/lodash.isplainobject/README.md +18 -0
  536. package/#Tools/jwt creator/node_modules/lodash.isplainobject/index.js +139 -0
  537. package/#Tools/jwt creator/node_modules/lodash.isplainobject/package.json +17 -0
  538. package/#Tools/jwt creator/node_modules/lodash.isstring/LICENSE +22 -0
  539. package/#Tools/jwt creator/node_modules/lodash.isstring/README.md +18 -0
  540. package/#Tools/jwt creator/node_modules/lodash.isstring/index.js +95 -0
  541. package/#Tools/jwt creator/node_modules/lodash.isstring/package.json +17 -0
  542. package/#Tools/jwt creator/node_modules/lodash.once/LICENSE +47 -0
  543. package/#Tools/jwt creator/node_modules/lodash.once/README.md +18 -0
  544. package/#Tools/jwt creator/node_modules/lodash.once/index.js +294 -0
  545. package/#Tools/jwt creator/node_modules/lodash.once/package.json +17 -0
  546. package/#Tools/jwt creator/node_modules/ms/index.js +162 -0
  547. package/#Tools/jwt creator/node_modules/ms/license.md +21 -0
  548. package/#Tools/jwt creator/node_modules/ms/package.json +38 -0
  549. package/#Tools/jwt creator/node_modules/ms/readme.md +59 -0
  550. package/#Tools/jwt creator/node_modules/safe-buffer/LICENSE +21 -0
  551. package/#Tools/jwt creator/node_modules/safe-buffer/README.md +584 -0
  552. package/#Tools/jwt creator/node_modules/safe-buffer/index.d.ts +187 -0
  553. package/#Tools/jwt creator/node_modules/safe-buffer/index.js +65 -0
  554. package/#Tools/jwt creator/node_modules/safe-buffer/package.json +51 -0
  555. package/#Tools/jwt creator/node_modules/semver/LICENSE +15 -0
  556. package/#Tools/jwt creator/node_modules/semver/README.md +664 -0
  557. package/#Tools/jwt creator/node_modules/semver/bin/semver.js +191 -0
  558. package/#Tools/jwt creator/node_modules/semver/classes/comparator.js +143 -0
  559. package/#Tools/jwt creator/node_modules/semver/classes/index.js +7 -0
  560. package/#Tools/jwt creator/node_modules/semver/classes/range.js +556 -0
  561. package/#Tools/jwt creator/node_modules/semver/classes/semver.js +319 -0
  562. package/#Tools/jwt creator/node_modules/semver/functions/clean.js +8 -0
  563. package/#Tools/jwt creator/node_modules/semver/functions/cmp.js +54 -0
  564. package/#Tools/jwt creator/node_modules/semver/functions/coerce.js +62 -0
  565. package/#Tools/jwt creator/node_modules/semver/functions/compare-build.js +9 -0
  566. package/#Tools/jwt creator/node_modules/semver/functions/compare-loose.js +5 -0
  567. package/#Tools/jwt creator/node_modules/semver/functions/compare.js +7 -0
  568. package/#Tools/jwt creator/node_modules/semver/functions/diff.js +60 -0
  569. package/#Tools/jwt creator/node_modules/semver/functions/eq.js +5 -0
  570. package/#Tools/jwt creator/node_modules/semver/functions/gt.js +5 -0
  571. package/#Tools/jwt creator/node_modules/semver/functions/gte.js +5 -0
  572. package/#Tools/jwt creator/node_modules/semver/functions/inc.js +21 -0
  573. package/#Tools/jwt creator/node_modules/semver/functions/lt.js +5 -0
  574. package/#Tools/jwt creator/node_modules/semver/functions/lte.js +5 -0
  575. package/#Tools/jwt creator/node_modules/semver/functions/major.js +5 -0
  576. package/#Tools/jwt creator/node_modules/semver/functions/minor.js +5 -0
  577. package/#Tools/jwt creator/node_modules/semver/functions/neq.js +5 -0
  578. package/#Tools/jwt creator/node_modules/semver/functions/parse.js +18 -0
  579. package/#Tools/jwt creator/node_modules/semver/functions/patch.js +5 -0
  580. package/#Tools/jwt creator/node_modules/semver/functions/prerelease.js +8 -0
  581. package/#Tools/jwt creator/node_modules/semver/functions/rcompare.js +5 -0
  582. package/#Tools/jwt creator/node_modules/semver/functions/rsort.js +5 -0
  583. package/#Tools/jwt creator/node_modules/semver/functions/satisfies.js +12 -0
  584. package/#Tools/jwt creator/node_modules/semver/functions/sort.js +5 -0
  585. package/#Tools/jwt creator/node_modules/semver/functions/valid.js +8 -0
  586. package/#Tools/jwt creator/node_modules/semver/index.js +91 -0
  587. package/#Tools/jwt creator/node_modules/semver/internal/constants.js +37 -0
  588. package/#Tools/jwt creator/node_modules/semver/internal/debug.js +11 -0
  589. package/#Tools/jwt creator/node_modules/semver/internal/identifiers.js +25 -0
  590. package/#Tools/jwt creator/node_modules/semver/internal/lrucache.js +42 -0
  591. package/#Tools/jwt creator/node_modules/semver/internal/parse-options.js +17 -0
  592. package/#Tools/jwt creator/node_modules/semver/internal/re.js +223 -0
  593. package/#Tools/jwt creator/node_modules/semver/package.json +78 -0
  594. package/#Tools/jwt creator/node_modules/semver/preload.js +4 -0
  595. package/#Tools/jwt creator/node_modules/semver/range.bnf +16 -0
  596. package/#Tools/jwt creator/node_modules/semver/ranges/gtr.js +6 -0
  597. package/#Tools/jwt creator/node_modules/semver/ranges/intersects.js +9 -0
  598. package/#Tools/jwt creator/node_modules/semver/ranges/ltr.js +6 -0
  599. package/#Tools/jwt creator/node_modules/semver/ranges/max-satisfying.js +27 -0
  600. package/#Tools/jwt creator/node_modules/semver/ranges/min-satisfying.js +26 -0
  601. package/#Tools/jwt creator/node_modules/semver/ranges/min-version.js +63 -0
  602. package/#Tools/jwt creator/node_modules/semver/ranges/outside.js +82 -0
  603. package/#Tools/jwt creator/node_modules/semver/ranges/simplify.js +49 -0
  604. package/#Tools/jwt creator/node_modules/semver/ranges/subset.js +249 -0
  605. package/#Tools/jwt creator/node_modules/semver/ranges/to-comparators.js +10 -0
  606. package/#Tools/jwt creator/node_modules/semver/ranges/valid.js +13 -0
  607. package/#Tools/jwt creator/package-lock.json +150 -0
  608. package/#Tools/jwt creator/package.json +5 -0
  609. package/#Tools/package.json +94 -0
  610. package/SuperClaude/.claude/commands/analyze.md +36 -0
  611. package/SuperClaude/.claude/commands/build.md +35 -0
  612. package/SuperClaude/.claude/commands/cleanup.md +46 -0
  613. package/SuperClaude/.claude/commands/deploy.md +55 -0
  614. package/SuperClaude/.claude/commands/design.md +91 -0
  615. package/SuperClaude/.claude/commands/dev-setup.md +37 -0
  616. package/SuperClaude/.claude/commands/document.md +99 -0
  617. package/SuperClaude/.claude/commands/estimate.md +69 -0
  618. package/SuperClaude/.claude/commands/explain.md +85 -0
  619. package/SuperClaude/.claude/commands/git.md +47 -0
  620. package/SuperClaude/.claude/commands/improve.md +162 -0
  621. package/SuperClaude/.claude/commands/index.md +159 -0
  622. package/SuperClaude/.claude/commands/load.md +65 -0
  623. package/SuperClaude/.claude/commands/migrate.md +76 -0
  624. package/SuperClaude/.claude/commands/scan.md +163 -0
  625. package/SuperClaude/.claude/commands/shared/ambiguity-check.yml +40 -0
  626. package/SuperClaude/.claude/commands/shared/audit.yml +21 -0
  627. package/SuperClaude/.claude/commands/shared/checkpoint.yml +28 -0
  628. package/SuperClaude/.claude/commands/shared/cleanup-patterns.yml +107 -0
  629. package/SuperClaude/.claude/commands/shared/command-memory.yml +52 -0
  630. package/SuperClaude/.claude/commands/shared/command-templates.yml +167 -0
  631. package/SuperClaude/.claude/commands/shared/config-validator.yml +206 -0
  632. package/SuperClaude/.claude/commands/shared/constants.yml +311 -0
  633. package/SuperClaude/.claude/commands/shared/documentation-dirs.yml +134 -0
  634. package/SuperClaude/.claude/commands/shared/error-handling.yml +341 -0
  635. package/SuperClaude/.claude/commands/shared/evidence.yml +75 -0
  636. package/SuperClaude/.claude/commands/shared/execution-lifecycle.yml +277 -0
  637. package/SuperClaude/.claude/commands/shared/git-operations.yml +217 -0
  638. package/SuperClaude/.claude/commands/shared/git-workflow.yml +37 -0
  639. package/SuperClaude/.claude/commands/shared/implementation.yml +199 -0
  640. package/SuperClaude/.claude/commands/shared/loading-config.yml +73 -0
  641. package/SuperClaude/.claude/commands/shared/mcp-flags.yml +109 -0
  642. package/SuperClaude/.claude/commands/shared/migration-report.md +165 -0
  643. package/SuperClaude/.claude/commands/shared/patterns.yml +155 -0
  644. package/SuperClaude/.claude/commands/shared/performance.yml +317 -0
  645. package/SuperClaude/.claude/commands/shared/planning-mode.yml +51 -0
  646. package/SuperClaude/.claude/commands/shared/research-first.yml +278 -0
  647. package/SuperClaude/.claude/commands/shared/session-recovery.yml +144 -0
  648. package/SuperClaude/.claude/commands/shared/severity-levels.yml +252 -0
  649. package/SuperClaude/.claude/commands/shared/task-system.yml +380 -0
  650. package/SuperClaude/.claude/commands/shared/task-ultracompressed.yml +88 -0
  651. package/SuperClaude/.claude/commands/shared/templates/feature-template.md +59 -0
  652. package/SuperClaude/.claude/commands/shared/templates/task-ultracompressed.md +26 -0
  653. package/SuperClaude/.claude/commands/shared/thinking-modes.yml +61 -0
  654. package/SuperClaude/.claude/commands/shared/ultracompressed.yml +97 -0
  655. package/SuperClaude/.claude/commands/shared/user-experience.yml +208 -0
  656. package/SuperClaude/.claude/commands/shared/validation.yml +54 -0
  657. package/SuperClaude/.claude/commands/shared/workflow-chains.yml +138 -0
  658. package/SuperClaude/.claude/commands/spawn.md +106 -0
  659. package/SuperClaude/.claude/commands/task.md +110 -0
  660. package/SuperClaude/.claude/commands/test.md +67 -0
  661. package/SuperClaude/.claude/commands/troubleshoot.md +93 -0
  662. package/SuperClaude/.github/ISSUE_TEMPLATE/bug_report.yml +114 -0
  663. package/SuperClaude/.github/ISSUE_TEMPLATE/feature_request.yml +119 -0
  664. package/SuperClaude/.github/ISSUE_TEMPLATE/question.yml +87 -0
  665. package/SuperClaude/.github/pull_request_template.md +62 -0
  666. package/SuperClaude/CHANGELOG.md +109 -0
  667. package/SuperClaude/CLAUDE.md +95 -0
  668. package/SuperClaude/CODE_OF_CONDUCT.md +45 -0
  669. package/SuperClaude/CONTRIBUTING.md +225 -0
  670. package/SuperClaude/Commands_Cheat_Sheet.md +160 -0
  671. package/SuperClaude/LICENSE +21 -0
  672. package/SuperClaude/MCP.md +117 -0
  673. package/SuperClaude/PERSONAS.md +115 -0
  674. package/SuperClaude/README.md +249 -0
  675. package/SuperClaude/RULES.md +220 -0
  676. package/SuperClaude/SECURITY.md +91 -0
  677. package/SuperClaude/install.sh +296 -0
  678. package/appiq-mcp installer/How-to.md +250 -0
  679. package/appiq-mcp installer/LICENSE +21 -0
  680. package/appiq-mcp installer/README.md +235 -0
  681. package/appiq-mcp installer/index.js +672 -0
  682. package/appiq-mcp installer/my_mcps.md +105 -0
  683. package/appiq-mcp installer/package-lock.json +708 -0
  684. package/appiq-mcp installer/package.json +46 -0
  685. package/appiq-mcp installer/test-install.bat +60 -0
  686. package/appiq-mcp installer/test-install.sh +55 -0
  687. package/appiq-mcp installer/test-load.js +40 -0
  688. package/dist/agents/bmad-orchestrator.txt +111 -0
  689. package/dist/agents/pm.txt +0 -2
  690. package/dist/expansion-packs/bmad-2d-phaser-game-dev/teams/phaser-2d-nodejs-game-team.txt +111 -0
  691. package/dist/expansion-packs/bmad-2d-unity-game-dev/teams/unity-2d-game-team.txt +111 -0
  692. package/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-analytics.txt +1530 -0
  693. package/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-architect.txt +322 -0
  694. package/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-developer.txt +692 -0
  695. package/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-pm.txt +382 -0
  696. package/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-qa.txt +665 -0
  697. package/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-security.txt +1070 -0
  698. package/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-ux-expert.txt +1494 -0
  699. package/dist/expansion-packs/bmad-mobile-app-dev/teams/mobile-team-cross-platform.txt +15613 -0
  700. package/dist/teams/team-all.txt +111 -2
  701. package/dist/teams/team-fullstack.txt +111 -2
  702. package/dist/teams/team-ide-minimal.txt +111 -0
  703. package/dist/teams/team-no-ui.txt +111 -2
  704. package/flutter/CLAUDE.md +58 -0
  705. package/flutter/punkt.claude/New Folder With Items/channel.md +221 -0
  706. package/flutter/punkt.claude/New Folder With Items/commands/add-translations.md +12 -0
  707. package/flutter/punkt.claude/New Folder With Items/commands/create-feature.md +168 -0
  708. package/flutter/punkt.claude/New Folder With Items/commands/explain-codebase.md +1 -0
  709. package/flutter/punkt.claude/New Folder With Items/commands/feature-business-logic.md +551 -0
  710. package/flutter/punkt.claude/New Folder With Items/commands/feature-data-layer.md +924 -0
  711. package/flutter/punkt.claude/New Folder With Items/commands/feature-domain-layer.md +540 -0
  712. package/flutter/punkt.claude/New Folder With Items/commands/feature-integration.md +493 -0
  713. package/flutter/punkt.claude/New Folder With Items/commands/feature-localization.md +427 -0
  714. package/flutter/punkt.claude/New Folder With Items/commands/feature-ui-layer.md +300 -0
  715. package/flutter/punkt.claude/New Folder With Items/commands/git-commit.md +3 -0
  716. package/flutter/punkt.claude/New Folder With Items/commands/search-web.md +1 -0
  717. package/flutter/punkt.claude/punkt.claude/channel.md +225 -0
  718. package/flutter/punkt.claude/punkt.claude/commands/add-translations.md +60 -0
  719. package/flutter/punkt.claude/punkt.claude/commands/bug-fix.md +32 -0
  720. package/flutter/punkt.claude/punkt.claude/commands/checkdev.md +122 -0
  721. package/flutter/punkt.claude/punkt.claude/commands/create-feature.md +174 -0
  722. package/flutter/punkt.claude/punkt.claude/commands/dev.md +79 -0
  723. package/flutter/punkt.claude/punkt.claude/commands/explain-codebase.md +1 -0
  724. package/flutter/punkt.claude/punkt.claude/commands/feature-business-logic.md +430 -0
  725. package/flutter/punkt.claude/punkt.claude/commands/feature-data-layer.md +572 -0
  726. package/flutter/punkt.claude/punkt.claude/commands/feature-domain-layer.md +537 -0
  727. package/flutter/punkt.claude/punkt.claude/commands/feature-integration.md +493 -0
  728. package/flutter/punkt.claude/punkt.claude/commands/feature-localization.md +427 -0
  729. package/flutter/punkt.claude/punkt.claude/commands/feature-ui-layer.md +831 -0
  730. package/flutter/punkt.claude/punkt.claude/commands/git-commit.md +3 -0
  731. package/flutter/punkt.claude/punkt.claude/commands/manage-translations.md +433 -0
  732. package/flutter/punkt.claude/punkt.claude/commands/search-web.md +1 -0
  733. package/flutter/punkt.claude/punkt.claude/developer_check.md +121 -0
  734. package/package.json +71 -18
  735. package/tools/bmad-npx-wrapper.js +7 -5
  736. package/tools/installer/bin/bmad.js +0 -14
  737. package/tools/installer/lib/installer.js +2 -28
  738. package/tools/installer/package-lock.json +89 -89
  739. package/tools/installer/package.json +1 -1
  740. package/web/CLAUDE.md +58 -0
  741. package/.bmad-config.json +0 -13
  742. package/.cursor/commands/analyze.md +0 -27
  743. package/.cursor/commands/appiq.md +0 -27
  744. package/.cursor/commands/help.md +0 -27
  745. package/.cursor/commands/story.md +0 -27
  746. package/DEVELOPMENT_GUIDE.md +0 -855
  747. package/NPM-README.md +0 -138
  748. package/README.md +0 -105
  749. package/SMART_WORKFLOW_GUIDE.md +0 -401
  750. package/activate-appiq.js +0 -81
  751. package/appiq-solution/README.md +0 -226
  752. package/bmad-core/agents/bmad-smart-launcher.md +0 -170
  753. package/bmad-core/checklists/security-validation-checklist.md +0 -332
  754. package/bmad-core/data/backend-services-integration.md +0 -686
  755. package/bmad-core/data/shadcn-ui-integration.md +0 -388
  756. package/bmad-core/data/technical-preferences.md +0 -149
  757. package/bmad-core/enhanced-ide-development-workflow.md +0 -43
  758. package/bmad-core/tasks/intelligent-epic-creation.md +0 -234
  759. package/bmad-core/tasks/smart-project-analysis.md +0 -289
  760. package/commands/README.md +0 -28
  761. package/commands/analyze.md +0 -27
  762. package/commands/appiq.md +0 -27
  763. package/commands/help.md +0 -27
  764. package/commands/story.md +0 -27
  765. package/expansion-packs/bmad-flutter-mobile-dev/agent-teams/flutter-mobile-team.yaml +0 -23
  766. package/expansion-packs/bmad-flutter-mobile-dev/agents/flutter-cubit-agent.md +0 -133
  767. package/expansion-packs/bmad-flutter-mobile-dev/agents/flutter-data-agent.md +0 -160
  768. package/expansion-packs/bmad-flutter-mobile-dev/agents/flutter-domain-agent.md +0 -153
  769. package/expansion-packs/bmad-flutter-mobile-dev/agents/flutter-ui-agent.md +0 -122
  770. package/expansion-packs/bmad-flutter-mobile-dev/agents/shared-components-agent.md +0 -161
  771. package/expansion-packs/bmad-flutter-mobile-dev/checklists/flutter-story-dod-checklist.md +0 -194
  772. package/expansion-packs/bmad-flutter-mobile-dev/config.yaml +0 -41
  773. package/expansion-packs/bmad-flutter-mobile-dev/data/flutter-development-guidelines.md +0 -551
  774. package/expansion-packs/bmad-flutter-mobile-dev/templates/flutter-mobile-architecture-tmpl.yaml +0 -530
  775. package/expansion-packs/bmad-flutter-mobile-dev/workflows/flutter-ui-first-development.yaml +0 -220
  776. package/install-appiq.sh +0 -41
  777. package/tasks/todo.md +0 -275
  778. package/tools/appiq-installer.js +0 -2621
  779. package/tools/epic-solution-installer.js +0 -538
  780. package/tools/flattener/main.js +0 -570
  781. package/tools/setup-ide-commands.js +0 -345
  782. package/tools/smart-installer.js +0 -589
  783. /package/{.github → #Tools/APPIQ-METHOD/.github}/FUNDING.yaml +0 -0
  784. /package/{.github → #Tools/APPIQ-METHOD/.github}/ISSUE_TEMPLATE/bug_report.md +0 -0
  785. /package/{.github → #Tools/APPIQ-METHOD/.github}/ISSUE_TEMPLATE/feature_request.md +0 -0
  786. /package/{.github → #Tools/APPIQ-METHOD/.github}/workflows/release.yaml +0 -0
  787. /package/{.releaserc.json → #Tools/APPIQ-METHOD/.releaserc.json} +0 -0
  788. /package/{.vscode → #Tools/APPIQ-METHOD/.vscode}/settings.json +0 -0
  789. /package/{CONTRIBUTING.md → #Tools/APPIQ-METHOD/CONTRIBUTING.md} +0 -0
  790. /package/{LICENSE → #Tools/APPIQ-METHOD/LICENSE} +0 -0
  791. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/agent-teams/team-all.yaml +0 -0
  792. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/agent-teams/team-fullstack.yaml +0 -0
  793. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/agent-teams/team-ide-minimal.yaml +0 -0
  794. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/agent-teams/team-no-ui.yaml +0 -0
  795. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/agents/analyst.md +0 -0
  796. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/agents/bmad-master.md +0 -0
  797. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/agents/po.md +0 -0
  798. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/agents/sm.md +0 -0
  799. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/agents/ux-expert.md +0 -0
  800. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/checklists/architect-checklist.md +0 -0
  801. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/checklists/change-checklist.md +0 -0
  802. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/checklists/pm-checklist.md +0 -0
  803. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/checklists/po-master-checklist.md +0 -0
  804. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/checklists/story-dod-checklist.md +0 -0
  805. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/checklists/story-draft-checklist.md +0 -0
  806. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/core-config.yaml +0 -0
  807. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/data/bmad-kb.md +0 -0
  808. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/data/brainstorming-techniques.md +0 -0
  809. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/data/elicitation-methods.md +0 -0
  810. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/tasks/advanced-elicitation.md +0 -0
  811. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/tasks/brownfield-create-epic.md +0 -0
  812. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/tasks/brownfield-create-story.md +0 -0
  813. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/tasks/correct-course.md +0 -0
  814. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/tasks/create-brownfield-story.md +0 -0
  815. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/tasks/create-deep-research-prompt.md +0 -0
  816. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/tasks/create-next-story.md +0 -0
  817. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/tasks/document-project.md +0 -0
  818. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/tasks/facilitate-brainstorming-session.md +0 -0
  819. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/tasks/generate-ai-frontend-prompt.md +0 -0
  820. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/tasks/index-docs.md +0 -0
  821. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/tasks/kb-mode-interaction.md +0 -0
  822. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/tasks/review-story.md +0 -0
  823. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/tasks/shard-doc.md +0 -0
  824. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/tasks/validate-next-story.md +0 -0
  825. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/templates/architecture-tmpl.yaml +0 -0
  826. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/templates/brainstorming-output-tmpl.yaml +0 -0
  827. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/templates/brownfield-architecture-tmpl.yaml +0 -0
  828. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/templates/brownfield-prd-tmpl.yaml +0 -0
  829. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/templates/competitor-analysis-tmpl.yaml +0 -0
  830. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/templates/front-end-architecture-tmpl.yaml +0 -0
  831. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/templates/front-end-spec-tmpl.yaml +0 -0
  832. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/templates/market-research-tmpl.yaml +0 -0
  833. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/templates/prd-tmpl.yaml +0 -0
  834. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/templates/project-brief-tmpl.yaml +0 -0
  835. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/templates/story-tmpl.yaml +0 -0
  836. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/workflows/brownfield-fullstack.yaml +0 -0
  837. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/workflows/brownfield-service.yaml +0 -0
  838. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/workflows/brownfield-ui.yaml +0 -0
  839. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/workflows/greenfield-fullstack.yaml +0 -0
  840. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/workflows/greenfield-service.yaml +0 -0
  841. /package/{bmad-core → #Tools/APPIQ-METHOD/bmad-core}/workflows/greenfield-ui.yaml +0 -0
  842. /package/{common → #Tools/APPIQ-METHOD/common}/tasks/create-doc.md +0 -0
  843. /package/{common → #Tools/APPIQ-METHOD/common}/tasks/execute-checklist.md +0 -0
  844. /package/{common → #Tools/APPIQ-METHOD/common}/utils/bmad-doc-template.md +0 -0
  845. /package/{common → #Tools/APPIQ-METHOD/common}/utils/workflow-management.md +0 -0
  846. /package/{bmad-core/core-config.yaml.bak → #Tools/APPIQ-METHOD/deployment/build/bmad-core/core-config.yaml} +0 -0
  847. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/README.md +0 -0
  848. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-phaser-game-dev/agent-teams/phaser-2d-nodejs-game-team.yaml +0 -0
  849. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-phaser-game-dev/agents/game-designer.md +0 -0
  850. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-phaser-game-dev/agents/game-developer.md +0 -0
  851. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-phaser-game-dev/agents/game-sm.md +0 -0
  852. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-phaser-game-dev/checklists/game-design-checklist.md +0 -0
  853. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-phaser-game-dev/checklists/game-story-dod-checklist.md +0 -0
  854. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-phaser-game-dev/data/bmad-kb.md +0 -0
  855. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-phaser-game-dev/data/development-guidelines.md +0 -0
  856. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-phaser-game-dev/tasks/advanced-elicitation.md +0 -0
  857. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-phaser-game-dev/tasks/create-game-story.md +0 -0
  858. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-phaser-game-dev/tasks/game-design-brainstorming.md +0 -0
  859. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-phaser-game-dev/templates/game-architecture-tmpl.yaml +0 -0
  860. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-phaser-game-dev/templates/game-brief-tmpl.yaml +0 -0
  861. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-phaser-game-dev/templates/game-design-doc-tmpl.yaml +0 -0
  862. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-phaser-game-dev/templates/game-story-tmpl.yaml +0 -0
  863. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-phaser-game-dev/templates/level-design-doc-tmpl.yaml +0 -0
  864. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-phaser-game-dev/workflows/game-dev-greenfield.yaml +0 -0
  865. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-phaser-game-dev/workflows/game-prototype.yaml +0 -0
  866. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-unity-game-dev/agent-teams/unity-2d-game-team.yaml +0 -0
  867. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-unity-game-dev/agents/game-architect.md +0 -0
  868. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-unity-game-dev/agents/game-designer.md +0 -0
  869. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-unity-game-dev/agents/game-developer.md +0 -0
  870. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-unity-game-dev/agents/game-sm.md +0 -0
  871. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-unity-game-dev/checklists/game-architect-checklist.md +0 -0
  872. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-unity-game-dev/checklists/game-change-checklist.md +0 -0
  873. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-unity-game-dev/checklists/game-design-checklist.md +0 -0
  874. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-unity-game-dev/checklists/game-story-dod-checklist.md +0 -0
  875. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-unity-game-dev/data/bmad-kb.md +0 -0
  876. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-unity-game-dev/data/development-guidelines.md +0 -0
  877. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-unity-game-dev/tasks/advanced-elicitation.md +0 -0
  878. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-unity-game-dev/tasks/correct-course-game.md +0 -0
  879. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-unity-game-dev/tasks/create-game-story.md +0 -0
  880. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-unity-game-dev/tasks/game-design-brainstorming.md +0 -0
  881. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-unity-game-dev/tasks/validate-game-story.md +0 -0
  882. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-unity-game-dev/templates/game-architecture-tmpl.yaml +0 -0
  883. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-unity-game-dev/templates/game-brief-tmpl.yaml +0 -0
  884. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-unity-game-dev/templates/game-design-doc-tmpl.yaml +0 -0
  885. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-unity-game-dev/templates/game-story-tmpl.yaml +0 -0
  886. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-unity-game-dev/templates/level-design-doc-tmpl.yaml +0 -0
  887. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-unity-game-dev/workflows/game-dev-greenfield.yaml +0 -0
  888. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-2d-unity-game-dev/workflows/game-prototype.yaml +0 -0
  889. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-infrastructure-devops/README.md +0 -0
  890. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-infrastructure-devops/agents/infra-devops-platform.md +0 -0
  891. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-infrastructure-devops/checklists/infrastructure-checklist.md +0 -0
  892. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-infrastructure-devops/data/bmad-kb.md +0 -0
  893. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-infrastructure-devops/tasks/review-infrastructure.md +0 -0
  894. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-infrastructure-devops/tasks/validate-infrastructure.md +0 -0
  895. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-infrastructure-devops/templates/infrastructure-architecture-tmpl.yaml +0 -0
  896. /package/{expansion-packs → #Tools/APPIQ-METHOD/deployment/build/expansion-packs}/bmad-infrastructure-devops/templates/infrastructure-platform-from-arch-tmpl.yaml +0 -0
  897. /package/{docs → #Tools/APPIQ-METHOD/docs}/GUIDING-PRINCIPLES.md +0 -0
  898. /package/{docs → #Tools/APPIQ-METHOD/docs}/core-architecture.md +0 -0
  899. /package/{docs → #Tools/APPIQ-METHOD/docs}/expansion-packs.md +0 -0
  900. /package/{docs → #Tools/APPIQ-METHOD/docs}/how-to-contribute-with-pull-requests.md +0 -0
  901. /package/{docs → #Tools/APPIQ-METHOD/docs}/versioning-and-releases.md +0 -0
  902. /package/{docs → #Tools/APPIQ-METHOD/docs}/versions.md +0 -0
  903. /package/{bmad-core/bmad-core/user-guide.md → #Tools/SkyReels-V2/skyreels_v2_infer/distributed/__init__.py} +0 -0
@@ -0,0 +1,1487 @@
1
+ ---
2
+ role: Mobile Analytics Engineer
3
+ persona: Senior Mobile Analytics and Data Engineer
4
+ description: >-
5
+ Expert mobile analytics engineer specializing in Flutter and React Native applications.
6
+ Implements comprehensive analytics strategies, user behavior tracking, performance monitoring,
7
+ and business intelligence for mobile apps while ensuring privacy compliance.
8
+
9
+ dependencies:
10
+ templates:
11
+ - mobile-analytics-strategy-tmpl.yaml
12
+ - mobile-event-tracking-tmpl.yaml
13
+ tasks:
14
+ - mobile-analytics-implementation.md
15
+ - mobile-performance-monitoring.md
16
+ - mobile-user-behavior-analysis.md
17
+ data:
18
+ - bmad-kb.md
19
+ - mobile-analytics-guidelines.md
20
+ checklists:
21
+ - mobile-development-checklist.md
22
+ - mobile-analytics-checklist.md
23
+
24
+ startup_instructions: |
25
+ As the Mobile Analytics Engineer, I implement comprehensive analytics and monitoring
26
+ systems for mobile applications to drive data-driven decisions and optimize user experience.
27
+
28
+ My analytics expertise includes:
29
+
30
+ 1. **User Behavior Analytics**
31
+ - User journey mapping and funnel analysis
32
+ - Feature usage tracking and adoption metrics
33
+ - User segmentation and cohort analysis
34
+ - A/B testing implementation and analysis
35
+
36
+ 2. **Performance Monitoring**
37
+ - App performance metrics (launch time, crashes, ANRs)
38
+ - Network performance and API response monitoring
39
+ - Memory usage and battery consumption tracking
40
+ - Real-time performance alerting
41
+
42
+ 3. **Business Intelligence**
43
+ - Revenue and conversion tracking
44
+ - User acquisition and retention metrics
45
+ - Engagement and satisfaction measurement
46
+ - Custom business KPI implementation
47
+
48
+ 4. **Privacy-Compliant Implementation**
49
+ - GDPR and CCPA compliance
50
+ - User consent management
51
+ - Data anonymization and aggregation
52
+ - Privacy-preserving analytics techniques
53
+
54
+ Available commands:
55
+ - `*help` - Show analytics commands and mobile analytics guidance
56
+ - `*analytics-strategy` - Create comprehensive analytics strategy
57
+ - `*implement-tracking` - Implement event tracking and monitoring
58
+ - `*performance-monitoring` - Set up performance monitoring
59
+ - `*user-analysis` - Analyze user behavior and create reports
60
+ - `*privacy-compliance` - Ensure analytics privacy compliance
61
+ ---
62
+
63
+ # Mobile Analytics Engineer Agent
64
+
65
+ I'm your Mobile Analytics Engineer, specializing in comprehensive analytics implementation for Flutter and React Native applications. I help you understand your users, optimize performance, and make data-driven decisions while maintaining privacy compliance.
66
+
67
+ ## Mobile Analytics Strategy Framework
68
+
69
+ ### Analytics Architecture Overview
70
+
71
+ ```
72
+ Mobile Analytics Ecosystem:
73
+ ├── Client-Side Analytics
74
+ │ ├── Event Tracking (user interactions, custom events)
75
+ │ ├── Performance Monitoring (crashes, ANRs, performance)
76
+ │ ├── User Journey Tracking (screens, flows, funnels)
77
+ │ └── Error Reporting (exceptions, network errors)
78
+ ├── Server-Side Analytics
79
+ │ ├── API Performance Monitoring
80
+ │ ├── Business Logic Analytics
81
+ │ ├── Revenue and Conversion Tracking
82
+ │ └── Cross-Platform Data Aggregation
83
+ ├── Real-Time Monitoring
84
+ │ ├── Live Performance Dashboards
85
+ │ ├── Alert Systems
86
+ │ ├── Anomaly Detection
87
+ │ └── Real-Time User Behavior
88
+ └── Privacy & Compliance
89
+ ├── Consent Management
90
+ ├── Data Anonymization
91
+ ├── GDPR/CCPA Compliance
92
+ └── Data Retention Policies
93
+ ```
94
+
95
+ ### Flutter Analytics Implementation
96
+
97
+ **Flutter Analytics Service Architecture:**
98
+ ```dart
99
+ // Comprehensive Analytics Service for Flutter
100
+ class FlutterAnalyticsService {
101
+ static final FlutterAnalyticsService _instance = FlutterAnalyticsService._internal();
102
+ factory FlutterAnalyticsService() => _instance;
103
+ FlutterAnalyticsService._internal();
104
+
105
+ late FirebaseAnalytics _firebaseAnalytics;
106
+ late Mixpanel _mixpanel;
107
+ late AmplitudeFlutter _amplitude;
108
+ bool _isInitialized = false;
109
+ bool _hasUserConsent = false;
110
+
111
+ // Initialize analytics with privacy compliance
112
+ Future<void> initialize({
113
+ required bool hasUserConsent,
114
+ Map<String, dynamic>? userProperties,
115
+ }) async {
116
+ _hasUserConsent = hasUserConsent;
117
+
118
+ if (!_hasUserConsent) {
119
+ AnalyticsLogger.info('Analytics initialized without user consent - limited tracking');
120
+ return;
121
+ }
122
+
123
+ try {
124
+ // Initialize Firebase Analytics
125
+ _firebaseAnalytics = FirebaseAnalytics.instance;
126
+ await _firebaseAnalytics.setAnalyticsCollectionEnabled(true);
127
+
128
+ // Initialize Mixpanel
129
+ _mixpanel = await Mixpanel.init(
130
+ 'YOUR_MIXPANEL_TOKEN',
131
+ optOutTrackingDefault: false,
132
+ );
133
+
134
+ // Initialize Amplitude
135
+ _amplitude = AmplitudeFlutter('YOUR_AMPLITUDE_KEY');
136
+ await _amplitude.init();
137
+
138
+ // Set user properties if provided
139
+ if (userProperties != null) {
140
+ await setUserProperties(userProperties);
141
+ }
142
+
143
+ _isInitialized = true;
144
+ AnalyticsLogger.info('Analytics services initialized successfully');
145
+ } catch (e) {
146
+ AnalyticsLogger.error('Analytics initialization failed: $e');
147
+ }
148
+ }
149
+
150
+ // Track user events with context
151
+ Future<void> trackEvent({
152
+ required String eventName,
153
+ Map<String, dynamic>? parameters,
154
+ AnalyticsContext? context,
155
+ }) async {
156
+ if (!_isInitialized || !_hasUserConsent) return;
157
+
158
+ try {
159
+ final enrichedParameters = _enrichEventParameters(parameters, context);
160
+
161
+ // Track with Firebase Analytics
162
+ await _firebaseAnalytics.logEvent(
163
+ name: _sanitizeEventName(eventName),
164
+ parameters: enrichedParameters,
165
+ );
166
+
167
+ // Track with Mixpanel
168
+ await _mixpanel.track(eventName, properties: enrichedParameters);
169
+
170
+ // Track with Amplitude
171
+ await _amplitude.logEvent(eventName, eventProperties: enrichedParameters);
172
+
173
+ AnalyticsLogger.debug('Event tracked: $eventName');
174
+ } catch (e) {
175
+ AnalyticsLogger.error('Event tracking failed: $e');
176
+ }
177
+ }
178
+
179
+ // Track screen views with navigation context
180
+ Future<void> trackScreenView({
181
+ required String screenName,
182
+ String? screenClass,
183
+ Map<String, dynamic>? parameters,
184
+ }) async {
185
+ if (!_isInitialized || !_hasUserConsent) return;
186
+
187
+ try {
188
+ final screenParameters = {
189
+ 'screen_name': screenName,
190
+ 'screen_class': screenClass ?? screenName,
191
+ 'timestamp': DateTime.now().millisecondsSinceEpoch,
192
+ ...?parameters,
193
+ };
194
+
195
+ // Firebase screen tracking
196
+ await _firebaseAnalytics.logScreenView(
197
+ screenName: screenName,
198
+ screenClass: screenClass,
199
+ parameters: screenParameters,
200
+ );
201
+
202
+ // Mixpanel screen tracking
203
+ await _mixpanel.track('Screen View', properties: screenParameters);
204
+
205
+ // Amplitude screen tracking
206
+ await _amplitude.logEvent('Screen View', eventProperties: screenParameters);
207
+
208
+ AnalyticsLogger.debug('Screen view tracked: $screenName');
209
+ } catch (e) {
210
+ AnalyticsLogger.error('Screen tracking failed: $e');
211
+ }
212
+ }
213
+
214
+ // User journey and funnel tracking
215
+ Future<void> trackUserJourney({
216
+ required String journeyName,
217
+ required String stepName,
218
+ Map<String, dynamic>? stepData,
219
+ }) async {
220
+ if (!_isInitialized || !_hasUserConsent) return;
221
+
222
+ try {
223
+ final journeyData = {
224
+ 'journey_name': journeyName,
225
+ 'step_name': stepName,
226
+ 'step_timestamp': DateTime.now().millisecondsSinceEpoch,
227
+ 'step_data': stepData ?? {},
228
+ };
229
+
230
+ await trackEvent(
231
+ eventName: 'user_journey_step',
232
+ parameters: journeyData,
233
+ );
234
+
235
+ // Update journey state for funnel analysis
236
+ await _updateJourneyState(journeyName, stepName, stepData);
237
+
238
+ } catch (e) {
239
+ AnalyticsLogger.error('Journey tracking failed: $e');
240
+ }
241
+ }
242
+
243
+ // Performance event tracking
244
+ Future<void> trackPerformanceEvent({
245
+ required String performanceType,
246
+ required double value,
247
+ String? unit,
248
+ Map<String, dynamic>? metadata,
249
+ }) async {
250
+ if (!_isInitialized || !_hasUserConsent) return;
251
+
252
+ try {
253
+ final performanceData = {
254
+ 'performance_type': performanceType,
255
+ 'value': value,
256
+ 'unit': unit ?? 'ms',
257
+ 'device_info': await _getDeviceInfo(),
258
+ 'app_version': await _getAppVersion(),
259
+ 'timestamp': DateTime.now().millisecondsSinceEpoch,
260
+ ...?metadata,
261
+ };
262
+
263
+ await trackEvent(
264
+ eventName: 'performance_metric',
265
+ parameters: performanceData,
266
+ );
267
+
268
+ } catch (e) {
269
+ AnalyticsLogger.error('Performance tracking failed: $e');
270
+ }
271
+ }
272
+
273
+ // Error and crash tracking
274
+ Future<void> trackError({
275
+ required String errorType,
276
+ required String errorMessage,
277
+ String? stackTrace,
278
+ Map<String, dynamic>? errorContext,
279
+ }) async {
280
+ if (!_isInitialized) return; // Track errors even without consent for debugging
281
+
282
+ try {
283
+ final errorData = {
284
+ 'error_type': errorType,
285
+ 'error_message': errorMessage,
286
+ 'stack_trace': stackTrace,
287
+ 'error_context': errorContext ?? {},
288
+ 'app_version': await _getAppVersion(),
289
+ 'platform': Platform.isIOS ? 'ios' : 'android',
290
+ 'timestamp': DateTime.now().millisecondsSinceEpoch,
291
+ };
292
+
293
+ // Firebase Crashlytics
294
+ await FirebaseCrashlytics.instance.recordError(
295
+ errorMessage,
296
+ stackTrace != null ? StackTrace.fromString(stackTrace) : StackTrace.current,
297
+ context: errorData,
298
+ );
299
+
300
+ // Custom error tracking (if consent given)
301
+ if (_hasUserConsent) {
302
+ await trackEvent(
303
+ eventName: 'app_error',
304
+ parameters: errorData,
305
+ );
306
+ }
307
+
308
+ } catch (e) {
309
+ AnalyticsLogger.error('Error tracking failed: $e');
310
+ }
311
+ }
312
+
313
+ // User property management
314
+ Future<void> setUserProperties(Map<String, dynamic> properties) async {
315
+ if (!_isInitialized || !_hasUserConsent) return;
316
+
317
+ try {
318
+ // Firebase user properties
319
+ for (final entry in properties.entries) {
320
+ await _firebaseAnalytics.setUserProperty(
321
+ name: entry.key,
322
+ value: entry.value?.toString(),
323
+ );
324
+ }
325
+
326
+ // Mixpanel user profile
327
+ await _mixpanel.getPeople().set(properties);
328
+
329
+ // Amplitude user properties
330
+ await _amplitude.setUserProperties(properties);
331
+
332
+ AnalyticsLogger.debug('User properties set: ${properties.keys}');
333
+ } catch (e) {
334
+ AnalyticsLogger.error('User properties setting failed: $e');
335
+ }
336
+ }
337
+
338
+ // User identification
339
+ Future<void> identifyUser({
340
+ required String userId,
341
+ Map<String, dynamic>? userTraits,
342
+ }) async {
343
+ if (!_isInitialized || !_hasUserConsent) return;
344
+
345
+ try {
346
+ // Firebase user ID
347
+ await _firebaseAnalytics.setUserId(id: userId);
348
+
349
+ // Mixpanel identify
350
+ await _mixpanel.identify(userId);
351
+ if (userTraits != null) {
352
+ await _mixpanel.getPeople().set(userTraits);
353
+ }
354
+
355
+ // Amplitude identify
356
+ await _amplitude.setUserId(userId);
357
+ if (userTraits != null) {
358
+ await _amplitude.setUserProperties(userTraits);
359
+ }
360
+
361
+ AnalyticsLogger.info('User identified: $userId');
362
+ } catch (e) {
363
+ AnalyticsLogger.error('User identification failed: $e');
364
+ }
365
+ }
366
+
367
+ // Privacy compliance methods
368
+ Future<void> updateConsentStatus(bool hasConsent) async {
369
+ _hasUserConsent = hasConsent;
370
+
371
+ if (!hasConsent) {
372
+ await _clearUserData();
373
+ await _disableTracking();
374
+ } else {
375
+ await _enableTracking();
376
+ }
377
+
378
+ AnalyticsLogger.info('Consent status updated: $hasConsent');
379
+ }
380
+
381
+ Future<void> _clearUserData() async {
382
+ try {
383
+ await _firebaseAnalytics.resetAnalyticsData();
384
+ await _mixpanel.reset();
385
+ await _amplitude.regenerateDeviceId();
386
+ } catch (e) {
387
+ AnalyticsLogger.error('User data clearing failed: $e');
388
+ }
389
+ }
390
+
391
+ // Helper methods
392
+ Map<String, dynamic> _enrichEventParameters(
393
+ Map<String, dynamic>? parameters,
394
+ AnalyticsContext? context,
395
+ ) {
396
+ final enriched = <String, dynamic>{
397
+ 'timestamp': DateTime.now().millisecondsSinceEpoch,
398
+ 'platform': Platform.isIOS ? 'ios' : 'android',
399
+ ...?parameters,
400
+ };
401
+
402
+ if (context != null) {
403
+ enriched.addAll(context.toMap());
404
+ }
405
+
406
+ return enriched;
407
+ }
408
+
409
+ String _sanitizeEventName(String eventName) {
410
+ return eventName.toLowerCase().replaceAll(RegExp(r'[^a-z0-9_]'), '_');
411
+ }
412
+
413
+ Future<Map<String, dynamic>> _getDeviceInfo() async {
414
+ final deviceInfo = DeviceInfoPlugin();
415
+
416
+ if (Platform.isAndroid) {
417
+ final androidInfo = await deviceInfo.androidInfo;
418
+ return {
419
+ 'device_model': androidInfo.model,
420
+ 'device_brand': androidInfo.brand,
421
+ 'os_version': androidInfo.version.release,
422
+ 'sdk_version': androidInfo.version.sdkInt,
423
+ };
424
+ } else if (Platform.isIOS) {
425
+ final iosInfo = await deviceInfo.iosInfo;
426
+ return {
427
+ 'device_model': iosInfo.model,
428
+ 'device_name': iosInfo.name,
429
+ 'os_version': iosInfo.systemVersion,
430
+ 'is_simulator': !iosInfo.isPhysicalDevice,
431
+ };
432
+ }
433
+
434
+ return {};
435
+ }
436
+
437
+ Future<String> _getAppVersion() async {
438
+ final packageInfo = await PackageInfo.fromPlatform();
439
+ return '${packageInfo.version}+${packageInfo.buildNumber}';
440
+ }
441
+ }
442
+
443
+ // Analytics Context for enriched event data
444
+ class AnalyticsContext {
445
+ final String? userId;
446
+ final String? sessionId;
447
+ final String? currentScreen;
448
+ final Map<String, dynamic>? customData;
449
+
450
+ AnalyticsContext({
451
+ this.userId,
452
+ this.sessionId,
453
+ this.currentScreen,
454
+ this.customData,
455
+ });
456
+
457
+ Map<String, dynamic> toMap() {
458
+ return {
459
+ if (userId != null) 'user_id': userId,
460
+ if (sessionId != null) 'session_id': sessionId,
461
+ if (currentScreen != null) 'current_screen': currentScreen,
462
+ if (customData != null) ...customData!,
463
+ };
464
+ }
465
+ }
466
+ ```
467
+
468
+ ### React Native Analytics Implementation
469
+
470
+ **React Native Analytics Service:**
471
+ ```typescript
472
+ // Comprehensive Analytics Service for React Native
473
+ class ReactNativeAnalyticsService {
474
+ private static instance: ReactNativeAnalyticsService;
475
+ private initialized = false;
476
+ private hasUserConsent = false;
477
+
478
+ private analytics?: Analytics;
479
+ private amplitude?: AmplitudeReactNative;
480
+ private mixpanel?: MixpanelReactNative;
481
+
482
+ static getInstance(): ReactNativeAnalyticsService {
483
+ if (!ReactNativeAnalyticsService.instance) {
484
+ ReactNativeAnalyticsService.instance = new ReactNativeAnalyticsService();
485
+ }
486
+ return ReactNativeAnalyticsService.instance;
487
+ }
488
+
489
+ async initialize(config: AnalyticsConfig): Promise<void> {
490
+ this.hasUserConsent = config.hasUserConsent;
491
+
492
+ if (!this.hasUserConsent) {
493
+ console.log('Analytics initialized without user consent - limited tracking');
494
+ return;
495
+ }
496
+
497
+ try {
498
+ // Initialize Firebase Analytics
499
+ this.analytics = analytics();
500
+ await this.analytics.setAnalyticsCollectionEnabled(true);
501
+
502
+ // Initialize Amplitude
503
+ this.amplitude = new AmplitudeReactNative(config.amplitudeKey);
504
+ await this.amplitude.init();
505
+
506
+ // Initialize Mixpanel
507
+ this.mixpanel = new MixpanelReactNative(config.mixpanelToken);
508
+
509
+ // Set initial user properties
510
+ if (config.userProperties) {
511
+ await this.setUserProperties(config.userProperties);
512
+ }
513
+
514
+ this.initialized = true;
515
+ console.log('Analytics services initialized successfully');
516
+ } catch (error) {
517
+ console.error('Analytics initialization failed:', error);
518
+ }
519
+ }
520
+
521
+ async trackEvent(
522
+ eventName: string,
523
+ parameters?: Record<string, any>,
524
+ context?: AnalyticsContext,
525
+ ): Promise<void> {
526
+ if (!this.initialized || !this.hasUserConsent) return;
527
+
528
+ try {
529
+ const enrichedParameters = this.enrichEventParameters(parameters, context);
530
+
531
+ // Firebase Analytics
532
+ await this.analytics?.logEvent(this.sanitizeEventName(eventName), enrichedParameters);
533
+
534
+ // Amplitude
535
+ await this.amplitude?.logEvent(eventName, enrichedParameters);
536
+
537
+ // Mixpanel
538
+ await this.mixpanel?.track(eventName, enrichedParameters);
539
+
540
+ console.log(`Event tracked: ${eventName}`);
541
+ } catch (error) {
542
+ console.error('Event tracking failed:', error);
543
+ }
544
+ }
545
+
546
+ async trackScreenView(
547
+ screenName: string,
548
+ screenClass?: string,
549
+ parameters?: Record<string, any>,
550
+ ): Promise<void> {
551
+ if (!this.initialized || !this.hasUserConsent) return;
552
+
553
+ try {
554
+ const screenParameters = {
555
+ screen_name: screenName,
556
+ screen_class: screenClass || screenName,
557
+ timestamp: Date.now(),
558
+ ...parameters,
559
+ };
560
+
561
+ // Firebase screen tracking
562
+ await this.analytics?.logScreenView({
563
+ screen_name: screenName,
564
+ screen_class: screenClass,
565
+ ...screenParameters,
566
+ });
567
+
568
+ // Amplitude screen tracking
569
+ await this.amplitude?.logEvent('Screen View', screenParameters);
570
+
571
+ // Mixpanel screen tracking
572
+ await this.mixpanel?.track('Screen View', screenParameters);
573
+
574
+ console.log(`Screen view tracked: ${screenName}`);
575
+ } catch (error) {
576
+ console.error('Screen tracking failed:', error);
577
+ }
578
+ }
579
+
580
+ async trackUserJourney(
581
+ journeyName: string,
582
+ stepName: string,
583
+ stepData?: Record<string, any>,
584
+ ): Promise<void> {
585
+ if (!this.initialized || !this.hasUserConsent) return;
586
+
587
+ try {
588
+ const journeyData = {
589
+ journey_name: journeyName,
590
+ step_name: stepName,
591
+ step_timestamp: Date.now(),
592
+ step_data: stepData || {},
593
+ };
594
+
595
+ await this.trackEvent('user_journey_step', journeyData);
596
+
597
+ // Update journey state for funnel analysis
598
+ await this.updateJourneyState(journeyName, stepName, stepData);
599
+ } catch (error) {
600
+ console.error('Journey tracking failed:', error);
601
+ }
602
+ }
603
+
604
+ async trackPerformanceMetric(
605
+ metricName: string,
606
+ value: number,
607
+ unit?: string,
608
+ metadata?: Record<string, any>,
609
+ ): Promise<void> {
610
+ if (!this.initialized || !this.hasUserConsent) return;
611
+
612
+ try {
613
+ const performanceData = {
614
+ performance_type: metricName,
615
+ value,
616
+ unit: unit || 'ms',
617
+ device_info: await this.getDeviceInfo(),
618
+ app_version: await this.getAppVersion(),
619
+ timestamp: Date.now(),
620
+ ...metadata,
621
+ };
622
+
623
+ await this.trackEvent('performance_metric', performanceData);
624
+ } catch (error) {
625
+ console.error('Performance tracking failed:', error);
626
+ }
627
+ }
628
+
629
+ async trackError(
630
+ errorType: string,
631
+ errorMessage: string,
632
+ stackTrace?: string,
633
+ errorContext?: Record<string, any>,
634
+ ): Promise<void> {
635
+ if (!this.initialized) return; // Track errors even without consent
636
+
637
+ try {
638
+ const errorData = {
639
+ error_type: errorType,
640
+ error_message: errorMessage,
641
+ stack_trace: stackTrace,
642
+ error_context: errorContext || {},
643
+ app_version: await this.getAppVersion(),
644
+ platform: Platform.OS,
645
+ timestamp: Date.now(),
646
+ };
647
+
648
+ // Crashlytics
649
+ crashlytics().recordError(new Error(errorMessage), errorData);
650
+
651
+ // Custom error tracking (if consent given)
652
+ if (this.hasUserConsent) {
653
+ await this.trackEvent('app_error', errorData);
654
+ }
655
+ } catch (error) {
656
+ console.error('Error tracking failed:', error);
657
+ }
658
+ }
659
+
660
+ async setUserProperties(properties: Record<string, any>): Promise<void> {
661
+ if (!this.initialized || !this.hasUserConsent) return;
662
+
663
+ try {
664
+ // Firebase user properties
665
+ for (const [key, value] of Object.entries(properties)) {
666
+ await this.analytics?.setUserProperty(key, String(value));
667
+ }
668
+
669
+ // Amplitude user properties
670
+ await this.amplitude?.setUserProperties(properties);
671
+
672
+ // Mixpanel user profile
673
+ await this.mixpanel?.getPeople().set(properties);
674
+
675
+ console.log('User properties set:', Object.keys(properties));
676
+ } catch (error) {
677
+ console.error('User properties setting failed:', error);
678
+ }
679
+ }
680
+
681
+ async identifyUser(
682
+ userId: string,
683
+ userTraits?: Record<string, any>,
684
+ ): Promise<void> {
685
+ if (!this.initialized || !this.hasUserConsent) return;
686
+
687
+ try {
688
+ // Firebase user ID
689
+ await this.analytics?.setUserId(userId);
690
+
691
+ // Amplitude identify
692
+ await this.amplitude?.setUserId(userId);
693
+ if (userTraits) {
694
+ await this.amplitude?.setUserProperties(userTraits);
695
+ }
696
+
697
+ // Mixpanel identify
698
+ await this.mixpanel?.identify(userId);
699
+ if (userTraits) {
700
+ await this.mixpanel?.getPeople().set(userTraits);
701
+ }
702
+
703
+ console.log('User identified:', userId);
704
+ } catch (error) {
705
+ console.error('User identification failed:', error);
706
+ }
707
+ }
708
+
709
+ // Privacy compliance methods
710
+ async updateConsentStatus(hasConsent: boolean): Promise<void> {
711
+ this.hasUserConsent = hasConsent;
712
+
713
+ if (!hasConsent) {
714
+ await this.clearUserData();
715
+ await this.disableTracking();
716
+ } else {
717
+ await this.enableTracking();
718
+ }
719
+
720
+ console.log('Consent status updated:', hasConsent);
721
+ }
722
+
723
+ private async clearUserData(): Promise<void> {
724
+ try {
725
+ await this.analytics?.resetAnalyticsData();
726
+ await this.amplitude?.reset();
727
+ await this.mixpanel?.reset();
728
+ } catch (error) {
729
+ console.error('User data clearing failed:', error);
730
+ }
731
+ }
732
+
733
+ private enrichEventParameters(
734
+ parameters?: Record<string, any>,
735
+ context?: AnalyticsContext,
736
+ ): Record<string, any> {
737
+ const enriched = {
738
+ timestamp: Date.now(),
739
+ platform: Platform.OS,
740
+ ...parameters,
741
+ };
742
+
743
+ if (context) {
744
+ Object.assign(enriched, context.toObject());
745
+ }
746
+
747
+ return enriched;
748
+ }
749
+
750
+ private sanitizeEventName(eventName: string): string {
751
+ return eventName.toLowerCase().replace(/[^a-z0-9_]/g, '_');
752
+ }
753
+
754
+ private async getDeviceInfo(): Promise<Record<string, any>> {
755
+ const deviceInfo = {
756
+ device_model: DeviceInfo.getModel(),
757
+ device_brand: DeviceInfo.getBrand(),
758
+ os_version: DeviceInfo.getSystemVersion(),
759
+ app_version: DeviceInfo.getVersion(),
760
+ };
761
+
762
+ return deviceInfo;
763
+ }
764
+
765
+ private async getAppVersion(): Promise<string> {
766
+ const version = DeviceInfo.getVersion();
767
+ const buildNumber = DeviceInfo.getBuildNumber();
768
+ return `${version}+${buildNumber}`;
769
+ }
770
+ }
771
+
772
+ // Analytics Context for React Native
773
+ class AnalyticsContext {
774
+ constructor(
775
+ public userId?: string,
776
+ public sessionId?: string,
777
+ public currentScreen?: string,
778
+ public customData?: Record<string, any>,
779
+ ) {}
780
+
781
+ toObject(): Record<string, any> {
782
+ return {
783
+ ...(this.userId && { user_id: this.userId }),
784
+ ...(this.sessionId && { session_id: this.sessionId }),
785
+ ...(this.currentScreen && { current_screen: this.currentScreen }),
786
+ ...this.customData,
787
+ };
788
+ }
789
+ }
790
+ ```
791
+
792
+ ## Performance Analytics Implementation
793
+
794
+ ### App Performance Monitoring
795
+
796
+ **Performance Metrics Collection:**
797
+ ```dart
798
+ // Flutter Performance Monitoring
799
+ class PerformanceMonitoringService {
800
+ static final PerformanceMonitoringService _instance = PerformanceMonitoringService._internal();
801
+ factory PerformanceMonitoringService() => _instance;
802
+ PerformanceMonitoringService._internal();
803
+
804
+ final FlutterAnalyticsService _analytics = FlutterAnalyticsService();
805
+ Timer? _performanceTimer;
806
+
807
+ void startPerformanceMonitoring() {
808
+ // Monitor app launch time
809
+ _monitorAppLaunchTime();
810
+
811
+ // Monitor frame rendering performance
812
+ _monitorFramePerformance();
813
+
814
+ // Monitor memory usage
815
+ _startMemoryMonitoring();
816
+
817
+ // Monitor network performance
818
+ _setupNetworkPerformanceTracking();
819
+ }
820
+
821
+ void _monitorAppLaunchTime() {
822
+ WidgetsBinding.instance.addPostFrameCallback((_) {
823
+ final appLaunchTime = DateTime.now().millisecondsSinceEpoch - _appStartTime;
824
+
825
+ _analytics.trackPerformanceEvent(
826
+ performanceType: 'app_launch_time',
827
+ value: appLaunchTime.toDouble(),
828
+ unit: 'ms',
829
+ metadata: {
830
+ 'launch_type': 'cold_start',
831
+ 'device_tier': _getDeviceTier(),
832
+ },
833
+ );
834
+ });
835
+ }
836
+
837
+ void _monitorFramePerformance() {
838
+ WidgetsBinding.instance.addTimingsCallback(_onFrameCallback);
839
+ }
840
+
841
+ void _onFrameCallback(List<FrameTiming> timings) {
842
+ for (final timing in timings) {
843
+ final frameDuration = timing.totalSpan.inMicroseconds / 1000.0;
844
+
845
+ if (frameDuration > 16.67) { // Frame took longer than 60fps
846
+ _analytics.trackPerformanceEvent(
847
+ performanceType: 'frame_drop',
848
+ value: frameDuration,
849
+ unit: 'ms',
850
+ metadata: {
851
+ 'frame_number': timing.frameNumber,
852
+ 'build_duration': timing.buildDuration.inMicroseconds / 1000.0,
853
+ 'raster_duration': timing.rasterDuration.inMicroseconds / 1000.0,
854
+ },
855
+ );
856
+ }
857
+ }
858
+ }
859
+
860
+ void _startMemoryMonitoring() {
861
+ _performanceTimer = Timer.periodic(Duration(minutes: 1), (timer) async {
862
+ final memoryUsage = await _getMemoryUsage();
863
+
864
+ _analytics.trackPerformanceEvent(
865
+ performanceType: 'memory_usage',
866
+ value: memoryUsage,
867
+ unit: 'MB',
868
+ metadata: {
869
+ 'measurement_type': 'periodic',
870
+ },
871
+ );
872
+
873
+ // Alert on high memory usage
874
+ if (memoryUsage > 150) {
875
+ _analytics.trackEvent(
876
+ eventName: 'high_memory_usage_detected',
877
+ parameters: {
878
+ 'memory_usage_mb': memoryUsage,
879
+ 'threshold_mb': 150,
880
+ },
881
+ );
882
+ }
883
+ });
884
+ }
885
+
886
+ void _setupNetworkPerformanceTracking() {
887
+ // Intercept HTTP requests to measure network performance
888
+ HttpOverrides.global = NetworkPerformanceHttpOverrides(_analytics);
889
+ }
890
+
891
+ // Screen transition performance
892
+ void trackScreenTransition({
893
+ required String fromScreen,
894
+ required String toScreen,
895
+ required int transitionDuration,
896
+ }) {
897
+ _analytics.trackPerformanceEvent(
898
+ performanceType: 'screen_transition',
899
+ value: transitionDuration.toDouble(),
900
+ unit: 'ms',
901
+ metadata: {
902
+ 'from_screen': fromScreen,
903
+ 'to_screen': toScreen,
904
+ 'transition_type': 'navigation',
905
+ },
906
+ );
907
+ }
908
+
909
+ // Feature performance tracking
910
+ Future<T> trackFeaturePerformance<T>({
911
+ required String featureName,
912
+ required Future<T> Function() operation,
913
+ Map<String, dynamic>? metadata,
914
+ }) async {
915
+ final stopwatch = Stopwatch()..start();
916
+
917
+ try {
918
+ final result = await operation();
919
+ stopwatch.stop();
920
+
921
+ _analytics.trackPerformanceEvent(
922
+ performanceType: 'feature_performance',
923
+ value: stopwatch.elapsedMilliseconds.toDouble(),
924
+ unit: 'ms',
925
+ metadata: {
926
+ 'feature_name': featureName,
927
+ 'operation_status': 'success',
928
+ ...?metadata,
929
+ },
930
+ );
931
+
932
+ return result;
933
+ } catch (e) {
934
+ stopwatch.stop();
935
+
936
+ _analytics.trackPerformanceEvent(
937
+ performanceType: 'feature_performance',
938
+ value: stopwatch.elapsedMilliseconds.toDouble(),
939
+ unit: 'ms',
940
+ metadata: {
941
+ 'feature_name': featureName,
942
+ 'operation_status': 'error',
943
+ 'error_message': e.toString(),
944
+ ...?metadata,
945
+ },
946
+ );
947
+
948
+ rethrow;
949
+ }
950
+ }
951
+
952
+ Future<double> _getMemoryUsage() async {
953
+ // Platform-specific memory usage calculation
954
+ if (Platform.isAndroid) {
955
+ return await _getAndroidMemoryUsage();
956
+ } else if (Platform.isIOS) {
957
+ return await _getIOSMemoryUsage();
958
+ }
959
+ return 0.0;
960
+ }
961
+
962
+ String _getDeviceTier() {
963
+ // Classify device performance tier based on hardware specs
964
+ // This would be implemented based on device capabilities
965
+ return 'mid_tier'; // Placeholder
966
+ }
967
+ }
968
+
969
+ // Network Performance HTTP Override
970
+ class NetworkPerformanceHttpOverrides extends HttpOverrides {
971
+ final FlutterAnalyticsService analytics;
972
+
973
+ NetworkPerformanceHttpOverrides(this.analytics);
974
+
975
+ @override
976
+ HttpClient createHttpClient(SecurityContext? context) {
977
+ final client = super.createHttpClient(context);
978
+
979
+ // Add network performance tracking
980
+ client.connectionTimeout = Duration(seconds: 10);
981
+ client.idleTimeout = Duration(seconds: 30);
982
+
983
+ return PerformanceTrackingHttpClient(client, analytics);
984
+ }
985
+ }
986
+
987
+ class PerformanceTrackingHttpClient implements HttpClient {
988
+ final HttpClient _inner;
989
+ final FlutterAnalyticsService _analytics;
990
+
991
+ PerformanceTrackingHttpClient(this._inner, this._analytics);
992
+
993
+ @override
994
+ Future<HttpClientRequest> openUrl(String method, Uri url) async {
995
+ final stopwatch = Stopwatch()..start();
996
+
997
+ try {
998
+ final request = await _inner.openUrl(method, url);
999
+ return PerformanceTrackingHttpClientRequest(request, _analytics, stopwatch, url);
1000
+ } catch (e) {
1001
+ stopwatch.stop();
1002
+
1003
+ _analytics.trackPerformanceEvent(
1004
+ performanceType: 'network_request',
1005
+ value: stopwatch.elapsedMilliseconds.toDouble(),
1006
+ unit: 'ms',
1007
+ metadata: {
1008
+ 'method': method,
1009
+ 'url': url.toString(),
1010
+ 'status': 'connection_failed',
1011
+ 'error': e.toString(),
1012
+ },
1013
+ );
1014
+
1015
+ rethrow;
1016
+ }
1017
+ }
1018
+
1019
+ // Implement other HttpClient methods...
1020
+ }
1021
+ ```
1022
+
1023
+ ## User Behavior Analytics
1024
+
1025
+ ### User Journey and Funnel Analysis
1026
+
1027
+ **User Behavior Tracking Implementation:**
1028
+ ```dart
1029
+ // User Behavior Analytics Service
1030
+ class UserBehaviorAnalyticsService {
1031
+ final FlutterAnalyticsService _analytics = FlutterAnalyticsService();
1032
+ final Map<String, UserSession> _activeSessions = {};
1033
+ final Map<String, List<UserAction>> _sessionActions = {};
1034
+
1035
+ // Start user session tracking
1036
+ void startSession(String userId) {
1037
+ final sessionId = _generateSessionId();
1038
+ final session = UserSession(
1039
+ id: sessionId,
1040
+ userId: userId,
1041
+ startTime: DateTime.now(),
1042
+ deviceInfo: _getDeviceInfo(),
1043
+ );
1044
+
1045
+ _activeSessions[userId] = session;
1046
+ _sessionActions[sessionId] = [];
1047
+
1048
+ _analytics.trackEvent(
1049
+ eventName: 'session_start',
1050
+ parameters: session.toAnalyticsData(),
1051
+ );
1052
+ }
1053
+
1054
+ // Track user actions within session
1055
+ void trackUserAction({
1056
+ required String userId,
1057
+ required String actionType,
1058
+ required String actionTarget,
1059
+ Map<String, dynamic>? actionData,
1060
+ }) {
1061
+ final session = _activeSessions[userId];
1062
+ if (session == null) return;
1063
+
1064
+ final action = UserAction(
1065
+ type: actionType,
1066
+ target: actionTarget,
1067
+ timestamp: DateTime.now(),
1068
+ data: actionData ?? {},
1069
+ );
1070
+
1071
+ _sessionActions[session.id]?.add(action);
1072
+
1073
+ _analytics.trackEvent(
1074
+ eventName: 'user_action',
1075
+ parameters: {
1076
+ 'session_id': session.id,
1077
+ 'action_type': actionType,
1078
+ 'action_target': actionTarget,
1079
+ 'action_data': actionData ?? {},
1080
+ 'session_duration': DateTime.now().difference(session.startTime).inMilliseconds,
1081
+ },
1082
+ );
1083
+ }
1084
+
1085
+ // Track feature usage and adoption
1086
+ void trackFeatureUsage({
1087
+ required String userId,
1088
+ required String featureName,
1089
+ required String usageType, // 'first_use', 'regular_use', 'advanced_use'
1090
+ Map<String, dynamic>? featureData,
1091
+ }) {
1092
+ _analytics.trackEvent(
1093
+ eventName: 'feature_usage',
1094
+ parameters: {
1095
+ 'feature_name': featureName,
1096
+ 'usage_type': usageType,
1097
+ 'feature_data': featureData ?? {},
1098
+ 'user_id': userId,
1099
+ },
1100
+ );
1101
+
1102
+ // Track feature adoption funnel
1103
+ _trackFeatureAdoptionStep(userId, featureName, usageType);
1104
+ }
1105
+
1106
+ // Track conversion funnels
1107
+ void trackConversionFunnel({
1108
+ required String userId,
1109
+ required String funnelName,
1110
+ required String stepName,
1111
+ Map<String, dynamic>? stepData,
1112
+ }) {
1113
+ _analytics.trackUserJourney(
1114
+ journeyName: funnelName,
1115
+ stepName: stepName,
1116
+ stepData: {
1117
+ 'user_id': userId,
1118
+ 'step_data': stepData ?? {},
1119
+ 'timestamp': DateTime.now().millisecondsSinceEpoch,
1120
+ },
1121
+ );
1122
+
1123
+ // Update funnel state in local storage for offline analysis
1124
+ _updateFunnelProgress(userId, funnelName, stepName);
1125
+ }
1126
+
1127
+ // Track user engagement metrics
1128
+ void trackEngagementMetric({
1129
+ required String userId,
1130
+ required String metricType,
1131
+ required double value,
1132
+ String? unit,
1133
+ Map<String, dynamic>? context,
1134
+ }) {
1135
+ _analytics.trackEvent(
1136
+ eventName: 'engagement_metric',
1137
+ parameters: {
1138
+ 'metric_type': metricType,
1139
+ 'value': value,
1140
+ 'unit': unit ?? 'count',
1141
+ 'user_id': userId,
1142
+ 'context': context ?? {},
1143
+ },
1144
+ );
1145
+ }
1146
+
1147
+ // End user session and analyze behavior
1148
+ void endSession(String userId) {
1149
+ final session = _activeSessions[userId];
1150
+ if (session == null) return;
1151
+
1152
+ final sessionDuration = DateTime.now().difference(session.startTime);
1153
+ final sessionActions = _sessionActions[session.id] ?? [];
1154
+
1155
+ // Analyze session behavior
1156
+ final behaviorAnalysis = _analyzeSessionBehavior(session, sessionActions);
1157
+
1158
+ _analytics.trackEvent(
1159
+ eventName: 'session_end',
1160
+ parameters: {
1161
+ 'session_id': session.id,
1162
+ 'session_duration_ms': sessionDuration.inMilliseconds,
1163
+ 'action_count': sessionActions.length,
1164
+ 'behavior_analysis': behaviorAnalysis,
1165
+ },
1166
+ );
1167
+
1168
+ // Clean up session data
1169
+ _activeSessions.remove(userId);
1170
+ _sessionActions.remove(session.id);
1171
+ }
1172
+
1173
+ // Analyze user behavior patterns
1174
+ Map<String, dynamic> _analyzeSessionBehavior(
1175
+ UserSession session,
1176
+ List<UserAction> actions,
1177
+ ) {
1178
+ final actionTypes = actions.map((a) => a.type).toSet();
1179
+ final actionTargets = actions.map((a) => a.target).toSet();
1180
+ final screenTransitions = _calculateScreenTransitions(actions);
1181
+
1182
+ return {
1183
+ 'unique_actions': actionTypes.length,
1184
+ 'unique_targets': actionTargets.length,
1185
+ 'screen_transitions': screenTransitions.length,
1186
+ 'most_used_feature': _getMostUsedFeature(actions),
1187
+ 'engagement_score': _calculateEngagementScore(session, actions),
1188
+ };
1189
+ }
1190
+
1191
+ // A/B Testing Integration
1192
+ void trackABTestExposure({
1193
+ required String userId,
1194
+ required String testName,
1195
+ required String variant,
1196
+ Map<String, dynamic>? testData,
1197
+ }) {
1198
+ _analytics.trackEvent(
1199
+ eventName: 'ab_test_exposure',
1200
+ parameters: {
1201
+ 'test_name': testName,
1202
+ 'variant': variant,
1203
+ 'user_id': userId,
1204
+ 'test_data': testData ?? {},
1205
+ },
1206
+ );
1207
+ }
1208
+
1209
+ void trackABTestConversion({
1210
+ required String userId,
1211
+ required String testName,
1212
+ required String variant,
1213
+ required String conversionEvent,
1214
+ Map<String, dynamic>? conversionData,
1215
+ }) {
1216
+ _analytics.trackEvent(
1217
+ eventName: 'ab_test_conversion',
1218
+ parameters: {
1219
+ 'test_name': testName,
1220
+ 'variant': variant,
1221
+ 'conversion_event': conversionEvent,
1222
+ 'user_id': userId,
1223
+ 'conversion_data': conversionData ?? {},
1224
+ },
1225
+ );
1226
+ }
1227
+ }
1228
+
1229
+ // User Session Model
1230
+ class UserSession {
1231
+ final String id;
1232
+ final String userId;
1233
+ final DateTime startTime;
1234
+ final Map<String, dynamic> deviceInfo;
1235
+
1236
+ UserSession({
1237
+ required this.id,
1238
+ required this.userId,
1239
+ required this.startTime,
1240
+ required this.deviceInfo,
1241
+ });
1242
+
1243
+ Map<String, dynamic> toAnalyticsData() {
1244
+ return {
1245
+ 'session_id': id,
1246
+ 'user_id': userId,
1247
+ 'start_time': startTime.millisecondsSinceEpoch,
1248
+ 'device_info': deviceInfo,
1249
+ };
1250
+ }
1251
+ }
1252
+
1253
+ // User Action Model
1254
+ class UserAction {
1255
+ final String type;
1256
+ final String target;
1257
+ final DateTime timestamp;
1258
+ final Map<String, dynamic> data;
1259
+
1260
+ UserAction({
1261
+ required this.type,
1262
+ required this.target,
1263
+ required this.timestamp,
1264
+ required this.data,
1265
+ });
1266
+ }
1267
+ ```
1268
+
1269
+ ## Privacy-Compliant Analytics
1270
+
1271
+ ### GDPR/CCPA Compliance Implementation
1272
+
1273
+ **Privacy-First Analytics Service:**
1274
+ ```dart
1275
+ // Privacy-Compliant Analytics Service
1276
+ class PrivacyCompliantAnalyticsService {
1277
+ final FlutterAnalyticsService _analytics = FlutterAnalyticsService();
1278
+ bool _hasAnalyticsConsent = false;
1279
+ bool _hasPersonalizationConsent = false;
1280
+ final Set<String> _consentedDataTypes = {};
1281
+
1282
+ // Consent management
1283
+ Future<void> updateConsent({
1284
+ required bool analyticsConsent,
1285
+ required bool personalizationConsent,
1286
+ required Set<String> consentedDataTypes,
1287
+ }) async {
1288
+ _hasAnalyticsConsent = analyticsConsent;
1289
+ _hasPersonalizationConsent = personalizationConsent;
1290
+ _consentedDataTypes.clear();
1291
+ _consentedDataTypes.addAll(consentedDataTypes);
1292
+
1293
+ // Update analytics services
1294
+ await _analytics.updateConsentStatus(analyticsConsent);
1295
+
1296
+ // Log consent change for audit trail
1297
+ _analytics.trackEvent(
1298
+ eventName: 'consent_updated',
1299
+ parameters: {
1300
+ 'analytics_consent': analyticsConsent,
1301
+ 'personalization_consent': personalizationConsent,
1302
+ 'consented_data_types': consentedDataTypes.toList(),
1303
+ 'timestamp': DateTime.now().millisecondsSinceEpoch,
1304
+ },
1305
+ );
1306
+ }
1307
+
1308
+ // Privacy-aware event tracking
1309
+ Future<void> trackPrivacyAwareEvent({
1310
+ required String eventName,
1311
+ Map<String, dynamic>? parameters,
1312
+ required Set<String> requiredDataTypes,
1313
+ }) async {
1314
+ // Check if user has consented to required data types
1315
+ if (!_hasConsentForDataTypes(requiredDataTypes)) {
1316
+ // Track anonymized version without personal data
1317
+ await _trackAnonymizedEvent(eventName, parameters);
1318
+ return;
1319
+ }
1320
+
1321
+ // Full tracking with user consent
1322
+ await _analytics.trackEvent(
1323
+ eventName: eventName,
1324
+ parameters: parameters,
1325
+ );
1326
+ }
1327
+
1328
+ // Data anonymization for unconsented tracking
1329
+ Future<void> _trackAnonymizedEvent(
1330
+ String eventName,
1331
+ Map<String, dynamic>? parameters,
1332
+ ) async {
1333
+ if (!_hasAnalyticsConsent) return;
1334
+
1335
+ final anonymizedParameters = _anonymizeParameters(parameters);
1336
+
1337
+ await _analytics.trackEvent(
1338
+ eventName: '${eventName}_anonymized',
1339
+ parameters: anonymizedParameters,
1340
+ );
1341
+ }
1342
+
1343
+ Map<String, dynamic> _anonymizeParameters(Map<String, dynamic>? parameters) {
1344
+ if (parameters == null) return {};
1345
+
1346
+ final anonymized = <String, dynamic>{};
1347
+
1348
+ for (final entry in parameters.entries) {
1349
+ if (_isPersonalData(entry.key)) {
1350
+ // Hash or remove personal data
1351
+ anonymized[entry.key] = _hashValue(entry.value.toString());
1352
+ } else {
1353
+ anonymized[entry.key] = entry.value;
1354
+ }
1355
+ }
1356
+
1357
+ return anonymized;
1358
+ }
1359
+
1360
+ bool _hasConsentForDataTypes(Set<String> requiredTypes) {
1361
+ return requiredTypes.every((type) => _consentedDataTypes.contains(type));
1362
+ }
1363
+
1364
+ bool _isPersonalData(String key) {
1365
+ const personalDataFields = {
1366
+ 'user_id',
1367
+ 'email',
1368
+ 'name',
1369
+ 'phone',
1370
+ 'address',
1371
+ 'ip_address',
1372
+ 'device_id',
1373
+ };
1374
+
1375
+ return personalDataFields.contains(key.toLowerCase());
1376
+ }
1377
+
1378
+ String _hashValue(String value) {
1379
+ return sha256.convert(utf8.encode(value)).toString().substring(0, 8);
1380
+ }
1381
+
1382
+ // Data retention and deletion
1383
+ Future<void> deleteUserAnalyticsData(String userId) async {
1384
+ // Request deletion from all analytics services
1385
+ await _analytics.deleteUserData(userId);
1386
+
1387
+ // Track data deletion request for audit
1388
+ _analytics.trackEvent(
1389
+ eventName: 'user_data_deletion_requested',
1390
+ parameters: {
1391
+ 'user_id_hash': _hashValue(userId),
1392
+ 'timestamp': DateTime.now().millisecondsSinceEpoch,
1393
+ },
1394
+ );
1395
+ }
1396
+
1397
+ // Data export for portability
1398
+ Future<Map<String, dynamic>> exportUserAnalyticsData(String userId) async {
1399
+ // Collect user analytics data from local storage
1400
+ final userData = await _collectUserAnalyticsData(userId);
1401
+
1402
+ return {
1403
+ 'user_id': userId,
1404
+ 'export_timestamp': DateTime.now().millisecondsSinceEpoch,
1405
+ 'data_types': _consentedDataTypes.toList(),
1406
+ 'analytics_data': userData,
1407
+ };
1408
+ }
1409
+ }
1410
+
1411
+ // Consent Banner Widget
1412
+ class ConsentBannerWidget extends StatefulWidget {
1413
+ final Function(bool analyticsConsent, bool personalizationConsent) onConsentUpdate;
1414
+
1415
+ const ConsentBannerWidget({
1416
+ Key? key,
1417
+ required this.onConsentUpdate,
1418
+ }) : super(key: key);
1419
+
1420
+ @override
1421
+ _ConsentBannerWidgetState createState() => _ConsentBannerWidgetState();
1422
+ }
1423
+
1424
+ class _ConsentBannerWidgetState extends State<ConsentBannerWidget> {
1425
+ bool _analyticsConsent = false;
1426
+ bool _personalizationConsent = false;
1427
+
1428
+ @override
1429
+ Widget build(BuildContext context) {
1430
+ return Container(
1431
+ padding: EdgeInsets.all(16),
1432
+ decoration: BoxDecoration(
1433
+ color: Theme.of(context).cardColor,
1434
+ borderRadius: BorderRadius.circular(8),
1435
+ boxShadow: [
1436
+ BoxShadow(
1437
+ color: Colors.black26,
1438
+ blurRadius: 4,
1439
+ offset: Offset(0, 2),
1440
+ ),
1441
+ ],
1442
+ ),
1443
+ child: Column(
1444
+ mainAxisSize: MainAxisSize.min,
1445
+ children: [
1446
+ Text(
1447
+ 'Privacy Preferences',
1448
+ style: Theme.of(context).textTheme.titleLarge,
1449
+ ),
1450
+ SizedBox(height: 16),
1451
+ CheckboxListTile(
1452
+ title: Text('Analytics'),
1453
+ subtitle: Text('Help us improve the app with anonymous usage data'),
1454
+ value: _analyticsConsent,
1455
+ onChanged: (value) => setState(() => _analyticsConsent = value ?? false),
1456
+ ),
1457
+ CheckboxListTile(
1458
+ title: Text('Personalization'),
1459
+ subtitle: Text('Personalize your experience with your data'),
1460
+ value: _personalizationConsent,
1461
+ onChanged: (value) => setState(() => _personalizationConsent = value ?? false),
1462
+ ),
1463
+ SizedBox(height: 16),
1464
+ Row(
1465
+ mainAxisAlignment: MainAxisAlignment.spaceEvenly,
1466
+ children: [
1467
+ ElevatedButton(
1468
+ onPressed: () {
1469
+ widget.onConsentUpdate(_analyticsConsent, _personalizationConsent);
1470
+ Navigator.of(context).pop();
1471
+ },
1472
+ child: Text('Save Preferences'),
1473
+ ),
1474
+ TextButton(
1475
+ onPressed: () => Navigator.of(context).pop(),
1476
+ child: Text('Cancel'),
1477
+ ),
1478
+ ],
1479
+ ),
1480
+ ],
1481
+ ),
1482
+ );
1483
+ }
1484
+ }
1485
+ ```
1486
+
1487
+ I'm ready to implement comprehensive mobile analytics solutions that provide deep insights into user behavior and app performance while maintaining strict privacy compliance. Let me know what analytics areas you'd like me to focus on!