maxsim-flutter 1.21.0 → 1.23.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/dist/claude-setup/agent-writer.d.ts.map +1 -1
- package/dist/claude-setup/agent-writer.js +65 -130
- package/dist/claude-setup/agent-writer.js.map +1 -1
- package/dist/claude-setup/claude-md-generator.d.ts +2 -2
- package/dist/claude-setup/claude-md-generator.d.ts.map +1 -1
- package/dist/claude-setup/claude-md-generator.js +72 -371
- package/dist/claude-setup/claude-md-generator.js.map +1 -1
- package/dist/cli/commands/create.js +2 -0
- package/dist/cli/commands/create.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-writer.d.ts","sourceRoot":"","sources":["../../src/claude-setup/agent-writer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC1B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CAenB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,GAAG,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"agent-writer.d.ts","sourceRoot":"","sources":["../../src/claude-setup/agent-writer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC1B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CAenB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,GAAG,eAAe,EAAE,CAMhF"}
|
|
@@ -23,11 +23,9 @@ export async function writeAgents(context, outputPath) {
|
|
|
23
23
|
*/
|
|
24
24
|
export function buildAgentDefinitions(context) {
|
|
25
25
|
return [
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
buildReviewerAgent(context),
|
|
30
|
-
buildDocsAgent(context),
|
|
26
|
+
buildFlutterBuilderAgent(context),
|
|
27
|
+
buildFlutterTesterAgent(context),
|
|
28
|
+
buildFlutterReviewerAgent(context),
|
|
31
29
|
];
|
|
32
30
|
}
|
|
33
31
|
function formatAgentMarkdown(agent) {
|
|
@@ -71,27 +69,33 @@ function buildModuleContext(context) {
|
|
|
71
69
|
}
|
|
72
70
|
return `Active modules: ${modules.join(', ')}. Be aware of module boundaries and inter-module dependencies.`;
|
|
73
71
|
}
|
|
74
|
-
function
|
|
72
|
+
function buildFlutterBuilderAgent(context) {
|
|
75
73
|
const moduleContext = buildModuleContext(context);
|
|
76
74
|
return {
|
|
77
|
-
filename: 'flutter-
|
|
78
|
-
name: 'flutter-
|
|
79
|
-
description: '
|
|
75
|
+
filename: 'flutter-builder.md',
|
|
76
|
+
name: 'flutter-builder',
|
|
77
|
+
description: 'Implements Flutter features following Clean Architecture. Handles both architecture review and implementation.',
|
|
80
78
|
model: 'sonnet',
|
|
81
|
-
tools: ['Read', 'Grep', 'Glob', '
|
|
82
|
-
body: `You are a Flutter
|
|
79
|
+
tools: ['Read', 'Write', 'Edit', 'Grep', 'Glob', 'Bash'],
|
|
80
|
+
body: `You are a Flutter builder for **${context.projectName}**. You design and implement features following Clean Architecture and Riverpod patterns.
|
|
83
81
|
|
|
84
|
-
##
|
|
82
|
+
## Model Selection Rationale
|
|
83
|
+
|
|
84
|
+
This agent uses **Sonnet** because Sonnet balances speed and capability for implementation tasks — it handles complex code generation and architectural reasoning without the latency of Opus.
|
|
85
|
+
|
|
86
|
+
## Sub-Agent Usage
|
|
85
87
|
|
|
86
|
-
|
|
88
|
+
Use the **Task tool** with haiku for simple, repetitive file searches (e.g., finding all files matching a pattern). Reserve your own context for complex reasoning and implementation.
|
|
87
89
|
|
|
88
|
-
|
|
90
|
+
Example: spawn a haiku sub-agent to scan directories, then act on the results yourself.
|
|
89
91
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
92
|
+
## Your Role
|
|
93
|
+
|
|
94
|
+
You are an **implementation** teammate. You:
|
|
95
|
+
1. Review the story and design the implementation approach (Clean Architecture compliance)
|
|
96
|
+
2. Implement features layer by layer (Domain → Data → Presentation)
|
|
97
|
+
3. Run quality checks before marking tasks complete
|
|
98
|
+
4. Reference rules in \`.claude/rules/\` for project-specific conventions
|
|
95
99
|
|
|
96
100
|
## Architecture Rules
|
|
97
101
|
|
|
@@ -105,47 +109,6 @@ Import rules:
|
|
|
105
109
|
- \`domain/\` must NOT import from \`data/\` or \`presentation/\`
|
|
106
110
|
- \`data/\` must NOT import from \`presentation/\`
|
|
107
111
|
- \`presentation/\` must NOT import from \`data/\`
|
|
108
|
-
- Cross-feature imports go through \`core/\` barrel exports
|
|
109
|
-
|
|
110
|
-
## Module Context
|
|
111
|
-
|
|
112
|
-
${moduleContext}
|
|
113
|
-
|
|
114
|
-
## Key Patterns
|
|
115
|
-
|
|
116
|
-
- **State Management**: Riverpod (prefer AsyncNotifier for new code)
|
|
117
|
-
- **Navigation**: go_router with TypedGoRoute
|
|
118
|
-
- **Code Generation**: freezed for entities, json_serializable for models
|
|
119
|
-
- **Implementation order**: Domain first, then Data, then Presentation
|
|
120
|
-
|
|
121
|
-
## Communication
|
|
122
|
-
|
|
123
|
-
- Send implementation plans to builders before they start
|
|
124
|
-
- Flag architecture violations immediately
|
|
125
|
-
- Approve or reject builder implementations based on architecture compliance`,
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
|
-
function buildFeatureBuilderAgent(context) {
|
|
129
|
-
const moduleContext = buildModuleContext(context);
|
|
130
|
-
return {
|
|
131
|
-
filename: 'flutter-feature-builder.md',
|
|
132
|
-
name: 'flutter-feature-builder',
|
|
133
|
-
description: 'Implements Flutter features following Clean Architecture. Claims tasks from the shared task list and writes code.',
|
|
134
|
-
model: 'sonnet',
|
|
135
|
-
tools: ['Read', 'Write', 'Edit', 'Grep', 'Glob', 'Bash'],
|
|
136
|
-
body: `You are a Flutter feature builder for **${context.projectName}**. You implement features following Clean Architecture and Riverpod patterns.
|
|
137
|
-
|
|
138
|
-
## Your Role
|
|
139
|
-
|
|
140
|
-
You are an **implementation** teammate. You claim tasks, write code, and run quality checks.
|
|
141
|
-
|
|
142
|
-
## Workflow
|
|
143
|
-
|
|
144
|
-
1. Check the shared task list for unassigned tasks (prefer lowest ID first)
|
|
145
|
-
2. Claim a task and mark it in-progress
|
|
146
|
-
3. Implement following the architect's guidance (if provided)
|
|
147
|
-
4. Run quality checks: \`flutter analyze\`, \`flutter test\`
|
|
148
|
-
5. Mark the task complete and notify the tester
|
|
149
112
|
|
|
150
113
|
## Implementation Order
|
|
151
114
|
|
|
@@ -187,29 +150,43 @@ dart run build_runner build --delete-conflicting-outputs
|
|
|
187
150
|
|
|
188
151
|
- \`lib/core/router/app_router.dart\` — Route definitions
|
|
189
152
|
- \`lib/core/providers/app_providers.dart\` — Global provider barrel
|
|
190
|
-
- \`pubspec.yaml\` — Dependencies
|
|
153
|
+
- \`pubspec.yaml\` — Dependencies
|
|
154
|
+
- \`.claude/rules/\` — Project-specific coding rules and conventions`,
|
|
191
155
|
};
|
|
192
156
|
}
|
|
193
|
-
function
|
|
157
|
+
function buildFlutterTesterAgent(context) {
|
|
194
158
|
const moduleContext = buildModuleContext(context);
|
|
195
159
|
return {
|
|
196
160
|
filename: 'flutter-tester.md',
|
|
197
161
|
name: 'flutter-tester',
|
|
198
|
-
description: '
|
|
162
|
+
description: 'TDD-first testing agent. Writes tests before implementation and validates that features meet acceptance criteria.',
|
|
199
163
|
model: 'sonnet',
|
|
200
164
|
tools: ['Read', 'Write', 'Edit', 'Grep', 'Glob', 'Bash'],
|
|
201
|
-
body: `You are a Flutter test engineer for **${context.projectName}**. You
|
|
165
|
+
body: `You are a Flutter test engineer for **${context.projectName}**. You practice TDD and validate that implementations meet acceptance criteria.
|
|
166
|
+
|
|
167
|
+
## Model Selection Rationale
|
|
168
|
+
|
|
169
|
+
This agent uses **Sonnet** for understanding complex test scenarios — Sonnet has sufficient capability to reason about edge cases, mock patterns, and integration test flows.
|
|
170
|
+
|
|
171
|
+
## Sub-Agent Usage
|
|
172
|
+
|
|
173
|
+
Use the **Task tool** with haiku for coverage scanning — spawn a haiku sub-agent to run \`flutter test --coverage\` and parse the output, then analyze results yourself.
|
|
202
174
|
|
|
203
175
|
## Your Role
|
|
204
176
|
|
|
205
|
-
You are a **
|
|
177
|
+
You are a **TDD-first** teammate. You:
|
|
178
|
+
1. Write failing tests BEFORE implementation exists (RED)
|
|
179
|
+
2. Confirm tests pass after implementation (GREEN)
|
|
180
|
+
3. Run full quality checks and report failures with reproduction steps
|
|
181
|
+
4. Reference \`.claude/rules/\` for project test conventions
|
|
206
182
|
|
|
207
|
-
##
|
|
183
|
+
## Test-First Workflow
|
|
208
184
|
|
|
209
|
-
1.
|
|
210
|
-
2.
|
|
211
|
-
3.
|
|
212
|
-
4.
|
|
185
|
+
1. Read the story acceptance criteria
|
|
186
|
+
2. Write test stubs that will FAIL (no implementation yet)
|
|
187
|
+
3. Communicate test specs to the builder
|
|
188
|
+
4. After builder implements, run tests to confirm GREEN
|
|
189
|
+
5. Add edge case tests to strengthen coverage
|
|
213
190
|
|
|
214
191
|
## Test Structure
|
|
215
192
|
|
|
@@ -246,21 +223,30 @@ dart format --set-exit-if-changed . # Code is formatted
|
|
|
246
223
|
|
|
247
224
|
## Communication
|
|
248
225
|
|
|
249
|
-
- Message the builder when tests fail with specific error details
|
|
226
|
+
- Message the builder when tests fail with specific error details and reproduction steps
|
|
250
227
|
- Confirm to the reviewer when all tests pass
|
|
251
|
-
- Flag any untestable code patterns
|
|
228
|
+
- Flag any untestable code patterns — these indicate a design problem
|
|
229
|
+
- See \`.claude/rules/\` for naming conventions and test file placement`,
|
|
252
230
|
};
|
|
253
231
|
}
|
|
254
|
-
function
|
|
232
|
+
function buildFlutterReviewerAgent(context) {
|
|
255
233
|
const moduleContext = buildModuleContext(context);
|
|
256
234
|
return {
|
|
257
235
|
filename: 'flutter-reviewer.md',
|
|
258
236
|
name: 'flutter-reviewer',
|
|
259
|
-
description: 'Reviews
|
|
260
|
-
model: '
|
|
237
|
+
description: 'Read-only compliance checker. Reviews code for Clean Architecture violations, Riverpod patterns, and code quality.',
|
|
238
|
+
model: 'haiku',
|
|
261
239
|
tools: ['Read', 'Grep', 'Glob'],
|
|
262
240
|
body: `You are a Flutter code reviewer for **${context.projectName}**. You review completed implementations for architecture compliance and code quality.
|
|
263
241
|
|
|
242
|
+
## Model Selection Rationale
|
|
243
|
+
|
|
244
|
+
This agent uses **Haiku** because Haiku is fast and cost-effective for pattern-matching review tasks — checking import rules, naming conventions, and checklist compliance does not require Sonnet-level reasoning.
|
|
245
|
+
|
|
246
|
+
## Sub-Agent Policy
|
|
247
|
+
|
|
248
|
+
No sub-agents needed. This agent performs read-only analysis using Glob and Grep directly. Sub-agents are not required for compliance checking.
|
|
249
|
+
|
|
264
250
|
## Your Role
|
|
265
251
|
|
|
266
252
|
You are a **read-only** teammate. You review code — you do NOT write or edit files.
|
|
@@ -300,6 +286,10 @@ You are a **read-only** teammate. You review code — you do NOT write or edit f
|
|
|
300
286
|
|
|
301
287
|
${moduleContext}
|
|
302
288
|
|
|
289
|
+
## Rules Reference
|
|
290
|
+
|
|
291
|
+
Consult \`.claude/rules/\` for the full set of project-specific rules and conventions before completing any review.
|
|
292
|
+
|
|
303
293
|
## Communication
|
|
304
294
|
|
|
305
295
|
- Approve implementations that pass all checks
|
|
@@ -307,59 +297,4 @@ ${moduleContext}
|
|
|
307
297
|
- Prioritize critical issues (architecture violations) over style suggestions`,
|
|
308
298
|
};
|
|
309
299
|
}
|
|
310
|
-
function buildDocsAgent(context) {
|
|
311
|
-
const moduleContext = buildModuleContext(context);
|
|
312
|
-
return {
|
|
313
|
-
filename: 'flutter-docs.md',
|
|
314
|
-
name: 'flutter-docs',
|
|
315
|
-
description: 'Documents completed features with inline comments and README updates after review approval.',
|
|
316
|
-
model: 'haiku',
|
|
317
|
-
tools: ['Read', 'Write', 'Edit', 'Grep', 'Glob'],
|
|
318
|
-
body: `You are a documentation writer for **${context.projectName}**. You add documentation after features are reviewed and approved.
|
|
319
|
-
|
|
320
|
-
## Your Role
|
|
321
|
-
|
|
322
|
-
You are a **documentation** teammate. You write docs after the reviewer approves code.
|
|
323
|
-
|
|
324
|
-
## Responsibilities
|
|
325
|
-
|
|
326
|
-
1. Add Dart doc comments to public APIs (classes, methods, providers)
|
|
327
|
-
2. Update README.md with new feature documentation
|
|
328
|
-
3. Add inline comments for complex logic only (avoid obvious comments)
|
|
329
|
-
4. Document provider usage patterns and dependencies
|
|
330
|
-
|
|
331
|
-
## Documentation Style
|
|
332
|
-
|
|
333
|
-
- Use \`///\` for Dart doc comments
|
|
334
|
-
- Keep comments concise and focused on "why", not "what"
|
|
335
|
-
- Document parameters and return values for public methods
|
|
336
|
-
- Include usage examples in doc comments for providers
|
|
337
|
-
|
|
338
|
-
## Example
|
|
339
|
-
|
|
340
|
-
\`\`\`dart
|
|
341
|
-
/// Manages user authentication state.
|
|
342
|
-
///
|
|
343
|
-
/// Watches [authRepositoryProvider] for auth state changes.
|
|
344
|
-
/// Use [signIn] and [signOut] to manage the session.
|
|
345
|
-
///
|
|
346
|
-
/// \`\`\`dart
|
|
347
|
-
/// final authState = ref.watch(authNotifierProvider);
|
|
348
|
-
/// \`\`\`
|
|
349
|
-
class AuthNotifier extends AsyncNotifier<User?> {
|
|
350
|
-
// ...
|
|
351
|
-
}
|
|
352
|
-
\`\`\`
|
|
353
|
-
|
|
354
|
-
## Module Context
|
|
355
|
-
|
|
356
|
-
${moduleContext}
|
|
357
|
-
|
|
358
|
-
## Guidelines
|
|
359
|
-
|
|
360
|
-
- Only document code that has been reviewed and approved
|
|
361
|
-
- Do not refactor or change functionality — documentation only
|
|
362
|
-
- Prioritize public API documentation over internal implementation details`,
|
|
363
|
-
};
|
|
364
|
-
}
|
|
365
300
|
//# sourceMappingURL=agent-writer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-writer.js","sourceRoot":"","sources":["../../src/claude-setup/agent-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAYjC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAuB,EACvB,UAAkB;IAElB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACxD,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5C,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5C,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAuB;IAC3D,OAAO;QACL,
|
|
1
|
+
{"version":3,"file":"agent-writer.js","sourceRoot":"","sources":["../../src/claude-setup/agent-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAYjC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAuB,EACvB,UAAkB;IAElB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACxD,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5C,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5C,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAuB;IAC3D,OAAO;QACL,wBAAwB,CAAC,OAAO,CAAC;QACjC,uBAAuB,CAAC,OAAO,CAAC;QAChC,yBAAyB,CAAC,OAAO,CAAC;KACnC,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAsB;IACjD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9C,OAAO;QACD,KAAK,CAAC,IAAI;eACH,KAAK,CAAC,WAAW;SACvB,KAAK,CAAC,KAAK;SACX,SAAS;;;EAGhB,KAAK,CAAC,IAAI;CACX,CAAC;AACF,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAuB;IACpD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI;QAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG;QAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ;QAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvD,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI;QAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI;QAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS;QAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzD,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI;QAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW;QAAE,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC9D,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAuB;IACjD,MAAM,OAAO,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,qFAAqF,CAAC;IAC/F,CAAC;IACD,OAAO,mBAAmB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,gEAAgE,CAAC;AAC/G,CAAC;AAED,SAAS,wBAAwB,CAAC,OAAuB;IACvD,MAAM,aAAa,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAElD,OAAO;QACL,QAAQ,EAAE,oBAAoB;QAC9B,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,gHAAgH;QAClH,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;QACxD,IAAI,EAAE,mCAAmC,OAAO,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoD9D,aAAa;;;;;;;;;;;;;;;;;;;;;;qEAsBsD;KAClE,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAuB;IACtD,MAAM,aAAa,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAElD,OAAO;QACL,QAAQ,EAAE,mBAAmB;QAC7B,IAAI,EAAE,gBAAgB;QACtB,WAAW,EACT,mHAAmH;QACrH,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;QACxD,IAAI,EAAE,yCAAyC,OAAO,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+CpE,aAAa;;;;;;;;;;;;;;;;;wEAiByD;KACrE,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,OAAuB;IACxD,MAAM,aAAa,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAElD,OAAO;QACL,QAAQ,EAAE,qBAAqB;QAC/B,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,oHAAoH;QACtH,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;QAC/B,IAAI,EAAE,yCAAyC,OAAO,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+CpE,aAAa;;;;;;;;;;8EAU+D;KAC3E,CAAC;AACJ,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ProjectContext } from '../core/context.js';
|
|
2
2
|
/**
|
|
3
|
-
* Generates a
|
|
4
|
-
*
|
|
3
|
+
* Generates a slim CLAUDE.md (~80 lines) for a scaffolded Flutter project.
|
|
4
|
+
* Detailed rules are referenced via @-imports to .claude/rules/ files.
|
|
5
5
|
*/
|
|
6
6
|
export declare function generateClaudeMd(context: ProjectContext): string;
|
|
7
7
|
//# sourceMappingURL=claude-md-generator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-md-generator.d.ts","sourceRoot":"","sources":["../../src/claude-setup/claude-md-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"claude-md-generator.d.ts","sourceRoot":"","sources":["../../src/claude-setup/claude-md-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAehE"}
|
|
@@ -1,31 +1,28 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Generates a
|
|
3
|
-
*
|
|
2
|
+
* Generates a slim CLAUDE.md (~80 lines) for a scaffolded Flutter project.
|
|
3
|
+
* Detailed rules are referenced via @-imports to .claude/rules/ files.
|
|
4
4
|
*/
|
|
5
5
|
export function generateClaudeMd(context) {
|
|
6
6
|
const sections = [
|
|
7
7
|
generateHeader(context),
|
|
8
|
-
|
|
9
|
-
generateArchitectureRules(),
|
|
10
|
-
generateRiverpodPatterns(),
|
|
11
|
-
generateGoRouterPatterns(),
|
|
12
|
-
...generateModuleSections(context),
|
|
13
|
-
generateQualityGates(),
|
|
8
|
+
generateRules(context),
|
|
14
9
|
generateBuildCommands(),
|
|
10
|
+
generateQualityGates(),
|
|
11
|
+
generateDevelopmentWorkflow(),
|
|
12
|
+
generateKeyPaths(),
|
|
15
13
|
];
|
|
16
14
|
if (context.claude.agentTeams) {
|
|
17
|
-
sections.push(
|
|
15
|
+
sections.push(generateAgentTeams());
|
|
18
16
|
}
|
|
19
|
-
sections.push(generateDevelopmentWorkflow());
|
|
20
17
|
return sections.join('\n\n');
|
|
21
18
|
}
|
|
22
19
|
function generateHeader(context) {
|
|
23
20
|
const lines = [
|
|
24
21
|
`# CLAUDE.md - ${context.projectName}`,
|
|
25
22
|
'',
|
|
26
|
-
|
|
23
|
+
'## Project Overview',
|
|
27
24
|
'',
|
|
28
|
-
`**${context.projectName}**
|
|
25
|
+
`**${context.projectName}** — Flutter app with Clean Architecture, Riverpod, go_router.`,
|
|
29
26
|
];
|
|
30
27
|
if (context.description) {
|
|
31
28
|
lines.push('', context.description);
|
|
@@ -34,395 +31,99 @@ function generateHeader(context) {
|
|
|
34
31
|
if (enabledModules.length > 0) {
|
|
35
32
|
lines.push('', `**Active modules:** ${enabledModules.join(', ')}`);
|
|
36
33
|
}
|
|
37
|
-
lines.push(
|
|
34
|
+
lines.push(`**Platforms:** ${context.platforms.join(', ')}`);
|
|
38
35
|
return lines.join('\n');
|
|
39
36
|
}
|
|
40
|
-
function
|
|
41
|
-
const
|
|
42
|
-
'
|
|
43
|
-
'
|
|
44
|
-
'
|
|
37
|
+
function generateRules(context) {
|
|
38
|
+
const imports = [
|
|
39
|
+
'## Rules',
|
|
40
|
+
'',
|
|
41
|
+
'@.claude/rules/architecture.md',
|
|
42
|
+
'@.claude/rules/riverpod.md',
|
|
43
|
+
'@.claude/rules/go-router.md',
|
|
44
|
+
'@.claude/rules/testing.md',
|
|
45
|
+
'@.claude/rules/security.md',
|
|
45
46
|
];
|
|
46
|
-
if (context.modules.
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
if (context.modules.
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
if (context.modules.
|
|
63
|
-
|
|
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
|
-
\`\`\``;
|
|
47
|
+
if (context.modules.auth)
|
|
48
|
+
imports.push('@.claude/rules/auth.md');
|
|
49
|
+
if (context.modules.api)
|
|
50
|
+
imports.push('@.claude/rules/api.md');
|
|
51
|
+
if (context.modules.database)
|
|
52
|
+
imports.push('@.claude/rules/database.md');
|
|
53
|
+
if (context.modules.i18n)
|
|
54
|
+
imports.push('@.claude/rules/i18n.md');
|
|
55
|
+
if (context.modules.theme)
|
|
56
|
+
imports.push('@.claude/rules/theme.md');
|
|
57
|
+
if (context.modules.push)
|
|
58
|
+
imports.push('@.claude/rules/push.md');
|
|
59
|
+
if (context.modules.analytics)
|
|
60
|
+
imports.push('@.claude/rules/analytics.md');
|
|
61
|
+
if (context.modules.cicd)
|
|
62
|
+
imports.push('@.claude/rules/cicd.md');
|
|
63
|
+
if (context.modules.deepLinking)
|
|
64
|
+
imports.push('@.claude/rules/deep-linking.md');
|
|
65
|
+
return imports.join('\n');
|
|
326
66
|
}
|
|
327
67
|
function generateBuildCommands() {
|
|
328
68
|
return `## Build Commands
|
|
329
69
|
|
|
330
70
|
\`\`\`bash
|
|
331
|
-
flutter pub get
|
|
332
|
-
flutter run
|
|
333
|
-
|
|
334
|
-
flutter
|
|
335
|
-
flutter
|
|
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
|
|
71
|
+
flutter pub get
|
|
72
|
+
flutter run
|
|
73
|
+
dart run build_runner build
|
|
74
|
+
flutter test
|
|
75
|
+
flutter analyze
|
|
340
76
|
\`\`\``;
|
|
341
77
|
}
|
|
342
|
-
function
|
|
343
|
-
|
|
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
|
|
78
|
+
function generateQualityGates() {
|
|
79
|
+
return `## Quality Gates
|
|
371
80
|
|
|
372
|
-
|
|
373
|
-
- \`
|
|
374
|
-
- \`
|
|
375
|
-
- \`description\`: Detailed requirements
|
|
376
|
-
- \`acceptanceCriteria\`: Definition of done
|
|
377
|
-
- \`passes\`: Set to \`true\` when all criteria are met`;
|
|
81
|
+
- \`flutter analyze\` — zero warnings
|
|
82
|
+
- \`flutter test\` — all pass
|
|
83
|
+
- \`dart format --set-exit-if-changed .\` — formatted`;
|
|
378
84
|
}
|
|
379
85
|
function generateDevelopmentWorkflow() {
|
|
380
86
|
return `## Development Workflow
|
|
381
87
|
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
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)
|
|
88
|
+
- Commit: \`feat: [StoryID] - description\`
|
|
89
|
+
- Files: \`snake_case.dart\`
|
|
90
|
+
- Tests: \`<source>_test.dart\``;
|
|
91
|
+
}
|
|
92
|
+
function generateKeyPaths() {
|
|
93
|
+
return `## Key Paths
|
|
397
94
|
|
|
398
|
-
|
|
95
|
+
- \`lib/core/router/app_router.dart\`
|
|
96
|
+
- \`lib/core/providers/app_providers.dart\`
|
|
97
|
+
- \`pubspec.yaml\`
|
|
98
|
+
- \`prd.json\``;
|
|
99
|
+
}
|
|
100
|
+
function generateAgentTeams() {
|
|
101
|
+
return `## Agent Teams Workflow
|
|
399
102
|
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
- \`pubspec.yaml\` - Dependencies
|
|
404
|
-
- \`analysis_options.yaml\` - Lint rules`;
|
|
103
|
+
Stories in \`prd.json\`. Enable: \`CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1\`.
|
|
104
|
+
Roles: architect, builder, tester, reviewer.
|
|
105
|
+
Commit: \`feat: [StoryID] - description\`.`;
|
|
405
106
|
}
|
|
406
107
|
function getEnabledModuleNames(context) {
|
|
407
108
|
const modules = [];
|
|
408
109
|
if (context.modules.auth)
|
|
409
|
-
modules.push('
|
|
110
|
+
modules.push('auth');
|
|
410
111
|
if (context.modules.api)
|
|
411
|
-
modules.push('
|
|
112
|
+
modules.push('api');
|
|
412
113
|
if (context.modules.database)
|
|
413
|
-
modules.push('
|
|
114
|
+
modules.push('database');
|
|
414
115
|
if (context.modules.i18n)
|
|
415
116
|
modules.push('i18n');
|
|
416
117
|
if (context.modules.theme)
|
|
417
|
-
modules.push('
|
|
118
|
+
modules.push('theme');
|
|
418
119
|
if (context.modules.push)
|
|
419
|
-
modules.push('
|
|
120
|
+
modules.push('push');
|
|
420
121
|
if (context.modules.analytics)
|
|
421
|
-
modules.push('
|
|
122
|
+
modules.push('analytics');
|
|
422
123
|
if (context.modules.cicd)
|
|
423
|
-
modules.push('
|
|
124
|
+
modules.push('cicd');
|
|
424
125
|
if (context.modules.deepLinking)
|
|
425
|
-
modules.push('
|
|
126
|
+
modules.push('deep-linking');
|
|
426
127
|
return modules;
|
|
427
128
|
}
|
|
428
129
|
//# sourceMappingURL=claude-md-generator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-md-generator.js","sourceRoot":"","sources":["../../src/claude-setup/claude-md-generator.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAuB;IACtD,MAAM,QAAQ,GAAa;QACzB,cAAc,CAAC,OAAO,CAAC;QACvB,
|
|
1
|
+
{"version":3,"file":"claude-md-generator.js","sourceRoot":"","sources":["../../src/claude-setup/claude-md-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -101,6 +101,7 @@ async function runCreate(appName, options) {
|
|
|
101
101
|
? options.platforms.split(',')
|
|
102
102
|
: undefined,
|
|
103
103
|
modules,
|
|
104
|
+
claude: { preset: 'standard' },
|
|
104
105
|
scaffold: {
|
|
105
106
|
dryRun: options.dryRun === true,
|
|
106
107
|
},
|
|
@@ -127,6 +128,7 @@ async function runCreate(appName, options) {
|
|
|
127
128
|
},
|
|
128
129
|
platforms: answers.platforms,
|
|
129
130
|
modules,
|
|
131
|
+
claude: isCustom ? {} : { preset: presetId },
|
|
130
132
|
scaffold: {
|
|
131
133
|
dryRun: options.dryRun === true,
|
|
132
134
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/cli/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,OAAO,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGtH,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;AAEzC,MAAM,UAAU,mBAAmB;IACjC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IAElC,GAAG;SACA,WAAW,CAAC,4EAA4E,CAAC;SACzF,QAAQ,CAAC,YAAY,EAAE,iCAAiC,CAAC;SACzD,MAAM,CAAC,YAAY,EAAE,6CAA6C,CAAC;SACnE,MAAM,CAAC,kBAAkB,EAAE,qDAAqD,CAAC;SACjF,MAAM,CAAC,oBAAoB,EAAE,gEAAgE,CAAC;SAC9F,MAAM,CAAC,4BAA4B,EAAE,yCAAyC,CAAC;SAC/E,MAAM,CAAC,aAAa,EAAE,gCAAgC,CAAC;SACvD,MAAM,CAAC,WAAW,EAAE,yCAAyC,CAAC;SAC9D,MAAM,CAAC,iBAAiB,EAAE,iDAAiD,CAAC;SAC5E,MAAM,CAAC,OAAO,EAAE,uCAAuC,CAAC;SACxD,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,OAAgC,EAAE,EAAE;QAC9E,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CACzB,WAAqB,EACrB,OAAgC;IAEhC,MAAM,OAAO,GAA4B,EAAE,CAAC;IAE5C,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACtB,QAAQ,EAAE,EAAE,CAAC;YACX,KAAK,MAAM;gBACT,OAAO,CAAC,IAAI,GAAG;oBACb,OAAO,EAAE,IAAI;oBACb,QAAQ,EAAG,OAAO,CAAC,YAAuB,IAAI,SAAS;iBACxD,CAAC;gBACF,MAAM;YACR,KAAK,KAAK;gBACR,OAAO,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAChC,MAAM;YACR,KAAK,OAAO;gBACV,OAAO,CAAC,KAAK,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAClC,MAAM;YACR,KAAK,UAAU;gBACb,OAAO,CAAC,QAAQ,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBACrC,MAAM;YACR,KAAK,MAAM;gBACT,OAAO,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBACjC,MAAM;YACR,KAAK,MAAM;gBACT,OAAO,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBACjC,MAAM;YACR,KAAK,WAAW;gBACd,OAAO,CAAC,SAAS,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBACtC,MAAM;YACR,KAAK,MAAM;gBACT,OAAO,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBACjC,MAAM;YACR,KAAK,cAAc;gBACjB,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAC5C,MAAM;QACV,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,OAA2B,EAC3B,OAAgC;IAEhC,CAAC,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAErD,IAAI,MAAoB,CAAC;IAEzB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,wBAAwB;QACxB,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,MAAgB,CAAC,CAAC;QACpD,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,OAAO,CAAC,MAAgB,EAAE,CAAC,CAAC;IAC/D,CAAC;SAAM,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACvB,gCAAgC;QAChC,MAAM,IAAI,GAAG,OAAO,IAAI,QAAQ,CAAC;QACjC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO;YACjC,CAAC,CAAE,OAAO,CAAC,OAAkB,CAAC,KAAK,CAAC,GAAG,CAAC;YACxC,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,OAAO,GAAG,kBAAkB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAEzD,MAAM,GAAG,WAAW,CAAC;YACnB,OAAO,EAAE;gBACP,IAAI;gBACJ,KAAK,EAAG,OAAO,CAAC,GAAc,IAAI,aAAa;aAChD;YACD,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC1B,CAAC,CAAE,OAAO,CAAC,SAAoB,CAAC,KAAK,CAAC,GAAG,CAAC;gBAC1C,CAAC,CAAC,SAAS;YACb,OAAO;YACP,QAAQ,EAAE;gBACR,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,IAAI;aAChC;SACF,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,kDAAkD;QAClD,MAAM,QAAQ,GAAG,MAAM,eAAe,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,QAAQ,KAAK,QAAQ,CAAC;QAEvC,MAAM,OAAO,GAAG,MAAM,wBAAwB,CAC5C,EAAE,WAAW,EAAE,OAAO,EAAE,EACxB;YACE,WAAW,EAAE,CAAC,QAAQ;YACtB,cAAc,EAAE,gBAAgB,CAAC,QAAQ,CAAC;SAC3C,CACF,CAAC;QAEF,+EAA+E;QAC/E,MAAM,OAAO,GAA4B,EAAE,CAAC;QAC5C,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,KAAK,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAC5F,CAAC;QAED,MAAM,GAAG,WAAW,CAAC;YACnB,OAAO,EAAE;gBACP,IAAI,EAAE,OAAO,CAAC,WAAW;gBACzB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,WAAW,EAAE,OAAO,CAAC,WAAW;aACjC;YACD,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,OAAO;YACP,QAAQ,EAAE;gBACR,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,IAAI;aAChC;SACF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,oBAAoB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAExD,sCAAsC;IACtC,MAAM,UAAU,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC/C,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,6BAA6B,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACzE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,OAAO,GAAG,aAAa,CAAC,+BAA+B,CAAC,CAAC;IAC/D,OAAO,CAAC,KAAK,EAAE,CAAC;IAEhB,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC;QAChC,QAAQ,EAAE,OAAO,CAAC,MAAM,KAAK,KAAK;KACnC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAEzC,OAAO,CAAC,OAAO,CAAC,aAAa,MAAM,CAAC,YAAY,CAAC,MAAM,QAAQ,CAAC,CAAC;IAEjE,+CAA+C;IAC/C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC;QAC3B,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QACnE,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAC5E,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,YAAY,CAAC,MAAM,iBAAiB,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,MAAM,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAC7C,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IAED,CAAC,CAAC,KAAK,CAAC,+BAA+B,MAAM,CAAC,OAAO,CAAC,IAAI,iBAAiB,CAAC,CAAC;AAC/E,CAAC"}
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/cli/commands/create.ts"],"names":[],"mappings":"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"}
|