maxsim-flutter 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +42 -0
- package/LICENSE +21 -0
- package/README.md +445 -0
- package/claude-plugin/.claude-plugin/plugin.json +46 -0
- package/claude-plugin/agents/flutter-setup-agent.md +54 -0
- package/claude-plugin/commands/flutter-add.md +32 -0
- package/claude-plugin/commands/flutter-create.md +28 -0
- package/claude-plugin/commands/flutter-migrate.md +28 -0
- package/claude-plugin/skills/flutter-scaffolding/SKILL.md +109 -0
- package/dist/claude-setup/agent-writer.d.ts +21 -0
- package/dist/claude-setup/agent-writer.d.ts.map +1 -0
- package/dist/claude-setup/agent-writer.js +365 -0
- package/dist/claude-setup/agent-writer.js.map +1 -0
- package/dist/claude-setup/claude-md-generator.d.ts +7 -0
- package/dist/claude-setup/claude-md-generator.d.ts.map +1 -0
- package/dist/claude-setup/claude-md-generator.js +428 -0
- package/dist/claude-setup/claude-md-generator.js.map +1 -0
- package/dist/claude-setup/commands-writer.d.ts +7 -0
- package/dist/claude-setup/commands-writer.d.ts.map +1 -0
- package/dist/claude-setup/commands-writer.js +303 -0
- package/dist/claude-setup/commands-writer.js.map +1 -0
- package/dist/claude-setup/hooks-writer.d.ts +3 -0
- package/dist/claude-setup/hooks-writer.d.ts.map +1 -0
- package/dist/claude-setup/hooks-writer.js +34 -0
- package/dist/claude-setup/hooks-writer.js.map +1 -0
- package/dist/claude-setup/index.d.ts +10 -0
- package/dist/claude-setup/index.d.ts.map +1 -0
- package/dist/claude-setup/index.js +9 -0
- package/dist/claude-setup/index.js.map +1 -0
- package/dist/claude-setup/mcp-config-writer.d.ts +3 -0
- package/dist/claude-setup/mcp-config-writer.d.ts.map +1 -0
- package/dist/claude-setup/mcp-config-writer.js +42 -0
- package/dist/claude-setup/mcp-config-writer.js.map +1 -0
- package/dist/claude-setup/plugin-assembler.d.ts +2 -0
- package/dist/claude-setup/plugin-assembler.d.ts.map +1 -0
- package/dist/claude-setup/plugin-assembler.js +3 -0
- package/dist/claude-setup/plugin-assembler.js.map +1 -0
- package/dist/claude-setup/prd-generator.d.ts +10 -0
- package/dist/claude-setup/prd-generator.d.ts.map +1 -0
- package/dist/claude-setup/prd-generator.js +295 -0
- package/dist/claude-setup/prd-generator.js.map +1 -0
- package/dist/claude-setup/setup-orchestrator.d.ts +11 -0
- package/dist/claude-setup/setup-orchestrator.d.ts.map +1 -0
- package/dist/claude-setup/setup-orchestrator.js +46 -0
- package/dist/claude-setup/setup-orchestrator.js.map +1 -0
- package/dist/claude-setup/skill-writer.d.ts +3 -0
- package/dist/claude-setup/skill-writer.d.ts.map +1 -0
- package/dist/claude-setup/skill-writer.js +256 -0
- package/dist/claude-setup/skill-writer.js.map +1 -0
- package/dist/cli/commands/add.d.ts +16 -0
- package/dist/cli/commands/add.d.ts.map +1 -0
- package/dist/cli/commands/add.js +414 -0
- package/dist/cli/commands/add.js.map +1 -0
- package/dist/cli/commands/create.d.ts +3 -0
- package/dist/cli/commands/create.d.ts.map +1 -0
- package/dist/cli/commands/create.js +161 -0
- package/dist/cli/commands/create.js.map +1 -0
- package/dist/cli/commands/list.d.ts +12 -0
- package/dist/cli/commands/list.d.ts.map +1 -0
- package/dist/cli/commands/list.js +148 -0
- package/dist/cli/commands/list.js.map +1 -0
- package/dist/cli/commands/migrate.d.ts +3 -0
- package/dist/cli/commands/migrate.d.ts.map +1 -0
- package/dist/cli/commands/migrate.js +332 -0
- package/dist/cli/commands/migrate.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +34 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/ui/prompts.d.ts +9 -0
- package/dist/cli/ui/prompts.d.ts.map +1 -0
- package/dist/cli/ui/prompts.js +74 -0
- package/dist/cli/ui/prompts.js.map +1 -0
- package/dist/cli/ui/spinner.d.ts +2 -0
- package/dist/cli/ui/spinner.d.ts.map +1 -0
- package/dist/cli/ui/spinner.js +5 -0
- package/dist/cli/ui/spinner.js.map +1 -0
- package/dist/cli/version-check.d.ts +7 -0
- package/dist/cli/version-check.d.ts.map +1 -0
- package/dist/cli/version-check.js +92 -0
- package/dist/cli/version-check.js.map +1 -0
- package/dist/core/config/defaults.d.ts +3 -0
- package/dist/core/config/defaults.d.ts.map +1 -0
- package/dist/core/config/defaults.js +21 -0
- package/dist/core/config/defaults.js.map +1 -0
- package/dist/core/config/loader.d.ts +4 -0
- package/dist/core/config/loader.d.ts.map +1 -0
- package/dist/core/config/loader.js +38 -0
- package/dist/core/config/loader.js.map +1 -0
- package/dist/core/config/schema.d.ts +406 -0
- package/dist/core/config/schema.d.ts.map +1 -0
- package/dist/core/config/schema.js +119 -0
- package/dist/core/config/schema.js.map +1 -0
- package/dist/core/context.d.ts +57 -0
- package/dist/core/context.d.ts.map +1 -0
- package/dist/core/context.js +99 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/detector.d.ts +28 -0
- package/dist/core/detector.d.ts.map +1 -0
- package/dist/core/detector.js +200 -0
- package/dist/core/detector.js.map +1 -0
- package/dist/core/validator.d.ts +7 -0
- package/dist/core/validator.d.ts.map +1 -0
- package/dist/core/validator.js +35 -0
- package/dist/core/validator.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/modules/composer.d.ts +50 -0
- package/dist/modules/composer.d.ts.map +1 -0
- package/dist/modules/composer.js +122 -0
- package/dist/modules/composer.js.map +1 -0
- package/dist/modules/definitions/analytics/module.d.ts +7 -0
- package/dist/modules/definitions/analytics/module.d.ts.map +1 -0
- package/dist/modules/definitions/analytics/module.js +28 -0
- package/dist/modules/definitions/analytics/module.js.map +1 -0
- package/dist/modules/definitions/api/module.d.ts +7 -0
- package/dist/modules/definitions/api/module.d.ts.map +1 -0
- package/dist/modules/definitions/api/module.js +41 -0
- package/dist/modules/definitions/api/module.js.map +1 -0
- package/dist/modules/definitions/auth/module.d.ts +7 -0
- package/dist/modules/definitions/auth/module.d.ts.map +1 -0
- package/dist/modules/definitions/auth/module.js +53 -0
- package/dist/modules/definitions/auth/module.js.map +1 -0
- package/dist/modules/definitions/cicd/module.d.ts +7 -0
- package/dist/modules/definitions/cicd/module.d.ts.map +1 -0
- package/dist/modules/definitions/cicd/module.js +34 -0
- package/dist/modules/definitions/cicd/module.js.map +1 -0
- package/dist/modules/definitions/core/module.d.ts +7 -0
- package/dist/modules/definitions/core/module.d.ts.map +1 -0
- package/dist/modules/definitions/core/module.js +31 -0
- package/dist/modules/definitions/core/module.js.map +1 -0
- package/dist/modules/definitions/database/module.d.ts +8 -0
- package/dist/modules/definitions/database/module.d.ts.map +1 -0
- package/dist/modules/definitions/database/module.js +47 -0
- package/dist/modules/definitions/database/module.js.map +1 -0
- package/dist/modules/definitions/deep-linking/module.d.ts +7 -0
- package/dist/modules/definitions/deep-linking/module.d.ts.map +1 -0
- package/dist/modules/definitions/deep-linking/module.js +48 -0
- package/dist/modules/definitions/deep-linking/module.js.map +1 -0
- package/dist/modules/definitions/i18n/module.d.ts +7 -0
- package/dist/modules/definitions/i18n/module.d.ts.map +1 -0
- package/dist/modules/definitions/i18n/module.js +37 -0
- package/dist/modules/definitions/i18n/module.js.map +1 -0
- package/dist/modules/definitions/push/module.d.ts +7 -0
- package/dist/modules/definitions/push/module.d.ts.map +1 -0
- package/dist/modules/definitions/push/module.js +40 -0
- package/dist/modules/definitions/push/module.js.map +1 -0
- package/dist/modules/definitions/theme/module.d.ts +7 -0
- package/dist/modules/definitions/theme/module.d.ts.map +1 -0
- package/dist/modules/definitions/theme/module.js +42 -0
- package/dist/modules/definitions/theme/module.js.map +1 -0
- package/dist/modules/registry.d.ts +50 -0
- package/dist/modules/registry.d.ts.map +1 -0
- package/dist/modules/registry.js +104 -0
- package/dist/modules/registry.js.map +1 -0
- package/dist/modules/resolver.d.ts +42 -0
- package/dist/modules/resolver.d.ts.map +1 -0
- package/dist/modules/resolver.js +140 -0
- package/dist/modules/resolver.js.map +1 -0
- package/dist/ralph/prd-generator.d.ts +2 -0
- package/dist/ralph/prd-generator.d.ts.map +1 -0
- package/dist/ralph/prd-generator.js +3 -0
- package/dist/ralph/prd-generator.js.map +1 -0
- package/dist/ralph/ralph-converter.d.ts +2 -0
- package/dist/ralph/ralph-converter.d.ts.map +1 -0
- package/dist/ralph/ralph-converter.js +3 -0
- package/dist/ralph/ralph-converter.js.map +1 -0
- package/dist/ralph/story-sizer.d.ts +2 -0
- package/dist/ralph/story-sizer.d.ts.map +1 -0
- package/dist/ralph/story-sizer.js +3 -0
- package/dist/ralph/story-sizer.js.map +1 -0
- package/dist/scaffold/engine.d.ts +40 -0
- package/dist/scaffold/engine.d.ts.map +1 -0
- package/dist/scaffold/engine.js +233 -0
- package/dist/scaffold/engine.js.map +1 -0
- package/dist/scaffold/file-writer.d.ts +22 -0
- package/dist/scaffold/file-writer.d.ts.map +1 -0
- package/dist/scaffold/file-writer.js +68 -0
- package/dist/scaffold/file-writer.js.map +1 -0
- package/dist/scaffold/post-processors/build-runner.d.ts +2 -0
- package/dist/scaffold/post-processors/build-runner.d.ts.map +1 -0
- package/dist/scaffold/post-processors/build-runner.js +5 -0
- package/dist/scaffold/post-processors/build-runner.js.map +1 -0
- package/dist/scaffold/post-processors/dart-format.d.ts +2 -0
- package/dist/scaffold/post-processors/dart-format.d.ts.map +1 -0
- package/dist/scaffold/post-processors/dart-format.js +5 -0
- package/dist/scaffold/post-processors/dart-format.js.map +1 -0
- package/dist/scaffold/post-processors/flutter-pub-get.d.ts +2 -0
- package/dist/scaffold/post-processors/flutter-pub-get.d.ts.map +1 -0
- package/dist/scaffold/post-processors/flutter-pub-get.js +5 -0
- package/dist/scaffold/post-processors/flutter-pub-get.js.map +1 -0
- package/dist/scaffold/renderer.d.ts +20 -0
- package/dist/scaffold/renderer.d.ts.map +1 -0
- package/dist/scaffold/renderer.js +75 -0
- package/dist/scaffold/renderer.js.map +1 -0
- package/dist/scaffold/template-helpers.d.ts +25 -0
- package/dist/scaffold/template-helpers.d.ts.map +1 -0
- package/dist/scaffold/template-helpers.js +115 -0
- package/dist/scaffold/template-helpers.js.map +1 -0
- package/dist/types/config.d.ts +4 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +2 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/module.d.ts +85 -0
- package/dist/types/module.d.ts.map +1 -0
- package/dist/types/module.js +2 -0
- package/dist/types/module.js.map +1 -0
- package/dist/types/project.d.ts +13 -0
- package/dist/types/project.d.ts.map +1 -0
- package/dist/types/project.js +2 -0
- package/dist/types/project.js.map +1 -0
- package/package.json +80 -0
- package/templates/core/analysis_options.yaml.hbs +21 -0
- package/templates/core/lib/app.dart.hbs +20 -0
- package/templates/core/lib/core/providers/app_providers.dart.hbs +3 -0
- package/templates/core/lib/core/router/app_router.dart.hbs +19 -0
- package/templates/core/lib/core/theme/app_theme.dart.hbs +15 -0
- package/templates/core/lib/features/home/data/models/.gitkeep +0 -0
- package/templates/core/lib/features/home/data/repositories/.gitkeep +0 -0
- package/templates/core/lib/features/home/domain/entities/.gitkeep +0 -0
- package/templates/core/lib/features/home/domain/repositories/.gitkeep +0 -0
- package/templates/core/lib/features/home/presentation/pages/home_page.dart.hbs +18 -0
- package/templates/core/lib/features/home/presentation/widgets/.gitkeep +0 -0
- package/templates/core/lib/main.dart.hbs +11 -0
- package/templates/core/pubspec.yaml.hbs +30 -0
- package/templates/core/test/widget_test.dart.hbs +16 -0
- package/templates/modules/analytics/lib/features/analytics/data/observers/analytics_route_observer.dart.hbs +53 -0
- package/templates/modules/analytics/lib/features/analytics/data/services/firebase_analytics_service.dart.hbs +39 -0
- package/templates/modules/analytics/lib/features/analytics/domain/services/analytics_service.dart.hbs +25 -0
- package/templates/modules/analytics/lib/features/analytics/presentation/providers/analytics_provider.dart.hbs +17 -0
- package/templates/modules/analytics/pubspec.partial.yaml +2 -0
- package/templates/modules/api/lib/features/api/data/datasources/api_client.dart.hbs +171 -0
- package/templates/modules/api/lib/features/api/data/interceptors/auth_interceptor.dart.hbs +25 -0
- package/templates/modules/api/lib/features/api/data/interceptors/retry_interceptor.dart.hbs +42 -0
- package/templates/modules/api/lib/features/api/data/repositories/api_repository_impl.dart.hbs +21 -0
- package/templates/modules/api/lib/features/api/domain/exceptions/api_exception.dart.hbs +31 -0
- package/templates/modules/api/lib/features/api/domain/repositories/api_repository.dart.hbs +8 -0
- package/templates/modules/api/lib/features/api/presentation/providers/api_provider.dart.hbs +17 -0
- package/templates/modules/api/pubspec.partial.yaml +7 -0
- package/templates/modules/auth/lib/features/auth/data/datasources/auth_remote_datasource.dart.hbs +181 -0
- package/templates/modules/auth/lib/features/auth/data/models/auth_user_model.dart.hbs +27 -0
- package/templates/modules/auth/lib/features/auth/data/repositories/auth_repository_impl.dart.hbs +49 -0
- package/templates/modules/auth/lib/features/auth/domain/entities/user_entity.dart.hbs +18 -0
- package/templates/modules/auth/lib/features/auth/domain/repositories/auth_repository.dart.hbs +22 -0
- package/templates/modules/auth/lib/features/auth/domain/usecases/register_usecase.dart.hbs +20 -0
- package/templates/modules/auth/lib/features/auth/domain/usecases/sign_in_usecase.dart.hbs +15 -0
- package/templates/modules/auth/lib/features/auth/domain/usecases/sign_out_usecase.dart.hbs +11 -0
- package/templates/modules/auth/lib/features/auth/presentation/pages/login_page.dart.hbs +118 -0
- package/templates/modules/auth/lib/features/auth/presentation/pages/register_page.dart.hbs +131 -0
- package/templates/modules/auth/lib/features/auth/presentation/providers/auth_provider.dart.hbs +31 -0
- package/templates/modules/auth/pubspec.partial.yaml +13 -0
- package/templates/modules/cicd/.github/workflows/ci.yml.hbs +45 -0
- package/templates/modules/cicd/.gitlab-ci.yml.hbs +53 -0
- package/templates/modules/cicd/bitbucket-pipelines.yml.hbs +39 -0
- package/templates/modules/cicd/pubspec.partial.yaml +1 -0
- package/templates/modules/database/lib/features/database/data/datasources/database_datasource.dart.hbs +115 -0
- package/templates/modules/database/lib/features/database/data/repositories/database_repository_impl.dart.hbs +73 -0
- package/templates/modules/database/lib/features/database/domain/repositories/database_repository.dart.hbs +10 -0
- package/templates/modules/database/lib/features/database/presentation/providers/database_provider.dart.hbs +43 -0
- package/templates/modules/database/pubspec.partial.yaml +27 -0
- package/templates/modules/deep-linking/lib/features/deep_linking/data/datasources/deep_link_datasource.dart.hbs +18 -0
- package/templates/modules/deep-linking/lib/features/deep_linking/data/repositories/deep_link_repository_impl.dart.hbs +14 -0
- package/templates/modules/deep-linking/lib/features/deep_linking/domain/repositories/deep_link_repository.dart.hbs +7 -0
- package/templates/modules/deep-linking/lib/features/deep_linking/presentation/providers/deep_link_provider.dart.hbs +57 -0
- package/templates/modules/deep-linking/pubspec.partial.yaml +2 -0
- package/templates/modules/i18n/l10n.yaml.hbs +5 -0
- package/templates/modules/i18n/lib/core/l10n/l10n_config.dart.hbs +29 -0
- package/templates/modules/i18n/lib/core/l10n/l10n_provider.dart.hbs +20 -0
- package/templates/modules/i18n/lib/l10n/app_de.arb.hbs +27 -0
- package/templates/modules/i18n/lib/l10n/app_en.arb.hbs +27 -0
- package/templates/modules/i18n/pubspec.partial.yaml +7 -0
- package/templates/modules/push/lib/features/push/data/datasources/push_datasource.dart.hbs +124 -0
- package/templates/modules/push/lib/features/push/data/repositories/push_repository_impl.dart.hbs +28 -0
- package/templates/modules/push/lib/features/push/domain/repositories/push_repository.dart.hbs +31 -0
- package/templates/modules/push/lib/features/push/presentation/providers/push_provider.dart.hbs +34 -0
- package/templates/modules/push/pubspec.partial.yaml +8 -0
- package/templates/modules/theme/lib/core/theme/app_theme.dart.hbs +74 -0
- package/templates/modules/theme/lib/core/theme/theme_provider.dart.hbs +46 -0
- package/templates/modules/theme/pubspec.partial.yaml +2 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
Commit messages follow the [Angular Commit Convention](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#-commit-message-format):
|
|
9
|
+
- `feat:` — New feature
|
|
10
|
+
- `fix:` — Bug fix
|
|
11
|
+
- `chore:` — Maintenance
|
|
12
|
+
|
|
13
|
+
## [0.1.0] - 2026-02-19
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- **CLI Commands**: `create`, `add`, and `migrate` commands via Commander.js
|
|
18
|
+
- **Scaffold Engine**: Handlebars-based template rendering with file writing, dry-run mode, and conflict detection
|
|
19
|
+
- **Core Templates**: Clean Architecture Flutter project with Riverpod, go_router, freezed, and build_runner
|
|
20
|
+
- **Module System**: 9 optional modules with dependency resolution via topological sort
|
|
21
|
+
- **auth**: Firebase, Supabase, or custom authentication
|
|
22
|
+
- **api**: Dio HTTP client with interceptors and error handling
|
|
23
|
+
- **database**: Drift (SQLite), Hive, or Isar local storage
|
|
24
|
+
- **i18n**: ARB-based internationalization with Flutter gen-l10n
|
|
25
|
+
- **theme**: Material 3 theming with ColorScheme.fromSeed and dark mode support
|
|
26
|
+
- **push**: Firebase Cloud Messaging or OneSignal push notifications
|
|
27
|
+
- **analytics**: Firebase Analytics with GoRouter route observer
|
|
28
|
+
- **cicd**: GitHub Actions, GitLab CI, or Bitbucket Pipelines
|
|
29
|
+
- **deep-linking**: App Links with go_router integration
|
|
30
|
+
- **Module Composer**: Pubspec dependency merging with semver-aware deduplication
|
|
31
|
+
- **Config System**: Zod-validated `maxsim.config.yaml` schema with defaults
|
|
32
|
+
- **Project Detector**: Analyzes existing Flutter projects for architecture, state management, routing, and module detection
|
|
33
|
+
- **Claude Code Integration**: Generates `.claude/` directory for scaffolded projects
|
|
34
|
+
- CLAUDE.md with architecture rules, Riverpod/go_router patterns, and Agent Teams workflow
|
|
35
|
+
- 5 agent definitions (architect, builder, tester, reviewer, docs)
|
|
36
|
+
- 4 skills (flutter-patterns, go-router-patterns, module-conventions, prd)
|
|
37
|
+
- TaskCompleted hook enforcing `flutter analyze` and `flutter test`
|
|
38
|
+
- MCP config for Firebase/Supabase projects
|
|
39
|
+
- PRD generator for Agent Teams task source
|
|
40
|
+
- **Claude Code Plugin**: Plugin structure with commands, skills, and setup agent
|
|
41
|
+
- **Interactive UI**: @clack/prompts for project creation and module selection
|
|
42
|
+
- **Post-Processors**: Optional dart format, flutter pub get, and build_runner execution
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 maxsim-flutter contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,445 @@
|
|
|
1
|
+
# maxsim-flutter
|
|
2
|
+
|
|
3
|
+
[](https://github.com/nicosalm/maxsim-flutter/actions/workflows/ci.yml)
|
|
4
|
+
[](https://www.npmjs.com/package/maxsim-flutter)
|
|
5
|
+
[](https://opensource.org/licenses/MIT)
|
|
6
|
+
[](https://nodejs.org/)
|
|
7
|
+
|
|
8
|
+
AI-powered Flutter app scaffolding with Clean Architecture, Riverpod state management, go_router navigation, and autonomous development via Claude Code Agent Teams.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Features
|
|
13
|
+
|
|
14
|
+
- Scaffold a complete Flutter app with Clean Architecture from a single command
|
|
15
|
+
- Interactive prompts or fully non-interactive mode with `--yes` and `--config`
|
|
16
|
+
- Nine opt-in feature modules (auth, API client, database, theming, i18n, push notifications, analytics, CI/CD, deep linking)
|
|
17
|
+
- Generates a `.claude/` directory with CLAUDE.md, agent definitions, and skills so Claude Code can continue development autonomously
|
|
18
|
+
- `add` command to bolt modules onto an existing project after initial creation
|
|
19
|
+
- `migrate` command that analyses an existing Flutter project and generates a migration plan with `prd.json` stories
|
|
20
|
+
- `maxsim.config.yaml` written to the project root for reproducible re-runs
|
|
21
|
+
- Dry-run mode to preview all generated files before committing
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Requirements
|
|
26
|
+
|
|
27
|
+
- Node.js >= 18
|
|
28
|
+
- Flutter SDK (optional at scaffold time; required to build and run the generated app)
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Installation
|
|
33
|
+
|
|
34
|
+
Install globally:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
npm install -g maxsim-flutter
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Or run without installing:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
npx maxsim-flutter <command>
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Quick Start
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# Interactive: answer prompts for name, org, modules, and platforms
|
|
52
|
+
maxsim-flutter create
|
|
53
|
+
|
|
54
|
+
# Non-interactive: create an app called "my_app" with auth and API modules
|
|
55
|
+
maxsim-flutter create my_app --org com.example --modules auth,api --yes
|
|
56
|
+
|
|
57
|
+
# After creation, enter the project directory and run the app
|
|
58
|
+
cd my_app
|
|
59
|
+
flutter pub get
|
|
60
|
+
flutter run
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Commands
|
|
66
|
+
|
|
67
|
+
### `maxsim-flutter create [app-name]`
|
|
68
|
+
|
|
69
|
+
Creates a new Flutter project with Clean Architecture, Riverpod, and go_router.
|
|
70
|
+
|
|
71
|
+
If `app-name` is omitted and `--yes` is not set, an interactive prompt is shown.
|
|
72
|
+
|
|
73
|
+
**Flags**
|
|
74
|
+
|
|
75
|
+
| Flag | Description |
|
|
76
|
+
|------|-------------|
|
|
77
|
+
| `--org <id>` | Organisation identifier, e.g. `com.example` (default: `com.example`) |
|
|
78
|
+
| `--modules <list>` | Comma-separated list of modules to enable, e.g. `auth,api,theme` |
|
|
79
|
+
| `--platforms <list>` | Comma-separated target platforms: `android,ios,web,macos,windows,linux` (default: `android,ios`) |
|
|
80
|
+
| `--auth-provider <provider>` | Auth provider when `auth` module is included: `firebase`, `supabase`, or `custom` |
|
|
81
|
+
| `--config <file>` | Path to a `maxsim.config.yaml` preset file — skips all prompts |
|
|
82
|
+
| `--yes` | Accept all defaults without prompting |
|
|
83
|
+
| `--dry-run` | Preview generated files without writing anything to disk |
|
|
84
|
+
| `--no-claude` | Skip generating the `.claude/` directory and `CLAUDE.md` |
|
|
85
|
+
|
|
86
|
+
**Examples**
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
# Interactive
|
|
90
|
+
maxsim-flutter create
|
|
91
|
+
|
|
92
|
+
# Minimal non-interactive
|
|
93
|
+
maxsim-flutter create shop_app --org com.acme --yes
|
|
94
|
+
|
|
95
|
+
# Full feature set, non-interactive
|
|
96
|
+
maxsim-flutter create shop_app \
|
|
97
|
+
--org com.acme \
|
|
98
|
+
--modules auth,api,database,theme,i18n \
|
|
99
|
+
--platforms android,ios,web \
|
|
100
|
+
--auth-provider firebase \
|
|
101
|
+
--yes
|
|
102
|
+
|
|
103
|
+
# Load a saved configuration file
|
|
104
|
+
maxsim-flutter create --config ./my-preset.yaml
|
|
105
|
+
|
|
106
|
+
# Preview without writing
|
|
107
|
+
maxsim-flutter create my_app --yes --dry-run
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
### `maxsim-flutter add [module]`
|
|
113
|
+
|
|
114
|
+
Adds a feature module to an existing maxsim-flutter project. The command searches for `maxsim.config.yaml` in the current directory and up to five parent directories.
|
|
115
|
+
|
|
116
|
+
If `module` is omitted, an interactive selection prompt is shown listing only modules not yet enabled in the project.
|
|
117
|
+
|
|
118
|
+
**Flags**
|
|
119
|
+
|
|
120
|
+
| Flag | Description |
|
|
121
|
+
|------|-------------|
|
|
122
|
+
| `--project-dir <path>` | Path to the project directory (default: current directory) |
|
|
123
|
+
| `--dry-run` | Preview files that would be generated without writing |
|
|
124
|
+
|
|
125
|
+
**Examples**
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
# Interactive: pick from available modules
|
|
129
|
+
maxsim-flutter add
|
|
130
|
+
|
|
131
|
+
# Add a specific module
|
|
132
|
+
maxsim-flutter add push
|
|
133
|
+
|
|
134
|
+
# Add to a project in another directory
|
|
135
|
+
maxsim-flutter add analytics --project-dir ~/projects/my_app
|
|
136
|
+
|
|
137
|
+
# Preview what the database module would generate
|
|
138
|
+
maxsim-flutter add database --dry-run
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Available module identifiers: `auth`, `api`, `theme`, `database`, `i18n`, `push`, `analytics`, `cicd`, `deep-linking`
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
### `maxsim-flutter migrate [path]`
|
|
146
|
+
|
|
147
|
+
Analyses an existing Flutter project and, optionally, migrates it to maxsim conventions. Detected architecture, state management, routing, and dependencies are reported. On confirmation the command writes `maxsim.config.yaml`, generates a `.claude/` directory, and creates a `prd.json` file containing story-by-story migration tasks.
|
|
148
|
+
|
|
149
|
+
**Arguments**
|
|
150
|
+
|
|
151
|
+
| Argument | Description |
|
|
152
|
+
|----------|-------------|
|
|
153
|
+
| `[path]` | Path to the Flutter project root (default: current directory) |
|
|
154
|
+
|
|
155
|
+
**Flags**
|
|
156
|
+
|
|
157
|
+
| Flag | Description |
|
|
158
|
+
|------|-------------|
|
|
159
|
+
| `--analysis-only` | Print the analysis report without making any changes |
|
|
160
|
+
| `--yes` | Skip the confirmation prompt and apply migration immediately |
|
|
161
|
+
|
|
162
|
+
**Examples**
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
# Analyse the project in the current directory without making changes
|
|
166
|
+
maxsim-flutter migrate --analysis-only
|
|
167
|
+
|
|
168
|
+
# Analyse a project at a specific path
|
|
169
|
+
maxsim-flutter migrate ~/projects/legacy_app --analysis-only
|
|
170
|
+
|
|
171
|
+
# Migrate with confirmation prompt
|
|
172
|
+
maxsim-flutter migrate
|
|
173
|
+
|
|
174
|
+
# Migrate without prompting
|
|
175
|
+
maxsim-flutter migrate ~/projects/legacy_app --yes
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
The migration writes non-destructively: if `maxsim.config.yaml`, `CLAUDE.md`, or `prd.json` already exist they are skipped.
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## Modules
|
|
183
|
+
|
|
184
|
+
The `core` module is always included. All other modules are opt-in.
|
|
185
|
+
|
|
186
|
+
| Module | ID | Description | Options |
|
|
187
|
+
|--------|----|-------------|---------|
|
|
188
|
+
| Core | `core` | Base Clean Architecture structure with Riverpod state management and go_router navigation | Always included |
|
|
189
|
+
| Authentication | `auth` | User authentication with login, register, and session management | Provider: `firebase` (default), `supabase`, `custom` |
|
|
190
|
+
| API Client | `api` | HTTP client setup with Dio, interceptors, and typed error handling | Base URL (configurable) |
|
|
191
|
+
| Theme | `theme` | Advanced Material 3 theming with seed colors, dark/light mode switching via Riverpod | Seed color, dark mode toggle |
|
|
192
|
+
| Database | `database` | Local database persistence | Engine: `drift` / SQLite (default), `hive` / NoSQL, `isar` / NoSQL |
|
|
193
|
+
| Internationalization | `i18n` | Multi-language support with ARB files and Flutter localization | Default locale |
|
|
194
|
+
| Push Notifications | `push` | Push notification support | Provider: `firebase` / FCM (default), `onesignal` |
|
|
195
|
+
| Analytics | `analytics` | Analytics event tracking and route observation via Firebase Analytics | — |
|
|
196
|
+
| CI/CD | `cicd` | Continuous integration and deployment pipeline configuration | Provider: `github` (default), `gitlab`, `bitbucket` |
|
|
197
|
+
| Deep Linking | `deep-linking` | Deep link and universal link handling via app_links with go_router integration | URL scheme, host domain |
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## Agent Teams Workflow
|
|
202
|
+
|
|
203
|
+
Every generated project includes a `.claude/` directory pre-configured for Claude Code Agent Teams. This enables autonomous AI-assisted feature development after the initial scaffold.
|
|
204
|
+
|
|
205
|
+
### Prerequisites
|
|
206
|
+
|
|
207
|
+
- [Claude Code](https://github.com/anthropics/claude-code) installed and authenticated
|
|
208
|
+
- Enable the experimental agent teams feature:
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
export CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
### Step-by-step guide
|
|
215
|
+
|
|
216
|
+
**1. Scaffold the project**
|
|
217
|
+
|
|
218
|
+
```bash
|
|
219
|
+
maxsim-flutter create task_manager --org com.example --modules auth,api --yes
|
|
220
|
+
cd task_manager
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
**2. Review the generated prd.json**
|
|
224
|
+
|
|
225
|
+
The scaffold generates a `prd.json` containing phase-by-phase user stories for the enabled modules. Review and adjust stories to match your product requirements before starting the agent team.
|
|
226
|
+
|
|
227
|
+
**3. Start a Claude Code session in the project**
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
claude
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
**4. Instruct Claude Code to form a team**
|
|
234
|
+
|
|
235
|
+
```
|
|
236
|
+
Create an agent team from prd.json. Spawn an architect, two builders,
|
|
237
|
+
a tester, and a reviewer. Implement the PRD stories phase by phase.
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
Claude Code reads the `.claude/agents/` directory, creates a shared task list from `prd.json`, and coordinates the agents:
|
|
241
|
+
|
|
242
|
+
- **Architect** plans the implementation approach for each story
|
|
243
|
+
- **Builders** implement code following the Clean Architecture layers
|
|
244
|
+
- **Tester** writes unit and widget tests for new code
|
|
245
|
+
- **Reviewer** performs code review and enforces quality gates
|
|
246
|
+
|
|
247
|
+
**5. Monitor progress**
|
|
248
|
+
|
|
249
|
+
Agents communicate via the Claude Code task system. Use `/tasks` in your session to see the current state. Each story commit follows the format:
|
|
250
|
+
|
|
251
|
+
```
|
|
252
|
+
feat: [Story-ID] - Story Title
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
**6. Quality gates**
|
|
256
|
+
|
|
257
|
+
Each story must pass the following before being marked complete:
|
|
258
|
+
|
|
259
|
+
```bash
|
|
260
|
+
flutter analyze # zero errors
|
|
261
|
+
flutter test # all tests pass
|
|
262
|
+
dart format --set-exit-if-changed .
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
**7. Continue development after initial scaffold**
|
|
266
|
+
|
|
267
|
+
To add a new module and have the agent team implement it:
|
|
268
|
+
|
|
269
|
+
```bash
|
|
270
|
+
maxsim-flutter add push
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
The command regenerates `CLAUDE.md` with updated context. Tell Claude Code:
|
|
274
|
+
|
|
275
|
+
```
|
|
276
|
+
Implement the push notifications module stories from prd.json.
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
|
|
281
|
+
## Configuration Reference
|
|
282
|
+
|
|
283
|
+
Every project includes a `maxsim.config.yaml` at its root. You can edit this file and re-run scaffold commands.
|
|
284
|
+
|
|
285
|
+
```yaml
|
|
286
|
+
version: "1"
|
|
287
|
+
|
|
288
|
+
project:
|
|
289
|
+
name: my_app # Flutter package name (snake_case)
|
|
290
|
+
orgId: com.example # Reverse-DNS organisation ID
|
|
291
|
+
description: "My Flutter app" # Optional description
|
|
292
|
+
minSdkVersion: "21" # Optional minimum Android SDK version
|
|
293
|
+
|
|
294
|
+
platforms:
|
|
295
|
+
- android
|
|
296
|
+
- ios
|
|
297
|
+
# also supported: web, macos, windows, linux
|
|
298
|
+
|
|
299
|
+
modules:
|
|
300
|
+
auth:
|
|
301
|
+
enabled: true
|
|
302
|
+
provider: firebase # firebase | supabase | custom
|
|
303
|
+
|
|
304
|
+
api:
|
|
305
|
+
enabled: true
|
|
306
|
+
baseUrl: https://api.example.com
|
|
307
|
+
timeout: 30000 # Optional request timeout in milliseconds
|
|
308
|
+
|
|
309
|
+
database:
|
|
310
|
+
enabled: true
|
|
311
|
+
engine: drift # drift | hive | isar
|
|
312
|
+
|
|
313
|
+
theme:
|
|
314
|
+
enabled: true
|
|
315
|
+
seedColor: "#6750A4" # Optional Material 3 seed color (hex)
|
|
316
|
+
useMaterial3: true
|
|
317
|
+
darkMode: true
|
|
318
|
+
|
|
319
|
+
i18n:
|
|
320
|
+
enabled: true
|
|
321
|
+
defaultLocale: en
|
|
322
|
+
supportedLocales:
|
|
323
|
+
- en
|
|
324
|
+
- es
|
|
325
|
+
|
|
326
|
+
push:
|
|
327
|
+
enabled: true
|
|
328
|
+
provider: firebase # firebase | onesignal
|
|
329
|
+
|
|
330
|
+
analytics:
|
|
331
|
+
enabled: true
|
|
332
|
+
|
|
333
|
+
cicd:
|
|
334
|
+
enabled: true
|
|
335
|
+
provider: github # github | gitlab | bitbucket
|
|
336
|
+
targets:
|
|
337
|
+
- android
|
|
338
|
+
- ios
|
|
339
|
+
|
|
340
|
+
deep-linking:
|
|
341
|
+
enabled: true
|
|
342
|
+
scheme: myapp # Custom URL scheme, e.g. myapp://
|
|
343
|
+
host: example.com # Universal link host
|
|
344
|
+
|
|
345
|
+
claude:
|
|
346
|
+
enabled: true # Generate .claude/ directory (default: true)
|
|
347
|
+
generateAgents: false # Generate agent definition files
|
|
348
|
+
generateSkills: false # Generate skill files
|
|
349
|
+
generateHooks: false # Generate hook files
|
|
350
|
+
agentTeams: false # Enable agent teams configuration
|
|
351
|
+
mcpServers: [] # MCP server names to include
|
|
352
|
+
|
|
353
|
+
ralph:
|
|
354
|
+
enabled: false # Enable Ralph autonomous loop
|
|
355
|
+
maxIterations: 25 # Maximum Ralph iterations
|
|
356
|
+
|
|
357
|
+
scaffold:
|
|
358
|
+
overwriteExisting: ask # ask | always | never
|
|
359
|
+
runDartFormat: true # Run dart format after scaffolding
|
|
360
|
+
runPubGet: true # Run flutter pub get after scaffolding
|
|
361
|
+
runBuildRunner: false # Run build_runner after scaffolding
|
|
362
|
+
dryRun: false # Preview only, do not write files
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
---
|
|
366
|
+
|
|
367
|
+
## Contributing
|
|
368
|
+
|
|
369
|
+
### Development setup
|
|
370
|
+
|
|
371
|
+
```bash
|
|
372
|
+
git clone https://github.com/nicosalm/maxsim-flutter.git
|
|
373
|
+
cd maxsim-flutter
|
|
374
|
+
npm install
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
### Build
|
|
378
|
+
|
|
379
|
+
```bash
|
|
380
|
+
npm run build # Compile TypeScript to dist/
|
|
381
|
+
npm run dev # Watch mode compilation
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
### Testing
|
|
385
|
+
|
|
386
|
+
```bash
|
|
387
|
+
npm test # Run all tests
|
|
388
|
+
npm run test:watch # Watch mode
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
### Quality checks
|
|
392
|
+
|
|
393
|
+
All of the following must pass before submitting a pull request:
|
|
394
|
+
|
|
395
|
+
```bash
|
|
396
|
+
npm run typecheck # TypeScript type checking (zero errors)
|
|
397
|
+
npm run lint # ESLint (zero errors)
|
|
398
|
+
npm test # All tests pass
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
Auto-fix lint issues:
|
|
402
|
+
|
|
403
|
+
```bash
|
|
404
|
+
npm run lint:fix
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
### Project structure
|
|
408
|
+
|
|
409
|
+
```
|
|
410
|
+
src/
|
|
411
|
+
cli/ # CLI entry point, commands (create, add, migrate), interactive prompts
|
|
412
|
+
core/ # Config schema (Zod), project context, environment validator
|
|
413
|
+
scaffold/ # Template rendering engine (Handlebars), file writer, post-processors
|
|
414
|
+
modules/ # Module registry, resolver, composer, and definitions
|
|
415
|
+
ralph/ # PRD generation and story sizing
|
|
416
|
+
claude-setup/ # Generates .claude/ directory for output Flutter projects
|
|
417
|
+
types/ # Shared TypeScript interfaces
|
|
418
|
+
templates/
|
|
419
|
+
core/ # Base Clean Architecture Flutter templates
|
|
420
|
+
modules/ # Per-module Handlebars templates
|
|
421
|
+
claude-plugin/ # Claude Code plugin definition (commands, agents, skills)
|
|
422
|
+
tests/
|
|
423
|
+
unit/ # Unit tests
|
|
424
|
+
integration/ # Integration tests
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
### Commit convention
|
|
428
|
+
|
|
429
|
+
```
|
|
430
|
+
feat: [Story-ID] - Short description
|
|
431
|
+
fix: short description
|
|
432
|
+
chore: short description
|
|
433
|
+
```
|
|
434
|
+
|
|
435
|
+
---
|
|
436
|
+
|
|
437
|
+
## Changelog
|
|
438
|
+
|
|
439
|
+
See [CHANGELOG.md](./CHANGELOG.md) for release history.
|
|
440
|
+
|
|
441
|
+
---
|
|
442
|
+
|
|
443
|
+
## License
|
|
444
|
+
|
|
445
|
+
MIT. See [LICENSE](LICENSE) for details.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "maxsim-flutter",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "AI-powered Flutter app scaffolding with Clean Architecture, Riverpod, go_router, and autonomous development via Claude Code Agent Teams",
|
|
5
|
+
"author": "maxsim-flutter contributors",
|
|
6
|
+
"homepage": "https://github.com/your-org/maxsim-flutter",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"flutter",
|
|
9
|
+
"clean-architecture",
|
|
10
|
+
"riverpod",
|
|
11
|
+
"go-router",
|
|
12
|
+
"scaffold",
|
|
13
|
+
"agent-teams"
|
|
14
|
+
],
|
|
15
|
+
"commands": [
|
|
16
|
+
{
|
|
17
|
+
"name": "flutter-create",
|
|
18
|
+
"description": "Create a new Flutter app with Clean Architecture, Riverpod, and AI tooling",
|
|
19
|
+
"file": "commands/flutter-create.md"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"name": "flutter-add",
|
|
23
|
+
"description": "Add a module to an existing maxsim-flutter project",
|
|
24
|
+
"file": "commands/flutter-add.md"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "flutter-migrate",
|
|
28
|
+
"description": "Migrate an existing Flutter project to maxsim-flutter architecture",
|
|
29
|
+
"file": "commands/flutter-migrate.md"
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"skills": [
|
|
33
|
+
{
|
|
34
|
+
"name": "flutter-scaffolding",
|
|
35
|
+
"description": "Knowledge about available modules, architecture patterns, and configuration options for maxsim-flutter projects",
|
|
36
|
+
"directory": "skills/flutter-scaffolding"
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"agents": [
|
|
40
|
+
{
|
|
41
|
+
"name": "flutter-setup-agent",
|
|
42
|
+
"description": "Interactive agent that guides users through Flutter project setup, module selection, and configuration",
|
|
43
|
+
"file": "agents/flutter-setup-agent.md"
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: flutter-setup-agent
|
|
3
|
+
description: Interactive agent that guides users through Flutter project setup using maxsim-flutter. Use when a user wants to create a new Flutter project and needs guidance on architecture, module selection, and configuration.
|
|
4
|
+
model: sonnet
|
|
5
|
+
tools: ["Read", "Write", "Edit", "Bash", "Glob", "Grep"]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
You are an expert Flutter project setup assistant powered by maxsim-flutter.
|
|
9
|
+
|
|
10
|
+
## Your Role
|
|
11
|
+
|
|
12
|
+
Guide users through creating a new Flutter project with Clean Architecture, Riverpod, and go_router. Ask about their requirements, recommend modules and architecture decisions, then execute the scaffolding.
|
|
13
|
+
|
|
14
|
+
## Conversation Flow
|
|
15
|
+
|
|
16
|
+
1. **Understand the Project**: Ask what the user is building (app type, target audience, key features)
|
|
17
|
+
2. **Recommend Modules**: Based on their description, suggest which modules to enable:
|
|
18
|
+
- E-commerce app → auth, api, database, theme, analytics, push, deep-linking
|
|
19
|
+
- Social app → auth, api, push, analytics, theme, deep-linking
|
|
20
|
+
- Internal tool → auth, api, database, i18n
|
|
21
|
+
- Simple utility → theme only (or no modules)
|
|
22
|
+
3. **Configure**: Help them choose options for each module:
|
|
23
|
+
- Auth: firebase vs supabase vs custom backend
|
|
24
|
+
- Database: drift (relational) vs hive (key-value) vs isar (document)
|
|
25
|
+
- Theme: seed color, dark mode support
|
|
26
|
+
- CI/CD: github vs gitlab vs bitbucket
|
|
27
|
+
4. **Execute**: Run `npx maxsim-flutter create <name>` with appropriate flags:
|
|
28
|
+
- Non-interactive: `npx maxsim-flutter create <name> --yes --modules auth,api,theme`
|
|
29
|
+
- Interactive: `npx maxsim-flutter create` (follow prompts)
|
|
30
|
+
5. **Verify**: Confirm the project was created successfully
|
|
31
|
+
6. **Next Steps**: Explain how to use Claude Code Agent Teams with the generated project:
|
|
32
|
+
- The project includes `.claude/` with agents, skills, and CLAUDE.md
|
|
33
|
+
- They can create a team: architect + builders + tester + reviewer
|
|
34
|
+
- Use the generated `prd.json` as the task source
|
|
35
|
+
|
|
36
|
+
## Module Recommendations by App Type
|
|
37
|
+
|
|
38
|
+
| App Type | Recommended Modules |
|
|
39
|
+
|----------|-------------------|
|
|
40
|
+
| MVP/Prototype | auth, api, theme |
|
|
41
|
+
| E-commerce | auth, api, database, theme, analytics, push, deep-linking, cicd |
|
|
42
|
+
| Social/Chat | auth, api, push, analytics, theme, deep-linking |
|
|
43
|
+
| Enterprise | auth, api, database, i18n, theme, analytics, cicd |
|
|
44
|
+
| Content/Blog | api, theme, analytics, deep-linking |
|
|
45
|
+
| Offline-first | auth, database, theme |
|
|
46
|
+
|
|
47
|
+
## Guidelines
|
|
48
|
+
|
|
49
|
+
- Be concise but thorough when explaining tradeoffs
|
|
50
|
+
- Don't overwhelm beginners with too many options
|
|
51
|
+
- For simple apps, suggest minimal modules (2-3 max)
|
|
52
|
+
- For enterprise apps, suggest comprehensive setup
|
|
53
|
+
- Always explain why you're recommending specific modules
|
|
54
|
+
- If the user is unsure about a module, suggest starting without it (they can add it later with `maxsim-flutter add`)
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: flutter-add
|
|
3
|
+
description: Add a module to an existing maxsim-flutter project
|
|
4
|
+
argument-hint: <module-name>
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Add a module to an existing maxsim-flutter Flutter project.
|
|
8
|
+
|
|
9
|
+
Run: `npx maxsim-flutter add $ARGUMENTS`
|
|
10
|
+
|
|
11
|
+
## Flags
|
|
12
|
+
- `--dry-run` - Preview what would change without writing files
|
|
13
|
+
- `--project-dir <path>` - Specify project location (default: auto-detect via maxsim.config.yaml)
|
|
14
|
+
|
|
15
|
+
## Available Modules
|
|
16
|
+
- **auth** - Authentication (Firebase / Supabase / Custom)
|
|
17
|
+
- **api** - HTTP client with Dio, interceptors, retry logic
|
|
18
|
+
- **database** - Local database (Drift / Hive / Isar)
|
|
19
|
+
- **i18n** - Internationalization with ARB files
|
|
20
|
+
- **theme** - Advanced theming with Material 3 + dark mode
|
|
21
|
+
- **push** - Push notifications (Firebase Messaging / OneSignal)
|
|
22
|
+
- **analytics** - Analytics tracking with GoRouter observer
|
|
23
|
+
- **cicd** - CI/CD pipeline (GitHub Actions / GitLab CI / Bitbucket Pipelines)
|
|
24
|
+
- **deep-linking** - Deep linking with App Links + go_router
|
|
25
|
+
|
|
26
|
+
## What It Does
|
|
27
|
+
1. Detect the existing project (via maxsim.config.yaml)
|
|
28
|
+
2. Check module dependencies and resolve conflicts
|
|
29
|
+
3. Generate module files in the correct Clean Architecture structure
|
|
30
|
+
4. Merge dependencies into existing pubspec.yaml
|
|
31
|
+
5. Update maxsim.config.yaml with new module configuration
|
|
32
|
+
6. Regenerate .claude/ setup (CLAUDE.md, agents, skills) to include the new module
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: flutter-create
|
|
3
|
+
description: Create a new Flutter app with Clean Architecture, Riverpod, go_router, and full AI tooling. Runs maxsim-flutter CLI interactively.
|
|
4
|
+
argument-hint: [app-name]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Create a new Flutter application using maxsim-flutter.
|
|
8
|
+
|
|
9
|
+
If an app name was provided: `npx maxsim-flutter create $ARGUMENTS`
|
|
10
|
+
If no app name: `npx maxsim-flutter create` (interactive mode)
|
|
11
|
+
|
|
12
|
+
## Flags
|
|
13
|
+
- `--yes` - Skip prompts and use defaults
|
|
14
|
+
- `--modules auth,api,theme` - Pre-select modules (comma-separated)
|
|
15
|
+
- `--config path/to/config.yaml` - Load configuration from file
|
|
16
|
+
- `--dry-run` - Preview generated files without writing
|
|
17
|
+
- `--no-claude` - Skip Claude Code setup (.claude/ directory)
|
|
18
|
+
|
|
19
|
+
## What It Does
|
|
20
|
+
1. Ask for project details (name, org, description)
|
|
21
|
+
2. Let you select target platforms (ios, android, web, macos, windows, linux)
|
|
22
|
+
3. Let you choose optional modules (auth, api, database, i18n, theme, push, analytics, cicd, deep-linking)
|
|
23
|
+
4. Configure each selected module (auth provider, DB engine, etc.)
|
|
24
|
+
5. Generate the Flutter project with Clean Architecture + Riverpod + go_router
|
|
25
|
+
6. Set up Claude Code agents, skills, hooks, and CLAUDE.md in the project
|
|
26
|
+
7. Generate a PRD for autonomous feature development with Agent Teams
|
|
27
|
+
|
|
28
|
+
Run the command and follow the interactive prompts.
|