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.
Files changed (281) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/LICENSE +21 -0
  3. package/README.md +445 -0
  4. package/claude-plugin/.claude-plugin/plugin.json +46 -0
  5. package/claude-plugin/agents/flutter-setup-agent.md +54 -0
  6. package/claude-plugin/commands/flutter-add.md +32 -0
  7. package/claude-plugin/commands/flutter-create.md +28 -0
  8. package/claude-plugin/commands/flutter-migrate.md +28 -0
  9. package/claude-plugin/skills/flutter-scaffolding/SKILL.md +109 -0
  10. package/dist/claude-setup/agent-writer.d.ts +21 -0
  11. package/dist/claude-setup/agent-writer.d.ts.map +1 -0
  12. package/dist/claude-setup/agent-writer.js +365 -0
  13. package/dist/claude-setup/agent-writer.js.map +1 -0
  14. package/dist/claude-setup/claude-md-generator.d.ts +7 -0
  15. package/dist/claude-setup/claude-md-generator.d.ts.map +1 -0
  16. package/dist/claude-setup/claude-md-generator.js +428 -0
  17. package/dist/claude-setup/claude-md-generator.js.map +1 -0
  18. package/dist/claude-setup/commands-writer.d.ts +7 -0
  19. package/dist/claude-setup/commands-writer.d.ts.map +1 -0
  20. package/dist/claude-setup/commands-writer.js +303 -0
  21. package/dist/claude-setup/commands-writer.js.map +1 -0
  22. package/dist/claude-setup/hooks-writer.d.ts +3 -0
  23. package/dist/claude-setup/hooks-writer.d.ts.map +1 -0
  24. package/dist/claude-setup/hooks-writer.js +34 -0
  25. package/dist/claude-setup/hooks-writer.js.map +1 -0
  26. package/dist/claude-setup/index.d.ts +10 -0
  27. package/dist/claude-setup/index.d.ts.map +1 -0
  28. package/dist/claude-setup/index.js +9 -0
  29. package/dist/claude-setup/index.js.map +1 -0
  30. package/dist/claude-setup/mcp-config-writer.d.ts +3 -0
  31. package/dist/claude-setup/mcp-config-writer.d.ts.map +1 -0
  32. package/dist/claude-setup/mcp-config-writer.js +42 -0
  33. package/dist/claude-setup/mcp-config-writer.js.map +1 -0
  34. package/dist/claude-setup/plugin-assembler.d.ts +2 -0
  35. package/dist/claude-setup/plugin-assembler.d.ts.map +1 -0
  36. package/dist/claude-setup/plugin-assembler.js +3 -0
  37. package/dist/claude-setup/plugin-assembler.js.map +1 -0
  38. package/dist/claude-setup/prd-generator.d.ts +10 -0
  39. package/dist/claude-setup/prd-generator.d.ts.map +1 -0
  40. package/dist/claude-setup/prd-generator.js +295 -0
  41. package/dist/claude-setup/prd-generator.js.map +1 -0
  42. package/dist/claude-setup/setup-orchestrator.d.ts +11 -0
  43. package/dist/claude-setup/setup-orchestrator.d.ts.map +1 -0
  44. package/dist/claude-setup/setup-orchestrator.js +46 -0
  45. package/dist/claude-setup/setup-orchestrator.js.map +1 -0
  46. package/dist/claude-setup/skill-writer.d.ts +3 -0
  47. package/dist/claude-setup/skill-writer.d.ts.map +1 -0
  48. package/dist/claude-setup/skill-writer.js +256 -0
  49. package/dist/claude-setup/skill-writer.js.map +1 -0
  50. package/dist/cli/commands/add.d.ts +16 -0
  51. package/dist/cli/commands/add.d.ts.map +1 -0
  52. package/dist/cli/commands/add.js +414 -0
  53. package/dist/cli/commands/add.js.map +1 -0
  54. package/dist/cli/commands/create.d.ts +3 -0
  55. package/dist/cli/commands/create.d.ts.map +1 -0
  56. package/dist/cli/commands/create.js +161 -0
  57. package/dist/cli/commands/create.js.map +1 -0
  58. package/dist/cli/commands/list.d.ts +12 -0
  59. package/dist/cli/commands/list.d.ts.map +1 -0
  60. package/dist/cli/commands/list.js +148 -0
  61. package/dist/cli/commands/list.js.map +1 -0
  62. package/dist/cli/commands/migrate.d.ts +3 -0
  63. package/dist/cli/commands/migrate.d.ts.map +1 -0
  64. package/dist/cli/commands/migrate.js +332 -0
  65. package/dist/cli/commands/migrate.js.map +1 -0
  66. package/dist/cli/index.d.ts +3 -0
  67. package/dist/cli/index.d.ts.map +1 -0
  68. package/dist/cli/index.js +34 -0
  69. package/dist/cli/index.js.map +1 -0
  70. package/dist/cli/ui/prompts.d.ts +9 -0
  71. package/dist/cli/ui/prompts.d.ts.map +1 -0
  72. package/dist/cli/ui/prompts.js +74 -0
  73. package/dist/cli/ui/prompts.js.map +1 -0
  74. package/dist/cli/ui/spinner.d.ts +2 -0
  75. package/dist/cli/ui/spinner.d.ts.map +1 -0
  76. package/dist/cli/ui/spinner.js +5 -0
  77. package/dist/cli/ui/spinner.js.map +1 -0
  78. package/dist/cli/version-check.d.ts +7 -0
  79. package/dist/cli/version-check.d.ts.map +1 -0
  80. package/dist/cli/version-check.js +92 -0
  81. package/dist/cli/version-check.js.map +1 -0
  82. package/dist/core/config/defaults.d.ts +3 -0
  83. package/dist/core/config/defaults.d.ts.map +1 -0
  84. package/dist/core/config/defaults.js +21 -0
  85. package/dist/core/config/defaults.js.map +1 -0
  86. package/dist/core/config/loader.d.ts +4 -0
  87. package/dist/core/config/loader.d.ts.map +1 -0
  88. package/dist/core/config/loader.js +38 -0
  89. package/dist/core/config/loader.js.map +1 -0
  90. package/dist/core/config/schema.d.ts +406 -0
  91. package/dist/core/config/schema.d.ts.map +1 -0
  92. package/dist/core/config/schema.js +119 -0
  93. package/dist/core/config/schema.js.map +1 -0
  94. package/dist/core/context.d.ts +57 -0
  95. package/dist/core/context.d.ts.map +1 -0
  96. package/dist/core/context.js +99 -0
  97. package/dist/core/context.js.map +1 -0
  98. package/dist/core/detector.d.ts +28 -0
  99. package/dist/core/detector.d.ts.map +1 -0
  100. package/dist/core/detector.js +200 -0
  101. package/dist/core/detector.js.map +1 -0
  102. package/dist/core/validator.d.ts +7 -0
  103. package/dist/core/validator.d.ts.map +1 -0
  104. package/dist/core/validator.js +35 -0
  105. package/dist/core/validator.js.map +1 -0
  106. package/dist/index.d.ts +21 -0
  107. package/dist/index.d.ts.map +1 -0
  108. package/dist/index.js +14 -0
  109. package/dist/index.js.map +1 -0
  110. package/dist/modules/composer.d.ts +50 -0
  111. package/dist/modules/composer.d.ts.map +1 -0
  112. package/dist/modules/composer.js +122 -0
  113. package/dist/modules/composer.js.map +1 -0
  114. package/dist/modules/definitions/analytics/module.d.ts +7 -0
  115. package/dist/modules/definitions/analytics/module.d.ts.map +1 -0
  116. package/dist/modules/definitions/analytics/module.js +28 -0
  117. package/dist/modules/definitions/analytics/module.js.map +1 -0
  118. package/dist/modules/definitions/api/module.d.ts +7 -0
  119. package/dist/modules/definitions/api/module.d.ts.map +1 -0
  120. package/dist/modules/definitions/api/module.js +41 -0
  121. package/dist/modules/definitions/api/module.js.map +1 -0
  122. package/dist/modules/definitions/auth/module.d.ts +7 -0
  123. package/dist/modules/definitions/auth/module.d.ts.map +1 -0
  124. package/dist/modules/definitions/auth/module.js +53 -0
  125. package/dist/modules/definitions/auth/module.js.map +1 -0
  126. package/dist/modules/definitions/cicd/module.d.ts +7 -0
  127. package/dist/modules/definitions/cicd/module.d.ts.map +1 -0
  128. package/dist/modules/definitions/cicd/module.js +34 -0
  129. package/dist/modules/definitions/cicd/module.js.map +1 -0
  130. package/dist/modules/definitions/core/module.d.ts +7 -0
  131. package/dist/modules/definitions/core/module.d.ts.map +1 -0
  132. package/dist/modules/definitions/core/module.js +31 -0
  133. package/dist/modules/definitions/core/module.js.map +1 -0
  134. package/dist/modules/definitions/database/module.d.ts +8 -0
  135. package/dist/modules/definitions/database/module.d.ts.map +1 -0
  136. package/dist/modules/definitions/database/module.js +47 -0
  137. package/dist/modules/definitions/database/module.js.map +1 -0
  138. package/dist/modules/definitions/deep-linking/module.d.ts +7 -0
  139. package/dist/modules/definitions/deep-linking/module.d.ts.map +1 -0
  140. package/dist/modules/definitions/deep-linking/module.js +48 -0
  141. package/dist/modules/definitions/deep-linking/module.js.map +1 -0
  142. package/dist/modules/definitions/i18n/module.d.ts +7 -0
  143. package/dist/modules/definitions/i18n/module.d.ts.map +1 -0
  144. package/dist/modules/definitions/i18n/module.js +37 -0
  145. package/dist/modules/definitions/i18n/module.js.map +1 -0
  146. package/dist/modules/definitions/push/module.d.ts +7 -0
  147. package/dist/modules/definitions/push/module.d.ts.map +1 -0
  148. package/dist/modules/definitions/push/module.js +40 -0
  149. package/dist/modules/definitions/push/module.js.map +1 -0
  150. package/dist/modules/definitions/theme/module.d.ts +7 -0
  151. package/dist/modules/definitions/theme/module.d.ts.map +1 -0
  152. package/dist/modules/definitions/theme/module.js +42 -0
  153. package/dist/modules/definitions/theme/module.js.map +1 -0
  154. package/dist/modules/registry.d.ts +50 -0
  155. package/dist/modules/registry.d.ts.map +1 -0
  156. package/dist/modules/registry.js +104 -0
  157. package/dist/modules/registry.js.map +1 -0
  158. package/dist/modules/resolver.d.ts +42 -0
  159. package/dist/modules/resolver.d.ts.map +1 -0
  160. package/dist/modules/resolver.js +140 -0
  161. package/dist/modules/resolver.js.map +1 -0
  162. package/dist/ralph/prd-generator.d.ts +2 -0
  163. package/dist/ralph/prd-generator.d.ts.map +1 -0
  164. package/dist/ralph/prd-generator.js +3 -0
  165. package/dist/ralph/prd-generator.js.map +1 -0
  166. package/dist/ralph/ralph-converter.d.ts +2 -0
  167. package/dist/ralph/ralph-converter.d.ts.map +1 -0
  168. package/dist/ralph/ralph-converter.js +3 -0
  169. package/dist/ralph/ralph-converter.js.map +1 -0
  170. package/dist/ralph/story-sizer.d.ts +2 -0
  171. package/dist/ralph/story-sizer.d.ts.map +1 -0
  172. package/dist/ralph/story-sizer.js +3 -0
  173. package/dist/ralph/story-sizer.js.map +1 -0
  174. package/dist/scaffold/engine.d.ts +40 -0
  175. package/dist/scaffold/engine.d.ts.map +1 -0
  176. package/dist/scaffold/engine.js +233 -0
  177. package/dist/scaffold/engine.js.map +1 -0
  178. package/dist/scaffold/file-writer.d.ts +22 -0
  179. package/dist/scaffold/file-writer.d.ts.map +1 -0
  180. package/dist/scaffold/file-writer.js +68 -0
  181. package/dist/scaffold/file-writer.js.map +1 -0
  182. package/dist/scaffold/post-processors/build-runner.d.ts +2 -0
  183. package/dist/scaffold/post-processors/build-runner.d.ts.map +1 -0
  184. package/dist/scaffold/post-processors/build-runner.js +5 -0
  185. package/dist/scaffold/post-processors/build-runner.js.map +1 -0
  186. package/dist/scaffold/post-processors/dart-format.d.ts +2 -0
  187. package/dist/scaffold/post-processors/dart-format.d.ts.map +1 -0
  188. package/dist/scaffold/post-processors/dart-format.js +5 -0
  189. package/dist/scaffold/post-processors/dart-format.js.map +1 -0
  190. package/dist/scaffold/post-processors/flutter-pub-get.d.ts +2 -0
  191. package/dist/scaffold/post-processors/flutter-pub-get.d.ts.map +1 -0
  192. package/dist/scaffold/post-processors/flutter-pub-get.js +5 -0
  193. package/dist/scaffold/post-processors/flutter-pub-get.js.map +1 -0
  194. package/dist/scaffold/renderer.d.ts +20 -0
  195. package/dist/scaffold/renderer.d.ts.map +1 -0
  196. package/dist/scaffold/renderer.js +75 -0
  197. package/dist/scaffold/renderer.js.map +1 -0
  198. package/dist/scaffold/template-helpers.d.ts +25 -0
  199. package/dist/scaffold/template-helpers.d.ts.map +1 -0
  200. package/dist/scaffold/template-helpers.js +115 -0
  201. package/dist/scaffold/template-helpers.js.map +1 -0
  202. package/dist/types/config.d.ts +4 -0
  203. package/dist/types/config.d.ts.map +1 -0
  204. package/dist/types/config.js +2 -0
  205. package/dist/types/config.js.map +1 -0
  206. package/dist/types/module.d.ts +85 -0
  207. package/dist/types/module.d.ts.map +1 -0
  208. package/dist/types/module.js +2 -0
  209. package/dist/types/module.js.map +1 -0
  210. package/dist/types/project.d.ts +13 -0
  211. package/dist/types/project.d.ts.map +1 -0
  212. package/dist/types/project.js +2 -0
  213. package/dist/types/project.js.map +1 -0
  214. package/package.json +80 -0
  215. package/templates/core/analysis_options.yaml.hbs +21 -0
  216. package/templates/core/lib/app.dart.hbs +20 -0
  217. package/templates/core/lib/core/providers/app_providers.dart.hbs +3 -0
  218. package/templates/core/lib/core/router/app_router.dart.hbs +19 -0
  219. package/templates/core/lib/core/theme/app_theme.dart.hbs +15 -0
  220. package/templates/core/lib/features/home/data/models/.gitkeep +0 -0
  221. package/templates/core/lib/features/home/data/repositories/.gitkeep +0 -0
  222. package/templates/core/lib/features/home/domain/entities/.gitkeep +0 -0
  223. package/templates/core/lib/features/home/domain/repositories/.gitkeep +0 -0
  224. package/templates/core/lib/features/home/presentation/pages/home_page.dart.hbs +18 -0
  225. package/templates/core/lib/features/home/presentation/widgets/.gitkeep +0 -0
  226. package/templates/core/lib/main.dart.hbs +11 -0
  227. package/templates/core/pubspec.yaml.hbs +30 -0
  228. package/templates/core/test/widget_test.dart.hbs +16 -0
  229. package/templates/modules/analytics/lib/features/analytics/data/observers/analytics_route_observer.dart.hbs +53 -0
  230. package/templates/modules/analytics/lib/features/analytics/data/services/firebase_analytics_service.dart.hbs +39 -0
  231. package/templates/modules/analytics/lib/features/analytics/domain/services/analytics_service.dart.hbs +25 -0
  232. package/templates/modules/analytics/lib/features/analytics/presentation/providers/analytics_provider.dart.hbs +17 -0
  233. package/templates/modules/analytics/pubspec.partial.yaml +2 -0
  234. package/templates/modules/api/lib/features/api/data/datasources/api_client.dart.hbs +171 -0
  235. package/templates/modules/api/lib/features/api/data/interceptors/auth_interceptor.dart.hbs +25 -0
  236. package/templates/modules/api/lib/features/api/data/interceptors/retry_interceptor.dart.hbs +42 -0
  237. package/templates/modules/api/lib/features/api/data/repositories/api_repository_impl.dart.hbs +21 -0
  238. package/templates/modules/api/lib/features/api/domain/exceptions/api_exception.dart.hbs +31 -0
  239. package/templates/modules/api/lib/features/api/domain/repositories/api_repository.dart.hbs +8 -0
  240. package/templates/modules/api/lib/features/api/presentation/providers/api_provider.dart.hbs +17 -0
  241. package/templates/modules/api/pubspec.partial.yaml +7 -0
  242. package/templates/modules/auth/lib/features/auth/data/datasources/auth_remote_datasource.dart.hbs +181 -0
  243. package/templates/modules/auth/lib/features/auth/data/models/auth_user_model.dart.hbs +27 -0
  244. package/templates/modules/auth/lib/features/auth/data/repositories/auth_repository_impl.dart.hbs +49 -0
  245. package/templates/modules/auth/lib/features/auth/domain/entities/user_entity.dart.hbs +18 -0
  246. package/templates/modules/auth/lib/features/auth/domain/repositories/auth_repository.dart.hbs +22 -0
  247. package/templates/modules/auth/lib/features/auth/domain/usecases/register_usecase.dart.hbs +20 -0
  248. package/templates/modules/auth/lib/features/auth/domain/usecases/sign_in_usecase.dart.hbs +15 -0
  249. package/templates/modules/auth/lib/features/auth/domain/usecases/sign_out_usecase.dart.hbs +11 -0
  250. package/templates/modules/auth/lib/features/auth/presentation/pages/login_page.dart.hbs +118 -0
  251. package/templates/modules/auth/lib/features/auth/presentation/pages/register_page.dart.hbs +131 -0
  252. package/templates/modules/auth/lib/features/auth/presentation/providers/auth_provider.dart.hbs +31 -0
  253. package/templates/modules/auth/pubspec.partial.yaml +13 -0
  254. package/templates/modules/cicd/.github/workflows/ci.yml.hbs +45 -0
  255. package/templates/modules/cicd/.gitlab-ci.yml.hbs +53 -0
  256. package/templates/modules/cicd/bitbucket-pipelines.yml.hbs +39 -0
  257. package/templates/modules/cicd/pubspec.partial.yaml +1 -0
  258. package/templates/modules/database/lib/features/database/data/datasources/database_datasource.dart.hbs +115 -0
  259. package/templates/modules/database/lib/features/database/data/repositories/database_repository_impl.dart.hbs +73 -0
  260. package/templates/modules/database/lib/features/database/domain/repositories/database_repository.dart.hbs +10 -0
  261. package/templates/modules/database/lib/features/database/presentation/providers/database_provider.dart.hbs +43 -0
  262. package/templates/modules/database/pubspec.partial.yaml +27 -0
  263. package/templates/modules/deep-linking/lib/features/deep_linking/data/datasources/deep_link_datasource.dart.hbs +18 -0
  264. package/templates/modules/deep-linking/lib/features/deep_linking/data/repositories/deep_link_repository_impl.dart.hbs +14 -0
  265. package/templates/modules/deep-linking/lib/features/deep_linking/domain/repositories/deep_link_repository.dart.hbs +7 -0
  266. package/templates/modules/deep-linking/lib/features/deep_linking/presentation/providers/deep_link_provider.dart.hbs +57 -0
  267. package/templates/modules/deep-linking/pubspec.partial.yaml +2 -0
  268. package/templates/modules/i18n/l10n.yaml.hbs +5 -0
  269. package/templates/modules/i18n/lib/core/l10n/l10n_config.dart.hbs +29 -0
  270. package/templates/modules/i18n/lib/core/l10n/l10n_provider.dart.hbs +20 -0
  271. package/templates/modules/i18n/lib/l10n/app_de.arb.hbs +27 -0
  272. package/templates/modules/i18n/lib/l10n/app_en.arb.hbs +27 -0
  273. package/templates/modules/i18n/pubspec.partial.yaml +7 -0
  274. package/templates/modules/push/lib/features/push/data/datasources/push_datasource.dart.hbs +124 -0
  275. package/templates/modules/push/lib/features/push/data/repositories/push_repository_impl.dart.hbs +28 -0
  276. package/templates/modules/push/lib/features/push/domain/repositories/push_repository.dart.hbs +31 -0
  277. package/templates/modules/push/lib/features/push/presentation/providers/push_provider.dart.hbs +34 -0
  278. package/templates/modules/push/pubspec.partial.yaml +8 -0
  279. package/templates/modules/theme/lib/core/theme/app_theme.dart.hbs +74 -0
  280. package/templates/modules/theme/lib/core/theme/theme_provider.dart.hbs +46 -0
  281. 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"}