appiq-solution 1.4.7 → 1.4.9

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