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
|
@@ -0,0 +1,428 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates a comprehensive CLAUDE.md for a scaffolded Flutter project.
|
|
3
|
+
* The output is optimized for Claude Code and Agent Teams workflows.
|
|
4
|
+
*/
|
|
5
|
+
export function generateClaudeMd(context) {
|
|
6
|
+
const sections = [
|
|
7
|
+
generateHeader(context),
|
|
8
|
+
generateTechStack(context),
|
|
9
|
+
generateArchitectureRules(),
|
|
10
|
+
generateRiverpodPatterns(),
|
|
11
|
+
generateGoRouterPatterns(),
|
|
12
|
+
...generateModuleSections(context),
|
|
13
|
+
generateQualityGates(),
|
|
14
|
+
generateBuildCommands(),
|
|
15
|
+
];
|
|
16
|
+
if (context.claude.agentTeams) {
|
|
17
|
+
sections.push(generateAgentTeamsWorkflow(context));
|
|
18
|
+
}
|
|
19
|
+
sections.push(generateDevelopmentWorkflow());
|
|
20
|
+
return sections.join('\n\n');
|
|
21
|
+
}
|
|
22
|
+
function generateHeader(context) {
|
|
23
|
+
const lines = [
|
|
24
|
+
`# CLAUDE.md - ${context.projectName}`,
|
|
25
|
+
'',
|
|
26
|
+
`## Project Overview`,
|
|
27
|
+
'',
|
|
28
|
+
`**${context.projectName}** is a Flutter application using Clean Architecture, Riverpod for state management, and go_router for navigation.`,
|
|
29
|
+
];
|
|
30
|
+
if (context.description) {
|
|
31
|
+
lines.push('', context.description);
|
|
32
|
+
}
|
|
33
|
+
const enabledModules = getEnabledModuleNames(context);
|
|
34
|
+
if (enabledModules.length > 0) {
|
|
35
|
+
lines.push('', `**Active modules:** ${enabledModules.join(', ')}`);
|
|
36
|
+
}
|
|
37
|
+
lines.push('', `**Platforms:** ${context.platforms.join(', ')}`);
|
|
38
|
+
return lines.join('\n');
|
|
39
|
+
}
|
|
40
|
+
function generateTechStack(context) {
|
|
41
|
+
const deps = [
|
|
42
|
+
'- **State Management**: flutter_riverpod',
|
|
43
|
+
'- **Navigation**: go_router (type-safe routes)',
|
|
44
|
+
'- **Code Generation**: freezed, json_serializable, build_runner',
|
|
45
|
+
];
|
|
46
|
+
if (context.modules.api) {
|
|
47
|
+
deps.push('- **HTTP Client**: Dio with Retrofit');
|
|
48
|
+
}
|
|
49
|
+
if (context.modules.database) {
|
|
50
|
+
const engine = context.modules.database.engine;
|
|
51
|
+
const label = engine === 'drift' ? 'Drift (SQLite)' : engine === 'hive' ? 'Hive' : 'Isar';
|
|
52
|
+
deps.push(`- **Local Database**: ${label}`);
|
|
53
|
+
}
|
|
54
|
+
if (context.modules.auth) {
|
|
55
|
+
const provider = context.modules.auth.provider;
|
|
56
|
+
const label = provider === 'firebase' ? 'Firebase Auth' : provider === 'supabase' ? 'Supabase Auth' : 'Custom Auth';
|
|
57
|
+
deps.push(`- **Authentication**: ${label}`);
|
|
58
|
+
}
|
|
59
|
+
if (context.modules.i18n) {
|
|
60
|
+
deps.push('- **Internationalization**: flutter_localizations, intl');
|
|
61
|
+
}
|
|
62
|
+
if (context.modules.theme) {
|
|
63
|
+
deps.push('- **Theming**: Material 3 with Google Fonts');
|
|
64
|
+
}
|
|
65
|
+
return ['## Tech Stack', '', ...deps].join('\n');
|
|
66
|
+
}
|
|
67
|
+
function generateArchitectureRules() {
|
|
68
|
+
return `## Architecture Rules (Clean Architecture)
|
|
69
|
+
|
|
70
|
+
This project follows strict Clean Architecture with three layers per feature:
|
|
71
|
+
|
|
72
|
+
\`\`\`
|
|
73
|
+
lib/
|
|
74
|
+
core/ # Shared utilities, router, theme, providers
|
|
75
|
+
features/
|
|
76
|
+
<feature>/
|
|
77
|
+
domain/ # Entities (freezed), repository interfaces, use cases
|
|
78
|
+
data/ # Repository implementations, data sources, models
|
|
79
|
+
presentation/ # Pages, widgets, Riverpod providers
|
|
80
|
+
\`\`\`
|
|
81
|
+
|
|
82
|
+
### Layer Rules
|
|
83
|
+
|
|
84
|
+
1. **Domain layer** has NO dependencies on other layers or external packages
|
|
85
|
+
- Entities are pure Dart classes (use freezed for immutability)
|
|
86
|
+
- Repository interfaces define contracts (abstract classes)
|
|
87
|
+
- Use cases contain single business operations
|
|
88
|
+
|
|
89
|
+
2. **Data layer** depends only on Domain
|
|
90
|
+
- Implements repository interfaces from Domain
|
|
91
|
+
- Contains data sources (remote/local) and models
|
|
92
|
+
- Models handle serialization (json_serializable/freezed)
|
|
93
|
+
|
|
94
|
+
3. **Presentation layer** depends on Domain (never directly on Data)
|
|
95
|
+
- Pages and widgets for UI
|
|
96
|
+
- Riverpod providers for state management
|
|
97
|
+
- Access repositories through Riverpod providers, not direct instantiation
|
|
98
|
+
|
|
99
|
+
### Import Rules
|
|
100
|
+
|
|
101
|
+
- \`domain/\` must NOT import from \`data/\` or \`presentation/\`
|
|
102
|
+
- \`data/\` must NOT import from \`presentation/\`
|
|
103
|
+
- \`presentation/\` must NOT import from \`data/\` (use providers instead)
|
|
104
|
+
- Cross-feature imports go through \`core/\` barrel exports`;
|
|
105
|
+
}
|
|
106
|
+
function generateRiverpodPatterns() {
|
|
107
|
+
return `## Riverpod Patterns
|
|
108
|
+
|
|
109
|
+
### Provider Types
|
|
110
|
+
|
|
111
|
+
- **Provider**: For computed/derived values and repository instances
|
|
112
|
+
- **StateNotifierProvider**: For mutable state with defined mutations
|
|
113
|
+
- **FutureProvider**: For async data fetching (one-shot)
|
|
114
|
+
- **StreamProvider**: For real-time data streams
|
|
115
|
+
- **NotifierProvider / AsyncNotifierProvider**: Preferred for new code (Riverpod 2.0+)
|
|
116
|
+
|
|
117
|
+
### Conventions
|
|
118
|
+
|
|
119
|
+
- Declare providers as top-level final variables
|
|
120
|
+
- Use \`ref.watch()\` in build methods, \`ref.read()\` in callbacks
|
|
121
|
+
- Name providers with a \`Provider\` suffix (e.g., \`authRepositoryProvider\`)
|
|
122
|
+
- Keep providers in the \`presentation/\` layer of each feature
|
|
123
|
+
- Use \`ref.invalidate()\` to refresh cached data
|
|
124
|
+
- Prefer \`AsyncNotifier\` over \`StateNotifier\` for new async state
|
|
125
|
+
|
|
126
|
+
### Example
|
|
127
|
+
|
|
128
|
+
\`\`\`dart
|
|
129
|
+
// Repository provider (in presentation/)
|
|
130
|
+
final authRepositoryProvider = Provider<AuthRepository>((ref) {
|
|
131
|
+
return AuthRepositoryImpl(ref.watch(authDataSourceProvider));
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
// Async state provider
|
|
135
|
+
final userProvider = AsyncNotifierProvider<UserNotifier, User?>(() {
|
|
136
|
+
return UserNotifier();
|
|
137
|
+
});
|
|
138
|
+
\`\`\``;
|
|
139
|
+
}
|
|
140
|
+
function generateGoRouterPatterns() {
|
|
141
|
+
return `## go_router Patterns
|
|
142
|
+
|
|
143
|
+
### Route Structure
|
|
144
|
+
|
|
145
|
+
- Routes are defined in \`lib/core/router/app_router.dart\`
|
|
146
|
+
- Use \`TypedGoRoute\` with code generation for type-safe routes
|
|
147
|
+
- Each feature can contribute routes via its route definitions
|
|
148
|
+
|
|
149
|
+
### Conventions
|
|
150
|
+
|
|
151
|
+
- Use named routes for navigation: \`context.goNamed('routeName')\`
|
|
152
|
+
- Define route paths as constants
|
|
153
|
+
- Use \`ShellRoute\` for persistent navigation (bottom nav, drawer)
|
|
154
|
+
- Handle redirects for auth guards in the router configuration
|
|
155
|
+
- Pass parameters via path params or query params, not constructors
|
|
156
|
+
|
|
157
|
+
### Example
|
|
158
|
+
|
|
159
|
+
\`\`\`dart
|
|
160
|
+
GoRouter(
|
|
161
|
+
initialLocation: '/',
|
|
162
|
+
routes: [
|
|
163
|
+
GoRoute(
|
|
164
|
+
path: '/',
|
|
165
|
+
name: 'home',
|
|
166
|
+
builder: (context, state) => const HomePage(),
|
|
167
|
+
),
|
|
168
|
+
],
|
|
169
|
+
);
|
|
170
|
+
\`\`\``;
|
|
171
|
+
}
|
|
172
|
+
function generateModuleSections(context) {
|
|
173
|
+
const sections = [];
|
|
174
|
+
if (context.modules.auth) {
|
|
175
|
+
sections.push(generateAuthSection(context.modules.auth));
|
|
176
|
+
}
|
|
177
|
+
if (context.modules.api) {
|
|
178
|
+
sections.push(generateApiSection(context.modules.api));
|
|
179
|
+
}
|
|
180
|
+
if (context.modules.database) {
|
|
181
|
+
sections.push(generateDatabaseSection(context.modules.database));
|
|
182
|
+
}
|
|
183
|
+
if (context.modules.i18n) {
|
|
184
|
+
sections.push(generateI18nSection(context.modules.i18n));
|
|
185
|
+
}
|
|
186
|
+
if (context.modules.theme) {
|
|
187
|
+
sections.push(generateThemeSection(context.modules.theme));
|
|
188
|
+
}
|
|
189
|
+
if (context.modules.push) {
|
|
190
|
+
sections.push(generatePushSection(context.modules.push));
|
|
191
|
+
}
|
|
192
|
+
if (context.modules.analytics) {
|
|
193
|
+
sections.push(generateAnalyticsSection());
|
|
194
|
+
}
|
|
195
|
+
if (context.modules.cicd) {
|
|
196
|
+
sections.push(generateCicdSection(context.modules.cicd));
|
|
197
|
+
}
|
|
198
|
+
if (context.modules.deepLinking) {
|
|
199
|
+
sections.push(generateDeepLinkingSection());
|
|
200
|
+
}
|
|
201
|
+
return sections;
|
|
202
|
+
}
|
|
203
|
+
function generateAuthSection(auth) {
|
|
204
|
+
const providerNotes = {
|
|
205
|
+
firebase: 'Uses Firebase Auth. Ensure `google-services.json` (Android) and `GoogleService-Info.plist` (iOS) are configured.',
|
|
206
|
+
supabase: 'Uses Supabase Auth. Set the Supabase URL and anon key in environment config.',
|
|
207
|
+
custom: 'Uses custom auth with Dio HTTP client. Implement token refresh logic in the auth interceptor.',
|
|
208
|
+
};
|
|
209
|
+
return `## Auth Module
|
|
210
|
+
|
|
211
|
+
- Location: \`lib/features/auth/\`
|
|
212
|
+
- Provider: \`${auth.provider}\`
|
|
213
|
+
- ${providerNotes[auth.provider]}
|
|
214
|
+
- Auth state is managed via \`authRepositoryProvider\`
|
|
215
|
+
- Login and register pages are at \`/login\` and \`/register\` routes
|
|
216
|
+
- Use the auth guard in go_router redirect for protected routes`;
|
|
217
|
+
}
|
|
218
|
+
function generateApiSection(api) {
|
|
219
|
+
const baseUrlNote = api.baseUrl
|
|
220
|
+
? `- Base URL: \`${api.baseUrl}\``
|
|
221
|
+
: '- Base URL: Configure via `API_BASE_URL` environment variable';
|
|
222
|
+
return `## API Module
|
|
223
|
+
|
|
224
|
+
- Location: \`lib/features/api/\`
|
|
225
|
+
- HTTP client: Dio with interceptors (auth, retry, logging)
|
|
226
|
+
${baseUrlNote}
|
|
227
|
+
- Use \`ApiClient\` via \`dioClientProvider\` for all HTTP requests
|
|
228
|
+
- Typed errors via \`ApiException\` with status code handling
|
|
229
|
+
- Retry interceptor handles transient failures with exponential backoff`;
|
|
230
|
+
}
|
|
231
|
+
function generateDatabaseSection(database) {
|
|
232
|
+
const engineNotes = {
|
|
233
|
+
drift: 'Uses Drift (SQLite). Define tables as Dart classes. Run `dart run build_runner build` after schema changes.',
|
|
234
|
+
hive: 'Uses Hive for key-value NoSQL storage. Register adapters for custom types.',
|
|
235
|
+
isar: 'Uses Isar for NoSQL storage. Define collections with annotations. Run `dart run build_runner build` after schema changes.',
|
|
236
|
+
};
|
|
237
|
+
return `## Database Module
|
|
238
|
+
|
|
239
|
+
- Location: \`lib/features/database/\`
|
|
240
|
+
- Engine: \`${database.engine}\`
|
|
241
|
+
- ${engineNotes[database.engine]}
|
|
242
|
+
- Access via \`databaseProvider\` in Riverpod`;
|
|
243
|
+
}
|
|
244
|
+
function generateI18nSection(i18n) {
|
|
245
|
+
return `## Internationalization (i18n) Module
|
|
246
|
+
|
|
247
|
+
- Location: \`lib/core/l10n/\`
|
|
248
|
+
- Default locale: \`${i18n.defaultLocale}\`
|
|
249
|
+
- Supported locales: ${i18n.supportedLocales.join(', ')}
|
|
250
|
+
- ARB files in \`lib/l10n/\`
|
|
251
|
+
- Run \`flutter gen-l10n\` after editing ARB files
|
|
252
|
+
- Access strings via \`AppLocalizations.of(context)!\``;
|
|
253
|
+
}
|
|
254
|
+
function generateThemeSection(theme) {
|
|
255
|
+
const seedNote = theme.seedColor
|
|
256
|
+
? `- Seed color: \`${theme.seedColor}\``
|
|
257
|
+
: '- Seed color: Default Material 3 purple';
|
|
258
|
+
const darkNote = theme.darkMode
|
|
259
|
+
? '- Dark mode: Enabled (toggle via `appThemeModeProvider`)'
|
|
260
|
+
: '- Dark mode: Disabled';
|
|
261
|
+
return `## Theme Module
|
|
262
|
+
|
|
263
|
+
- Location: \`lib/core/theme/\`
|
|
264
|
+
${seedNote}
|
|
265
|
+
${darkNote}
|
|
266
|
+
- Uses Material 3 \`ColorScheme.fromSeed\` for consistent theming
|
|
267
|
+
- Google Fonts (Inter) as default text theme
|
|
268
|
+
- Access current theme via \`Theme.of(context)\``;
|
|
269
|
+
}
|
|
270
|
+
function generatePushSection(push) {
|
|
271
|
+
const providerNotes = {
|
|
272
|
+
firebase: 'Uses Firebase Cloud Messaging. Configure FCM in Firebase Console.',
|
|
273
|
+
onesignal: 'Uses OneSignal. Set app ID in environment config.',
|
|
274
|
+
};
|
|
275
|
+
return `## Push Notifications Module
|
|
276
|
+
|
|
277
|
+
- Location: \`lib/features/push/\`
|
|
278
|
+
- Provider: \`${push.provider}\`
|
|
279
|
+
- ${providerNotes[push.provider]}
|
|
280
|
+
- Handle notification taps via deep linking integration`;
|
|
281
|
+
}
|
|
282
|
+
function generateAnalyticsSection() {
|
|
283
|
+
return `## Analytics Module
|
|
284
|
+
|
|
285
|
+
- Location: \`lib/features/analytics/\`
|
|
286
|
+
- Uses \`AnalyticsService\` abstraction for provider independence
|
|
287
|
+
- GoRouter observer automatically tracks screen views
|
|
288
|
+
- Log custom events via \`analyticsServiceProvider\``;
|
|
289
|
+
}
|
|
290
|
+
function generateCicdSection(cicd) {
|
|
291
|
+
const providerNotes = {
|
|
292
|
+
github: 'Uses GitHub Actions. Pipelines are in `.github/workflows/`. Flutter test and build jobs are pre-configured.',
|
|
293
|
+
gitlab: 'Uses GitLab CI. Pipeline is in `.gitlab-ci.yml`. Stages: test, build, deploy.',
|
|
294
|
+
bitbucket: 'Uses Bitbucket Pipelines. Pipeline is in `bitbucket-pipelines.yml`. Includes test and build steps.',
|
|
295
|
+
};
|
|
296
|
+
return `## CI/CD Module
|
|
297
|
+
|
|
298
|
+
- Provider: \`${cicd.provider}\`
|
|
299
|
+
- ${providerNotes[cicd.provider]}
|
|
300
|
+
- Pipeline runs \`flutter analyze\`, \`flutter test\`, and \`flutter build\` on every push
|
|
301
|
+
- Artifacts are stored per-run for download`;
|
|
302
|
+
}
|
|
303
|
+
function generateDeepLinkingSection() {
|
|
304
|
+
return `## Deep Linking Module
|
|
305
|
+
|
|
306
|
+
- Location: \`lib/features/deep-linking/\`
|
|
307
|
+
- Uses \`app_links\` package for Universal Links / App Links
|
|
308
|
+
- Integrated with go_router for automatic route resolution
|
|
309
|
+
- Configure link domains in platform-specific config files`;
|
|
310
|
+
}
|
|
311
|
+
function generateQualityGates() {
|
|
312
|
+
return `## Quality Gates
|
|
313
|
+
|
|
314
|
+
Before committing or marking a task complete, ALL of the following must pass:
|
|
315
|
+
|
|
316
|
+
\`\`\`bash
|
|
317
|
+
flutter analyze # Zero warnings/errors
|
|
318
|
+
flutter test # All tests pass
|
|
319
|
+
dart format --set-exit-if-changed . # Code is formatted
|
|
320
|
+
\`\`\`
|
|
321
|
+
|
|
322
|
+
For code generation changes:
|
|
323
|
+
\`\`\`bash
|
|
324
|
+
dart run build_runner build --delete-conflicting-outputs
|
|
325
|
+
\`\`\``;
|
|
326
|
+
}
|
|
327
|
+
function generateBuildCommands() {
|
|
328
|
+
return `## Build Commands
|
|
329
|
+
|
|
330
|
+
\`\`\`bash
|
|
331
|
+
flutter pub get # Install dependencies
|
|
332
|
+
flutter run # Run in debug mode
|
|
333
|
+
flutter build apk # Build Android APK
|
|
334
|
+
flutter build ios # Build iOS (macOS only)
|
|
335
|
+
flutter build web # Build for web
|
|
336
|
+
dart run build_runner build # Run code generation
|
|
337
|
+
dart run build_runner watch # Watch mode code generation
|
|
338
|
+
flutter test # Run all tests
|
|
339
|
+
flutter test --coverage # Run tests with coverage
|
|
340
|
+
\`\`\``;
|
|
341
|
+
}
|
|
342
|
+
function generateAgentTeamsWorkflow(context) {
|
|
343
|
+
const moduleList = getEnabledModuleNames(context);
|
|
344
|
+
const moduleNote = moduleList.length > 0
|
|
345
|
+
? `This project has the following active modules: ${moduleList.join(', ')}. Agents should be aware of module boundaries when implementing features.`
|
|
346
|
+
: 'This project uses the core Clean Architecture structure without additional modules.';
|
|
347
|
+
return `## Agent Teams Workflow
|
|
348
|
+
|
|
349
|
+
This project is configured for Claude Code Agent Teams. Use the following workflow to develop features collaboratively.
|
|
350
|
+
|
|
351
|
+
${moduleNote}
|
|
352
|
+
|
|
353
|
+
### Team Setup
|
|
354
|
+
|
|
355
|
+
To start a development team, create agents with these roles:
|
|
356
|
+
|
|
357
|
+
1. **Architect** (read-only) - Reviews PRD stories, designs implementation approach, validates Clean Architecture compliance before builders start
|
|
358
|
+
2. **Builder** (1-2 agents) - Implements features following architect guidance. Claims tasks from the shared task list
|
|
359
|
+
3. **Tester** - Writes and runs tests after builder completes. Reports failures back to builder
|
|
360
|
+
4. **Reviewer** (read-only) - Reviews completed code for architecture compliance, code quality, and patterns
|
|
361
|
+
|
|
362
|
+
### Workflow
|
|
363
|
+
|
|
364
|
+
1. Architect reads the next story from \`prd.json\` and creates implementation tasks
|
|
365
|
+
2. Builder(s) claim tasks and implement following Clean Architecture layers (domain first, then data, then presentation)
|
|
366
|
+
3. Tester runs \`flutter analyze\` and \`flutter test\` after each task
|
|
367
|
+
4. Reviewer checks architecture compliance and Riverpod patterns
|
|
368
|
+
5. On approval, commit with: \`feat: [StoryID] - [Story Title]\`
|
|
369
|
+
|
|
370
|
+
### Task Source
|
|
371
|
+
|
|
372
|
+
Stories are defined in \`prd.json\`. Each story has:
|
|
373
|
+
- \`id\`: Story identifier (e.g., "S-001")
|
|
374
|
+
- \`title\`: What to implement
|
|
375
|
+
- \`description\`: Detailed requirements
|
|
376
|
+
- \`acceptanceCriteria\`: Definition of done
|
|
377
|
+
- \`passes\`: Set to \`true\` when all criteria are met`;
|
|
378
|
+
}
|
|
379
|
+
function generateDevelopmentWorkflow() {
|
|
380
|
+
return `## Development Workflow
|
|
381
|
+
|
|
382
|
+
### Commit Convention
|
|
383
|
+
|
|
384
|
+
\`\`\`
|
|
385
|
+
feat: [StoryID] - Short description of what was added
|
|
386
|
+
fix: [StoryID] - Short description of what was fixed
|
|
387
|
+
refactor: [StoryID] - Short description of what was refactored
|
|
388
|
+
test: [StoryID] - Short description of what was tested
|
|
389
|
+
\`\`\`
|
|
390
|
+
|
|
391
|
+
### File Naming
|
|
392
|
+
|
|
393
|
+
- Dart files: \`snake_case.dart\`
|
|
394
|
+
- Feature directories: \`snake_case\`
|
|
395
|
+
- Test files: \`<source_file>_test.dart\`
|
|
396
|
+
- Generated files: \`*.g.dart\`, \`*.freezed.dart\` (never edit manually)
|
|
397
|
+
|
|
398
|
+
### Important Paths
|
|
399
|
+
|
|
400
|
+
- \`lib/core/router/app_router.dart\` - Route definitions
|
|
401
|
+
- \`lib/core/providers/app_providers.dart\` - Global provider barrel
|
|
402
|
+
- \`lib/core/theme/app_theme.dart\` - Theme configuration
|
|
403
|
+
- \`pubspec.yaml\` - Dependencies
|
|
404
|
+
- \`analysis_options.yaml\` - Lint rules`;
|
|
405
|
+
}
|
|
406
|
+
function getEnabledModuleNames(context) {
|
|
407
|
+
const modules = [];
|
|
408
|
+
if (context.modules.auth)
|
|
409
|
+
modules.push('Auth');
|
|
410
|
+
if (context.modules.api)
|
|
411
|
+
modules.push('API');
|
|
412
|
+
if (context.modules.database)
|
|
413
|
+
modules.push('Database');
|
|
414
|
+
if (context.modules.i18n)
|
|
415
|
+
modules.push('i18n');
|
|
416
|
+
if (context.modules.theme)
|
|
417
|
+
modules.push('Theme');
|
|
418
|
+
if (context.modules.push)
|
|
419
|
+
modules.push('Push');
|
|
420
|
+
if (context.modules.analytics)
|
|
421
|
+
modules.push('Analytics');
|
|
422
|
+
if (context.modules.cicd)
|
|
423
|
+
modules.push('CI/CD');
|
|
424
|
+
if (context.modules.deepLinking)
|
|
425
|
+
modules.push('Deep Linking');
|
|
426
|
+
return modules;
|
|
427
|
+
}
|
|
428
|
+
//# sourceMappingURL=claude-md-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-md-generator.js","sourceRoot":"","sources":["../../src/claude-setup/claude-md-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ProjectContext } from '../core/context.js';
|
|
2
|
+
/**
|
|
3
|
+
* Writes Claude Code slash command files for a scaffolded Flutter project.
|
|
4
|
+
* Commands provide step-by-step guidance for common development tasks.
|
|
5
|
+
*/
|
|
6
|
+
export declare function writeCommands(context: ProjectContext, outputPath: string): Promise<void>;
|
|
7
|
+
//# sourceMappingURL=commands-writer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands-writer.d.ts","sourceRoot":"","sources":["../../src/claude-setup/commands-writer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD;;;GAGG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ9F"}
|