appiq-solution 1.4.8 → 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.
- package/README.md +172 -48
- package/bmad-core/agent-teams/team-fullstack.yaml +1 -11
- package/bmad-core/agents/analyst.md +3 -7
- package/bmad-core/agents/architect.md +0 -6
- package/bmad-core/agents/dev.md +5 -24
- package/bmad-core/agents/pm.md +3 -7
- package/bmad-core/agents/qa.md +0 -17
- package/bmad-core/agents/sm.md +3 -8
- package/bmad-core/agents/ux-expert.md +3 -8
- package/bmad-core/data/technical-preferences.md +1 -147
- package/bmad-core/templates/fullstack-architecture-tmpl.yaml +5 -12
- package/bmad-core/workflows/brownfield-fullstack.yaml +1 -15
- package/bmad-core/workflows/greenfield-fullstack.yaml +5 -49
- package/bmad-core/working-in-the-brownfield.md +10 -19
- package/dist/agents/bmad-orchestrator.txt +0 -111
- package/dist/agents/pm.txt +2 -0
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/teams/phaser-2d-nodejs-game-team.txt +0 -111
- package/dist/expansion-packs/bmad-2d-unity-game-dev/teams/unity-2d-game-team.txt +0 -111
- package/dist/teams/team-all.txt +2 -111
- package/dist/teams/team-fullstack.txt +2 -111
- package/dist/teams/team-ide-minimal.txt +0 -111
- package/dist/teams/team-no-ui.txt +2 -111
- package/package.json +60 -18
- package/tools/cli.js +3 -3
- package/tools/installer/package-lock.json +2 -2
- package/#NEW APP PROMPT/ARCHITECTURE.md +0 -279
- package/#NEW APP PROMPT/ARCHITECTURE_UNIFIED.md +0 -414
- package/#NEW APP PROMPT/accesibility_prompt.md +0 -103
- package/#NEW APP PROMPT/clean-code.mdc +0 -55
- package/#NEW APP PROMPT/codequality.mdc +0 -47
- package/#NEW APP PROMPT/flutter-ai-rules/LICENSE +0 -21
- package/#NEW APP PROMPT/flutter-ai-rules/README.md +0 -104
- package/#NEW APP PROMPT/flutter-ai-rules/combined/README.md +0 -25
- package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart.md +0 -192
- package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart__under_6K.md +0 -99
- package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart_bloc_mocktail.md +0 -308
- package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart_bloc_mocktail__under_6K.md +0 -87
- package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart_change_notifier.md +0 -254
- package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart_change_notifier__under_6K.md +0 -98
- package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart_provider.md +0 -261
- package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart_provider__under_6K.md +0 -105
- package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart_riverpod_mockito.md +0 -371
- package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_dart_riverpod_mockito__under_6K.md +0 -92
- package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_with_bloc.md +0 -287
- package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_with_bloc__under_6K.md +0 -68
- package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_with_riverpod.md +0 -375
- package/#NEW APP PROMPT/flutter-ai-rules/combined/flutter_with_riverpod__under_6K.md +0 -106
- package/#NEW APP PROMPT/flutter-ai-rules/media/flutter_ai_rules.png +0 -0
- package/#NEW APP PROMPT/flutter-ai-rules/media/mocktail_md_01.png +0 -0
- package/#NEW APP PROMPT/flutter-ai-rules/media/mocktail_md_02.png +0 -0
- package/#NEW APP PROMPT/flutter-ai-rules/rules/bloc.md +0 -94
- package/#NEW APP PROMPT/flutter-ai-rules/rules/dart_3_updates.md +0 -93
- package/#NEW APP PROMPT/flutter-ai-rules/rules/effective_dart.md +0 -105
- package/#NEW APP PROMPT/flutter-ai-rules/rules/flutter_app_architecture.md +0 -57
- package/#NEW APP PROMPT/flutter-ai-rules/rules/flutter_change_notifier.md +0 -62
- package/#NEW APP PROMPT/flutter-ai-rules/rules/flutter_errors.md +0 -11
- package/#NEW APP PROMPT/flutter-ai-rules/rules/mockito.md +0 -31
- package/#NEW APP PROMPT/flutter-ai-rules/rules/mocktail.md +0 -24
- package/#NEW APP PROMPT/flutter-ai-rules/rules/provider.md +0 -69
- package/#NEW APP PROMPT/flutter-ai-rules/rules/riverpod.md +0 -188
- package/#NEW APP PROMPT/generate ssh.md +0 -4
- package/#NEW APP PROMPT/project_ai_prompt.md +0 -544
- package/#Tools/APPIQ-METHOD/.bmad-config.json +0 -13
- package/#Tools/APPIQ-METHOD/.cursor/commands/analyze.md +0 -27
- package/#Tools/APPIQ-METHOD/.cursor/commands/appiq.md +0 -27
- package/#Tools/APPIQ-METHOD/.cursor/commands/help.md +0 -27
- package/#Tools/APPIQ-METHOD/.cursor/commands/story.md +0 -27
- package/#Tools/APPIQ-METHOD/DEVELOPMENT_GUIDE.md +0 -855
- package/#Tools/APPIQ-METHOD/NPM-README.md +0 -138
- package/#Tools/APPIQ-METHOD/README.md +0 -107
- package/#Tools/APPIQ-METHOD/SMART_WORKFLOW_GUIDE.md +0 -401
- package/#Tools/APPIQ-METHOD/activate-appiq.js +0 -81
- package/#Tools/APPIQ-METHOD/appiq-solution/README.md +0 -226
- package/#Tools/APPIQ-METHOD/bmad-core/agent-teams/team-all.yaml +0 -14
- package/#Tools/APPIQ-METHOD/bmad-core/agent-teams/team-flutter-mobile.yaml +0 -114
- package/#Tools/APPIQ-METHOD/bmad-core/agent-teams/team-fullstack.yaml +0 -28
- package/#Tools/APPIQ-METHOD/bmad-core/agent-teams/team-ide-minimal.yaml +0 -10
- package/#Tools/APPIQ-METHOD/bmad-core/agent-teams/team-no-ui.yaml +0 -13
- package/#Tools/APPIQ-METHOD/bmad-core/agents/analyst.md +0 -85
- package/#Tools/APPIQ-METHOD/bmad-core/agents/architect.md +0 -90
- package/#Tools/APPIQ-METHOD/bmad-core/agents/bmad-master.md +0 -108
- package/#Tools/APPIQ-METHOD/bmad-core/agents/bmad-orchestrator.md +0 -150
- package/#Tools/APPIQ-METHOD/bmad-core/agents/bmad-smart-launcher.md +0 -170
- package/#Tools/APPIQ-METHOD/bmad-core/agents/dev.md +0 -95
- package/#Tools/APPIQ-METHOD/bmad-core/agents/init-flow-po.md +0 -143
- package/#Tools/APPIQ-METHOD/bmad-core/agents/pm.md +0 -85
- package/#Tools/APPIQ-METHOD/bmad-core/agents/po.md +0 -76
- package/#Tools/APPIQ-METHOD/bmad-core/agents/qa.md +0 -86
- package/#Tools/APPIQ-METHOD/bmad-core/agents/sm.md +0 -67
- package/#Tools/APPIQ-METHOD/bmad-core/agents/ux-expert.md +0 -71
- package/#Tools/APPIQ-METHOD/bmad-core/bmad-core/user-guide.md +0 -0
- package/#Tools/APPIQ-METHOD/bmad-core/checklists/architect-checklist.md +0 -443
- package/#Tools/APPIQ-METHOD/bmad-core/checklists/change-checklist.md +0 -182
- package/#Tools/APPIQ-METHOD/bmad-core/checklists/pm-checklist.md +0 -375
- package/#Tools/APPIQ-METHOD/bmad-core/checklists/po-master-checklist.md +0 -441
- package/#Tools/APPIQ-METHOD/bmad-core/checklists/security-validation-checklist.md +0 -332
- package/#Tools/APPIQ-METHOD/bmad-core/checklists/story-dod-checklist.md +0 -101
- package/#Tools/APPIQ-METHOD/bmad-core/checklists/story-draft-checklist.md +0 -156
- package/#Tools/APPIQ-METHOD/bmad-core/core-config.yaml +0 -20
- package/#Tools/APPIQ-METHOD/bmad-core/core-config.yaml.bak +0 -20
- package/#Tools/APPIQ-METHOD/bmad-core/data/backend-services-integration.md +0 -686
- package/#Tools/APPIQ-METHOD/bmad-core/data/bmad-kb.md +0 -803
- package/#Tools/APPIQ-METHOD/bmad-core/data/brainstorming-techniques.md +0 -36
- package/#Tools/APPIQ-METHOD/bmad-core/data/elicitation-methods.md +0 -134
- package/#Tools/APPIQ-METHOD/bmad-core/data/shadcn-ui-integration.md +0 -388
- package/#Tools/APPIQ-METHOD/bmad-core/data/technical-preferences.md +0 -149
- package/#Tools/APPIQ-METHOD/bmad-core/enhanced-ide-development-workflow.md +0 -43
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/advanced-elicitation.md +0 -117
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/brownfield-create-epic.md +0 -160
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/brownfield-create-story.md +0 -147
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/correct-course.md +0 -70
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/create-brownfield-story.md +0 -304
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/create-deep-research-prompt.md +0 -289
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/create-flutter-story.md +0 -197
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/create-next-story.md +0 -112
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/document-project.md +0 -341
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/facilitate-brainstorming-session.md +0 -136
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/generate-ai-frontend-prompt.md +0 -51
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/index-docs.md +0 -179
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/intelligent-epic-creation.md +0 -234
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/kb-mode-interaction.md +0 -75
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/review-story.md +0 -145
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/shard-doc.md +0 -187
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/smart-project-analysis.md +0 -289
- package/#Tools/APPIQ-METHOD/bmad-core/tasks/validate-next-story.md +0 -134
- package/#Tools/APPIQ-METHOD/bmad-core/templates/architecture-tmpl.yaml +0 -650
- package/#Tools/APPIQ-METHOD/bmad-core/templates/brainstorming-output-tmpl.yaml +0 -156
- package/#Tools/APPIQ-METHOD/bmad-core/templates/brownfield-architecture-tmpl.yaml +0 -476
- package/#Tools/APPIQ-METHOD/bmad-core/templates/brownfield-prd-tmpl.yaml +0 -280
- package/#Tools/APPIQ-METHOD/bmad-core/templates/competitor-analysis-tmpl.yaml +0 -293
- package/#Tools/APPIQ-METHOD/bmad-core/templates/flutter-mobile-prd-tmpl.yaml +0 -330
- package/#Tools/APPIQ-METHOD/bmad-core/templates/flutter-story-tmpl.yaml +0 -376
- package/#Tools/APPIQ-METHOD/bmad-core/templates/flutter-ui-spec-tmpl.yaml +0 -415
- package/#Tools/APPIQ-METHOD/bmad-core/templates/front-end-architecture-tmpl.yaml +0 -206
- package/#Tools/APPIQ-METHOD/bmad-core/templates/front-end-spec-tmpl.yaml +0 -349
- package/#Tools/APPIQ-METHOD/bmad-core/templates/fullstack-architecture-tmpl.yaml +0 -812
- package/#Tools/APPIQ-METHOD/bmad-core/templates/market-research-tmpl.yaml +0 -252
- package/#Tools/APPIQ-METHOD/bmad-core/templates/prd-tmpl.yaml +0 -202
- package/#Tools/APPIQ-METHOD/bmad-core/templates/project-brief-tmpl.yaml +0 -221
- package/#Tools/APPIQ-METHOD/bmad-core/templates/story-tmpl.yaml +0 -137
- package/#Tools/APPIQ-METHOD/bmad-core/user-guide.md +0 -251
- package/#Tools/APPIQ-METHOD/bmad-core/workflows/brownfield-fullstack.yaml +0 -311
- package/#Tools/APPIQ-METHOD/bmad-core/workflows/brownfield-service.yaml +0 -187
- package/#Tools/APPIQ-METHOD/bmad-core/workflows/brownfield-ui.yaml +0 -197
- package/#Tools/APPIQ-METHOD/bmad-core/workflows/greenfield-fullstack.yaml +0 -284
- package/#Tools/APPIQ-METHOD/bmad-core/workflows/greenfield-service.yaml +0 -206
- package/#Tools/APPIQ-METHOD/bmad-core/workflows/greenfield-ui.yaml +0 -235
- package/#Tools/APPIQ-METHOD/bmad-core/working-in-the-brownfield.md +0 -373
- package/#Tools/APPIQ-METHOD/commands/README.md +0 -28
- package/#Tools/APPIQ-METHOD/commands/analyze.md +0 -27
- package/#Tools/APPIQ-METHOD/commands/appiq.md +0 -27
- package/#Tools/APPIQ-METHOD/commands/help.md +0 -27
- package/#Tools/APPIQ-METHOD/commands/story.md +0 -27
- package/#Tools/APPIQ-METHOD/dist/agents/analyst.txt +0 -2882
- package/#Tools/APPIQ-METHOD/dist/agents/architect.txt +0 -3543
- package/#Tools/APPIQ-METHOD/dist/agents/bmad-master.txt +0 -8756
- package/#Tools/APPIQ-METHOD/dist/agents/bmad-orchestrator.txt +0 -1490
- package/#Tools/APPIQ-METHOD/dist/agents/dev.txt +0 -428
- package/#Tools/APPIQ-METHOD/dist/agents/pm.txt +0 -2229
- package/#Tools/APPIQ-METHOD/dist/agents/po.txt +0 -1364
- package/#Tools/APPIQ-METHOD/dist/agents/qa.txt +0 -386
- package/#Tools/APPIQ-METHOD/dist/agents/sm.txt +0 -668
- package/#Tools/APPIQ-METHOD/dist/agents/ux-expert.txt +0 -701
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.txt +0 -2408
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.txt +0 -1631
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.txt +0 -822
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-phaser-game-dev/teams/phaser-2d-nodejs-game-team.txt +0 -10989
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-architect.txt +0 -4047
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-designer.txt +0 -3744
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.txt +0 -465
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-sm.txt +0 -990
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-2d-unity-game-dev/teams/unity-2d-game-team.txt +0 -15467
- package/#Tools/APPIQ-METHOD/dist/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.txt +0 -2077
- package/#Tools/APPIQ-METHOD/dist/teams/team-all.txt +0 -11062
- package/#Tools/APPIQ-METHOD/dist/teams/team-fullstack.txt +0 -10392
- package/#Tools/APPIQ-METHOD/dist/teams/team-ide-minimal.txt +0 -3507
- package/#Tools/APPIQ-METHOD/dist/teams/team-no-ui.txt +0 -8951
- package/#Tools/APPIQ-METHOD/install-appiq.sh +0 -41
- package/#Tools/APPIQ-METHOD/package-lock.json +0 -631
- package/#Tools/APPIQ-METHOD/package.json +0 -44
- package/#Tools/APPIQ-METHOD/tasks/todo.md +0 -275
- package/#Tools/APPIQ-METHOD/tools/appiq-installer.js +0 -2711
- package/#Tools/APPIQ-METHOD/tools/bmad-npx-wrapper.js +0 -39
- package/#Tools/APPIQ-METHOD/tools/builders/web-builder.js +0 -681
- package/#Tools/APPIQ-METHOD/tools/bump-all-versions.js +0 -106
- package/#Tools/APPIQ-METHOD/tools/bump-expansion-version.js +0 -83
- package/#Tools/APPIQ-METHOD/tools/cli.js +0 -152
- package/#Tools/APPIQ-METHOD/tools/epic-solution-installer.js +0 -536
- package/#Tools/APPIQ-METHOD/tools/flattener/main.js +0 -570
- package/#Tools/APPIQ-METHOD/tools/installer/README.md +0 -8
- package/#Tools/APPIQ-METHOD/tools/installer/bin/bmad.js +0 -483
- package/#Tools/APPIQ-METHOD/tools/installer/config/ide-agent-config.yaml +0 -58
- package/#Tools/APPIQ-METHOD/tools/installer/config/install.config.yaml +0 -92
- package/#Tools/APPIQ-METHOD/tools/installer/lib/config-loader.js +0 -253
- package/#Tools/APPIQ-METHOD/tools/installer/lib/file-manager.js +0 -411
- package/#Tools/APPIQ-METHOD/tools/installer/lib/ide-base-setup.js +0 -227
- package/#Tools/APPIQ-METHOD/tools/installer/lib/ide-setup.js +0 -1096
- package/#Tools/APPIQ-METHOD/tools/installer/lib/installer.js +0 -1772
- package/#Tools/APPIQ-METHOD/tools/installer/lib/memory-profiler.js +0 -224
- package/#Tools/APPIQ-METHOD/tools/installer/lib/module-manager.js +0 -110
- package/#Tools/APPIQ-METHOD/tools/installer/lib/resource-locator.js +0 -310
- package/#Tools/APPIQ-METHOD/tools/installer/package-lock.json +0 -906
- package/#Tools/APPIQ-METHOD/tools/installer/package.json +0 -43
- package/#Tools/APPIQ-METHOD/tools/lib/dependency-resolver.js +0 -179
- package/#Tools/APPIQ-METHOD/tools/lib/yaml-utils.js +0 -29
- package/#Tools/APPIQ-METHOD/tools/md-assets/web-agent-startup-instructions.md +0 -39
- package/#Tools/APPIQ-METHOD/tools/semantic-release-sync-installer.js +0 -30
- package/#Tools/APPIQ-METHOD/tools/setup-ide-commands.js +0 -348
- package/#Tools/APPIQ-METHOD/tools/smart-installer.js +0 -592
- package/#Tools/APPIQ-METHOD/tools/sync-installer-version.js +0 -34
- package/#Tools/APPIQ-METHOD/tools/update-expansion-version.js +0 -54
- package/#Tools/APPIQ-METHOD/tools/upgraders/v3-to-v4-upgrader.js +0 -763
- package/#Tools/APPIQ-METHOD/tools/version-bump.js +0 -79
- package/#Tools/APPIQ-METHOD/tools/yaml-format.js +0 -240
- package/#Tools/SkyReels-V2/.pre-commit-config.yaml +0 -25
- package/#Tools/SkyReels-V2/LICENSE.txt +0 -38
- package/#Tools/SkyReels-V2/README.md +0 -766
- package/#Tools/SkyReels-V2/generate_video.py +0 -161
- package/#Tools/SkyReels-V2/generate_video_df.py +0 -220
- package/#Tools/SkyReels-V2/requirements.txt +0 -16
- package/#Tools/SkyReels-V2/skycaptioner_v1/README.md +0 -278
- package/#Tools/SkyReels-V2/skycaptioner_v1/examples/test.csv +0 -5
- package/#Tools/SkyReels-V2/skycaptioner_v1/examples/test_result.csv +0 -5
- package/#Tools/SkyReels-V2/skycaptioner_v1/infer_fusion_caption.sh +0 -9
- package/#Tools/SkyReels-V2/skycaptioner_v1/infer_struct_caption.sh +0 -8
- package/#Tools/SkyReels-V2/skycaptioner_v1/requirements.txt +0 -3
- package/#Tools/SkyReels-V2/skycaptioner_v1/scripts/gradio_fusion_caption.py +0 -146
- package/#Tools/SkyReels-V2/skycaptioner_v1/scripts/gradio_struct_caption.py +0 -92
- package/#Tools/SkyReels-V2/skycaptioner_v1/scripts/utils.py +0 -19
- package/#Tools/SkyReels-V2/skycaptioner_v1/scripts/vllm_fusion_caption.py +0 -256
- package/#Tools/SkyReels-V2/skycaptioner_v1/scripts/vllm_struct_caption.py +0 -156
- package/#Tools/SkyReels-V2/skyreels_v2_infer/__init__.py +0 -1
- package/#Tools/SkyReels-V2/skyreels_v2_infer/distributed/__init__.py +0 -0
- package/#Tools/SkyReels-V2/skyreels_v2_infer/distributed/xdit_context_parallel.py +0 -286
- package/#Tools/SkyReels-V2/skyreels_v2_infer/modules/__init__.py +0 -69
- package/#Tools/SkyReels-V2/skyreels_v2_infer/modules/attention.py +0 -179
- package/#Tools/SkyReels-V2/skyreels_v2_infer/modules/clip.py +0 -525
- package/#Tools/SkyReels-V2/skyreels_v2_infer/modules/t5.py +0 -454
- package/#Tools/SkyReels-V2/skyreels_v2_infer/modules/tokenizers.py +0 -78
- package/#Tools/SkyReels-V2/skyreels_v2_infer/modules/transformer.py +0 -839
- package/#Tools/SkyReels-V2/skyreels_v2_infer/modules/vae.py +0 -639
- package/#Tools/SkyReels-V2/skyreels_v2_infer/modules/xlm_roberta.py +0 -165
- package/#Tools/SkyReels-V2/skyreels_v2_infer/pipelines/__init__.py +0 -5
- package/#Tools/SkyReels-V2/skyreels_v2_infer/pipelines/diffusion_forcing_pipeline.py +0 -659
- package/#Tools/SkyReels-V2/skyreels_v2_infer/pipelines/image2video_pipeline.py +0 -156
- package/#Tools/SkyReels-V2/skyreels_v2_infer/pipelines/prompt_enhancer.py +0 -65
- package/#Tools/SkyReels-V2/skyreels_v2_infer/pipelines/text2video_pipeline.py +0 -110
- package/#Tools/SkyReels-V2/skyreels_v2_infer/scheduler/__init__.py +0 -0
- package/#Tools/SkyReels-V2/skyreels_v2_infer/scheduler/fm_solvers_unipc.py +0 -759
- package/#Tools/SuperClaude/.claude/commands/analyze.md +0 -36
- package/#Tools/SuperClaude/.claude/commands/build.md +0 -35
- package/#Tools/SuperClaude/.claude/commands/cleanup.md +0 -46
- package/#Tools/SuperClaude/.claude/commands/deploy.md +0 -55
- package/#Tools/SuperClaude/.claude/commands/design.md +0 -91
- package/#Tools/SuperClaude/.claude/commands/dev-setup.md +0 -37
- package/#Tools/SuperClaude/.claude/commands/document.md +0 -99
- package/#Tools/SuperClaude/.claude/commands/estimate.md +0 -69
- package/#Tools/SuperClaude/.claude/commands/explain.md +0 -85
- package/#Tools/SuperClaude/.claude/commands/git.md +0 -47
- package/#Tools/SuperClaude/.claude/commands/improve.md +0 -162
- package/#Tools/SuperClaude/.claude/commands/index.md +0 -159
- package/#Tools/SuperClaude/.claude/commands/load.md +0 -65
- package/#Tools/SuperClaude/.claude/commands/migrate.md +0 -76
- package/#Tools/SuperClaude/.claude/commands/scan.md +0 -163
- package/#Tools/SuperClaude/.claude/commands/shared/ambiguity-check.yml +0 -40
- package/#Tools/SuperClaude/.claude/commands/shared/audit.yml +0 -21
- package/#Tools/SuperClaude/.claude/commands/shared/checkpoint.yml +0 -28
- package/#Tools/SuperClaude/.claude/commands/shared/cleanup-patterns.yml +0 -107
- package/#Tools/SuperClaude/.claude/commands/shared/command-memory.yml +0 -52
- package/#Tools/SuperClaude/.claude/commands/shared/command-templates.yml +0 -167
- package/#Tools/SuperClaude/.claude/commands/shared/config-validator.yml +0 -206
- package/#Tools/SuperClaude/.claude/commands/shared/constants.yml +0 -311
- package/#Tools/SuperClaude/.claude/commands/shared/documentation-dirs.yml +0 -134
- package/#Tools/SuperClaude/.claude/commands/shared/error-handling.yml +0 -341
- package/#Tools/SuperClaude/.claude/commands/shared/evidence.yml +0 -75
- package/#Tools/SuperClaude/.claude/commands/shared/execution-lifecycle.yml +0 -277
- package/#Tools/SuperClaude/.claude/commands/shared/git-operations.yml +0 -217
- package/#Tools/SuperClaude/.claude/commands/shared/git-workflow.yml +0 -37
- package/#Tools/SuperClaude/.claude/commands/shared/implementation.yml +0 -199
- package/#Tools/SuperClaude/.claude/commands/shared/loading-config.yml +0 -73
- package/#Tools/SuperClaude/.claude/commands/shared/mcp-flags.yml +0 -109
- package/#Tools/SuperClaude/.claude/commands/shared/migration-report.md +0 -165
- package/#Tools/SuperClaude/.claude/commands/shared/patterns.yml +0 -155
- package/#Tools/SuperClaude/.claude/commands/shared/performance.yml +0 -317
- package/#Tools/SuperClaude/.claude/commands/shared/planning-mode.yml +0 -51
- package/#Tools/SuperClaude/.claude/commands/shared/research-first.yml +0 -278
- package/#Tools/SuperClaude/.claude/commands/shared/session-recovery.yml +0 -144
- package/#Tools/SuperClaude/.claude/commands/shared/severity-levels.yml +0 -252
- package/#Tools/SuperClaude/.claude/commands/shared/task-system.yml +0 -380
- package/#Tools/SuperClaude/.claude/commands/shared/task-ultracompressed.yml +0 -88
- package/#Tools/SuperClaude/.claude/commands/shared/templates/feature-template.md +0 -59
- package/#Tools/SuperClaude/.claude/commands/shared/templates/task-ultracompressed.md +0 -26
- package/#Tools/SuperClaude/.claude/commands/shared/thinking-modes.yml +0 -61
- package/#Tools/SuperClaude/.claude/commands/shared/ultracompressed.yml +0 -97
- package/#Tools/SuperClaude/.claude/commands/shared/user-experience.yml +0 -208
- package/#Tools/SuperClaude/.claude/commands/shared/validation.yml +0 -54
- package/#Tools/SuperClaude/.claude/commands/shared/workflow-chains.yml +0 -138
- package/#Tools/SuperClaude/.claude/commands/spawn.md +0 -106
- package/#Tools/SuperClaude/.claude/commands/task.md +0 -110
- package/#Tools/SuperClaude/.claude/commands/test.md +0 -67
- package/#Tools/SuperClaude/.claude/commands/troubleshoot.md +0 -93
- package/#Tools/SuperClaude/.github/ISSUE_TEMPLATE/bug_report.yml +0 -114
- package/#Tools/SuperClaude/.github/ISSUE_TEMPLATE/feature_request.yml +0 -119
- package/#Tools/SuperClaude/.github/ISSUE_TEMPLATE/question.yml +0 -87
- package/#Tools/SuperClaude/.github/pull_request_template.md +0 -62
- package/#Tools/SuperClaude/CHANGELOG.md +0 -109
- package/#Tools/SuperClaude/CLAUDE.md +0 -95
- package/#Tools/SuperClaude/CODE_OF_CONDUCT.md +0 -45
- package/#Tools/SuperClaude/CONTRIBUTING.md +0 -225
- package/#Tools/SuperClaude/Commands_Cheat_Sheet.md +0 -160
- package/#Tools/SuperClaude/LICENSE +0 -21
- package/#Tools/SuperClaude/MCP.md +0 -117
- package/#Tools/SuperClaude/PERSONAS.md +0 -115
- package/#Tools/SuperClaude/README.md +0 -249
- package/#Tools/SuperClaude/RULES.md +0 -220
- package/#Tools/SuperClaude/SECURITY.md +0 -91
- package/#Tools/SuperClaude/install.sh +0 -296
- package/#Tools/claude-talk-to-figma-mcp/.github/workflows/test.yml +0 -36
- package/#Tools/claude-talk-to-figma-mcp/CHANGELOG.md +0 -88
- package/#Tools/claude-talk-to-figma-mcp/Dockerfile +0 -16
- package/#Tools/claude-talk-to-figma-mcp/LICENSE +0 -22
- package/#Tools/claude-talk-to-figma-mcp/TESTING.md +0 -216
- package/#Tools/claude-talk-to-figma-mcp/bun.lock +0 -964
- package/#Tools/claude-talk-to-figma-mcp/context/01/00-analisis.md +0 -151
- package/#Tools/claude-talk-to-figma-mcp/context/01/01-tools-refactor.md +0 -370
- package/#Tools/claude-talk-to-figma-mcp/context/01/02-tools-refactor-backlog.md +0 -253
- package/#Tools/claude-talk-to-figma-mcp/context/01/03-tools-refactor-test.md +0 -138
- package/#Tools/claude-talk-to-figma-mcp/context/01/04-tools-refactor-channel-error.md +0 -133
- package/#Tools/claude-talk-to-figma-mcp/context/01/04-tools-refactor-test-backlog.md +0 -0
- package/#Tools/claude-talk-to-figma-mcp/context/01/05-tools-refactor-four-tools-error.md +0 -356
- package/#Tools/claude-talk-to-figma-mcp/context/01/06-tools-refactor-four-tools-error-backlog.md +0 -425
- package/#Tools/claude-talk-to-figma-mcp/context/01/prompt-dev-nodejs-bun.md +0 -105
- package/#Tools/claude-talk-to-figma-mcp/context/01-prompt.md +0 -135
- package/#Tools/claude-talk-to-figma-mcp/context/02/00-analisis.md +0 -131
- package/#Tools/claude-talk-to-figma-mcp/context/02/01-plan.md +0 -162
- package/#Tools/claude-talk-to-figma-mcp/context/02/02-backlog.md +0 -241
- package/#Tools/claude-talk-to-figma-mcp/context/02-analisis.md +0 -202
- package/#Tools/claude-talk-to-figma-mcp/context/99-notas.md +0 -139
- package/#Tools/claude-talk-to-figma-mcp/context/pr-14/pr-14-analisis.md +0 -221
- package/#Tools/claude-talk-to-figma-mcp/context/pr-14/pr-14-claude-tests.md +0 -152
- package/#Tools/claude-talk-to-figma-mcp/context/pr-14/pr-14-npm-publishing.md +0 -272
- package/#Tools/claude-talk-to-figma-mcp/images/claude-talk-to-figma.png +0 -0
- package/#Tools/claude-talk-to-figma-mcp/images/mcp-figma-plugin-configuration.png +0 -0
- package/#Tools/claude-talk-to-figma-mcp/jest.config.cjs +0 -25
- package/#Tools/claude-talk-to-figma-mcp/package.json +0 -67
- package/#Tools/claude-talk-to-figma-mcp/prompts/prompt-ux-ui-especialista-es.md +0 -82
- package/#Tools/claude-talk-to-figma-mcp/prompts/prompt-ux-ui-especialista-gal.md +0 -80
- package/#Tools/claude-talk-to-figma-mcp/prompts/prompt-ux-ui-especialista-pt.md +0 -80
- package/#Tools/claude-talk-to-figma-mcp/prompts/prompt-ux-ui-specialist.md +0 -80
- package/#Tools/claude-talk-to-figma-mcp/readme.md +0 -307
- package/#Tools/claude-talk-to-figma-mcp/scripts/configure-claude.js +0 -90
- package/#Tools/claude-talk-to-figma-mcp/scripts/setup.sh +0 -30
- package/#Tools/claude-talk-to-figma-mcp/scripts/test-integration.js +0 -339
- package/#Tools/claude-talk-to-figma-mcp/smithery.yaml +0 -26
- package/#Tools/claude-talk-to-figma-mcp/src/claude_mcp_plugin/code.js +0 -3295
- package/#Tools/claude-talk-to-figma-mcp/src/claude_mcp_plugin/manifest.json +0 -24
- package/#Tools/claude-talk-to-figma-mcp/src/claude_mcp_plugin/setcharacters.js +0 -215
- package/#Tools/claude-talk-to-figma-mcp/src/claude_mcp_plugin/ui.html +0 -656
- package/#Tools/claude-talk-to-figma-mcp/src/socket.ts +0 -349
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/bun.lock +0 -246
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/config/config.ts +0 -22
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/package.json +0 -31
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/prompts/index.ts +0 -297
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/server.ts +0 -62
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/tools/component-tools.ts +0 -48
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/tools/creation-tools.ts +0 -620
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/tools/document-tools.ts +0 -390
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/tools/index.ts +0 -28
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/tools/modification-tools.ts +0 -408
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/tools/text-tools.ts +0 -531
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/tsconfig.json +0 -18
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/types/color.ts +0 -13
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/types/index.ts +0 -87
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/utils/defaults.ts +0 -23
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/utils/figma-helpers.ts +0 -142
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/utils/logger.ts +0 -8
- package/#Tools/claude-talk-to-figma-mcp/src/talk_to_figma_mcp/utils/websocket.ts +0 -258
- package/#Tools/claude-talk-to-figma-mcp/tests/fixtures/test-data.ts +0 -32
- package/#Tools/claude-talk-to-figma-mcp/tests/integration/set-fill-color.test.ts +0 -309
- package/#Tools/claude-talk-to-figma-mcp/tests/integration/set-stroke-color.test.ts +0 -387
- package/#Tools/claude-talk-to-figma-mcp/tests/setup.ts +0 -7
- package/#Tools/claude-talk-to-figma-mcp/tests/unit/utils/defaults.test.ts +0 -131
- package/#Tools/claude-talk-to-figma-mcp/tsconfig.json +0 -17
- package/#Tools/claude-talk-to-figma-mcp/tsup.config.ts +0 -14
- package/#Tools/jwt creator/AuthKey_MZ7UQGFV2Q.p8 +0 -6
- package/#Tools/jwt creator/generate_apple_jwt.js +0 -18
- package/#Tools/jwt creator/node_modules/.package-lock.json +0 -145
- package/#Tools/jwt creator/node_modules/buffer-equal-constant-time/.travis.yml +0 -4
- package/#Tools/jwt creator/node_modules/buffer-equal-constant-time/LICENSE.txt +0 -12
- package/#Tools/jwt creator/node_modules/buffer-equal-constant-time/README.md +0 -50
- package/#Tools/jwt creator/node_modules/buffer-equal-constant-time/index.js +0 -41
- package/#Tools/jwt creator/node_modules/buffer-equal-constant-time/package.json +0 -21
- package/#Tools/jwt creator/node_modules/buffer-equal-constant-time/test.js +0 -42
- package/#Tools/jwt creator/node_modules/ecdsa-sig-formatter/CODEOWNERS +0 -1
- package/#Tools/jwt creator/node_modules/ecdsa-sig-formatter/LICENSE +0 -201
- package/#Tools/jwt creator/node_modules/ecdsa-sig-formatter/README.md +0 -65
- package/#Tools/jwt creator/node_modules/ecdsa-sig-formatter/package.json +0 -46
- package/#Tools/jwt creator/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.d.ts +0 -17
- package/#Tools/jwt creator/node_modules/ecdsa-sig-formatter/src/ecdsa-sig-formatter.js +0 -187
- package/#Tools/jwt creator/node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js +0 -23
- package/#Tools/jwt creator/node_modules/jsonwebtoken/LICENSE +0 -21
- package/#Tools/jwt creator/node_modules/jsonwebtoken/README.md +0 -396
- package/#Tools/jwt creator/node_modules/jsonwebtoken/decode.js +0 -30
- package/#Tools/jwt creator/node_modules/jsonwebtoken/index.js +0 -8
- package/#Tools/jwt creator/node_modules/jsonwebtoken/lib/JsonWebTokenError.js +0 -14
- package/#Tools/jwt creator/node_modules/jsonwebtoken/lib/NotBeforeError.js +0 -13
- package/#Tools/jwt creator/node_modules/jsonwebtoken/lib/TokenExpiredError.js +0 -13
- package/#Tools/jwt creator/node_modules/jsonwebtoken/lib/asymmetricKeyDetailsSupported.js +0 -3
- package/#Tools/jwt creator/node_modules/jsonwebtoken/lib/psSupported.js +0 -3
- package/#Tools/jwt creator/node_modules/jsonwebtoken/lib/rsaPssKeyDetailsSupported.js +0 -3
- package/#Tools/jwt creator/node_modules/jsonwebtoken/lib/timespan.js +0 -18
- package/#Tools/jwt creator/node_modules/jsonwebtoken/lib/validateAsymmetricKey.js +0 -66
- package/#Tools/jwt creator/node_modules/jsonwebtoken/package.json +0 -71
- package/#Tools/jwt creator/node_modules/jsonwebtoken/sign.js +0 -253
- package/#Tools/jwt creator/node_modules/jsonwebtoken/verify.js +0 -263
- package/#Tools/jwt creator/node_modules/jwa/LICENSE +0 -17
- package/#Tools/jwt creator/node_modules/jwa/README.md +0 -150
- package/#Tools/jwt creator/node_modules/jwa/index.js +0 -266
- package/#Tools/jwt creator/node_modules/jwa/package.json +0 -37
- package/#Tools/jwt creator/node_modules/jws/CHANGELOG.md +0 -34
- package/#Tools/jwt creator/node_modules/jws/LICENSE +0 -17
- package/#Tools/jwt creator/node_modules/jws/index.js +0 -22
- package/#Tools/jwt creator/node_modules/jws/lib/data-stream.js +0 -55
- package/#Tools/jwt creator/node_modules/jws/lib/sign-stream.js +0 -78
- package/#Tools/jwt creator/node_modules/jws/lib/tostring.js +0 -10
- package/#Tools/jwt creator/node_modules/jws/lib/verify-stream.js +0 -120
- package/#Tools/jwt creator/node_modules/jws/package.json +0 -34
- package/#Tools/jwt creator/node_modules/jws/readme.md +0 -255
- package/#Tools/jwt creator/node_modules/lodash.includes/LICENSE +0 -47
- package/#Tools/jwt creator/node_modules/lodash.includes/README.md +0 -18
- package/#Tools/jwt creator/node_modules/lodash.includes/index.js +0 -745
- package/#Tools/jwt creator/node_modules/lodash.includes/package.json +0 -17
- package/#Tools/jwt creator/node_modules/lodash.isboolean/LICENSE +0 -22
- package/#Tools/jwt creator/node_modules/lodash.isboolean/README.md +0 -18
- package/#Tools/jwt creator/node_modules/lodash.isboolean/index.js +0 -70
- package/#Tools/jwt creator/node_modules/lodash.isboolean/package.json +0 -17
- package/#Tools/jwt creator/node_modules/lodash.isinteger/LICENSE +0 -47
- package/#Tools/jwt creator/node_modules/lodash.isinteger/README.md +0 -18
- package/#Tools/jwt creator/node_modules/lodash.isinteger/index.js +0 -265
- package/#Tools/jwt creator/node_modules/lodash.isinteger/package.json +0 -17
- package/#Tools/jwt creator/node_modules/lodash.isnumber/LICENSE +0 -22
- package/#Tools/jwt creator/node_modules/lodash.isnumber/README.md +0 -18
- package/#Tools/jwt creator/node_modules/lodash.isnumber/index.js +0 -79
- package/#Tools/jwt creator/node_modules/lodash.isnumber/package.json +0 -17
- package/#Tools/jwt creator/node_modules/lodash.isplainobject/LICENSE +0 -47
- package/#Tools/jwt creator/node_modules/lodash.isplainobject/README.md +0 -18
- package/#Tools/jwt creator/node_modules/lodash.isplainobject/index.js +0 -139
- package/#Tools/jwt creator/node_modules/lodash.isplainobject/package.json +0 -17
- package/#Tools/jwt creator/node_modules/lodash.isstring/LICENSE +0 -22
- package/#Tools/jwt creator/node_modules/lodash.isstring/README.md +0 -18
- package/#Tools/jwt creator/node_modules/lodash.isstring/index.js +0 -95
- package/#Tools/jwt creator/node_modules/lodash.isstring/package.json +0 -17
- package/#Tools/jwt creator/node_modules/lodash.once/LICENSE +0 -47
- package/#Tools/jwt creator/node_modules/lodash.once/README.md +0 -18
- package/#Tools/jwt creator/node_modules/lodash.once/index.js +0 -294
- package/#Tools/jwt creator/node_modules/lodash.once/package.json +0 -17
- package/#Tools/jwt creator/node_modules/ms/index.js +0 -162
- package/#Tools/jwt creator/node_modules/ms/license.md +0 -21
- package/#Tools/jwt creator/node_modules/ms/package.json +0 -38
- package/#Tools/jwt creator/node_modules/ms/readme.md +0 -59
- package/#Tools/jwt creator/node_modules/safe-buffer/LICENSE +0 -21
- package/#Tools/jwt creator/node_modules/safe-buffer/README.md +0 -584
- package/#Tools/jwt creator/node_modules/safe-buffer/index.d.ts +0 -187
- package/#Tools/jwt creator/node_modules/safe-buffer/index.js +0 -65
- package/#Tools/jwt creator/node_modules/safe-buffer/package.json +0 -51
- package/#Tools/jwt creator/node_modules/semver/LICENSE +0 -15
- package/#Tools/jwt creator/node_modules/semver/README.md +0 -664
- package/#Tools/jwt creator/node_modules/semver/bin/semver.js +0 -191
- package/#Tools/jwt creator/node_modules/semver/classes/comparator.js +0 -143
- package/#Tools/jwt creator/node_modules/semver/classes/index.js +0 -7
- package/#Tools/jwt creator/node_modules/semver/classes/range.js +0 -556
- package/#Tools/jwt creator/node_modules/semver/classes/semver.js +0 -319
- package/#Tools/jwt creator/node_modules/semver/functions/clean.js +0 -8
- package/#Tools/jwt creator/node_modules/semver/functions/cmp.js +0 -54
- package/#Tools/jwt creator/node_modules/semver/functions/coerce.js +0 -62
- package/#Tools/jwt creator/node_modules/semver/functions/compare-build.js +0 -9
- package/#Tools/jwt creator/node_modules/semver/functions/compare-loose.js +0 -5
- package/#Tools/jwt creator/node_modules/semver/functions/compare.js +0 -7
- package/#Tools/jwt creator/node_modules/semver/functions/diff.js +0 -60
- package/#Tools/jwt creator/node_modules/semver/functions/eq.js +0 -5
- package/#Tools/jwt creator/node_modules/semver/functions/gt.js +0 -5
- package/#Tools/jwt creator/node_modules/semver/functions/gte.js +0 -5
- package/#Tools/jwt creator/node_modules/semver/functions/inc.js +0 -21
- package/#Tools/jwt creator/node_modules/semver/functions/lt.js +0 -5
- package/#Tools/jwt creator/node_modules/semver/functions/lte.js +0 -5
- package/#Tools/jwt creator/node_modules/semver/functions/major.js +0 -5
- package/#Tools/jwt creator/node_modules/semver/functions/minor.js +0 -5
- package/#Tools/jwt creator/node_modules/semver/functions/neq.js +0 -5
- package/#Tools/jwt creator/node_modules/semver/functions/parse.js +0 -18
- package/#Tools/jwt creator/node_modules/semver/functions/patch.js +0 -5
- package/#Tools/jwt creator/node_modules/semver/functions/prerelease.js +0 -8
- package/#Tools/jwt creator/node_modules/semver/functions/rcompare.js +0 -5
- package/#Tools/jwt creator/node_modules/semver/functions/rsort.js +0 -5
- package/#Tools/jwt creator/node_modules/semver/functions/satisfies.js +0 -12
- package/#Tools/jwt creator/node_modules/semver/functions/sort.js +0 -5
- package/#Tools/jwt creator/node_modules/semver/functions/valid.js +0 -8
- package/#Tools/jwt creator/node_modules/semver/index.js +0 -91
- package/#Tools/jwt creator/node_modules/semver/internal/constants.js +0 -37
- package/#Tools/jwt creator/node_modules/semver/internal/debug.js +0 -11
- package/#Tools/jwt creator/node_modules/semver/internal/identifiers.js +0 -25
- package/#Tools/jwt creator/node_modules/semver/internal/lrucache.js +0 -42
- package/#Tools/jwt creator/node_modules/semver/internal/parse-options.js +0 -17
- package/#Tools/jwt creator/node_modules/semver/internal/re.js +0 -223
- package/#Tools/jwt creator/node_modules/semver/package.json +0 -78
- package/#Tools/jwt creator/node_modules/semver/preload.js +0 -4
- package/#Tools/jwt creator/node_modules/semver/range.bnf +0 -16
- package/#Tools/jwt creator/node_modules/semver/ranges/gtr.js +0 -6
- package/#Tools/jwt creator/node_modules/semver/ranges/intersects.js +0 -9
- package/#Tools/jwt creator/node_modules/semver/ranges/ltr.js +0 -6
- package/#Tools/jwt creator/node_modules/semver/ranges/max-satisfying.js +0 -27
- package/#Tools/jwt creator/node_modules/semver/ranges/min-satisfying.js +0 -26
- package/#Tools/jwt creator/node_modules/semver/ranges/min-version.js +0 -63
- package/#Tools/jwt creator/node_modules/semver/ranges/outside.js +0 -82
- package/#Tools/jwt creator/node_modules/semver/ranges/simplify.js +0 -49
- package/#Tools/jwt creator/node_modules/semver/ranges/subset.js +0 -249
- package/#Tools/jwt creator/node_modules/semver/ranges/to-comparators.js +0 -10
- package/#Tools/jwt creator/node_modules/semver/ranges/valid.js +0 -13
- package/#Tools/jwt creator/package-lock.json +0 -150
- package/#Tools/jwt creator/package.json +0 -5
- package/#Tools/package.json +0 -94
- package/SuperClaude/.claude/commands/analyze.md +0 -36
- package/SuperClaude/.claude/commands/build.md +0 -35
- package/SuperClaude/.claude/commands/cleanup.md +0 -46
- package/SuperClaude/.claude/commands/deploy.md +0 -55
- package/SuperClaude/.claude/commands/design.md +0 -91
- package/SuperClaude/.claude/commands/dev-setup.md +0 -37
- package/SuperClaude/.claude/commands/document.md +0 -99
- package/SuperClaude/.claude/commands/estimate.md +0 -69
- package/SuperClaude/.claude/commands/explain.md +0 -85
- package/SuperClaude/.claude/commands/git.md +0 -47
- package/SuperClaude/.claude/commands/improve.md +0 -162
- package/SuperClaude/.claude/commands/index.md +0 -159
- package/SuperClaude/.claude/commands/load.md +0 -65
- package/SuperClaude/.claude/commands/migrate.md +0 -76
- package/SuperClaude/.claude/commands/scan.md +0 -163
- package/SuperClaude/.claude/commands/shared/ambiguity-check.yml +0 -40
- package/SuperClaude/.claude/commands/shared/audit.yml +0 -21
- package/SuperClaude/.claude/commands/shared/checkpoint.yml +0 -28
- package/SuperClaude/.claude/commands/shared/cleanup-patterns.yml +0 -107
- package/SuperClaude/.claude/commands/shared/command-memory.yml +0 -52
- package/SuperClaude/.claude/commands/shared/command-templates.yml +0 -167
- package/SuperClaude/.claude/commands/shared/config-validator.yml +0 -206
- package/SuperClaude/.claude/commands/shared/constants.yml +0 -311
- package/SuperClaude/.claude/commands/shared/documentation-dirs.yml +0 -134
- package/SuperClaude/.claude/commands/shared/error-handling.yml +0 -341
- package/SuperClaude/.claude/commands/shared/evidence.yml +0 -75
- package/SuperClaude/.claude/commands/shared/execution-lifecycle.yml +0 -277
- package/SuperClaude/.claude/commands/shared/git-operations.yml +0 -217
- package/SuperClaude/.claude/commands/shared/git-workflow.yml +0 -37
- package/SuperClaude/.claude/commands/shared/implementation.yml +0 -199
- package/SuperClaude/.claude/commands/shared/loading-config.yml +0 -73
- package/SuperClaude/.claude/commands/shared/mcp-flags.yml +0 -109
- package/SuperClaude/.claude/commands/shared/migration-report.md +0 -165
- package/SuperClaude/.claude/commands/shared/patterns.yml +0 -155
- package/SuperClaude/.claude/commands/shared/performance.yml +0 -317
- package/SuperClaude/.claude/commands/shared/planning-mode.yml +0 -51
- package/SuperClaude/.claude/commands/shared/research-first.yml +0 -278
- package/SuperClaude/.claude/commands/shared/session-recovery.yml +0 -144
- package/SuperClaude/.claude/commands/shared/severity-levels.yml +0 -252
- package/SuperClaude/.claude/commands/shared/task-system.yml +0 -380
- package/SuperClaude/.claude/commands/shared/task-ultracompressed.yml +0 -88
- package/SuperClaude/.claude/commands/shared/templates/feature-template.md +0 -59
- package/SuperClaude/.claude/commands/shared/templates/task-ultracompressed.md +0 -26
- package/SuperClaude/.claude/commands/shared/thinking-modes.yml +0 -61
- package/SuperClaude/.claude/commands/shared/ultracompressed.yml +0 -97
- package/SuperClaude/.claude/commands/shared/user-experience.yml +0 -208
- package/SuperClaude/.claude/commands/shared/validation.yml +0 -54
- package/SuperClaude/.claude/commands/shared/workflow-chains.yml +0 -138
- package/SuperClaude/.claude/commands/spawn.md +0 -106
- package/SuperClaude/.claude/commands/task.md +0 -110
- package/SuperClaude/.claude/commands/test.md +0 -67
- package/SuperClaude/.claude/commands/troubleshoot.md +0 -93
- package/SuperClaude/.github/ISSUE_TEMPLATE/bug_report.yml +0 -114
- package/SuperClaude/.github/ISSUE_TEMPLATE/feature_request.yml +0 -119
- package/SuperClaude/.github/ISSUE_TEMPLATE/question.yml +0 -87
- package/SuperClaude/.github/pull_request_template.md +0 -62
- package/SuperClaude/CHANGELOG.md +0 -109
- package/SuperClaude/CLAUDE.md +0 -95
- package/SuperClaude/CODE_OF_CONDUCT.md +0 -45
- package/SuperClaude/CONTRIBUTING.md +0 -225
- package/SuperClaude/Commands_Cheat_Sheet.md +0 -160
- package/SuperClaude/LICENSE +0 -21
- package/SuperClaude/MCP.md +0 -117
- package/SuperClaude/PERSONAS.md +0 -115
- package/SuperClaude/README.md +0 -249
- package/SuperClaude/RULES.md +0 -220
- package/SuperClaude/SECURITY.md +0 -91
- package/SuperClaude/install.sh +0 -296
- package/appiq-mcp installer/How-to.md +0 -250
- package/appiq-mcp installer/LICENSE +0 -21
- package/appiq-mcp installer/README.md +0 -235
- package/appiq-mcp installer/index.js +0 -672
- package/appiq-mcp installer/my_mcps.md +0 -105
- package/appiq-mcp installer/package-lock.json +0 -708
- package/appiq-mcp installer/package.json +0 -46
- package/appiq-mcp installer/test-install.bat +0 -60
- package/appiq-mcp installer/test-install.sh +0 -55
- package/appiq-mcp installer/test-load.js +0 -40
- package/bmad-core/agent-teams/team-flutter-mobile.yaml +0 -114
- package/bmad-core/agents/bmad-smart-launcher.md +0 -170
- package/bmad-core/agents/init-flow-po.md +0 -143
- package/bmad-core/checklists/security-validation-checklist.md +0 -332
- package/bmad-core/core-config.yaml.bak +0 -20
- package/bmad-core/data/backend-services-integration.md +0 -686
- package/bmad-core/data/shadcn-ui-integration.md +0 -388
- package/bmad-core/tasks/create-flutter-story.md +0 -197
- package/bmad-core/tasks/intelligent-epic-creation.md +0 -234
- package/bmad-core/tasks/smart-project-analysis.md +0 -289
- package/bmad-core/templates/flutter-mobile-prd-tmpl.yaml +0 -330
- package/bmad-core/templates/flutter-story-tmpl.yaml +0 -376
- package/bmad-core/templates/flutter-ui-spec-tmpl.yaml +0 -415
- package/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-analytics.txt +0 -1530
- package/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-architect.txt +0 -322
- package/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-developer.txt +0 -692
- package/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-pm.txt +0 -382
- package/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-qa.txt +0 -665
- package/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-security.txt +0 -1070
- package/dist/expansion-packs/bmad-mobile-app-dev/agents/mobile-ux-expert.txt +0 -1494
- package/dist/expansion-packs/bmad-mobile-app-dev/teams/mobile-team-cross-platform.txt +0 -15613
- package/flutter/CLAUDE.md +0 -58
- package/flutter/punkt.claude/New Folder With Items/channel.md +0 -221
- package/flutter/punkt.claude/New Folder With Items/commands/add-translations.md +0 -12
- package/flutter/punkt.claude/New Folder With Items/commands/create-feature.md +0 -168
- package/flutter/punkt.claude/New Folder With Items/commands/explain-codebase.md +0 -1
- package/flutter/punkt.claude/New Folder With Items/commands/feature-business-logic.md +0 -551
- package/flutter/punkt.claude/New Folder With Items/commands/feature-data-layer.md +0 -924
- package/flutter/punkt.claude/New Folder With Items/commands/feature-domain-layer.md +0 -540
- package/flutter/punkt.claude/New Folder With Items/commands/feature-integration.md +0 -493
- package/flutter/punkt.claude/New Folder With Items/commands/feature-localization.md +0 -427
- package/flutter/punkt.claude/New Folder With Items/commands/feature-ui-layer.md +0 -300
- package/flutter/punkt.claude/New Folder With Items/commands/git-commit.md +0 -3
- package/flutter/punkt.claude/New Folder With Items/commands/search-web.md +0 -1
- package/flutter/punkt.claude/punkt.claude/channel.md +0 -225
- package/flutter/punkt.claude/punkt.claude/commands/add-translations.md +0 -60
- package/flutter/punkt.claude/punkt.claude/commands/bug-fix.md +0 -32
- package/flutter/punkt.claude/punkt.claude/commands/checkdev.md +0 -122
- package/flutter/punkt.claude/punkt.claude/commands/create-feature.md +0 -174
- package/flutter/punkt.claude/punkt.claude/commands/dev.md +0 -79
- package/flutter/punkt.claude/punkt.claude/commands/explain-codebase.md +0 -1
- package/flutter/punkt.claude/punkt.claude/commands/feature-business-logic.md +0 -430
- package/flutter/punkt.claude/punkt.claude/commands/feature-data-layer.md +0 -572
- package/flutter/punkt.claude/punkt.claude/commands/feature-domain-layer.md +0 -537
- package/flutter/punkt.claude/punkt.claude/commands/feature-integration.md +0 -493
- package/flutter/punkt.claude/punkt.claude/commands/feature-localization.md +0 -427
- package/flutter/punkt.claude/punkt.claude/commands/feature-ui-layer.md +0 -831
- package/flutter/punkt.claude/punkt.claude/commands/git-commit.md +0 -3
- package/flutter/punkt.claude/punkt.claude/commands/manage-translations.md +0 -433
- package/flutter/punkt.claude/punkt.claude/commands/search-web.md +0 -1
- package/flutter/punkt.claude/punkt.claude/developer_check.md +0 -121
- package/tools/appiq-installer.js +0 -2711
- package/tools/epic-solution-installer.js +0 -536
- package/tools/setup-ide-commands.js +0 -348
- package/tools/smart-installer.js +0 -592
- package/web/CLAUDE.md +0 -58
- /package/{#Tools/APPIQ-METHOD/.github → .github}/FUNDING.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/.github → .github}/ISSUE_TEMPLATE/bug_report.md +0 -0
- /package/{#Tools/APPIQ-METHOD/.github → .github}/ISSUE_TEMPLATE/feature_request.md +0 -0
- /package/{#Tools/APPIQ-METHOD/.github → .github}/workflows/release.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/.releaserc.json → .releaserc.json} +0 -0
- /package/{#Tools/APPIQ-METHOD/.vscode → .vscode}/settings.json +0 -0
- /package/{#Tools/APPIQ-METHOD/CHANGELOG.md → CHANGELOG.md} +0 -0
- /package/{#Tools/APPIQ-METHOD/CONTRIBUTING.md → CONTRIBUTING.md} +0 -0
- /package/{#Tools/APPIQ-METHOD/LICENSE → LICENSE} +0 -0
- /package/{#Tools/APPIQ-METHOD/common → common}/tasks/create-doc.md +0 -0
- /package/{#Tools/APPIQ-METHOD/common → common}/tasks/execute-checklist.md +0 -0
- /package/{#Tools/APPIQ-METHOD/common → common}/utils/bmad-doc-template.md +0 -0
- /package/{#Tools/APPIQ-METHOD/common → common}/utils/workflow-management.md +0 -0
- /package/{#Tools/APPIQ-METHOD/docs → docs}/GUIDING-PRINCIPLES.md +0 -0
- /package/{#Tools/APPIQ-METHOD/docs → docs}/core-architecture.md +0 -0
- /package/{#Tools/APPIQ-METHOD/docs → docs}/expansion-packs.md +0 -0
- /package/{#Tools/APPIQ-METHOD/docs → docs}/how-to-contribute-with-pull-requests.md +0 -0
- /package/{#Tools/APPIQ-METHOD/docs → docs}/versioning-and-releases.md +0 -0
- /package/{#Tools/APPIQ-METHOD/docs → docs}/versions.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/README.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev → expansion-packs/appiq-flutter-mobile-dev}/agent-teams/flutter-mobile-team.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev → expansion-packs/appiq-flutter-mobile-dev}/agents/flutter-cubit-agent.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev → expansion-packs/appiq-flutter-mobile-dev}/agents/flutter-data-agent.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev → expansion-packs/appiq-flutter-mobile-dev}/agents/flutter-domain-agent.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev → expansion-packs/appiq-flutter-mobile-dev}/agents/flutter-ui-agent.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev → expansion-packs/appiq-flutter-mobile-dev}/agents/shared-components-agent.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev → expansion-packs/appiq-flutter-mobile-dev}/checklists/flutter-story-dod-checklist.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev → expansion-packs/appiq-flutter-mobile-dev}/config.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev → expansion-packs/appiq-flutter-mobile-dev}/data/flutter-development-guidelines.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev → expansion-packs/appiq-flutter-mobile-dev}/templates/flutter-mobile-architecture-tmpl.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs/bmad-flutter-mobile-dev → expansion-packs/appiq-flutter-mobile-dev}/workflows/flutter-ui-first-development.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/agent-teams/phaser-2d-nodejs-game-team.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/agents/game-designer.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/agents/game-developer.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/agents/game-sm.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/checklists/game-design-checklist.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/checklists/game-story-dod-checklist.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/config.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/data/bmad-kb.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/data/development-guidelines.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/tasks/advanced-elicitation.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/tasks/create-game-story.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/tasks/game-design-brainstorming.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/templates/game-architecture-tmpl.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/templates/game-brief-tmpl.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/templates/game-design-doc-tmpl.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/templates/game-story-tmpl.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/templates/level-design-doc-tmpl.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/workflows/game-dev-greenfield.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-phaser-game-dev/workflows/game-prototype.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/agent-teams/unity-2d-game-team.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/agents/game-architect.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/agents/game-designer.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/agents/game-developer.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/agents/game-sm.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/checklists/game-architect-checklist.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/checklists/game-change-checklist.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/checklists/game-design-checklist.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/checklists/game-story-dod-checklist.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/config.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/data/bmad-kb.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/data/development-guidelines.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/tasks/advanced-elicitation.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/tasks/correct-course-game.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/tasks/create-game-story.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/tasks/game-design-brainstorming.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/tasks/validate-game-story.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/templates/game-architecture-tmpl.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/templates/game-brief-tmpl.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/templates/game-design-doc-tmpl.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/templates/game-story-tmpl.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/templates/level-design-doc-tmpl.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/workflows/game-dev-greenfield.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-2d-unity-game-dev/workflows/game-prototype.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-infrastructure-devops/README.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-infrastructure-devops/agents/infra-devops-platform.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-infrastructure-devops/checklists/infrastructure-checklist.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-infrastructure-devops/config.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-infrastructure-devops/data/bmad-kb.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-infrastructure-devops/tasks/review-infrastructure.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-infrastructure-devops/tasks/validate-infrastructure.md +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-infrastructure-devops/templates/infrastructure-architecture-tmpl.yaml +0 -0
- /package/{#Tools/APPIQ-METHOD/expansion-packs → expansion-packs}/bmad-infrastructure-devops/templates/infrastructure-platform-from-arch-tmpl.yaml +0 -0
@@ -1,2711 +0,0 @@
|
|
1
|
-
#!/usr/bin/env node
|
2
|
-
|
3
|
-
/**
|
4
|
-
* Appiq Solution Smart Installer
|
5
|
-
*
|
6
|
-
* Super einfache Installation mit One-Click Workflows
|
7
|
-
* Usage: npx appiq-solution install
|
8
|
-
*
|
9
|
-
* Built with ❤️ based on the amazing Bmad-Method
|
10
|
-
* Credits: https://github.com/Viktor-Hermann/APPIQ-METHOD
|
11
|
-
*/
|
12
|
-
|
13
|
-
const fs = require('fs');
|
14
|
-
const path = require('path');
|
15
|
-
const inquirer = require('inquirer');
|
16
|
-
const chalk = require('chalk');
|
17
|
-
|
18
|
-
const MCP_SERVERS = {
|
19
|
-
// 🌍 GLOBAL SERVERS
|
20
|
-
"sequential-thinking": {
|
21
|
-
name: "Sequential Thinking",
|
22
|
-
description: "Structured thinking for complex problem solving",
|
23
|
-
command: "npx",
|
24
|
-
args: ["-y", "@modelcontextprotocol/server-sequential-thinking"],
|
25
|
-
tags: ['all', 'planning', 'architect', 'pm']
|
26
|
-
},
|
27
|
-
"puppeteer": {
|
28
|
-
name: "Puppeteer MCP Server",
|
29
|
-
description: "Browser automation and web scraping",
|
30
|
-
command: "npx",
|
31
|
-
args: ["-y", "puppeteer-mcp-server"],
|
32
|
-
tags: ['web', 'qa', 'automation']
|
33
|
-
},
|
34
|
-
"claude-continuity": {
|
35
|
-
name: "Claude Thread Continuity",
|
36
|
-
description: "Enhanced thread continuity for Claude",
|
37
|
-
command: "python3",
|
38
|
-
args: ["~/.mcp-servers/claude-continuity/server.py"],
|
39
|
-
tags: ['all', 'ide-enhancement']
|
40
|
-
},
|
41
|
-
|
42
|
-
// 📁 LOCAL SERVERS
|
43
|
-
"extended-memory": {
|
44
|
-
name: "Extended Memory MCP",
|
45
|
-
description: "Enhanced memory capabilities for AI assistants",
|
46
|
-
command: "python3",
|
47
|
-
args: ["-m", "extended_memory_mcp.server"],
|
48
|
-
env: { "LOG_LEVEL": "INFO" },
|
49
|
-
tags: ['all', 'ide-enhancement']
|
50
|
-
},
|
51
|
-
"@21st-dev/magic": {
|
52
|
-
name: "21st.dev Magic MCP",
|
53
|
-
description: "UI builder for MCP - like v0 but in your IDE",
|
54
|
-
command: "npx",
|
55
|
-
args: ["-y", "@21st-dev/magic@latest"],
|
56
|
-
tags: ['web', 'flutter', 'ui', 'ux-expert', 'flutter-ui-agent']
|
57
|
-
},
|
58
|
-
"dart": {
|
59
|
-
name: "Dart MCP Server",
|
60
|
-
description: "Dart SDK integration for Flutter/Dart projects",
|
61
|
-
command: "dart",
|
62
|
-
args: ["mcp-server", "--force-roots-fallback"],
|
63
|
-
tags: ['flutter', 'flutter-ui-agent', 'flutter-cubit-agent', 'flutter-data-agent']
|
64
|
-
},
|
65
|
-
"firebase": {
|
66
|
-
name: "Firebase MCP Server",
|
67
|
-
description: "Firebase services - Auth, Firestore, Functions",
|
68
|
-
command: "npx",
|
69
|
-
args: ["-y", "firebase-tools@latest", "experimental:mcp"],
|
70
|
-
tags: ['backend', 'fullstack', 'flutter', 'web', 'dev']
|
71
|
-
},
|
72
|
-
"supabase": {
|
73
|
-
name: "Supabase MCP Server",
|
74
|
-
description: "Supabase integration - database, auth, storage",
|
75
|
-
command: "npx",
|
76
|
-
args: ["-y", "@supabase/mcp-server-supabase@latest", "--read-only"],
|
77
|
-
tags: ['backend', 'fullstack', 'flutter', 'web', 'dev']
|
78
|
-
},
|
79
|
-
"context7": {
|
80
|
-
name: "Context7 MCP (Upstash)",
|
81
|
-
description: "Up-to-date code documentation for any library",
|
82
|
-
command: "npx",
|
83
|
-
args: ["-y", "@upstash/context7-mcp"],
|
84
|
-
tags: ['all', 'research', 'dev', 'architect']
|
85
|
-
},
|
86
|
-
"stripe": {
|
87
|
-
name: "Stripe MCP Server",
|
88
|
-
description: "Stripe payment integration",
|
89
|
-
command: "npx",
|
90
|
-
args: ["-y", "@stripe/mcp", "--tools=all"],
|
91
|
-
tags: ['backend', 'fullstack', 'web', 'payment', 'dev']
|
92
|
-
}
|
93
|
-
};
|
94
|
-
|
95
|
-
class AppiqSolutionInstaller {
|
96
|
-
constructor() {
|
97
|
-
this.projectRoot = process.cwd();
|
98
|
-
this.appiqPath = path.join(this.projectRoot, "appiq-solution");
|
99
|
-
this.config = {
|
100
|
-
version: "1.0.0",
|
101
|
-
projectType: null, // 'greenfield' or 'brownfield'
|
102
|
-
techStack: {
|
103
|
-
platform: null, // 'flutter', 'web', 'fullstack', 'api'
|
104
|
-
isFlutter: false,
|
105
|
-
hasUI: false,
|
106
|
-
database: null,
|
107
|
-
libraries: [],
|
108
|
-
},
|
109
|
-
selectedIDEs: [],
|
110
|
-
projectName: null,
|
111
|
-
projectIdea: null,
|
112
|
-
targetUsers: null,
|
113
|
-
projectPlan: null,
|
114
|
-
planApproved: false,
|
115
|
-
|
116
|
-
};
|
117
|
-
}
|
118
|
-
|
119
|
-
async install() {
|
120
|
-
console.log(chalk.bold.cyan("🚀 Appiq Solution Smart Installer v1.0.0"));
|
121
|
-
console.log(chalk.cyan("============================================"));
|
122
|
-
console.log(chalk.dim("Built with ❤️ based on Bmad-Method"));
|
123
|
-
console.log(chalk.dim("https://github.com/Viktor-Hermann/APPIQ-METHOD\n"));
|
124
|
-
|
125
|
-
try {
|
126
|
-
// Phase 1: Project Type Detection
|
127
|
-
await this.detectProjectType();
|
128
|
-
|
129
|
-
// Phase 1.5: Tech Stack Detection (Flutter, Web, etc.)
|
130
|
-
await this.detectTechStack();
|
131
|
-
|
132
|
-
// Phase 2: Project idea collection (only for greenfield projects)
|
133
|
-
if (this.config.projectType === "greenfield") {
|
134
|
-
await this.collectProjectIdea();
|
135
|
-
} else {
|
136
|
-
// For brownfield projects: auto-set project name from directory
|
137
|
-
await this.generateBrownfieldProjectConfig();
|
138
|
-
}
|
139
|
-
|
140
|
-
// Phase 3: IDE Selection (MULTISELECT)
|
141
|
-
await this.selectIDE();
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
// Phase 5: Create project plan
|
146
|
-
await this.createProjectPlan();
|
147
|
-
|
148
|
-
// Phase 6: Plan Approval
|
149
|
-
await this.approvePlan();
|
150
|
-
|
151
|
-
// Phase 7: Installation
|
152
|
-
await this.performInstallation();
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
// Phase 9: BMAD Core Configuration Setup
|
157
|
-
await this.setupBMADCoreConfig();
|
158
|
-
|
159
|
-
// Phase 10: Document Templates & Dependencies
|
160
|
-
await this.setupDocumentTemplates();
|
161
|
-
|
162
|
-
// Phase 11: Agent Dependencies System (+ Flutter Agents & MCPs)
|
163
|
-
await this.setupAgentDependencies();
|
164
|
-
|
165
|
-
// Phase 12: BMAD Orchestration (Full Flow)
|
166
|
-
await this.setupBMADOrchestration();
|
167
|
-
|
168
|
-
// Phase 13: One-Click Setup
|
169
|
-
await this.setupOneClickWorkflows();
|
170
|
-
|
171
|
-
// Phase 14: Simple Instructions
|
172
|
-
await this.showSimpleInstructions();
|
173
|
-
} catch (error) {
|
174
|
-
console.error(chalk.red("❌ Installation failed:"), error.message);
|
175
|
-
process.exit(1);
|
176
|
-
}
|
177
|
-
}
|
178
|
-
|
179
|
-
async detectProjectType() {
|
180
|
-
console.log(chalk.yellow("🔍 Project Analysis..."));
|
181
|
-
|
182
|
-
// Auto-Detection
|
183
|
-
const hasPackageJson = fs.existsSync(
|
184
|
-
path.join(this.projectRoot, "package.json")
|
185
|
-
);
|
186
|
-
const hasPubspec = fs.existsSync(
|
187
|
-
path.join(this.projectRoot, "pubspec.yaml")
|
188
|
-
);
|
189
|
-
const hasExistingCode = this.hasExistingSourceCode();
|
190
|
-
const hasDocumentation = this.hasExistingDocumentation();
|
191
|
-
|
192
|
-
let suggestedType = "greenfield";
|
193
|
-
let reason = "New project detected";
|
194
|
-
|
195
|
-
if (hasExistingCode || hasDocumentation) {
|
196
|
-
suggestedType = "brownfield";
|
197
|
-
reason = "Existing code/documentation found";
|
198
|
-
}
|
199
|
-
|
200
|
-
console.log(chalk.gray(`💡 Analysis: ${reason}`));
|
201
|
-
console.log(
|
202
|
-
chalk.gray(
|
203
|
-
`📊 Recommendation: ${
|
204
|
-
suggestedType === "greenfield"
|
205
|
-
? "Greenfield (New Project)"
|
206
|
-
: "Brownfield (Existing Project)"
|
207
|
-
}`
|
208
|
-
)
|
209
|
-
);
|
210
|
-
|
211
|
-
// User Confirmation
|
212
|
-
const { projectType } = await inquirer.prompt([
|
213
|
-
{
|
214
|
-
type: "list",
|
215
|
-
name: "projectType",
|
216
|
-
message: "🎯 What type of project is this?",
|
217
|
-
choices: [
|
218
|
-
{
|
219
|
-
name: `✨ Greenfield - New project (Recommended: ${
|
220
|
-
suggestedType === "greenfield" ? "✅" : "❌"
|
221
|
-
})`,
|
222
|
-
value: "greenfield",
|
223
|
-
short: "Greenfield",
|
224
|
-
},
|
225
|
-
{
|
226
|
-
name: `🔧 Brownfield - Enhance existing project (Recommended: ${
|
227
|
-
suggestedType === "brownfield" ? "✅" : "❌"
|
228
|
-
})`,
|
229
|
-
value: "brownfield",
|
230
|
-
short: "Brownfield",
|
231
|
-
},
|
232
|
-
],
|
233
|
-
default: suggestedType,
|
234
|
-
},
|
235
|
-
]);
|
236
|
-
|
237
|
-
this.config.projectType = projectType;
|
238
|
-
console.log(
|
239
|
-
chalk.green(
|
240
|
-
`✅ Project Type: ${
|
241
|
-
projectType === "greenfield"
|
242
|
-
? "Greenfield (New)"
|
243
|
-
: "Brownfield (Existing)"
|
244
|
-
}\n`
|
245
|
-
)
|
246
|
-
);
|
247
|
-
}
|
248
|
-
|
249
|
-
async selectIDE() {
|
250
|
-
console.log(chalk.yellow("🛠️ IDE Selection"));
|
251
|
-
console.log(
|
252
|
-
chalk.bold.yellow.bgRed(
|
253
|
-
" ⚠️ MULTISELECT: Use SPACEBAR to select multiple IDEs! "
|
254
|
-
)
|
255
|
-
);
|
256
|
-
console.log(chalk.gray("Select ALL IDEs that you use:\n"));
|
257
|
-
|
258
|
-
const { ides } = await inquirer.prompt([
|
259
|
-
{
|
260
|
-
type: "checkbox",
|
261
|
-
name: "ides",
|
262
|
-
message:
|
263
|
-
"🎯 Which IDEs do you use? (SPACEBAR = select, ENTER = confirm)",
|
264
|
-
choices: [
|
265
|
-
{ name: "🔵 Cursor", value: "cursor" },
|
266
|
-
{ name: "🟣 Claude Code CLI", value: "claude-code" },
|
267
|
-
{ name: "🟢 Windsurf", value: "windsurf" },
|
268
|
-
{ name: "🔶 VS Code + Cline", value: "cline" },
|
269
|
-
{ name: "🟠 Trae", value: "trae" },
|
270
|
-
{ name: "🔴 Roo Code", value: "roo" },
|
271
|
-
{ name: "🟪 Gemini CLI", value: "gemini" },
|
272
|
-
{ name: "⚫ GitHub Copilot", value: "github-copilot" },
|
273
|
-
],
|
274
|
-
validate: (input) => {
|
275
|
-
if (input.length === 0) {
|
276
|
-
return "Please select at least one IDE!";
|
277
|
-
}
|
278
|
-
return true;
|
279
|
-
},
|
280
|
-
},
|
281
|
-
]);
|
282
|
-
|
283
|
-
this.config.selectedIDEs = ides;
|
284
|
-
const ideNames = ides.map((ide) => this.getIDEName(ide)).join(", ");
|
285
|
-
console.log(chalk.green(`✅ IDEs: ${ideNames}\n`));
|
286
|
-
}
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
async detectTechStack() {
|
291
|
-
console.log(chalk.yellow("🔍 Tech Stack Detection"));
|
292
|
-
console.log(chalk.gray("Analyzing project environment and tech stack...\n"));
|
293
|
-
|
294
|
-
// Check for Flutter
|
295
|
-
const isFlutter = fs.existsSync(
|
296
|
-
path.join(this.projectRoot, "pubspec.yaml")
|
297
|
-
);
|
298
|
-
|
299
|
-
// Check for existing web frameworks
|
300
|
-
const hasPackageJson = fs.existsSync(
|
301
|
-
path.join(this.projectRoot, "package.json")
|
302
|
-
);
|
303
|
-
let webFramework = null;
|
304
|
-
|
305
|
-
if (hasPackageJson) {
|
306
|
-
try {
|
307
|
-
const packageJson = JSON.parse(
|
308
|
-
fs.readFileSync(path.join(this.projectRoot, "package.json"), "utf8")
|
309
|
-
);
|
310
|
-
if (packageJson.dependencies) {
|
311
|
-
const deps = Object.keys(packageJson.dependencies);
|
312
|
-
if (deps.includes("next")) webFramework = "next.js";
|
313
|
-
else if (deps.includes("react")) webFramework = "react";
|
314
|
-
else if (deps.includes("vue")) webFramework = "vue";
|
315
|
-
else if (deps.includes("@nuxt/core")) webFramework = "nuxt.js";
|
316
|
-
else if (deps.includes("@angular/core")) webFramework = "angular";
|
317
|
-
}
|
318
|
-
} catch (e) {
|
319
|
-
// ignore package.json parsing errors
|
320
|
-
}
|
321
|
-
}
|
322
|
-
|
323
|
-
// Auto-detect or ask user
|
324
|
-
if (isFlutter) {
|
325
|
-
console.log(chalk.green("✅ Flutter project detected!"));
|
326
|
-
this.config.techStack.platform = "flutter";
|
327
|
-
this.config.techStack.isFlutter = true;
|
328
|
-
this.config.techStack.hasUI = true;
|
329
|
-
console.log(chalk.cyan(" → Dart MCP Server will be configured"));
|
330
|
-
console.log(
|
331
|
-
chalk.cyan(" → Flutter Clean Architecture Agents will be loaded\n")
|
332
|
-
);
|
333
|
-
} else if (webFramework) {
|
334
|
-
console.log(chalk.green(`✅ ${webFramework} project detected!`));
|
335
|
-
this.config.techStack.platform = "web";
|
336
|
-
this.config.techStack.hasUI = true;
|
337
|
-
console.log(
|
338
|
-
chalk.cyan(" → shadcn/ui + v0.dev integration will be configured\n")
|
339
|
-
);
|
340
|
-
} else {
|
341
|
-
// Ask user for platform
|
342
|
-
const { platform } = await inquirer.prompt([
|
343
|
-
{
|
344
|
-
type: "list",
|
345
|
-
name: "platform",
|
346
|
-
message: "🎯 Which tech stack are you using?",
|
347
|
-
choices: [
|
348
|
-
{ name: "📱 Flutter Mobile App", value: "flutter" },
|
349
|
-
{ name: "🌐 Web App (React/Next.js/Vue)", value: "web" },
|
350
|
-
{ name: "🚀 Fullstack (Frontend + Backend)", value: "fullstack" },
|
351
|
-
{ name: "⚡ API/Backend Only", value: "api" },
|
352
|
-
{ name: "🤷 Not sure yet", value: "unknown" },
|
353
|
-
],
|
354
|
-
},
|
355
|
-
]);
|
356
|
-
|
357
|
-
this.config.techStack.platform = platform;
|
358
|
-
this.config.techStack.isFlutter = platform === "flutter";
|
359
|
-
this.config.techStack.hasUI = ["flutter", "web", "fullstack"].includes(
|
360
|
-
platform
|
361
|
-
);
|
362
|
-
|
363
|
-
if (platform === "flutter") {
|
364
|
-
console.log(chalk.cyan(" → Dart MCP Server will be configured"));
|
365
|
-
console.log(
|
366
|
-
chalk.cyan(" → Flutter Clean Architecture Agents will be loaded")
|
367
|
-
);
|
368
|
-
} else if (platform === "web" || platform === "fullstack") {
|
369
|
-
console.log(
|
370
|
-
chalk.cyan(" → shadcn/ui + v0.dev integration will be configured")
|
371
|
-
);
|
372
|
-
}
|
373
|
-
console.log("");
|
374
|
-
}
|
375
|
-
}
|
376
|
-
|
377
|
-
async collectProjectIdea() {
|
378
|
-
console.log(chalk.yellow("💡 Collecting Project Information"));
|
379
|
-
|
380
|
-
// For brownfield projects, skip detailed project idea collection
|
381
|
-
if (this.config.projectType === "brownfield") {
|
382
|
-
console.log(
|
383
|
-
chalk.gray("📁 Detected existing project - using current directory\n")
|
384
|
-
);
|
385
|
-
|
386
|
-
const dirName = path.basename(this.projectRoot);
|
387
|
-
this.config.projectName = dirName;
|
388
|
-
this.config.projectIdea = `Brownfield project: ${dirName}`;
|
389
|
-
this.config.targetUsers = "Existing project users";
|
390
|
-
|
391
|
-
console.log(chalk.green(`✅ Project identified: "${dirName}"\n`));
|
392
|
-
return;
|
393
|
-
}
|
394
|
-
|
395
|
-
// For greenfield projects, collect detailed information
|
396
|
-
console.log(chalk.gray("Describe your project concept:\n"));
|
397
|
-
|
398
|
-
const { projectIdea, projectName, targetUsers } = await inquirer.prompt([
|
399
|
-
{
|
400
|
-
type: "input",
|
401
|
-
name: "projectName",
|
402
|
-
message: "🏷️ What should your project be called?",
|
403
|
-
validate: (input) =>
|
404
|
-
input.length > 0 ? true : "Please enter a project name!",
|
405
|
-
},
|
406
|
-
{
|
407
|
-
type: "editor",
|
408
|
-
name: "projectIdea",
|
409
|
-
message: "💡 Describe your project idea (detailed):",
|
410
|
-
validate: (input) =>
|
411
|
-
input.length > 10
|
412
|
-
? true
|
413
|
-
: "Please describe your project in more detail!",
|
414
|
-
},
|
415
|
-
{
|
416
|
-
type: "input",
|
417
|
-
name: "targetUsers",
|
418
|
-
message: "👥 Who are your target groups/users?",
|
419
|
-
validate: (input) =>
|
420
|
-
input.length > 0 ? true : "Please describe your target audience!",
|
421
|
-
},
|
422
|
-
]);
|
423
|
-
|
424
|
-
this.config.projectName = projectName;
|
425
|
-
this.config.projectIdea = projectIdea;
|
426
|
-
this.config.targetUsers = targetUsers;
|
427
|
-
|
428
|
-
console.log(chalk.green(`✅ Project idea captured: "${projectName}"\n`));
|
429
|
-
}
|
430
|
-
|
431
|
-
async generateBrownfieldProjectConfig() {
|
432
|
-
console.log(chalk.yellow("📋 Configuring brownfield project..."));
|
433
|
-
|
434
|
-
// Auto-set project name from directory name
|
435
|
-
const dirName = path.basename(this.projectRoot);
|
436
|
-
this.config.projectName = dirName;
|
437
|
-
|
438
|
-
console.log(chalk.cyan(`🏷️ Project name: ${dirName}`));
|
439
|
-
console.log(chalk.gray(" → Using directory name as project name"));
|
440
|
-
|
441
|
-
// Set default values for brownfield projects
|
442
|
-
this.config.projectIdea = `Enhancing existing ${dirName} project with AI agents`;
|
443
|
-
this.config.targetUsers = "Existing project stakeholders and development team";
|
444
|
-
|
445
|
-
// Auto-create docs/prd.md if it doesn't exist
|
446
|
-
const docsDir = path.join(this.projectRoot, "docs");
|
447
|
-
const prdPath = path.join(docsDir, "prd.md");
|
448
|
-
|
449
|
-
if (!fs.existsSync(prdPath)) {
|
450
|
-
if (!fs.existsSync(docsDir)) {
|
451
|
-
fs.mkdirSync(docsDir, { recursive: true });
|
452
|
-
}
|
453
|
-
|
454
|
-
const prdTemplate = this.config.techStack?.isFlutter ?
|
455
|
-
"flutter-mobile-prd-tmpl.yaml" : "prd-tmpl.yaml";
|
456
|
-
|
457
|
-
console.log(chalk.cyan("📄 Creating docs/prd.md automatically"));
|
458
|
-
console.log(chalk.gray(` → Using template: ${prdTemplate}`));
|
459
|
-
|
460
|
-
const prdContent = `# Product Requirements Document - ${dirName}
|
461
|
-
|
462
|
-
## Project Overview
|
463
|
-
This is a brownfield project enhancement for ${dirName}.
|
464
|
-
|
465
|
-
**Note:** Please fill in your specific requirements, features, and objectives below.
|
466
|
-
|
467
|
-
## Current State Analysis
|
468
|
-
- [ ] Document existing functionality
|
469
|
-
- [ ] Identify technical debt
|
470
|
-
- [ ] List current features
|
471
|
-
- [ ] Note architecture patterns
|
472
|
-
|
473
|
-
## Enhancement Goals
|
474
|
-
- [ ] Define new features to add
|
475
|
-
- [ ] List improvements to make
|
476
|
-
- [ ] Specify performance goals
|
477
|
-
- [ ] Document user experience improvements
|
478
|
-
|
479
|
-
## Technical Requirements
|
480
|
-
- [ ] Document current tech stack
|
481
|
-
- [ ] List required integrations
|
482
|
-
- [ ] Define API requirements
|
483
|
-
- [ ] Specify database changes
|
484
|
-
|
485
|
-
## Next Steps
|
486
|
-
1. Fill in the requirements above
|
487
|
-
2. Run \`@architect\` to analyze current architecture
|
488
|
-
3. Use \`@sm\` to create feature stories
|
489
|
-
4. Start implementation with \`@dev\`
|
490
|
-
`;
|
491
|
-
|
492
|
-
fs.writeFileSync(prdPath, prdContent);
|
493
|
-
console.log(chalk.green("✅ docs/prd.md created successfully"));
|
494
|
-
} else {
|
495
|
-
console.log(chalk.cyan("📄 docs/prd.md already exists"));
|
496
|
-
}
|
497
|
-
|
498
|
-
console.log(chalk.green(`✅ Brownfield project configured: "${dirName}"\n`));
|
499
|
-
}
|
500
|
-
|
501
|
-
async createProjectPlan() {
|
502
|
-
console.log(chalk.yellow("📋 Creating project plan..."));
|
503
|
-
console.log(chalk.gray("Based on your idea and project type\n"));
|
504
|
-
|
505
|
-
// Normally team-fullstack.yaml would be used here
|
506
|
-
const plan = this.generateProjectPlan();
|
507
|
-
this.config.projectPlan = plan;
|
508
|
-
|
509
|
-
console.log(chalk.cyan("📋 Your Project Plan:"));
|
510
|
-
console.log(chalk.white("─".repeat(50)));
|
511
|
-
console.log(plan);
|
512
|
-
console.log(chalk.white("─".repeat(50) + "\n"));
|
513
|
-
}
|
514
|
-
|
515
|
-
async approvePlan() {
|
516
|
-
const { approved, changes } = await inquirer.prompt([
|
517
|
-
{
|
518
|
-
type: "confirm",
|
519
|
-
name: "approved",
|
520
|
-
message: "✅ Are you satisfied with this plan?",
|
521
|
-
default: true,
|
522
|
-
},
|
523
|
-
{
|
524
|
-
type: "input",
|
525
|
-
name: "changes",
|
526
|
-
message:
|
527
|
-
"📝 What changes would you like? (or ENTER for no changes)",
|
528
|
-
when: (answers) => !answers.approved,
|
529
|
-
},
|
530
|
-
]);
|
531
|
-
|
532
|
-
if (!approved && changes) {
|
533
|
-
console.log(chalk.yellow("📝 Adapting plan..."));
|
534
|
-
this.config.planChanges = changes;
|
535
|
-
// Plan would be adapted here
|
536
|
-
console.log(chalk.green("✅ Plan has been adapted!\n"));
|
537
|
-
} else {
|
538
|
-
console.log(
|
539
|
-
chalk.green("✅ Plan approved - development can start!\n")
|
540
|
-
);
|
541
|
-
}
|
542
|
-
|
543
|
-
this.config.planApproved = true;
|
544
|
-
}
|
545
|
-
|
546
|
-
generateProjectPlan() {
|
547
|
-
const { projectType, projectName, projectIdea, targetUsers } = this.config;
|
548
|
-
|
549
|
-
return `🎯 PROJECT PLAN: ${projectName}
|
550
|
-
|
551
|
-
📊 PROJECT TYPE: ${
|
552
|
-
projectType === "greenfield"
|
553
|
-
? "Greenfield (New Project)"
|
554
|
-
: "Brownfield (Existing Project)"
|
555
|
-
}
|
556
|
-
👥 TARGET AUDIENCE: ${targetUsers}
|
557
|
-
|
558
|
-
💡 PROJECT IDEA:
|
559
|
-
${projectIdea}
|
560
|
-
|
561
|
-
🚀 DEVELOPMENT PIPELINE:
|
562
|
-
${
|
563
|
-
projectType === "greenfield"
|
564
|
-
? `
|
565
|
-
1. 📋 PO (Product Owner) → Create PRD
|
566
|
-
2. 🏗️ Architect → Design system architecture
|
567
|
-
3. 🎨 UX Expert → UI/UX Design
|
568
|
-
4. 📝 Story Master → Break down user stories
|
569
|
-
5. 💻 Developer → Implement features
|
570
|
-
6. ✅ QA Expert → Testing & validation
|
571
|
-
7. 📊 SM (Scrum Master) → Sprint coordination
|
572
|
-
`
|
573
|
-
: `
|
574
|
-
1. 📋 PO → Analyze existing documentation
|
575
|
-
2. 🏗️ Architect → Architecture review
|
576
|
-
3. 📝 Story Master → Plan new features
|
577
|
-
4. 💻 Developer → Integrate features into existing base
|
578
|
-
5. ✅ QA Expert → Regression testing
|
579
|
-
6. 📊 SM → Change management
|
580
|
-
`
|
581
|
-
}
|
582
|
-
|
583
|
-
🎮 ONE-CLICK COMMANDS:
|
584
|
-
- /start → Start entire workflow
|
585
|
-
- /plan → Detailed planning
|
586
|
-
- /develop → Begin development
|
587
|
-
- /review → Code review
|
588
|
-
- /deploy → Prepare deployment`;
|
589
|
-
}
|
590
|
-
|
591
|
-
async setupBMADCoreConfig() {
|
592
|
-
console.log(chalk.yellow("⚙️ Setting up BMAD Core Configuration..."));
|
593
|
-
|
594
|
-
// Create .bmad-core directory
|
595
|
-
const bmadCoreDir = path.join(this.appiqPath, ".bmad-core");
|
596
|
-
if (!fs.existsSync(bmadCoreDir)) {
|
597
|
-
fs.mkdirSync(bmadCoreDir, { recursive: true });
|
598
|
-
}
|
599
|
-
|
600
|
-
// Create core-config.yaml
|
601
|
-
const coreConfigPath = path.join(bmadCoreDir, "core-config.yaml");
|
602
|
-
fs.writeFileSync(coreConfigPath, this.generateCoreConfig());
|
603
|
-
|
604
|
-
// Create technical-preferences.md
|
605
|
-
const techPrefsPath = path.join(bmadCoreDir, "data");
|
606
|
-
if (!fs.existsSync(techPrefsPath)) {
|
607
|
-
fs.mkdirSync(techPrefsPath, { recursive: true });
|
608
|
-
}
|
609
|
-
fs.writeFileSync(
|
610
|
-
path.join(techPrefsPath, "technical-preferences.md"),
|
611
|
-
this.generateTechnicalPreferences()
|
612
|
-
);
|
613
|
-
|
614
|
-
console.log(chalk.green("✅ BMAD Core Configuration bereit!\n"));
|
615
|
-
}
|
616
|
-
|
617
|
-
async setupDocumentTemplates() {
|
618
|
-
console.log(chalk.yellow("📄 Document Templates & Struktur einrichten..."));
|
619
|
-
|
620
|
-
// Create docs directory structure
|
621
|
-
const docsDir = path.join(this.projectRoot, "docs");
|
622
|
-
const archDir = path.join(docsDir, "architecture");
|
623
|
-
const storiesDir = path.join(docsDir, "stories");
|
624
|
-
|
625
|
-
[docsDir, archDir, storiesDir].forEach((dir) => {
|
626
|
-
if (!fs.existsSync(dir)) {
|
627
|
-
fs.mkdirSync(dir, { recursive: true });
|
628
|
-
}
|
629
|
-
});
|
630
|
-
|
631
|
-
// Create templates
|
632
|
-
const templatesDir = path.join(this.appiqPath, "templates");
|
633
|
-
if (!fs.existsSync(templatesDir)) {
|
634
|
-
fs.mkdirSync(templatesDir, { recursive: true });
|
635
|
-
}
|
636
|
-
|
637
|
-
// PRD Template
|
638
|
-
fs.writeFileSync(
|
639
|
-
path.join(templatesDir, "prd-template.md"),
|
640
|
-
this.generatePRDTemplate()
|
641
|
-
);
|
642
|
-
|
643
|
-
// Architecture Template
|
644
|
-
fs.writeFileSync(
|
645
|
-
path.join(templatesDir, "architecture-template.md"),
|
646
|
-
this.generateArchitectureTemplate()
|
647
|
-
);
|
648
|
-
|
649
|
-
// Story Template
|
650
|
-
fs.writeFileSync(
|
651
|
-
path.join(templatesDir, "story-template.md"),
|
652
|
-
this.generateStoryTemplate()
|
653
|
-
);
|
654
|
-
|
655
|
-
// Create initial PRD if planning is complete
|
656
|
-
if (this.config.planApproved) {
|
657
|
-
fs.writeFileSync(path.join(docsDir, "prd.md"), this.generateInitialPRD());
|
658
|
-
}
|
659
|
-
|
660
|
-
console.log(chalk.green("✅ Document Templates created!\n"));
|
661
|
-
}
|
662
|
-
|
663
|
-
async setupAgentDependencies() {
|
664
|
-
console.log(chalk.yellow("🔗 Setting up Agent Dependencies System..."));
|
665
|
-
|
666
|
-
const agentsDir = path.join(this.appiqPath, "agents");
|
667
|
-
const tasksDir = path.join(this.appiqPath, "tasks");
|
668
|
-
const dataDir = path.join(this.appiqPath, "data");
|
669
|
-
|
670
|
-
// Create directories
|
671
|
-
[tasksDir, dataDir].forEach((dir) => {
|
672
|
-
if (!fs.existsSync(dir)) {
|
673
|
-
fs.mkdirSync(dir, { recursive: true });
|
674
|
-
}
|
675
|
-
});
|
676
|
-
|
677
|
-
// Create BMAD Knowledge Base
|
678
|
-
fs.writeFileSync(
|
679
|
-
path.join(dataDir, "bmad-kb.md"),
|
680
|
-
this.generateBMADKnowledgeBase()
|
681
|
-
);
|
682
|
-
|
683
|
-
// Create essential tasks
|
684
|
-
fs.writeFileSync(
|
685
|
-
path.join(tasksDir, "create-doc.md"),
|
686
|
-
this.generateCreateDocTask()
|
687
|
-
);
|
688
|
-
fs.writeFileSync(
|
689
|
-
path.join(tasksDir, "shard-doc.md"),
|
690
|
-
this.generateShardDocTask()
|
691
|
-
);
|
692
|
-
fs.writeFileSync(
|
693
|
-
path.join(tasksDir, "validate-story.md"),
|
694
|
-
this.generateValidateStoryTask()
|
695
|
-
);
|
696
|
-
|
697
|
-
// Add Flutter-specific agents if Flutter project
|
698
|
-
if (this.config.techStack.isFlutter) {
|
699
|
-
await this.addFlutterAgents();
|
700
|
-
}
|
701
|
-
|
702
|
-
// Update agents with proper dependencies
|
703
|
-
await this.updateAgentsWithDependencies();
|
704
|
-
|
705
|
-
console.log(chalk.green("✅ Agent Dependencies System bereit!\n"));
|
706
|
-
}
|
707
|
-
|
708
|
-
async setupBMADOrchestration() {
|
709
|
-
console.log(chalk.yellow("🎭 BMAD Full Orchestration einrichten..."));
|
710
|
-
|
711
|
-
// Create orchestration config based on BMAD Flow
|
712
|
-
const orchestrationConfig = {
|
713
|
-
planningPhase: {
|
714
|
-
agents: ["analyst", "pm", "ux-expert", "architect", "po"],
|
715
|
-
workflow:
|
716
|
-
this.config.projectType === "greenfield"
|
717
|
-
? "greenfield-planning"
|
718
|
-
: "brownfield-planning",
|
719
|
-
},
|
720
|
-
developmentPhase: {
|
721
|
-
agents: ["sm", "po", "dev", "qa"],
|
722
|
-
workflow: "core-development-cycle",
|
723
|
-
},
|
724
|
-
transitions: {
|
725
|
-
planningToIDE: "document-sharding",
|
726
|
-
criticalCommitPoints: ["before-next-story", "after-qa-approval"],
|
727
|
-
},
|
728
|
-
};
|
729
|
-
|
730
|
-
// Generate BMAD Orchestration
|
731
|
-
const orchestrationPath = path.join(
|
732
|
-
this.appiqPath,
|
733
|
-
"bmad-orchestration.yaml"
|
734
|
-
);
|
735
|
-
fs.writeFileSync(
|
736
|
-
orchestrationPath,
|
737
|
-
this.generateBMADOrchestration(orchestrationConfig)
|
738
|
-
);
|
739
|
-
|
740
|
-
// Create workflow guides
|
741
|
-
const workflowsDir = path.join(this.appiqPath, "workflows");
|
742
|
-
if (!fs.existsSync(workflowsDir)) {
|
743
|
-
fs.mkdirSync(workflowsDir, { recursive: true });
|
744
|
-
}
|
745
|
-
|
746
|
-
fs.writeFileSync(
|
747
|
-
path.join(workflowsDir, "planning-workflow.md"),
|
748
|
-
this.generatePlanningWorkflow()
|
749
|
-
);
|
750
|
-
fs.writeFileSync(
|
751
|
-
path.join(workflowsDir, "development-cycle.md"),
|
752
|
-
this.generateDevelopmentCycle()
|
753
|
-
);
|
754
|
-
fs.writeFileSync(
|
755
|
-
path.join(workflowsDir, "document-sharding.md"),
|
756
|
-
this.generateDocumentSharding()
|
757
|
-
);
|
758
|
-
|
759
|
-
console.log(chalk.green("✅ BMAD Full Orchestration bereit!\n"));
|
760
|
-
}
|
761
|
-
|
762
|
-
generateCoreConfig() {
|
763
|
-
return `# BMAD Core Configuration
|
764
|
-
# Built with ❤️ based on Bmad-Method
|
765
|
-
|
766
|
-
project:
|
767
|
-
name: ${this.config.projectName || "Unbenanntes Projekt"}
|
768
|
-
type: ${this.config.projectType}
|
769
|
-
created: ${new Date().toISOString()}
|
770
|
-
|
771
|
-
# Files that dev agent should ALWAYS load into context
|
772
|
-
devLoadAlwaysFiles:
|
773
|
-
- docs/architecture/coding-standards.md
|
774
|
-
- docs/architecture/tech-stack.md
|
775
|
-
- docs/architecture/project-structure.md
|
776
|
-
|
777
|
-
# Document paths configuration
|
778
|
-
documentPaths:
|
779
|
-
prd: "docs/prd.md"
|
780
|
-
architecture: "docs/architecture.md"
|
781
|
-
stories: "docs/stories/"
|
782
|
-
templates: "appiq-solution/templates/"
|
783
|
-
|
784
|
-
# Agent dependencies configuration
|
785
|
-
dependencies:
|
786
|
-
templates:
|
787
|
-
- prd-template.md
|
788
|
-
- architecture-template.md
|
789
|
-
- story-template.md
|
790
|
-
tasks:
|
791
|
-
- create-doc.md
|
792
|
-
- shard-doc.md
|
793
|
-
- validate-story.md
|
794
|
-
data:
|
795
|
-
- bmad-kb.md
|
796
|
-
- technical-preferences.md
|
797
|
-
`;
|
798
|
-
}
|
799
|
-
|
800
|
-
generateTechnicalPreferences() {
|
801
|
-
return `# Technical Preferences
|
802
|
-
|
803
|
-
*Diese Datei hilft PM und Architect dabei, Ihre bevorzugten Design-Patterns und Technologien zu berücksichtigen.*
|
804
|
-
|
805
|
-
## Projekt: ${this.config.projectName || "Unbenanntes Projekt"}
|
806
|
-
**Platform:** ${this.config.techStack.platform || "nicht definiert"}
|
807
|
-
|
808
|
-
### Bevorzugte Technologien
|
809
|
-
|
810
|
-
${
|
811
|
-
this.config.techStack.isFlutter
|
812
|
-
? `
|
813
|
-
**📱 Flutter Mobile Development:**
|
814
|
-
- **Framework:** Flutter 3.35+ (beta), Dart 3.9+
|
815
|
-
- **Architecture:** Clean Architecture with Feature-based structure
|
816
|
-
- **State Management:** Cubit/BLoC pattern (preferred), Riverpod (alternative)
|
817
|
-
- **Dependency Injection:** GetIt + Injectable
|
818
|
-
- **Code Generation:** Freezed, Build Runner
|
819
|
-
- **Backend Integration:** Firebase, Supabase, REST APIs, GraphQL
|
820
|
-
- **Testing:** Unit Testing, Widget Testing, Integration Testing, Golden Tests
|
821
|
-
|
822
|
-
**🔌 Flutter MCP Integration:**
|
823
|
-
- **Dart MCP Server:** Automatisch konfiguriert für AI-Assistenten
|
824
|
-
- **Hot Reload:** Via MCP für Live-Development
|
825
|
-
- **Package Management:** pub.dev Integration via MCP
|
826
|
-
- **Error Analysis:** Automatische Fehlererkennung via MCP
|
827
|
-
|
828
|
-
**📦 Recommended Packages:**
|
829
|
-
- **UI:** Material 3, Cupertino (iOS-style)
|
830
|
-
- **Navigation:** go_router
|
831
|
-
- **HTTP:** dio
|
832
|
-
- **Local Storage:** shared_preferences, hive
|
833
|
-
- **Image:** cached_network_image
|
834
|
-
`
|
835
|
-
: ""
|
836
|
-
}
|
837
|
-
|
838
|
-
${
|
839
|
-
this.config.techStack.platform === "web" ||
|
840
|
-
this.config.techStack.platform === "fullstack"
|
841
|
-
? `
|
842
|
-
**🌐 Web Development:**
|
843
|
-
- **Framework:** React/Next.js, Vue/Nuxt, Angular
|
844
|
-
- **UI Library:** shadcn/ui (preferred), v0.dev components, Material-UI, Chakra UI
|
845
|
-
- **Styling:** Tailwind CSS, CSS-in-JS, SCSS
|
846
|
-
- **AI Design:** v0.dev für Rapid Prototyping
|
847
|
-
|
848
|
-
**🎨 shadcn/ui + v0.dev Integration:**
|
849
|
-
- **Design System:** shadcn/ui als Basis-Komponenten
|
850
|
-
- **AI-Generated Components:** v0.dev für schnelle UI-Erstellung
|
851
|
-
- **Customization:** Tailwind CSS für individuelle Anpassungen
|
852
|
-
- **Accessibility:** Radix-UI Primitives als Basis
|
853
|
-
`
|
854
|
-
: ""
|
855
|
-
}
|
856
|
-
|
857
|
-
${
|
858
|
-
this.config.projectType === "greenfield" && !this.config.techStack.isFlutter
|
859
|
-
? `
|
860
|
-
**Backend:**
|
861
|
-
- Runtime: Node.js, Python, Go
|
862
|
-
- Framework: Express, FastAPI, Gin
|
863
|
-
- Database: PostgreSQL, MongoDB, Redis
|
864
|
-
|
865
|
-
**DevOps:**
|
866
|
-
- Deployment: Vercel, Railway, AWS
|
867
|
-
- CI/CD: GitHub Actions, GitLab CI
|
868
|
-
- Monitoring: Sentry, LogRocket
|
869
|
-
`
|
870
|
-
: ""
|
871
|
-
}
|
872
|
-
|
873
|
-
${
|
874
|
-
this.config.projectType === "brownfield"
|
875
|
-
? `
|
876
|
-
**Bestehende Technologien erweitern:**
|
877
|
-
- Kompatibilität mit bestehender Code-Basis beachten
|
878
|
-
- Minimale neue Dependencies
|
879
|
-
- Schrittweise Migration wenn nötig
|
880
|
-
`
|
881
|
-
: ""
|
882
|
-
}
|
883
|
-
|
884
|
-
### Design Patterns
|
885
|
-
${
|
886
|
-
this.config.techStack.isFlutter
|
887
|
-
? `
|
888
|
-
- **Clean Architecture** (Presentation → Domain → Data)
|
889
|
-
- **Feature-based Structure** (/features/auth, /features/dashboard)
|
890
|
-
- **Repository Pattern** für Datenaccess
|
891
|
-
- **Cubit Pattern** für State Management
|
892
|
-
- **SOLID Principles** anwenden
|
893
|
-
`
|
894
|
-
: `
|
895
|
-
- **Architektur:** Clean Architecture, Hexagonal, MVC
|
896
|
-
- **Code Style:** DRY, SOLID Principles, KISS
|
897
|
-
${
|
898
|
-
this.config.techStack.hasUI
|
899
|
-
? "- **Design System:** shadcn/ui für konsistente UI"
|
900
|
-
: ""
|
901
|
-
}
|
902
|
-
`
|
903
|
-
}
|
904
|
-
|
905
|
-
### Testing & Quality
|
906
|
-
${
|
907
|
-
this.config.techStack.isFlutter
|
908
|
-
? `
|
909
|
-
- **Dart Analysis:** Very strict linting rules
|
910
|
-
- **Flutter Lints:** Official Flutter linting package
|
911
|
-
- **Testing:** Minimum 80% code coverage
|
912
|
-
- **Golden Tests:** UI consistency tests
|
913
|
-
- **Integration Tests:** End-to-end testing
|
914
|
-
`
|
915
|
-
: `
|
916
|
-
- **Testing:** TDD/BDD, Unit + Integration Tests
|
917
|
-
- **Documentation:** README-driven, Inline Comments
|
918
|
-
- **Code Quality:** ESLint + Prettier (wenn applicable)
|
919
|
-
${
|
920
|
-
this.config.techStack.hasUI
|
921
|
-
? "- **Component Testing:** Storybook für Component Documentation"
|
922
|
-
: ""
|
923
|
-
}
|
924
|
-
`
|
925
|
-
}
|
926
|
-
|
927
|
-
### AI-Integration & MCP
|
928
|
-
${
|
929
|
-
this.config.techStack.isFlutter
|
930
|
-
? `
|
931
|
-
- **Dart MCP Server:** Für direkten AI-Zugriff auf Flutter Tools
|
932
|
-
- **Flutter DevTools:** MCP-basierte AI-Assistenz
|
933
|
-
- **Package Discovery:** AI-gestützte pub.dev Suche
|
934
|
-
- **Code Analysis:** Automatische Fehlererkennung und -behebung
|
935
|
-
`
|
936
|
-
: ""
|
937
|
-
}
|
938
|
-
${
|
939
|
-
this.config.techStack.hasUI && !this.config.techStack.isFlutter
|
940
|
-
? `
|
941
|
-
- **v0.dev Integration:** AI-generierte UI-Komponenten
|
942
|
-
- **shadcn/ui Library:** KI-optimierte Component Library
|
943
|
-
- **Design Tokens:** Konsistente AI-generierte Designs
|
944
|
-
`
|
945
|
-
: ""
|
946
|
-
}
|
947
|
-
|
948
|
-
### Coding Standards
|
949
|
-
- **Naming:** ${
|
950
|
-
this.config.techStack.isFlutter
|
951
|
-
? "lowerCamelCase für Variablen, PascalCase für Classes"
|
952
|
-
: "camelCase für Variablen, PascalCase für Components"
|
953
|
-
}
|
954
|
-
- **Files:** ${
|
955
|
-
this.config.techStack.isFlutter
|
956
|
-
? "snake_case für Dart Dateien"
|
957
|
-
: "kebab-case für Dateien, PascalCase für Components"
|
958
|
-
}
|
959
|
-
- **Functions:** Kleine, fokussierte Funktionen (<50 Zeilen)
|
960
|
-
- **Comments:** Erkläre WARUM, nicht WAS
|
961
|
-
|
962
|
-
### Präferenzen
|
963
|
-
- **Performance:** Optimierung vor Abstraktion
|
964
|
-
- **Security:** Security-by-Design
|
965
|
-
- **Accessibility:** ${
|
966
|
-
this.config.techStack.isFlutter
|
967
|
-
? "Flutter Accessibility Widget support"
|
968
|
-
: "WCAG 2.1 AA Standard"
|
969
|
-
}
|
970
|
-
- **Mobile:** Mobile-First Approach
|
971
|
-
|
972
|
-
---
|
973
|
-
*Platform: ${this.config.techStack.platform}*
|
974
|
-
*MCP Configured: ${
|
975
|
-
this.config.techStack.isFlutter ? "Dart MCP ✅" : "Standard"
|
976
|
-
}*
|
977
|
-
*Aktualisiert: ${new Date().toLocaleDateString("de-DE")}*
|
978
|
-
`;
|
979
|
-
}
|
980
|
-
|
981
|
-
generatePRDTemplate() {
|
982
|
-
return `# Product Requirements Document (PRD)
|
983
|
-
|
984
|
-
## Projekt: [PROJECT_NAME]
|
985
|
-
|
986
|
-
### 1. Problem Statement
|
987
|
-
*Welches Problem lösen wir?*
|
988
|
-
|
989
|
-
### 2. Solution Overview
|
990
|
-
*Wie lösen wir das Problem?*
|
991
|
-
|
992
|
-
### 3. Target Users
|
993
|
-
*Wer sind unsere Zielgruppen?*
|
994
|
-
|
995
|
-
### 4. Functional Requirements (FRs)
|
996
|
-
*Was muss das System können?*
|
997
|
-
|
998
|
-
#### 4.1 Core Features
|
999
|
-
- [ ] Feature 1
|
1000
|
-
- [ ] Feature 2
|
1001
|
-
|
1002
|
-
#### 4.2 Advanced Features
|
1003
|
-
- [ ] Advanced Feature 1
|
1004
|
-
- [ ] Advanced Feature 2
|
1005
|
-
|
1006
|
-
### 5. Non-Functional Requirements (NFRs)
|
1007
|
-
*Wie gut muss das System funktionieren?*
|
1008
|
-
|
1009
|
-
#### 5.1 Performance
|
1010
|
-
- Response Time: < 200ms
|
1011
|
-
- Throughput: [SPECIFY]
|
1012
|
-
|
1013
|
-
#### 5.2 Security
|
1014
|
-
- Authentication: [METHOD]
|
1015
|
-
- Authorization: [RBAC/ABAC]
|
1016
|
-
|
1017
|
-
#### 5.3 Scalability
|
1018
|
-
- Users: [NUMBER]
|
1019
|
-
- Data: [VOLUME]
|
1020
|
-
|
1021
|
-
### 6. User Stories & Epics
|
1022
|
-
|
1023
|
-
#### Epic 1: [EPIC_NAME]
|
1024
|
-
- **Story 1.1:** Als [USER] möchte ich [ACTION] um [BENEFIT]
|
1025
|
-
- **Story 1.2:** Als [USER] möchte ich [ACTION] um [BENEFIT]
|
1026
|
-
|
1027
|
-
#### Epic 2: [EPIC_NAME]
|
1028
|
-
- **Story 2.1:** Als [USER] möchte ich [ACTION] um [BENEFIT]
|
1029
|
-
- **Story 2.2:** Als [USER] möchte ich [ACTION] um [BENEFIT]
|
1030
|
-
|
1031
|
-
### 7. Success Metrics
|
1032
|
-
*Wie messen wir Erfolg?*
|
1033
|
-
|
1034
|
-
- Metric 1: [DEFINITION]
|
1035
|
-
- Metric 2: [DEFINITION]
|
1036
|
-
|
1037
|
-
---
|
1038
|
-
*Erstellt mit Appiq Solution - Built with ❤️ based on Bmad-Method*
|
1039
|
-
`;
|
1040
|
-
}
|
1041
|
-
|
1042
|
-
generateArchitectureTemplate() {
|
1043
|
-
return `# System Architecture
|
1044
|
-
|
1045
|
-
## Projekt: [PROJECT_NAME]
|
1046
|
-
|
1047
|
-
### 1. Architecture Overview
|
1048
|
-
*High-level Systemübersicht*
|
1049
|
-
|
1050
|
-
### 2. Technology Stack
|
1051
|
-
|
1052
|
-
#### Frontend
|
1053
|
-
- Framework: [FRAMEWORK]
|
1054
|
-
- State Management: [STATE_MANAGEMENT]
|
1055
|
-
- Styling: [STYLING_SOLUTION]
|
1056
|
-
|
1057
|
-
#### Backend
|
1058
|
-
- Runtime: [RUNTIME]
|
1059
|
-
- Framework: [FRAMEWORK]
|
1060
|
-
- Database: [DATABASE]
|
1061
|
-
|
1062
|
-
#### Infrastructure
|
1063
|
-
- Hosting: [HOSTING_PLATFORM]
|
1064
|
-
- CI/CD: [CI_CD_SOLUTION]
|
1065
|
-
|
1066
|
-
### 3. System Components
|
1067
|
-
|
1068
|
-
#### 3.1 Frontend Components
|
1069
|
-
- Component Library
|
1070
|
-
- State Management
|
1071
|
-
- Routing
|
1072
|
-
- API Layer
|
1073
|
-
|
1074
|
-
#### 3.2 Backend Services
|
1075
|
-
- API Layer
|
1076
|
-
- Business Logic
|
1077
|
-
- Data Access Layer
|
1078
|
-
- External Integrations
|
1079
|
-
|
1080
|
-
### 4. Data Models
|
1081
|
-
|
1082
|
-
#### User Model
|
1083
|
-
\`\`\`
|
1084
|
-
{
|
1085
|
-
id: string
|
1086
|
-
email: string
|
1087
|
-
name: string
|
1088
|
-
createdAt: Date
|
1089
|
-
}
|
1090
|
-
\`\`\`
|
1091
|
-
|
1092
|
-
### 5. API Design
|
1093
|
-
|
1094
|
-
#### Authentication
|
1095
|
-
- POST /api/auth/login
|
1096
|
-
- POST /api/auth/register
|
1097
|
-
- POST /api/auth/logout
|
1098
|
-
|
1099
|
-
#### Core Resources
|
1100
|
-
- GET /api/[resource]
|
1101
|
-
- POST /api/[resource]
|
1102
|
-
- PUT /api/[resource]/:id
|
1103
|
-
- DELETE /api/[resource]/:id
|
1104
|
-
|
1105
|
-
### 6. Security Considerations
|
1106
|
-
- Authentication Strategy
|
1107
|
-
- Authorization Model
|
1108
|
-
- Data Validation
|
1109
|
-
- Rate Limiting
|
1110
|
-
|
1111
|
-
### 7. Performance Considerations
|
1112
|
-
- Caching Strategy
|
1113
|
-
- Database Optimization
|
1114
|
-
- CDN Usage
|
1115
|
-
- Lazy Loading
|
1116
|
-
|
1117
|
-
### 8. Deployment Architecture
|
1118
|
-
- Development Environment
|
1119
|
-
- Staging Environment
|
1120
|
-
- Production Environment
|
1121
|
-
|
1122
|
-
---
|
1123
|
-
*Erstellt mit Appiq Solution - Built with ❤️ based on Bmad-Method*
|
1124
|
-
`;
|
1125
|
-
}
|
1126
|
-
|
1127
|
-
generateStoryTemplate() {
|
1128
|
-
return `# User Story: [STORY_TITLE]
|
1129
|
-
|
1130
|
-
## Story Details
|
1131
|
-
**Als** [USER_TYPE]
|
1132
|
-
**möchte ich** [ACTION]
|
1133
|
-
**um** [BENEFIT]
|
1134
|
-
|
1135
|
-
## Acceptance Criteria
|
1136
|
-
- [ ] Criterion 1
|
1137
|
-
- [ ] Criterion 2
|
1138
|
-
- [ ] Criterion 3
|
1139
|
-
|
1140
|
-
## Technical Tasks
|
1141
|
-
- [ ] Task 1: [DESCRIPTION]
|
1142
|
-
- [ ] Task 2: [DESCRIPTION]
|
1143
|
-
- [ ] Task 3: [DESCRIPTION]
|
1144
|
-
|
1145
|
-
## Definition of Done
|
1146
|
-
- [ ] Code implemented and tested
|
1147
|
-
- [ ] Unit tests written and passing
|
1148
|
-
- [ ] Integration tests passing
|
1149
|
-
- [ ] Code reviewed and approved
|
1150
|
-
- [ ] Documentation updated
|
1151
|
-
- [ ] Deployed to staging
|
1152
|
-
- [ ] User acceptance testing completed
|
1153
|
-
|
1154
|
-
## Dependencies
|
1155
|
-
- [ ] Dependency 1
|
1156
|
-
- [ ] Dependency 2
|
1157
|
-
|
1158
|
-
## Estimation
|
1159
|
-
**Story Points:** [POINTS]
|
1160
|
-
**Estimated Hours:** [HOURS]
|
1161
|
-
|
1162
|
-
## Notes
|
1163
|
-
*Zusätzliche Notizen und Überlegungen*
|
1164
|
-
|
1165
|
-
---
|
1166
|
-
**Sprint:** [SPRINT_NUMBER]
|
1167
|
-
**Assigned to:** [DEVELOPER]
|
1168
|
-
**Status:** [TODO/IN_PROGRESS/REVIEW/DONE]
|
1169
|
-
|
1170
|
-
---
|
1171
|
-
*Erstellt mit Appiq Solution - Built with ❤️ based on Bmad-Method*
|
1172
|
-
`;
|
1173
|
-
}
|
1174
|
-
|
1175
|
-
generateInitialPRD() {
|
1176
|
-
const { projectName, projectIdea, targetUsers, projectType } = this.config;
|
1177
|
-
|
1178
|
-
return `# Product Requirements Document (PRD)
|
1179
|
-
|
1180
|
-
## Projekt: ${projectName}
|
1181
|
-
|
1182
|
-
### 1. Problem Statement
|
1183
|
-
${projectIdea}
|
1184
|
-
|
1185
|
-
### 2. Target Users
|
1186
|
-
${targetUsers}
|
1187
|
-
|
1188
|
-
### 3. Project Type
|
1189
|
-
${
|
1190
|
-
projectType === "greenfield"
|
1191
|
-
? "✨ Greenfield (Neues Projekt)"
|
1192
|
-
: "🔧 Brownfield (Bestehendes Projekt)"
|
1193
|
-
}
|
1194
|
-
|
1195
|
-
### 4. Functional Requirements (FRs)
|
1196
|
-
*Diese Sektion wird durch den PM Agent vervollständigt*
|
1197
|
-
|
1198
|
-
#### 4.1 Core Features
|
1199
|
-
- [ ] Feature wird durch PM definiert
|
1200
|
-
|
1201
|
-
### 5. Non-Functional Requirements (NFRs)
|
1202
|
-
*Diese Sektion wird durch den Architect Agent vervollständigt*
|
1203
|
-
|
1204
|
-
### 6. User Stories & Epics
|
1205
|
-
*Diese Sektion wird durch den Story Master Agent vervollständigt*
|
1206
|
-
|
1207
|
-
---
|
1208
|
-
**Status:** 📋 Planning Phase Complete - Ready for PM Agent
|
1209
|
-
**Nächster Schritt:** PM Agent für detaillierte Requirements
|
1210
|
-
**Created:** ${new Date().toLocaleDateString("de-DE")}
|
1211
|
-
|
1212
|
-
---
|
1213
|
-
*Erstellt mit Appiq Solution - Built with ❤️ based on Bmad-Method*
|
1214
|
-
`;
|
1215
|
-
}
|
1216
|
-
|
1217
|
-
generateBMADKnowledgeBase() {
|
1218
|
-
return `# BMAD Knowledge Base
|
1219
|
-
|
1220
|
-
## The BMad Planning + Execution Workflow
|
1221
|
-
|
1222
|
-
### Planning Workflow (Web UI or Powerful IDE Agents)
|
1223
|
-
1. **Analyst** (Optional): Market Research, Competitor Analysis, Project Brief
|
1224
|
-
2. **PM**: Create PRD from Brief with FRs, NFRs, Epics & Stories
|
1225
|
-
3. **UX Expert** (Optional): Create Front End Spec, Generate UI Prompts
|
1226
|
-
4. **Architect**: Create Architecture from PRD + UX Spec
|
1227
|
-
5. **PO**: Run Master Checklist, validate document alignment
|
1228
|
-
|
1229
|
-
### Critical Transition: Web UI → IDE
|
1230
|
-
- Copy documents to project (docs/prd.md, docs/architecture.md)
|
1231
|
-
- Switch to IDE
|
1232
|
-
- **PO**: Shard Documents (CRITICAL STEP)
|
1233
|
-
- Begin Development Cycle
|
1234
|
-
|
1235
|
-
### Core Development Cycle (IDE)
|
1236
|
-
1. **SM**: Review previous story dev/QA notes
|
1237
|
-
2. **SM**: Draft next story from sharded epic + architecture
|
1238
|
-
3. **PO**: Validate story draft (optional)
|
1239
|
-
4. **User Approval** of story
|
1240
|
-
5. **Dev**: Sequential task execution, implement tasks + tests
|
1241
|
-
6. **Dev**: Run all validations, mark ready for review
|
1242
|
-
7. **User Verification**: Request QA or approve
|
1243
|
-
8. **QA**: Senior dev review + active refactoring (if requested)
|
1244
|
-
9. **IMPORTANT**: Verify all regression tests and linting pass
|
1245
|
-
10. **IMPORTANT**: COMMIT CHANGES BEFORE PROCEEDING
|
1246
|
-
11. Mark story as done, loop back to SM
|
1247
|
-
|
1248
|
-
### Key Principles
|
1249
|
-
- **Document Sharding**: Critical step after planning phase
|
1250
|
-
- **Context Management**: Keep files lean and focused
|
1251
|
-
- **Commit Regularly**: Save work frequently, especially after QA
|
1252
|
-
- **Agent Selection**: Use appropriate agent for each task
|
1253
|
-
- **Dependencies**: Each agent loads only what it needs
|
1254
|
-
|
1255
|
-
### Special Agents
|
1256
|
-
- **BMad-Master**: Can do any task except story implementation
|
1257
|
-
- **BMad-Orchestrator**: Heavy-weight agent for web bundles only
|
1258
|
-
|
1259
|
-
### Technical Configuration
|
1260
|
-
- **core-config.yaml**: devLoadAlwaysFiles configuration
|
1261
|
-
- **technical-preferences.md**: Bias PM/Architect recommendations
|
1262
|
-
- **Dependencies**: templates, tasks, data for each agent
|
1263
|
-
|
1264
|
-
---
|
1265
|
-
*Built with ❤️ based on Bmad-Method*
|
1266
|
-
`;
|
1267
|
-
}
|
1268
|
-
|
1269
|
-
generateCreateDocTask() {
|
1270
|
-
return `# Create Document Task
|
1271
|
-
|
1272
|
-
## Purpose
|
1273
|
-
Create structured documents following BMAD templates and standards.
|
1274
|
-
|
1275
|
-
## Usage
|
1276
|
-
This task helps agents create consistent, well-structured documents.
|
1277
|
-
|
1278
|
-
## Process
|
1279
|
-
1. **Identify Document Type**: PRD, Architecture, Story, etc.
|
1280
|
-
2. **Load Template**: Use appropriate template from templates/
|
1281
|
-
3. **Gather Requirements**: Collect all necessary information
|
1282
|
-
4. **Fill Template**: Replace placeholders with actual content
|
1283
|
-
5. **Validate Structure**: Ensure all sections are complete
|
1284
|
-
6. **Save Document**: Store in correct location (docs/)
|
1285
|
-
|
1286
|
-
## Templates Available
|
1287
|
-
- prd-template.md
|
1288
|
-
- architecture-template.md
|
1289
|
-
- story-template.md
|
1290
|
-
|
1291
|
-
## Best Practices
|
1292
|
-
- Follow template structure exactly
|
1293
|
-
- Replace ALL placeholders
|
1294
|
-
- Include creation date and status
|
1295
|
-
- Link to related documents
|
1296
|
-
- Use consistent formatting
|
1297
|
-
|
1298
|
-
## Output Location
|
1299
|
-
- PRD: docs/prd.md
|
1300
|
-
- Architecture: docs/architecture.md
|
1301
|
-
- Stories: docs/stories/[story-name].md
|
1302
|
-
|
1303
|
-
---
|
1304
|
-
*Built with ❤️ based on Bmad-Method*
|
1305
|
-
`;
|
1306
|
-
}
|
1307
|
-
|
1308
|
-
generateShardDocTask() {
|
1309
|
-
return `# Document Sharding Task
|
1310
|
-
|
1311
|
-
## Purpose
|
1312
|
-
**CRITICAL STEP**: Break down large documents into focused, manageable pieces for agents.
|
1313
|
-
|
1314
|
-
## When to Use
|
1315
|
-
- After planning phase completion
|
1316
|
-
- Before beginning development cycle
|
1317
|
-
- When switching from Web UI to IDE
|
1318
|
-
|
1319
|
-
## Process
|
1320
|
-
1. **Identify Source Document**: Usually PRD or Architecture
|
1321
|
-
2. **Analyze Structure**: Find natural breaking points
|
1322
|
-
3. **Create Focused Files**: Each file serves one purpose
|
1323
|
-
4. **Maintain References**: Link shards together
|
1324
|
-
5. **Update devLoadAlwaysFiles**: Configure core-config.yaml
|
1325
|
-
|
1326
|
-
## Sharding Strategy
|
1327
|
-
|
1328
|
-
### PRD Sharding
|
1329
|
-
- **Core Requirements**: docs/requirements/core.md
|
1330
|
-
- **User Stories**: docs/stories/ (individual files)
|
1331
|
-
- **Success Metrics**: docs/metrics.md
|
1332
|
-
|
1333
|
-
### Architecture Sharding
|
1334
|
-
- **Tech Stack**: docs/architecture/tech-stack.md
|
1335
|
-
- **Coding Standards**: docs/architecture/coding-standards.md
|
1336
|
-
- **Project Structure**: docs/architecture/project-structure.md
|
1337
|
-
- **API Design**: docs/architecture/api-design.md
|
1338
|
-
- **Data Models**: docs/architecture/data-models.md
|
1339
|
-
|
1340
|
-
## Critical Points
|
1341
|
-
- **Lean Files**: Each shard should be focused and minimal
|
1342
|
-
- **Dev Context**: Sharded files go into devLoadAlwaysFiles
|
1343
|
-
- **Agent Performance**: Smaller context = better performance
|
1344
|
-
- **Maintainability**: Easier to update specific aspects
|
1345
|
-
|
1346
|
-
## Post-Sharding
|
1347
|
-
1. Update core-config.yaml devLoadAlwaysFiles
|
1348
|
-
2. Verify all shards are accessible
|
1349
|
-
3. Test agent context loading
|
1350
|
-
4. Begin development cycle
|
1351
|
-
|
1352
|
-
---
|
1353
|
-
*Built with ❤️ based on Bmad-Method*
|
1354
|
-
`;
|
1355
|
-
}
|
1356
|
-
|
1357
|
-
generateValidateStoryTask() {
|
1358
|
-
return `# Validate Story Task
|
1359
|
-
|
1360
|
-
## Purpose
|
1361
|
-
Ensure user stories align with PRD, architecture, and project goals.
|
1362
|
-
|
1363
|
-
## When to Use
|
1364
|
-
- Before story implementation begins
|
1365
|
-
- When SM drafts new stories
|
1366
|
-
- When stories are modified
|
1367
|
-
|
1368
|
-
## Validation Checklist
|
1369
|
-
|
1370
|
-
### Story Structure
|
1371
|
-
- [ ] Clear user role defined
|
1372
|
-
- [ ] Specific action described
|
1373
|
-
- [ ] Business value stated
|
1374
|
-
- [ ] Acceptance criteria present
|
1375
|
-
|
1376
|
-
### Technical Alignment
|
1377
|
-
- [ ] Aligns with architecture decisions
|
1378
|
-
- [ ] Fits within tech stack constraints
|
1379
|
-
- [ ] Dependencies identified
|
1380
|
-
- [ ] Implementation feasible
|
1381
|
-
|
1382
|
-
### Business Alignment
|
1383
|
-
- [ ] Supports PRD objectives
|
1384
|
-
- [ ] Addresses user needs
|
1385
|
-
- [ ] Measurable outcomes
|
1386
|
-
- [ ] Priority justified
|
1387
|
-
|
1388
|
-
### Quality Gates
|
1389
|
-
- [ ] Testable acceptance criteria
|
1390
|
-
- [ ] Definition of done complete
|
1391
|
-
- [ ] Effort estimation reasonable
|
1392
|
-
- [ ] Risk assessment done
|
1393
|
-
|
1394
|
-
## Process
|
1395
|
-
1. **Load References**: PRD, Architecture, related stories
|
1396
|
-
2. **Check Structure**: Verify story template compliance
|
1397
|
-
3. **Validate Alignment**: Against PRD and architecture
|
1398
|
-
4. **Assess Dependencies**: Identify blockers or prerequisites
|
1399
|
-
5. **Review Quality**: Ensure story is ready for development
|
1400
|
-
6. **Provide Feedback**: Clear recommendations for improvements
|
1401
|
-
|
1402
|
-
## Common Issues
|
1403
|
-
- Vague acceptance criteria
|
1404
|
-
- Missing technical dependencies
|
1405
|
-
- Misalignment with architecture
|
1406
|
-
- Unrealistic scope or effort
|
1407
|
-
|
1408
|
-
## Output
|
1409
|
-
- **Validation Status**: Pass/Fail with reasons
|
1410
|
-
- **Recommendations**: Specific improvements needed
|
1411
|
-
- **Dependencies**: List of prerequisites
|
1412
|
-
- **Risk Assessment**: Potential implementation challenges
|
1413
|
-
|
1414
|
-
---
|
1415
|
-
*Built with ❤️ based on Bmad-Method*
|
1416
|
-
`;
|
1417
|
-
}
|
1418
|
-
|
1419
|
-
async addFlutterAgents() {
|
1420
|
-
console.log(chalk.cyan(" 📱 Adding Flutter-specific agents..."));
|
1421
|
-
|
1422
|
-
const agentsDir = path.join(this.appiqPath, "agents");
|
1423
|
-
const flutterExpansionPath = path.join(
|
1424
|
-
__dirname,
|
1425
|
-
"..",
|
1426
|
-
"expansion-packs",
|
1427
|
-
"bmad-flutter-mobile-dev",
|
1428
|
-
"agents"
|
1429
|
-
);
|
1430
|
-
|
1431
|
-
// Check if Flutter expansion pack exists
|
1432
|
-
if (!fs.existsSync(flutterExpansionPath)) {
|
1433
|
-
console.log(
|
1434
|
-
chalk.yellow(
|
1435
|
-
" ⚠️ Flutter expansion pack not found - creating basic Flutter agents"
|
1436
|
-
)
|
1437
|
-
);
|
1438
|
-
await this.createBasicFlutterAgents();
|
1439
|
-
return;
|
1440
|
-
}
|
1441
|
-
|
1442
|
-
// Copy Flutter agents from expansion pack
|
1443
|
-
const flutterAgents = [
|
1444
|
-
"flutter-ui-agent.md",
|
1445
|
-
"flutter-cubit-agent.md",
|
1446
|
-
"flutter-data-agent.md",
|
1447
|
-
"flutter-domain-agent.md",
|
1448
|
-
"shared-components-agent.md",
|
1449
|
-
];
|
1450
|
-
|
1451
|
-
for (const agentFile of flutterAgents) {
|
1452
|
-
const sourcePath = path.join(flutterExpansionPath, agentFile);
|
1453
|
-
const targetPath = path.join(agentsDir, agentFile);
|
1454
|
-
|
1455
|
-
if (fs.existsSync(sourcePath)) {
|
1456
|
-
fs.copyFileSync(sourcePath, targetPath);
|
1457
|
-
console.log(chalk.green(` ✅ ${agentFile} hinzugefügt`));
|
1458
|
-
}
|
1459
|
-
}
|
1460
|
-
|
1461
|
-
// Create Flutter-specific data files
|
1462
|
-
const dataDir = path.join(this.appiqPath, "data");
|
1463
|
-
const flutterDataPath = path.join(
|
1464
|
-
__dirname,
|
1465
|
-
"..",
|
1466
|
-
"expansion-packs",
|
1467
|
-
"bmad-flutter-mobile-dev",
|
1468
|
-
"data"
|
1469
|
-
);
|
1470
|
-
|
1471
|
-
if (
|
1472
|
-
fs.existsSync(
|
1473
|
-
path.join(flutterDataPath, "flutter-development-guidelines.md")
|
1474
|
-
)
|
1475
|
-
) {
|
1476
|
-
fs.copyFileSync(
|
1477
|
-
path.join(flutterDataPath, "flutter-development-guidelines.md"),
|
1478
|
-
path.join(dataDir, "flutter-development-guidelines.md")
|
1479
|
-
);
|
1480
|
-
console.log(
|
1481
|
-
chalk.green(" ✅ Flutter development guidelines hinzugefügt")
|
1482
|
-
);
|
1483
|
-
}
|
1484
|
-
}
|
1485
|
-
|
1486
|
-
async createBasicFlutterAgents() {
|
1487
|
-
console.log(chalk.gray(" 🔨 Creating basic Flutter agents..."));
|
1488
|
-
|
1489
|
-
const agentsDir = path.join(this.appiqPath, "agents");
|
1490
|
-
|
1491
|
-
// Basic Flutter UI Agent
|
1492
|
-
const flutterUIAgent = this.generateBasicFlutterUIAgent();
|
1493
|
-
fs.writeFileSync(
|
1494
|
-
path.join(agentsDir, "flutter-ui-agent.md"),
|
1495
|
-
flutterUIAgent
|
1496
|
-
);
|
1497
|
-
|
1498
|
-
// Basic Flutter State Management Agent
|
1499
|
-
const flutterStateAgent = this.generateBasicFlutterStateAgent();
|
1500
|
-
fs.writeFileSync(
|
1501
|
-
path.join(agentsDir, "flutter-cubit-agent.md"),
|
1502
|
-
flutterStateAgent
|
1503
|
-
);
|
1504
|
-
|
1505
|
-
console.log(chalk.green(" ✅ Basic Flutter agents created"));
|
1506
|
-
}
|
1507
|
-
|
1508
|
-
generateBasicFlutterUIAgent() {
|
1509
|
-
return `# Flutter UI Agent
|
1510
|
-
|
1511
|
-
Du bist ein spezialisierter Flutter UI Agent, der sich auf die Erstellung von benutzerfreundlichen und responsive Mobile UI-Komponenten fokussiert.
|
1512
|
-
|
1513
|
-
## Rolle & Verantwortung
|
1514
|
-
|
1515
|
-
- **UI Design & Implementation:** Erstelle schöne, Material 3 konforme Flutter UIs
|
1516
|
-
- **Widget Composition:** Verwende effiziente Widget-Hierarchien
|
1517
|
-
- **Responsive Design:** Sichere Kompatibilität für verschiedene Bildschirmgrößen
|
1518
|
-
- **Accessibility:** Implementiere barrierefreie UI-Komponenten
|
1519
|
-
|
1520
|
-
## Expertise
|
1521
|
-
|
1522
|
-
### Flutter UI Frameworks
|
1523
|
-
- **Material 3:** Modernes Material Design
|
1524
|
-
- **Cupertino:** iOS-native Looks
|
1525
|
-
- **Custom Widgets:** Individuelle UI-Komponenten
|
1526
|
-
|
1527
|
-
### Best Practices
|
1528
|
-
- **Widget Keys:** Für Testability und Performance
|
1529
|
-
- **Const Constructors:** Memory-Optimierung
|
1530
|
-
- **Build Method Optimization:** Verhindere unnecessary rebuilds
|
1531
|
-
- **Theme Integration:** Konsistente Design Systems
|
1532
|
-
|
1533
|
-
## Tech Stack Integration
|
1534
|
-
|
1535
|
-
**Platform:** ${this.config.techStack.platform}
|
1536
|
-
**MCP:** ${this.config.techStack.isFlutter ? "Dart MCP Server ✅" : "Standard"}
|
1537
|
-
|
1538
|
-
### Dart MCP Tools
|
1539
|
-
- Hot Reload via MCP
|
1540
|
-
- Widget Inspection via AI
|
1541
|
-
- pub.dev Package Discovery
|
1542
|
-
- Runtime Error Analysis
|
1543
|
-
|
1544
|
-
## Workflow Integration
|
1545
|
-
|
1546
|
-
**Planning Phase:** Arbeite mit UX Expert an UI Specs
|
1547
|
-
**Development Phase:** Implementiere UI basierend auf Cubit State
|
1548
|
-
**Testing Phase:** Golden Tests für UI Consistency
|
1549
|
-
|
1550
|
-
---
|
1551
|
-
*Built with ❤️ based on Bmad-Method*
|
1552
|
-
*Flutter Clean Architecture + Dart MCP Integration*
|
1553
|
-
`;
|
1554
|
-
}
|
1555
|
-
|
1556
|
-
generateBasicFlutterStateAgent() {
|
1557
|
-
return `# Flutter Cubit State Management Agent
|
1558
|
-
|
1559
|
-
Du bist ein spezialisierter Flutter State Management Agent mit Fokus auf Cubit/BLoC Pattern und Clean Architecture.
|
1560
|
-
|
1561
|
-
## Rolle & Verantwortung
|
1562
|
-
|
1563
|
-
- **State Management:** Implementiere Cubit/BLoC Pattern
|
1564
|
-
- **Clean Architecture:** Separation of Concerns (Presentation → Domain → Data)
|
1565
|
-
- **Dependency Injection:** GetIt + Injectable Setup
|
1566
|
-
- **Event Handling:** User Interactions und API Calls
|
1567
|
-
|
1568
|
-
## Expertise
|
1569
|
-
|
1570
|
-
### State Management
|
1571
|
-
- **Cubit:** Simple State Management für UI
|
1572
|
-
- **BLoC:** Complex Business Logic mit Events
|
1573
|
-
- **Riverpod:** Alternative State Management (if needed)
|
1574
|
-
|
1575
|
-
### Architecture Patterns
|
1576
|
-
- **Clean Architecture:** Feature-based Structure
|
1577
|
-
- **Repository Pattern:** Data Access Layer
|
1578
|
-
- **Use Cases:** Business Logic Layer
|
1579
|
-
- **Dependency Injection:** Loose Coupling
|
1580
|
-
|
1581
|
-
## Tech Stack Integration
|
1582
|
-
|
1583
|
-
**Platform:** ${this.config.techStack.platform}
|
1584
|
-
**MCP:** ${this.config.techStack.isFlutter ? "Dart MCP Server ✅" : "Standard"}
|
1585
|
-
|
1586
|
-
### Code Generation
|
1587
|
-
- **Freezed:** Immutable Data Classes
|
1588
|
-
- **Injectable:** Dependency Injection Setup
|
1589
|
-
- **Build Runner:** Code Generation Pipeline
|
1590
|
-
|
1591
|
-
## Workflow Integration
|
1592
|
-
|
1593
|
-
**Planning Phase:** Definiere State Structure mit Domain Agent
|
1594
|
-
**Development Phase:** Implementiere Business Logic
|
1595
|
-
**Testing Phase:** Unit Tests für Cubits und Use Cases
|
1596
|
-
|
1597
|
-
---
|
1598
|
-
*Built with ❤️ based on Bmad-Method*
|
1599
|
-
*Flutter Clean Architecture + Dart MCP Integration*
|
1600
|
-
`;
|
1601
|
-
}
|
1602
|
-
|
1603
|
-
async updateAgentsWithDependencies() {
|
1604
|
-
console.log(chalk.gray(" 🔗 Updating agents with BMAD dependencies..."));
|
1605
|
-
|
1606
|
-
const agentsDir = path.join(this.appiqPath, "agents");
|
1607
|
-
const agents = fs.readdirSync(agentsDir);
|
1608
|
-
|
1609
|
-
for (const agentFile of agents) {
|
1610
|
-
const agentPath = path.join(agentsDir, agentFile);
|
1611
|
-
let content = fs.readFileSync(agentPath, "utf8");
|
1612
|
-
|
1613
|
-
// Add BMAD dependencies section to each agent
|
1614
|
-
const dependenciesSection = `
|
1615
|
-
|
1616
|
-
## 🔗 BMAD Dependencies
|
1617
|
-
|
1618
|
-
### Templates
|
1619
|
-
- prd-template.md
|
1620
|
-
- architecture-template.md
|
1621
|
-
- story-template.md
|
1622
|
-
|
1623
|
-
### Tasks
|
1624
|
-
- create-doc.md
|
1625
|
-
- shard-doc.md
|
1626
|
-
- validate-story.md
|
1627
|
-
|
1628
|
-
### Data
|
1629
|
-
- bmad-kb.md
|
1630
|
-
- technical-preferences.md
|
1631
|
-
|
1632
|
-
### Configuration
|
1633
|
-
- core-config.yaml (devLoadAlwaysFiles)
|
1634
|
-
|
1635
|
-
## 🎯 BMAD Workflow Integration
|
1636
|
-
|
1637
|
-
**Planning Phase:** Web UI → IDE Transition → Document Sharding
|
1638
|
-
**Development Phase:** SM → PO → Dev → QA → Loop
|
1639
|
-
**Critical Points:** Commit before proceeding, verify tests passing
|
1640
|
-
|
1641
|
-
`;
|
1642
|
-
|
1643
|
-
// Add MCP integration section
|
1644
|
-
const mcpSection = this.generateMCPAgentSection(agentFile);
|
1645
|
-
|
1646
|
-
// Add dependencies and MCP section before the final line
|
1647
|
-
const lines = content.split("\n");
|
1648
|
-
const lastLine = lines.pop(); // Remove last line
|
1649
|
-
lines.push(dependenciesSection);
|
1650
|
-
lines.push(mcpSection);
|
1651
|
-
lines.push(lastLine); // Add last line back
|
1652
|
-
|
1653
|
-
fs.writeFileSync(agentPath, lines.join("\n"));
|
1654
|
-
}
|
1655
|
-
}
|
1656
|
-
|
1657
|
-
generateMCPAgentSection(agentFile) {
|
1658
|
-
// Bestimme Agent-Typ basierend auf Dateiname
|
1659
|
-
const agentName = agentFile.replace('.md', '').toLowerCase();
|
1660
|
-
|
1661
|
-
// Bestimme welche MCPs für diesen Agent relevant sind
|
1662
|
-
const relevantMCPs = Object.keys(MCP_SERVERS).filter(mcpKey => {
|
1663
|
-
const server = MCP_SERVERS[mcpKey];
|
1664
|
-
return server.tags.includes('all') ||
|
1665
|
-
server.tags.some(tag => agentName.includes(tag)) ||
|
1666
|
-
(agentName.includes('architect') && server.tags.includes('architect')) ||
|
1667
|
-
(agentName.includes('pm') && server.tags.includes('pm')) ||
|
1668
|
-
(agentName.includes('qa') && server.tags.includes('qa')) ||
|
1669
|
-
(agentName.includes('dev') && server.tags.includes('dev')) ||
|
1670
|
-
(agentName.includes('ux') && server.tags.includes('ux-expert')) ||
|
1671
|
-
(agentName.includes('flutter') && server.tags.includes('flutter')) ||
|
1672
|
-
((agentName.includes('web') || agentName.includes('ui')) && server.tags.includes('ui'));
|
1673
|
-
});
|
1674
|
-
|
1675
|
-
if (relevantMCPs.length === 0) {
|
1676
|
-
return '';
|
1677
|
-
}
|
1678
|
-
|
1679
|
-
let section = `\n## 🔌 MCP Server Integration\n\nDu hast Zugriff auf folgende MCP Server, um deine Fähigkeiten zu erweitern:\n\n`;
|
1680
|
-
|
1681
|
-
relevantMCPs.forEach(mcpKey => {
|
1682
|
-
const server = MCP_SERVERS[mcpKey];
|
1683
|
-
section += `- **${server.name}:** ${server.description}\n`;
|
1684
|
-
});
|
1685
|
-
|
1686
|
-
section += `\n**Beispiel-Anwendung:**\n`;
|
1687
|
-
|
1688
|
-
// Spezifische Beispiele basierend auf Agent-Typ
|
1689
|
-
if (agentName.includes('flutter')) {
|
1690
|
-
section += `- "Nutze den Dart MCP, um mein Flutter Widget zu analysieren."\n`;
|
1691
|
-
section += `- "Verwende den 21st.dev Magic MCP, um eine neue UI-Komponente zu erstellen."\n`;
|
1692
|
-
} else if (agentName.includes('architect')) {
|
1693
|
-
section += `- "Nutze den Context7 MCP, um die neueste Dokumentation für React Hooks zu finden."\n`;
|
1694
|
-
section += `- "Verwende Sequential Thinking MCP für die komplexe Architektur-Planung."\n`;
|
1695
|
-
} else if (agentName.includes('qa')) {
|
1696
|
-
section += `- "Nutze den Puppeteer MCP, um automatisierte Browser-Tests zu erstellen."\n`;
|
1697
|
-
} else if (agentName.includes('dev')) {
|
1698
|
-
section += `- "Verwende den Firebase MCP, um Firestore-Daten abzurufen."\n`;
|
1699
|
-
section += `- "Nutze den Supabase MCP für Datenbankoperationen."\n`;
|
1700
|
-
} else {
|
1701
|
-
section += `- "Nutze den Context7 MCP für aktuelle Dokumentation."\n`;
|
1702
|
-
section += `- "Verwende Sequential Thinking MCP für komplexe Problemlösungen."\n`;
|
1703
|
-
}
|
1704
|
-
|
1705
|
-
section += `\n**Wichtig:** Die MCPs müssen in deiner IDE konfiguriert sein. Siehe mcp-setup-instructions.md für Details.\n`;
|
1706
|
-
|
1707
|
-
return section;
|
1708
|
-
}
|
1709
|
-
|
1710
|
-
generateBMADOrchestration(config) {
|
1711
|
-
return `# BMAD Full Orchestration
|
1712
|
-
# Built with ❤️ based on Bmad-Method
|
1713
|
-
|
1714
|
-
project:
|
1715
|
-
name: ${this.config.projectName}
|
1716
|
-
type: ${this.config.projectType}
|
1717
|
-
plan_approved: ${this.config.planApproved}
|
1718
|
-
created: ${new Date().toISOString()}
|
1719
|
-
|
1720
|
-
# BMAD Planning Phase (Web UI/Powerful IDE)
|
1721
|
-
planning_phase:
|
1722
|
-
workflow: ${config.planningPhase.workflow}
|
1723
|
-
agents:
|
1724
|
-
${config.planningPhase.agents.map((agent) => ` - ${agent}`).join("\n")}
|
1725
|
-
|
1726
|
-
flow:
|
1727
|
-
1: "analyst → research & project brief (optional)"
|
1728
|
-
2: "pm → create PRD from brief"
|
1729
|
-
3: "ux-expert → create frontend spec (optional)"
|
1730
|
-
4: "architect → create architecture from PRD + UX"
|
1731
|
-
5: "po → run master checklist & validate alignment"
|
1732
|
-
|
1733
|
-
# Critical Transition: Web UI → IDE
|
1734
|
-
transition:
|
1735
|
-
type: ${config.transitions.planningToIDE}
|
1736
|
-
requirements:
|
1737
|
-
- "Copy docs/prd.md and docs/architecture.md to project"
|
1738
|
-
- "Switch to IDE"
|
1739
|
-
- "PO: Shard documents (CRITICAL)"
|
1740
|
-
- "Update core-config.yaml devLoadAlwaysFiles"
|
1741
|
-
|
1742
|
-
# BMAD Development Phase (IDE Only)
|
1743
|
-
development_phase:
|
1744
|
-
workflow: ${config.developmentPhase.workflow}
|
1745
|
-
agents:
|
1746
|
-
${config.developmentPhase.agents.map((agent) => ` - ${agent}`).join("\n")}
|
1747
|
-
|
1748
|
-
cycle:
|
1749
|
-
1: "sm → review previous story dev/QA notes"
|
1750
|
-
2: "sm → draft next story from sharded epic + architecture"
|
1751
|
-
3: "po → validate story draft (optional)"
|
1752
|
-
4: "user → approve story"
|
1753
|
-
5: "dev → sequential task execution + implementation"
|
1754
|
-
6: "dev → run all validations, mark ready for review"
|
1755
|
-
7: "user → verify (request QA or approve)"
|
1756
|
-
8: "qa → senior dev review + active refactoring (if requested)"
|
1757
|
-
9: "CRITICAL → verify regression tests + linting pass"
|
1758
|
-
10: "CRITICAL → COMMIT CHANGES BEFORE PROCEEDING"
|
1759
|
-
11: "mark story done → loop back to sm"
|
1760
|
-
|
1761
|
-
# Critical Commit Points
|
1762
|
-
commit_points:
|
1763
|
-
${config.transitions.criticalCommitPoints
|
1764
|
-
.map((point) => ` - ${point}`)
|
1765
|
-
.join("\n")}
|
1766
|
-
|
1767
|
-
# IDE Integration
|
1768
|
-
ides:
|
1769
|
-
${this.config.selectedIDEs
|
1770
|
-
.map(
|
1771
|
-
(ide) => ` - name: ${this.getIDEName(ide)}
|
1772
|
-
config_path: ${this.getIDEConfig(ide).dir}
|
1773
|
-
file_format: ${this.getIDEConfig(ide).suffix}`
|
1774
|
-
)
|
1775
|
-
.join("\n")}
|
1776
|
-
|
1777
|
-
# Context Management
|
1778
|
-
context:
|
1779
|
-
dev_always_files:
|
1780
|
-
- docs/architecture/coding-standards.md
|
1781
|
-
- docs/architecture/tech-stack.md
|
1782
|
-
- docs/architecture/project-structure.md
|
1783
|
-
|
1784
|
-
agent_dependencies:
|
1785
|
-
templates: ["prd-template.md", "architecture-template.md", "story-template.md"]
|
1786
|
-
tasks: ["create-doc.md", "shard-doc.md", "validate-story.md"]
|
1787
|
-
data: ["bmad-kb.md", "technical-preferences.md"]
|
1788
|
-
|
1789
|
-
---
|
1790
|
-
*Powered by Appiq Solution - Built with ❤️ based on Bmad-Method*
|
1791
|
-
`;
|
1792
|
-
}
|
1793
|
-
|
1794
|
-
generatePlanningWorkflow() {
|
1795
|
-
return `# BMAD Planning Workflow
|
1796
|
-
|
1797
|
-
## Übersicht
|
1798
|
-
Die Planungsphase folgt einem strukturierten Workflow, idealerweise in Web UI für Kosteneffizienz.
|
1799
|
-
|
1800
|
-
## Planning Flow
|
1801
|
-
|
1802
|
-
### 1. Start: Projektidee
|
1803
|
-
- Grundlegendes Konzept definiert
|
1804
|
-
- Problem identifiziert
|
1805
|
-
|
1806
|
-
### 2. Analyst (Optional)
|
1807
|
-
**Brainstorming:**
|
1808
|
-
- Marktforschung
|
1809
|
-
- Konkurrenzanalyse
|
1810
|
-
- Projekt Brief erstellen
|
1811
|
-
|
1812
|
-
### 3. Project Manager (PM)
|
1813
|
-
**PRD Erstellung:**
|
1814
|
-
- PRD aus Brief erstellen (Fast Track)
|
1815
|
-
- ODER interaktive PRD Erstellung (mehr Fragen)
|
1816
|
-
- Functional Requirements (FRs)
|
1817
|
-
- Non-Functional Requirements (NFRs)
|
1818
|
-
- Epics & Stories definieren
|
1819
|
-
|
1820
|
-
### 4. UX Expert (Optional)
|
1821
|
-
**Frontend Specification:**
|
1822
|
-
- Frontend Spec erstellen
|
1823
|
-
- UI Prompts für Lovable/V0 generieren (optional)
|
1824
|
-
|
1825
|
-
### 5. System Architect
|
1826
|
-
**Architektur Design:**
|
1827
|
-
- Architektur aus PRD erstellen
|
1828
|
-
- ODER aus PRD + UX Spec erstellen
|
1829
|
-
- Tech Stack definieren
|
1830
|
-
- System Components planen
|
1831
|
-
|
1832
|
-
### 6. Product Owner (PO)
|
1833
|
-
**Master Checklist:**
|
1834
|
-
- Dokumenten-Alignment prüfen
|
1835
|
-
- Epics & Stories aktualisieren (falls nötig)
|
1836
|
-
- PRD/Architektur anpassen (falls nötig)
|
1837
|
-
|
1838
|
-
## Kritischer Übergang: Web UI → IDE
|
1839
|
-
|
1840
|
-
### ⚠️ WICHTIG: Transition Point
|
1841
|
-
Sobald PO Dokumenten-Alignment bestätigt:
|
1842
|
-
|
1843
|
-
1. **Dokumente kopieren**: docs/prd.md und docs/architecture.md
|
1844
|
-
2. **IDE wechseln**: Projekt in bevorzugter Agentic IDE öffnen
|
1845
|
-
3. **Document Sharding**: PO Agent zum Shard der Dokumente verwenden
|
1846
|
-
4. **Development beginnen**: Core Development Cycle starten
|
1847
|
-
|
1848
|
-
## Qualitäts-Gates
|
1849
|
-
|
1850
|
-
### Planning Complete Criteria
|
1851
|
-
- [ ] PRD vollständig und genehmigt
|
1852
|
-
- [ ] Architektur vollständig und genehmigt
|
1853
|
-
- [ ] UX Spec (falls erforderlich) genehmigt
|
1854
|
-
- [ ] Alle Dokumente sind aligned
|
1855
|
-
- [ ] Epics und Stories definiert
|
1856
|
-
- [ ] Übergang zu IDE vorbereitet
|
1857
|
-
|
1858
|
-
## Nächste Schritte
|
1859
|
-
Nach Planning Complete → **Document Sharding** → **Development Cycle**
|
1860
|
-
|
1861
|
-
---
|
1862
|
-
*Built with ❤️ based on Bmad-Method*
|
1863
|
-
`;
|
1864
|
-
}
|
1865
|
-
|
1866
|
-
generateDevelopmentCycle() {
|
1867
|
-
return `# BMAD Core Development Cycle
|
1868
|
-
|
1869
|
-
## Übersicht
|
1870
|
-
Strukturierter Entwicklungsworkflow in der IDE nach abgeschlossener Planungsphase.
|
1871
|
-
|
1872
|
-
## Voraussetzungen
|
1873
|
-
- ✅ Planning Phase abgeschlossen
|
1874
|
-
- ✅ Dokumente in Projekt kopiert (docs/prd.md, docs/architecture.md)
|
1875
|
-
- ✅ **Document Sharding** durch PO Agent durchgeführt
|
1876
|
-
- ✅ IDE-Setup komplett
|
1877
|
-
|
1878
|
-
## Development Cycle Flow
|
1879
|
-
|
1880
|
-
### 1. Scrum Master (SM)
|
1881
|
-
**Story Vorbereitung:**
|
1882
|
-
- Review previous story dev/QA notes
|
1883
|
-
- Draft next story from sharded epic + architecture
|
1884
|
-
- Berücksichtigt technical dependencies
|
1885
|
-
- Erstellt realistische task breakdown
|
1886
|
-
|
1887
|
-
### 2. Product Owner (PO) - Optional
|
1888
|
-
**Story Validation:**
|
1889
|
-
- Validate story draft against artifacts
|
1890
|
-
- Überprüft alignment mit PRD
|
1891
|
-
- Bestätigt business value
|
1892
|
-
- Kann übersprungen werden bei erfahrenen Teams
|
1893
|
-
|
1894
|
-
### 3. User Approval
|
1895
|
-
**Story Freigabe:**
|
1896
|
-
- ✅ **Approved**: Weiter zu Development
|
1897
|
-
- ❌ **Needs Changes**: Zurück zu SM für Anpassungen
|
1898
|
-
|
1899
|
-
### 4. Developer (Dev)
|
1900
|
-
**Implementation:**
|
1901
|
-
- Sequential task execution
|
1902
|
-
- Implement tasks + tests
|
1903
|
-
- Run all validations
|
1904
|
-
- Mark ready for review + add notes
|
1905
|
-
- Dokumentiert implementation decisions
|
1906
|
-
|
1907
|
-
### 5. User Verification
|
1908
|
-
**Review Decision:**
|
1909
|
-
- 🔍 **Request QA Review**: Weiter zu QA Agent
|
1910
|
-
- ✅ **Approve Without QA**: Direkt zu Final Checks
|
1911
|
-
- ❌ **Needs Fixes**: Zurück zu Dev
|
1912
|
-
|
1913
|
-
### 6. QA Agent (Optional)
|
1914
|
-
**Quality Assurance:**
|
1915
|
-
- Senior dev review + active refactoring
|
1916
|
-
- Review code, refactor, add tests
|
1917
|
-
- Document notes and improvements
|
1918
|
-
- **Decision**: Needs Dev Work OR Approved
|
1919
|
-
|
1920
|
-
### 7. Final Checks - ⚠️ CRITICAL
|
1921
|
-
**Vor dem Abschluss:**
|
1922
|
-
- ✅ Verify ALL regression tests passing
|
1923
|
-
- ✅ Verify ALL linting passing
|
1924
|
-
- ✅ Code review completed (if QA was used)
|
1925
|
-
- ✅ Documentation updated
|
1926
|
-
|
1927
|
-
### 8. Commit - ⚠️ SUPER CRITICAL
|
1928
|
-
**WICHTIG: COMMIT YOUR CHANGES BEFORE PROCEEDING!**
|
1929
|
-
- Git add & commit all changes
|
1930
|
-
- Include meaningful commit message
|
1931
|
-
- Push to repository
|
1932
|
-
|
1933
|
-
### 9. Story Complete
|
1934
|
-
**Mark als Done:**
|
1935
|
-
- Story status → DONE
|
1936
|
-
- Loop back to SM for next story
|
1937
|
-
|
1938
|
-
## Critical Points
|
1939
|
-
|
1940
|
-
### ⚠️ Commit Points
|
1941
|
-
- **After QA Approval**: Always commit before marking done
|
1942
|
-
- **Before Next Story**: Clean state for next iteration
|
1943
|
-
|
1944
|
-
### 🎯 Quality Gates
|
1945
|
-
- All tests passing
|
1946
|
-
- Linting clean
|
1947
|
-
- Code reviewed (if QA used)
|
1948
|
-
- Documentation current
|
1949
|
-
|
1950
|
-
### 📊 Context Management
|
1951
|
-
- Keep relevant files only in context
|
1952
|
-
- Use sharded documents
|
1953
|
-
- Maintain lean, focused files
|
1954
|
-
|
1955
|
-
## Best Practices
|
1956
|
-
- **Small Stories**: Keep stories manageable (< 1 week)
|
1957
|
-
- **Regular Commits**: Commit frequently during development
|
1958
|
-
- **Test First**: Write tests before or with implementation
|
1959
|
-
- **Document Decisions**: Record architectural decisions
|
1960
|
-
|
1961
|
-
---
|
1962
|
-
*Built with ❤️ based on Bmad-Method*
|
1963
|
-
`;
|
1964
|
-
}
|
1965
|
-
|
1966
|
-
generateDocumentSharding() {
|
1967
|
-
return `# Document Sharding Guide
|
1968
|
-
|
1969
|
-
## ⚠️ CRITICAL STEP
|
1970
|
-
Document Sharding ist ein **essentieller Schritt** im BMAD Flow nach der Planungsphase.
|
1971
|
-
|
1972
|
-
## Wann Document Sharding durchführen?
|
1973
|
-
- ✅ Nach Planning Phase Completion
|
1974
|
-
- ✅ Beim Übergang von Web UI zu IDE
|
1975
|
-
- ✅ Vor Beginn des Development Cycles
|
1976
|
-
- ✅ Wenn Dokumente zu groß für Agent-Context werden
|
1977
|
-
|
1978
|
-
## Warum Document Sharding?
|
1979
|
-
- **Performance**: Kleinere Context = bessere Agent-Performance
|
1980
|
-
- **Focus**: Jede Datei dient einem spezifischen Zweck
|
1981
|
-
- **Maintainability**: Einfacher zu aktualisieren und zu verwalten
|
1982
|
-
- **Agent Efficiency**: Agents laden nur was sie brauchen
|
1983
|
-
|
1984
|
-
## Sharding Process
|
1985
|
-
|
1986
|
-
### 1. PRD Sharding
|
1987
|
-
**Source**: docs/prd.md
|
1988
|
-
**Target Structure**:
|
1989
|
-
\`\`\`
|
1990
|
-
docs/
|
1991
|
-
├── requirements/
|
1992
|
-
│ ├── core.md # Core functional requirements
|
1993
|
-
│ ├── non-functional.md # NFRs (performance, security)
|
1994
|
-
│ └── success-metrics.md # KPIs and success criteria
|
1995
|
-
├── stories/
|
1996
|
-
│ ├── epic-1-auth/
|
1997
|
-
│ │ ├── story-1-1-login.md
|
1998
|
-
│ │ └── story-1-2-register.md
|
1999
|
-
│ └── epic-2-dashboard/
|
2000
|
-
│ └── story-2-1-overview.md
|
2001
|
-
\`\`\`
|
2002
|
-
|
2003
|
-
### 2. Architecture Sharding
|
2004
|
-
**Source**: docs/architecture.md
|
2005
|
-
**Target Structure**:
|
2006
|
-
\`\`\`
|
2007
|
-
docs/architecture/
|
2008
|
-
├── tech-stack.md # Technology decisions
|
2009
|
-
├── coding-standards.md # Code style and patterns
|
2010
|
-
├── project-structure.md # File/folder organization
|
2011
|
-
├── api-design.md # REST/GraphQL API specs
|
2012
|
-
├── data-models.md # Database schema
|
2013
|
-
├── security.md # Security considerations
|
2014
|
-
└── deployment.md # Deployment architecture
|
2015
|
-
\`\`\`
|
2016
|
-
|
2017
|
-
## Sharding Guidelines
|
2018
|
-
|
2019
|
-
### File Size
|
2020
|
-
- **Target**: < 50 lines per sharded file
|
2021
|
-
- **Maximum**: < 100 lines per sharded file
|
2022
|
-
- **Focus**: One concern per file
|
2023
|
-
|
2024
|
-
### Naming Convention
|
2025
|
-
- **kebab-case**: tech-stack.md, coding-standards.md
|
2026
|
-
- **Descriptive**: Clear purpose from filename
|
2027
|
-
- **Consistent**: Follow project conventions
|
2028
|
-
|
2029
|
-
### Content Rules
|
2030
|
-
- **Atomic**: Each file covers one topic completely
|
2031
|
-
- **Self-contained**: Can be understood independently
|
2032
|
-
- **Linked**: Reference related files when needed
|
2033
|
-
- **Lean**: Remove fluff, keep essentials
|
2034
|
-
|
2035
|
-
## Post-Sharding Configuration
|
2036
|
-
|
2037
|
-
### 1. Update core-config.yaml
|
2038
|
-
\`\`\`yaml
|
2039
|
-
devLoadAlwaysFiles:
|
2040
|
-
- docs/architecture/coding-standards.md
|
2041
|
-
- docs/architecture/tech-stack.md
|
2042
|
-
- docs/architecture/project-structure.md
|
2043
|
-
\`\`\`
|
2044
|
-
|
2045
|
-
### 2. Verify Agent Access
|
2046
|
-
- Test that agents can load sharded files
|
2047
|
-
- Ensure all references are correct
|
2048
|
-
- Validate file paths in configuration
|
2049
|
-
|
2050
|
-
### 3. Update Templates
|
2051
|
-
- Modify templates to reference sharded structure
|
2052
|
-
- Update agent prompts to use sharded files
|
2053
|
-
- Test template generation
|
2054
|
-
|
2055
|
-
## Quality Checks
|
2056
|
-
|
2057
|
-
### ✅ Sharding Complete Criteria
|
2058
|
-
- [ ] All large documents sharded
|
2059
|
-
- [ ] Each shard < 100 lines
|
2060
|
-
- [ ] devLoadAlwaysFiles updated
|
2061
|
-
- [ ] Agent dependencies resolved
|
2062
|
-
- [ ] File references working
|
2063
|
-
- [ ] Templates updated
|
2064
|
-
|
2065
|
-
### 🚨 Common Mistakes
|
2066
|
-
- **Too Large**: Shards still too big (>100 lines)
|
2067
|
-
- **Too Small**: Over-sharding (many 5-line files)
|
2068
|
-
- **Broken Links**: References to old unified files
|
2069
|
-
- **Missing Config**: devLoadAlwaysFiles not updated
|
2070
|
-
|
2071
|
-
## After Sharding
|
2072
|
-
1. **Test Agent Loading**: Verify agents can access all needed files
|
2073
|
-
2. **Begin Development**: Start Core Development Cycle
|
2074
|
-
3. **Monitor Performance**: Watch for context issues
|
2075
|
-
4. **Refine as Needed**: Adjust sharding based on usage
|
2076
|
-
|
2077
|
-
---
|
2078
|
-
*Built with ❤️ based on Bmad-Method*
|
2079
|
-
`;
|
2080
|
-
}
|
2081
|
-
|
2082
|
-
|
2083
|
-
|
2084
|
-
|
2085
|
-
|
2086
|
-
async performInstallation() {
|
2087
|
-
console.log(chalk.yellow("📦 Installation läuft..."));
|
2088
|
-
|
2089
|
-
// Create appiq-solution directory
|
2090
|
-
if (!fs.existsSync(this.appiqPath)) {
|
2091
|
-
fs.mkdirSync(this.appiqPath, { recursive: true });
|
2092
|
-
}
|
2093
|
-
|
2094
|
-
// Install optimized agents
|
2095
|
-
await this.installOptimizedAgents();
|
2096
|
-
|
2097
|
-
// Install project-specific configs
|
2098
|
-
await this.installProjectConfig();
|
2099
|
-
|
2100
|
-
// Setup IDE integration
|
2101
|
-
await this.setupIDEIntegration();
|
2102
|
-
|
2103
|
-
console.log(chalk.green("✅ Installation abgeschlossen!\n"));
|
2104
|
-
}
|
2105
|
-
|
2106
|
-
async installOptimizedAgents() {
|
2107
|
-
console.log(chalk.gray(" 📄 Optimierte Agents installieren..."));
|
2108
|
-
|
2109
|
-
const agentsDir = path.join(this.appiqPath, "agents");
|
2110
|
-
if (!fs.existsSync(agentsDir)) {
|
2111
|
-
fs.mkdirSync(agentsDir, { recursive: true });
|
2112
|
-
}
|
2113
|
-
|
2114
|
-
// Core optimized agents
|
2115
|
-
const agents = ["init-flow-po", "architect", "pm", "sm", "dev", "qa"];
|
2116
|
-
|
2117
|
-
for (const agent of agents) {
|
2118
|
-
await this.createOptimizedAgent(agent);
|
2119
|
-
}
|
2120
|
-
}
|
2121
|
-
|
2122
|
-
async createOptimizedAgent(agentName) {
|
2123
|
-
const agentContent = this.generateOptimizedAgentContent(agentName);
|
2124
|
-
const filePath = path.join(this.appiqPath, "agents", `${agentName}.md`);
|
2125
|
-
fs.writeFileSync(filePath, agentContent);
|
2126
|
-
}
|
2127
|
-
|
2128
|
-
generateOptimizedAgentContent(agentName) {
|
2129
|
-
const agentConfigs = {
|
2130
|
-
"init-flow-po": {
|
2131
|
-
name: "Product Owner & Workflow Initiator",
|
2132
|
-
role: "Intelligent Project Starter & Business Requirements",
|
2133
|
-
commands: [
|
2134
|
-
"/init-flow",
|
2135
|
-
"/analyze-project",
|
2136
|
-
"/create-epic",
|
2137
|
-
"/start-story",
|
2138
|
-
],
|
2139
|
-
description:
|
2140
|
-
"Initiates optimal workflow based on project type and handles business requirements",
|
2141
|
-
},
|
2142
|
-
architect: {
|
2143
|
-
name: "System Architect",
|
2144
|
-
role: "Technical Architecture",
|
2145
|
-
commands: ["/architecture", "/tech-stack", "/design"],
|
2146
|
-
description: "Develops system architecture and tech stack",
|
2147
|
-
},
|
2148
|
-
pm: {
|
2149
|
-
name: "Product Manager",
|
2150
|
-
role: "PRD & Project Planning",
|
2151
|
-
commands: ["/prd", "/plan", "/epic"],
|
2152
|
-
description: "Creates PRD and project documentation",
|
2153
|
-
},
|
2154
|
-
sm: {
|
2155
|
-
name: "Scrum Master",
|
2156
|
-
role: "User Stories & Sprint Planning",
|
2157
|
-
commands: ["/story", "/sprint", "/tasks"],
|
2158
|
-
description: "Creates user stories and sprint planning",
|
2159
|
-
},
|
2160
|
-
dev: {
|
2161
|
-
name: "Senior Developer",
|
2162
|
-
role: "Code Implementation",
|
2163
|
-
commands: ["/code", "/implement", "/fix"],
|
2164
|
-
description: "Implements features and fixes bugs",
|
2165
|
-
},
|
2166
|
-
qa: {
|
2167
|
-
name: "QA Expert",
|
2168
|
-
role: "Testing & Quality",
|
2169
|
-
commands: ["/test", "/review", "/validate"],
|
2170
|
-
description: "Performs tests and validates code quality",
|
2171
|
-
},
|
2172
|
-
};
|
2173
|
-
|
2174
|
-
const config = agentConfigs[agentName];
|
2175
|
-
|
2176
|
-
return `# ${config.name}
|
2177
|
-
|
2178
|
-
## 🎯 Rolle
|
2179
|
-
${config.role}
|
2180
|
-
|
2181
|
-
## 📋 Verfügbare Kommandos
|
2182
|
-
${config.commands
|
2183
|
-
.map((cmd) => `- **${cmd}** - ${config.description}`)
|
2184
|
-
.join("\n")}
|
2185
|
-
|
2186
|
-
## 🚀 One-Click Workflows
|
2187
|
-
|
2188
|
-
### Für ${
|
2189
|
-
this.config.projectType === "greenfield" ? "NEUE" : "BESTEHENDE"
|
2190
|
-
} Projekte:
|
2191
|
-
|
2192
|
-
${
|
2193
|
-
this.config.projectType === "greenfield"
|
2194
|
-
? this.generateGreenfieldWorkflow(config)
|
2195
|
-
: this.generateBrownfieldWorkflow(config)
|
2196
|
-
}
|
2197
|
-
|
2198
|
-
## 🎮 Einfache Nutzung
|
2199
|
-
|
2200
|
-
1. **Laden Sie diesen Agent in Ihre IDE**
|
2201
|
-
2. **Sagen Sie:** "Agiere als ${config.name}"
|
2202
|
-
3. **Verwenden Sie:** ${config.commands[0]} für Quick-Start
|
2203
|
-
|
2204
|
-
---
|
2205
|
-
*Automatisch optimiert für ${this.config.selectedIDEs
|
2206
|
-
.map((ide) => this.getIDEName(ide))
|
2207
|
-
.join(", ")}*
|
2208
|
-
*Powered by Appiq - Based on Bmad-Method*
|
2209
|
-
`;
|
2210
|
-
}
|
2211
|
-
|
2212
|
-
generateGreenfieldWorkflow(config) {
|
2213
|
-
const workflows = {
|
2214
|
-
"Appiq Launcher": `
|
2215
|
-
**🚀 Schnell-Start für neues Projekt:**
|
2216
|
-
1. \`/start\` - Automatische Projekt-Analyse
|
2217
|
-
2. Erstellt automatisch: PRD-Vorlage, Architektur-Basis, erste Stories
|
2218
|
-
3. **Wo alles hingehört:** Alle Dateien werden automatisch in \`docs/\` erstellt`,
|
2219
|
-
|
2220
|
-
"Project Manager": `
|
2221
|
-
**📋 PRD Erstellung:**
|
2222
|
-
1. \`/prd\` - Startet PRD-Assistent
|
2223
|
-
2. **Datei wird erstellt:** \`docs/prd.md\`
|
2224
|
-
3. **Nächster Schritt:** Architect für Architektur`,
|
2225
|
-
|
2226
|
-
"System Architect": `
|
2227
|
-
**🏗️ Architektur erstellen:**
|
2228
|
-
1. \`/architecture\` - Basierend auf PRD
|
2229
|
-
2. **Datei wird erstellt:** \`docs/architecture.md\`
|
2230
|
-
3. **Nächster Schritt:** Story Master für erste Stories`,
|
2231
|
-
|
2232
|
-
"Story Master": `
|
2233
|
-
**📝 Erste Stories:**
|
2234
|
-
1. \`/story\` - Erstellt erste User Story
|
2235
|
-
2. **Datei wird erstellt:** \`docs/stories/story-001.md\`
|
2236
|
-
3. **Nächster Schritt:** Developer für Implementation`,
|
2237
|
-
|
2238
|
-
"Senior Developer": `
|
2239
|
-
**💻 Implementation:**
|
2240
|
-
1. \`/implement\` - Implementiert aktuelle Story
|
2241
|
-
2. **Erstellt/bearbeitet:** Entsprechende Code-Dateien
|
2242
|
-
3. **Nächster Schritt:** QA Expert für Review`,
|
2243
|
-
|
2244
|
-
"QA Expert": `
|
2245
|
-
**✅ Testing & Review:**
|
2246
|
-
1. \`/review\` - Reviewed aktuellen Code
|
2247
|
-
2. **Erstellt:** Test-Dateien und Reports
|
2248
|
-
3. **Nächster Schritt:** Zurück zu Story Master für nächste Story`,
|
2249
|
-
};
|
2250
|
-
|
2251
|
-
return workflows[config.name] || "Standard Greenfield Workflow";
|
2252
|
-
}
|
2253
|
-
|
2254
|
-
generateBrownfieldWorkflow(config) {
|
2255
|
-
const workflows = {
|
2256
|
-
"Appiq Launcher": `
|
2257
|
-
**🔧 Quick Start for Existing Project:**
|
2258
|
-
1. \`/analyze\` - Analyzes existing project
|
2259
|
-
2. **Finds:** Existing docs, code structure, tech stack
|
2260
|
-
3. **Creates:** Customized workflows for your project`,
|
2261
|
-
|
2262
|
-
"Project Manager": `
|
2263
|
-
**📋 Automatic PRD Creation:**
|
2264
|
-
1. **Creates automatically:** \`docs/prd.md\` (if not present)
|
2265
|
-
2. **For Flutter Projects:** Uses flutter-mobile-prd-tmpl.yaml
|
2266
|
-
3. **No project name prompt** - Uses directory name
|
2267
|
-
4. **Next Step:** Architect for architecture review`,
|
2268
|
-
|
2269
|
-
"System Architect": `
|
2270
|
-
**🏗️ Architecture Review:**
|
2271
|
-
1. \`/review-architecture\` - Analyzes existing structure
|
2272
|
-
2. **Creates/updates:** \`docs/architecture.md\`
|
2273
|
-
3. **Next Step:** Story Master for new features`,
|
2274
|
-
|
2275
|
-
"Story Master": `
|
2276
|
-
**📝 Feature Stories:**
|
2277
|
-
1. \`/new-feature\` - New story for existing project
|
2278
|
-
2. **File created:** \`docs/stories/feature-XXX.md\`
|
2279
|
-
3. **Considers:** Existing code base`,
|
2280
|
-
|
2281
|
-
"Senior Developer": `
|
2282
|
-
**💻 Feature Implementation:**
|
2283
|
-
1. \`/add-feature\` - Implements in existing code
|
2284
|
-
2. **Edits:** Existing files safely
|
2285
|
-
3. **Creates:** New files where needed`,
|
2286
|
-
|
2287
|
-
"QA Expert": `
|
2288
|
-
**✅ Regression Testing:**
|
2289
|
-
1. \`/regression-test\` - Tests new features
|
2290
|
-
2. **Validates:** No breaking changes
|
2291
|
-
3. **Creates:** Test reports for existing + new features`,
|
2292
|
-
};
|
2293
|
-
|
2294
|
-
return workflows[config.name] || "Standard Brownfield Workflow";
|
2295
|
-
}
|
2296
|
-
|
2297
|
-
async setupOneClickWorkflows() {
|
2298
|
-
console.log(chalk.yellow("⚡ Setting up One-Click Workflows..."));
|
2299
|
-
|
2300
|
-
// Create quick commands
|
2301
|
-
const commandsDir = path.join(this.appiqPath, "commands");
|
2302
|
-
if (!fs.existsSync(commandsDir)) {
|
2303
|
-
fs.mkdirSync(commandsDir, { recursive: true });
|
2304
|
-
}
|
2305
|
-
|
2306
|
-
// Project-type specific quick starts
|
2307
|
-
const quickStartContent = this.generateQuickStartScript();
|
2308
|
-
fs.writeFileSync(
|
2309
|
-
path.join(commandsDir, "quick-start.md"),
|
2310
|
-
quickStartContent
|
2311
|
-
);
|
2312
|
-
|
2313
|
-
console.log(chalk.green("✅ One-Click Workflows bereit!\n"));
|
2314
|
-
}
|
2315
|
-
|
2316
|
-
generateQuickStartScript() {
|
2317
|
-
return `# 🚀 Appiq Solution - BMAD Workflow Guide
|
2318
|
-
|
2319
|
-
## Projekt: ${this.config.projectName || "Unbenanntes Projekt"}
|
2320
|
-
**Typ:** ${
|
2321
|
-
this.config.projectType === "greenfield"
|
2322
|
-
? "✨ Greenfield (Neues Projekt)"
|
2323
|
-
: "🔧 Brownfield (Bestehendes Projekt)"
|
2324
|
-
}
|
2325
|
-
|
2326
|
-
## 📋 BMAD Planning Workflow (Phase 1)
|
2327
|
-
|
2328
|
-
### Option A: Web UI Planning (Kosteneffizient)
|
2329
|
-
1. Claude/Gemini/GPT mit team-fullstack Bundle verwenden
|
2330
|
-
2. **Flow:** Analyst → PM → UX Expert → Architect → PO
|
2331
|
-
3. **Output:** docs/prd.md, docs/architecture.md
|
2332
|
-
|
2333
|
-
### Option B: IDE Planning (Leistungsstark)
|
2334
|
-
\`\`\`
|
2335
|
-
@analyst → Market Research & Project Brief
|
2336
|
-
@pm → PRD mit FRs, NFRs, Epics & Stories erstellen
|
2337
|
-
@ux-expert → Frontend Spec (optional)
|
2338
|
-
@architect → System Architecture design
|
2339
|
-
@po → Master Checklist & Document Alignment
|
2340
|
-
\`\`\`
|
2341
|
-
|
2342
|
-
## ⚠️ KRITISCHER ÜBERGANG: Document Sharding
|
2343
|
-
|
2344
|
-
**ESSENTIAL STEP:**
|
2345
|
-
\`\`\`
|
2346
|
-
@po bitte shard die PRD und Architecture Dokumente in fokussierte Dateien
|
2347
|
-
\`\`\`
|
2348
|
-
|
2349
|
-
**Das erstellt:**
|
2350
|
-
- docs/architecture/tech-stack.md ← Dev lädt immer
|
2351
|
-
- docs/architecture/coding-standards.md ← Dev lädt immer
|
2352
|
-
- docs/architecture/project-structure.md ← Dev lädt immer
|
2353
|
-
- docs/requirements/core.md
|
2354
|
-
- docs/stories/ (individual story files)
|
2355
|
-
|
2356
|
-
## 🚀 BMAD Development Cycle (Phase 2)
|
2357
|
-
|
2358
|
-
### Core Development Loop:
|
2359
|
-
\`\`\`
|
2360
|
-
1. @sm → Review previous notes, draft next story from sharded epic
|
2361
|
-
2. @po → Validate story draft (optional)
|
2362
|
-
3. User → Approve story
|
2363
|
-
4. @dev → Sequential tasks, implement + tests, mark ready
|
2364
|
-
5. User → Verify (request QA or approve)
|
2365
|
-
6. @qa → Senior dev review + refactoring (optional)
|
2366
|
-
7. ⚠️ CRITICAL: Verify tests + linting pass
|
2367
|
-
8. ⚠️ SUPER CRITICAL: COMMIT CHANGES BEFORE PROCEEDING!
|
2368
|
-
9. Mark story done → Loop back to @sm
|
2369
|
-
\`\`\`
|
2370
|
-
|
2371
|
-
## 🎯 One-Click Commands
|
2372
|
-
|
2373
|
-
### Planning:
|
2374
|
-
- \`/plan\` → Start planning workflow
|
2375
|
-
- \`/prd\` → Generate PRD
|
2376
|
-
- \`/arch\` → Design architecture
|
2377
|
-
|
2378
|
-
### Critical Transition:
|
2379
|
-
- \`/shard\` → Document sharding (ESSENTIAL!)
|
2380
|
-
|
2381
|
-
### Development:
|
2382
|
-
- \`/story\` → Draft next story
|
2383
|
-
- \`/dev\` → Start development
|
2384
|
-
- \`/test\` → Run tests
|
2385
|
-
- \`/qa\` → Request review
|
2386
|
-
- \`/commit\` → Commit changes
|
2387
|
-
|
2388
|
-
### ${
|
2389
|
-
this.config.projectType === "greenfield" ? "Greenfield" : "Brownfield"
|
2390
|
-
} Specific:
|
2391
|
-
${
|
2392
|
-
this.config.projectType === "greenfield"
|
2393
|
-
? `
|
2394
|
-
- \`/start\` → Fresh project setup
|
2395
|
-
- \`/design\` → Create from scratch
|
2396
|
-
- \`/build\` → Build step by step
|
2397
|
-
`
|
2398
|
-
: `
|
2399
|
-
- \`/analyze\` → Analyze existing code
|
2400
|
-
- \`/document\` → Document current state
|
2401
|
-
- \`/improve\` → Plan improvements
|
2402
|
-
`
|
2403
|
-
}
|
2404
|
-
|
2405
|
-
## 📊 File Structure
|
2406
|
-
|
2407
|
-
\`\`\`
|
2408
|
-
your-project/
|
2409
|
-
├── docs/
|
2410
|
-
│ ├── prd.md ← Initial PRD
|
2411
|
-
│ ├── architecture.md ← Initial Architecture
|
2412
|
-
│ ├── architecture/ ← Sharded files
|
2413
|
-
│ │ ├── tech-stack.md
|
2414
|
-
│ │ ├── coding-standards.md
|
2415
|
-
│ │ └── project-structure.md
|
2416
|
-
│ ├── requirements/
|
2417
|
-
│ │ └── core.md
|
2418
|
-
│ └── stories/
|
2419
|
-
│ ├── epic-1-auth/
|
2420
|
-
│ └── epic-2-features/
|
2421
|
-
├── appiq-solution/
|
2422
|
-
│ ├── agents/ ← AI-Agents
|
2423
|
-
│ ├── templates/ ← Document templates
|
2424
|
-
│ ├── workflows/ ← Workflow guides
|
2425
|
-
│ └── .bmad-core/ ← BMAD configuration
|
2426
|
-
└── .cursor/rules/ ← IDE integration
|
2427
|
-
\`\`\`
|
2428
|
-
|
2429
|
-
## ⚠️ Critical Success Factors
|
2430
|
-
|
2431
|
-
### Document Sharding (ESSENTIAL):
|
2432
|
-
- **MUST DO** after planning phase
|
2433
|
-
- Creates focused, lean files for agents
|
2434
|
-
- Improves agent performance dramatically
|
2435
|
-
|
2436
|
-
### Commit Points:
|
2437
|
-
- After QA approval (always!)
|
2438
|
-
- Before next story (clean state)
|
2439
|
-
- Regular commits during development
|
2440
|
-
|
2441
|
-
### Quality Gates:
|
2442
|
-
- All tests passing ✅
|
2443
|
-
- Linting clean ✅
|
2444
|
-
- Code reviewed (if QA used) ✅
|
2445
|
-
- Documentation updated ✅
|
2446
|
-
|
2447
|
-
## 🆘 Help & Support
|
2448
|
-
|
2449
|
-
- \`/help\` → Show all commands
|
2450
|
-
- \`/workflow\` → Current workflow step
|
2451
|
-
- \`/agents\` → Available agents
|
2452
|
-
- \`/docs\` → Documentation
|
2453
|
-
|
2454
|
-
### Workflow Files:
|
2455
|
-
- appiq-solution/workflows/planning-workflow.md
|
2456
|
-
- appiq-solution/workflows/development-cycle.md
|
2457
|
-
- appiq-solution/workflows/document-sharding.md
|
2458
|
-
|
2459
|
-
---
|
2460
|
-
**IDEs:** ${this.config.selectedIDEs
|
2461
|
-
.map((ide) => this.getIDEName(ide))
|
2462
|
-
.join(", ")}
|
2463
|
-
**Created:** ${new Date().toLocaleDateString("de-DE")}
|
2464
|
-
**Powered by Appiq Solution - Built with ❤️ based on Bmad-Method**
|
2465
|
-
`;
|
2466
|
-
}
|
2467
|
-
|
2468
|
-
async setupIDEIntegration() {
|
2469
|
-
if (
|
2470
|
-
this.config.selectedIDEs.includes("manual") &&
|
2471
|
-
this.config.selectedIDEs.length === 1
|
2472
|
-
)
|
2473
|
-
return;
|
2474
|
-
|
2475
|
-
console.log(chalk.gray(" 🔧 Mehrere IDE-Integrationen..."));
|
2476
|
-
|
2477
|
-
for (const ide of this.config.selectedIDEs) {
|
2478
|
-
if (ide === "manual") continue;
|
2479
|
-
|
2480
|
-
console.log(
|
2481
|
-
chalk.gray(` 📝 ${this.getIDEName(ide)} wird konfiguriert...`)
|
2482
|
-
);
|
2483
|
-
|
2484
|
-
const ideConfig = this.getIDEConfig(ide);
|
2485
|
-
const ideDir = path.join(this.projectRoot, ideConfig.dir);
|
2486
|
-
|
2487
|
-
if (!fs.existsSync(ideDir)) {
|
2488
|
-
fs.mkdirSync(ideDir, { recursive: true });
|
2489
|
-
}
|
2490
|
-
|
2491
|
-
// Copy agents to IDE-specific format
|
2492
|
-
const agentsPath = path.join(this.appiqPath, "agents");
|
2493
|
-
const agents = fs.readdirSync(agentsPath);
|
2494
|
-
|
2495
|
-
for (const agent of agents) {
|
2496
|
-
const sourcePath = path.join(agentsPath, agent);
|
2497
|
-
const targetPath = path.join(
|
2498
|
-
ideDir,
|
2499
|
-
agent.replace(".md", ideConfig.suffix)
|
2500
|
-
);
|
2501
|
-
fs.copyFileSync(sourcePath, targetPath);
|
2502
|
-
}
|
2503
|
-
|
2504
|
-
console.log(chalk.green(` ✅ ${this.getIDEName(ide)} konfiguriert`));
|
2505
|
-
}
|
2506
|
-
|
2507
|
-
console.log(chalk.green(" ✅ Alle IDE-Integrationen abgeschlossen!"));
|
2508
|
-
}
|
2509
|
-
|
2510
|
-
getIDEConfig(ide) {
|
2511
|
-
const configs = {
|
2512
|
-
cursor: { dir: ".cursor/rules", suffix: ".mdc" },
|
2513
|
-
"claude-code": { dir: ".claude/commands/Appiq", suffix: ".md" },
|
2514
|
-
windsurf: { dir: ".windsurf/rules", suffix: ".md" },
|
2515
|
-
cline: { dir: ".clinerules", suffix: ".md" },
|
2516
|
-
trae: { dir: ".trae/rules", suffix: ".md" },
|
2517
|
-
roo: { dir: ".roo/agents", suffix: ".md" },
|
2518
|
-
gemini: { dir: ".gemini/commands", suffix: ".md" },
|
2519
|
-
"github-copilot": { dir: ".github/copilot", suffix: ".md" },
|
2520
|
-
};
|
2521
|
-
return configs[ide] || { dir: ".appiq-solution", suffix: ".md" };
|
2522
|
-
}
|
2523
|
-
|
2524
|
-
getIDEName(ide) {
|
2525
|
-
const names = {
|
2526
|
-
cursor: "Cursor",
|
2527
|
-
"claude-code": "Claude Code CLI",
|
2528
|
-
windsurf: "Windsurf",
|
2529
|
-
cline: "VS Code + Cline",
|
2530
|
-
trae: "Trae",
|
2531
|
-
roo: "Roo Code",
|
2532
|
-
gemini: "Gemini CLI",
|
2533
|
-
"github-copilot": "GitHub Copilot",
|
2534
|
-
manual: "Manuell",
|
2535
|
-
};
|
2536
|
-
return names[ide] || ide;
|
2537
|
-
}
|
2538
|
-
|
2539
|
-
async showSimpleInstructions() {
|
2540
|
-
console.log(chalk.bold.green("🎉 Appiq Installation Erfolgreich!\n"));
|
2541
|
-
console.log(chalk.dim("Built with ❤️ based on the amazing Bmad-Method"));
|
2542
|
-
console.log(chalk.dim("https://github.com/Viktor-Hermann/APPIQ-METHOD\n"));
|
2543
|
-
|
2544
|
-
console.log(chalk.cyan("📋 Nächste Schritte (Super einfach):"));
|
2545
|
-
console.log(chalk.white("════════════════════════════════════\n"));
|
2546
|
-
|
2547
|
-
if (
|
2548
|
-
this.config.selectedIDEs.length > 0 &&
|
2549
|
-
!this.config.selectedIDEs.includes("manual")
|
2550
|
-
) {
|
2551
|
-
console.log(
|
2552
|
-
chalk.yellow(
|
2553
|
-
`1. Ihre IDEs öffnen: ${this.config.selectedIDEs
|
2554
|
-
.map((ide) => this.getIDEName(ide))
|
2555
|
-
.join(", ")}`
|
2556
|
-
)
|
2557
|
-
);
|
2558
|
-
console.log(
|
2559
|
-
chalk.gray(` → Agents sind bereits in allen IDEs installiert!\n`)
|
2560
|
-
);
|
2561
|
-
}
|
2562
|
-
|
2563
|
-
console.log(chalk.yellow("2. 📋 BMAD Planning Workflow:"));
|
2564
|
-
if (this.config.planApproved) {
|
2565
|
-
console.log(
|
2566
|
-
chalk.green(` ✅ Planning Complete - Ready for Development!`)
|
2567
|
-
);
|
2568
|
-
console.log(chalk.cyan(` → Ihre initial PRD: docs/prd.md`));
|
2569
|
-
} else {
|
2570
|
-
console.log(chalk.cyan(` Option A: Web UI (kosteneffizient)`));
|
2571
|
-
console.log(chalk.gray(` → Claude/Gemini/GPT mit Agents verwenden`));
|
2572
|
-
console.log(chalk.cyan(` Option B: Direkt in IDE`));
|
2573
|
-
console.log(chalk.gray(` → @pm für PRD, @architect für Architecture`));
|
2574
|
-
}
|
2575
|
-
console.log("");
|
2576
|
-
|
2577
|
-
console.log(chalk.yellow("3. ⚠️ KRITISCHER ÜBERGANG: Document Sharding"));
|
2578
|
-
console.log(
|
2579
|
-
chalk.red(
|
2580
|
-
` → Sagen Sie Ihrer IDE: ${chalk.bold(
|
2581
|
-
'"@po bitte shard die PRD und Architecture Dokumente"'
|
2582
|
-
)}`
|
2583
|
-
)
|
2584
|
-
);
|
2585
|
-
console.log(
|
2586
|
-
chalk.gray(` → Dokumente werden in fokussierte Teile aufgeteilt\n`)
|
2587
|
-
);
|
2588
|
-
|
2589
|
-
console.log(chalk.yellow("4. 🚀 BMAD Development Cycle:"));
|
2590
|
-
console.log(chalk.cyan(` 1. @sm → Story Draft von Sharded Epic`));
|
2591
|
-
console.log(chalk.cyan(` 2. @po → Story Validation (optional)`));
|
2592
|
-
console.log(chalk.cyan(` 3. User → Story Approval`));
|
2593
|
-
console.log(chalk.cyan(` 4. @dev → Implementation + Tests`));
|
2594
|
-
console.log(chalk.cyan(` 5. @qa → Code Review (optional)`));
|
2595
|
-
console.log(chalk.red(` 6. ⚠️ COMMIT CHANGES BEFORE PROCEEDING!`));
|
2596
|
-
console.log(chalk.gray(` → Loop zurück zu @sm für nächste Story\n`));
|
2597
|
-
|
2598
|
-
console.log(chalk.yellow("5. 🎯 Quick Commands (in quick-start.md):"));
|
2599
|
-
console.log(chalk.cyan(` /plan → Planning starten`));
|
2600
|
-
console.log(chalk.cyan(` /shard → Document Sharding`));
|
2601
|
-
console.log(chalk.cyan(` /story → Nächste Story`));
|
2602
|
-
console.log(chalk.cyan(` /dev → Development`));
|
2603
|
-
console.log(chalk.cyan(` /qa → Quality Review`));
|
2604
|
-
console.log(chalk.gray(` → Alle Details in appiq-solution/workflows/\n`));
|
2605
|
-
|
2606
|
-
console.log(chalk.cyan("🎯 Das war's! Kein komplizierter Setup mehr."));
|
2607
|
-
console.log(chalk.green("🚀 Viel Erfolg mit Appiq!\n"));
|
2608
|
-
|
2609
|
-
// Quick reference
|
2610
|
-
console.log(chalk.dim("━".repeat(50)));
|
2611
|
-
console.log(chalk.dim("📁 Quick Reference:"));
|
2612
|
-
console.log(chalk.dim(` • Agents: appiq-solution/agents/`));
|
2613
|
-
console.log(
|
2614
|
-
chalk.dim(` • Quick Start: appiq-solution/commands/quick-start.md`)
|
2615
|
-
);
|
2616
|
-
console.log(chalk.dim(` • Projekt-Typ: ${this.config.projectType}`));
|
2617
|
-
console.log(
|
2618
|
-
chalk.dim(
|
2619
|
-
` • IDEs: ${this.config.selectedIDEs
|
2620
|
-
.map((ide) => this.getIDEName(ide))
|
2621
|
-
.join(", ")}`
|
2622
|
-
)
|
2623
|
-
);
|
2624
|
-
}
|
2625
|
-
|
2626
|
-
// Helper methods
|
2627
|
-
hasExistingSourceCode() {
|
2628
|
-
const sourceDirs = ["src", "lib", "app", "components", "pages"];
|
2629
|
-
return sourceDirs.some(
|
2630
|
-
(dir) =>
|
2631
|
-
fs.existsSync(path.join(this.projectRoot, dir)) &&
|
2632
|
-
fs.readdirSync(path.join(this.projectRoot, dir)).length > 0
|
2633
|
-
);
|
2634
|
-
}
|
2635
|
-
|
2636
|
-
hasExistingDocumentation() {
|
2637
|
-
const docFiles = ["README.md", "docs", "documentation"];
|
2638
|
-
return docFiles.some((file) =>
|
2639
|
-
fs.existsSync(path.join(this.projectRoot, file))
|
2640
|
-
);
|
2641
|
-
}
|
2642
|
-
|
2643
|
-
async installProjectConfig() {
|
2644
|
-
const configContent = this.generateProjectConfig();
|
2645
|
-
fs.writeFileSync(
|
2646
|
-
path.join(this.appiqPath, "project-config.yaml"),
|
2647
|
-
configContent
|
2648
|
-
);
|
2649
|
-
}
|
2650
|
-
|
2651
|
-
generateProjectConfig() {
|
2652
|
-
return `# Appiq Solution Project Configuration
|
2653
|
-
# Built with ❤️ based on Bmad-Method
|
2654
|
-
version: "1.0.0"
|
2655
|
-
project:
|
2656
|
-
type: ${this.config.projectType}
|
2657
|
-
created: ${new Date().toISOString()}
|
2658
|
-
name: ${this.config.projectName || path.basename(this.projectRoot)}
|
2659
|
-
plan_approved: ${this.config.planApproved}
|
2660
|
-
|
2661
|
-
# Wo die wichtigen Dateien liegen
|
2662
|
-
paths:
|
2663
|
-
prd: "docs/prd.md"
|
2664
|
-
architecture: "docs/architecture.md"
|
2665
|
-
stories: "docs/stories/"
|
2666
|
-
agents: "appiq-solution/agents/"
|
2667
|
-
orchestration: "appiq-solution/orchestration.yaml"
|
2668
|
-
|
2669
|
-
# One-Click Workflows
|
2670
|
-
workflows:
|
2671
|
-
${this.config.projectType === "greenfield" ? "greenfield" : "brownfield"}:
|
2672
|
-
start_command: "${
|
2673
|
-
this.config.projectType === "greenfield" ? "/start" : "/analyze"
|
2674
|
-
}"
|
2675
|
-
agents_sequence:
|
2676
|
-
- init-flow-po
|
2677
|
-
- architect
|
2678
|
-
- pm
|
2679
|
-
- dev
|
2680
|
-
- qa
|
2681
|
-
|
2682
|
-
# IDE Integration (Mehrere IDEs)
|
2683
|
-
ides:
|
2684
|
-
${this.config.selectedIDEs
|
2685
|
-
.map(
|
2686
|
-
(ide) => ` - name: ${this.getIDEName(ide)}
|
2687
|
-
config_path: ${this.getIDEConfig(ide).dir}
|
2688
|
-
file_format: ${this.getIDEConfig(ide).suffix}`
|
2689
|
-
)
|
2690
|
-
.join("\n")}
|
2691
|
-
`;
|
2692
|
-
}
|
2693
|
-
}
|
2694
|
-
|
2695
|
-
// Run installer if called directly
|
2696
|
-
if (require.main === module) {
|
2697
|
-
// Check if 'install' command is provided
|
2698
|
-
const args = process.argv.slice(2);
|
2699
|
-
|
2700
|
-
if (args.length === 0 || args[0] === "install") {
|
2701
|
-
const installer = new AppiqSolutionInstaller();
|
2702
|
-
installer.install().catch(console.error);
|
2703
|
-
} else {
|
2704
|
-
console.log(
|
2705
|
-
chalk.red("❌ Unknown command. Use: npx appiq-solution install")
|
2706
|
-
);
|
2707
|
-
process.exit(1);
|
2708
|
-
}
|
2709
|
-
}
|
2710
|
-
|
2711
|
-
module.exports = AppiqSolutionInstaller;
|