maxsim-flutter 1.30.0 → 1.31.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -142,6 +142,68 @@ Available module identifiers: `auth`, `api`, `theme`, `database`, `i18n`, `push`
142
142
 
143
143
  ---
144
144
 
145
+ ### `maxsim-flutter plan [app-name]`
146
+
147
+ Bootstrap an AI-guided planning workspace before creating your Flutter app. The `plan` command collects your project name and a short description, then generates three artifacts:
148
+
149
+ | Artifact | Path | Purpose |
150
+ |----------|------|---------|
151
+ | Planning skill | `.claude/skills/plan-app.md` | 9-step Claude Code skill that guides you from vision to PRD |
152
+ | Brief template | `docs/project-brief-template.md` | Structured template for problem statement, user journeys, non-goals |
153
+ | Partial config | `maxsim.config.yaml` | Pre-filled with project name and description |
154
+
155
+ **Arguments**
156
+
157
+ | Argument | Description |
158
+ |----------|-------------|
159
+ | `[app-name]` | Project name in `snake_case` (prompted if omitted) |
160
+
161
+ **Flags**
162
+
163
+ | Flag | Description |
164
+ |------|-------------|
165
+ | `--description <text>` | Short description of the app (1-2 sentences; prompted if omitted) |
166
+
167
+ **Examples**
168
+
169
+ ```bash
170
+ # Interactive — prompts for name and description
171
+ maxsim-flutter plan
172
+
173
+ # Non-interactive
174
+ maxsim-flutter plan my_team_app --description "A chat app for small teams."
175
+ ```
176
+
177
+ **Workflow**
178
+
179
+ ```bash
180
+ # 1. Bootstrap the planning workspace
181
+ maxsim-flutter plan my_app
182
+
183
+ # 2. Navigate to the new directory and open Claude Code
184
+ cd my_app
185
+ claude
186
+
187
+ # 3. Run the AI planning skill (guides you through 9 steps)
188
+ /plan-app
189
+
190
+ # 4. After Claude generates maxsim.config.yaml with your chosen modules, scaffold
191
+ maxsim-flutter create --config maxsim.config.yaml
192
+ ```
193
+
194
+ The `/plan-app` skill leads Claude through:
195
+ 1. Understanding your app's vision and core problem
196
+ 2. Defining core features and explicit non-goals
197
+ 3. Technical decisions (auth provider, database, platforms)
198
+ 4. Context-aware module suggestions (REQUIRED / RECOMMENDED / NICE-TO-HAVE)
199
+ 5. Confirmation and approval
200
+ 6. Generating `docs/project-brief.md`
201
+ 7. Generating `docs/architecture.md` with Riverpod provider tree and go_router navigation flow
202
+ 8. Generating complete `maxsim.config.yaml`
203
+ 9. Generating `prd.json` v2 with stories derived from user journeys
204
+
205
+ ---
206
+
145
207
  ### `maxsim-flutter migrate [path]`
146
208
 
147
209
  Analyses an existing Flutter project and, optionally, migrates it to maxsim conventions. Detected architecture, state management, routing, and dependencies are reported. On confirmation the command writes `maxsim.config.yaml`, generates a `.claude/` directory, and creates a `prd.json` file containing story-by-story migration tasks.
package/dist/cli/index.js CHANGED
@@ -7,11 +7,11 @@ import { createMigrateCommand } from './commands/migrate.js';
7
7
  import { createListCommand } from './commands/list.js';
8
8
  import { createUpgradeCommand } from './commands/upgrade.js';
9
9
  import { createPlanCommand } from './commands/plan.js';
10
- import { checkForUpdate } from './version-check.js';
10
+ import { checkForUpdate, getCurrentVersion } from './version-check.js';
11
11
  const program = new Command();
12
12
  program
13
13
  .name('maxsim-flutter')
14
- .version('0.1.0')
14
+ .version(getCurrentVersion())
15
15
  .description('AI-powered Flutter app scaffolding with Clean Architecture, Riverpod, and autonomous development via Ralph')
16
16
  .option('--no-update-check', 'Skip the npm update check');
17
17
  program.addCommand(createCreateCommand());
@@ -27,7 +27,7 @@ if (opts.updateCheck !== false) {
27
27
  checkForUpdate()
28
28
  .then((latestVersion) => {
29
29
  if (latestVersion) {
30
- const current = program.version() ?? '0.1.0';
30
+ const current = program.version() ?? getCurrentVersion();
31
31
  console.log(chalk.yellow(`\nUpdate available: ${current} → ${latestVersion}. Run npm install -g maxsim-flutter to update.`));
32
32
  }
33
33
  })
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,gBAAgB,CAAC;KACtB,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,4GAA4G,CAAC;KACzH,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,CAAC,CAAC;AAE5D,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAC1C,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACvC,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;AAC3C,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACxC,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;AAC3C,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAExC,OAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,gEAAgE;AAChE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAA4B,CAAC;AACtD,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;IAC/B,cAAc,EAAE;SACb,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE;QACtB,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,OAAO,CAAC;YAC7C,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,uBAAuB,OAAO,MAAM,aAAa,gDAAgD,CAClG,CACF,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;SACD,KAAK,CAAC,GAAG,EAAE;QACV,kBAAkB;IACpB,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,gBAAgB,CAAC;KACtB,OAAO,CAAC,iBAAiB,EAAE,CAAC;KAC5B,WAAW,CAAC,4GAA4G,CAAC;KACzH,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,CAAC,CAAC;AAE5D,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAC1C,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACvC,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;AAC3C,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACxC,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;AAC3C,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAExC,OAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,gEAAgE;AAChE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAA4B,CAAC;AACtD,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;IAC/B,cAAc,EAAE;SACb,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE;QACtB,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,iBAAiB,EAAE,CAAC;YACzD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,uBAAuB,OAAO,MAAM,aAAa,gDAAgD,CAClG,CACF,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;SACD,KAAK,CAAC,GAAG,EAAE;QACV,kBAAkB;IACpB,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,3 +1,4 @@
1
+ export declare function getCurrentVersion(): string;
1
2
  /**
2
3
  * Check if a newer version of maxsim-flutter is available on npm.
3
4
  * Returns the newer version string, or null if no update or on any error.
@@ -1 +1 @@
1
- {"version":3,"file":"version-check.d.ts","sourceRoot":"","sources":["../../src/cli/version-check.ts"],"names":[],"mappings":"AAyDA;;;;GAIG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA+B7D"}
1
+ {"version":3,"file":"version-check.d.ts","sourceRoot":"","sources":["../../src/cli/version-check.ts"],"names":[],"mappings":"AAgBA,wBAAgB,iBAAiB,IAAI,MAAM,CAQ1C;AAiCD;;;;GAIG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA+B7D"}
@@ -11,7 +11,7 @@ const FETCH_TIMEOUT_MS = 3000; // 3 seconds
11
11
  const REGISTRY_URL = 'https://registry.npmjs.org/maxsim-flutter/latest';
12
12
  const CACHE_DIR = join(homedir(), '.maxsim-flutter');
13
13
  const CACHE_FILE = join(CACHE_DIR, 'last-update-check');
14
- function getCurrentVersion() {
14
+ export function getCurrentVersion() {
15
15
  try {
16
16
  const pkgPath = join(__dirname, '../../package.json');
17
17
  const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
@@ -1 +1 @@
1
- {"version":3,"file":"version-check.js","sourceRoot":"","sources":["../../src/cli/version-check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,MAAM,iBAAiB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW;AAC1D,MAAM,gBAAgB,GAAG,IAAI,CAAC,CAAC,YAAY;AAC3C,MAAM,YAAY,GAAG,kDAAkD,CAAC;AACxE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,iBAAiB,CAAC,CAAC;AACrD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;AAExD,SAAS,iBAAiB;IACxB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAwB,CAAC;QAC9E,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU;IACvB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/C,IAAI,KAAK,CAAC,SAAS,CAAC;YAAE,OAAO,IAAI,CAAC;QAClC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,iBAAiB,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,oCAAoC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW;IACxB,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,MAAM,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,qCAAqC;IACvC,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,CAAS,EAAE,CAAS;IAC3C,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,IAAI,IAAI,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;IAC9B,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,CAAC;QACH,IAAI,CAAC,CAAC,MAAM,UAAU,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;QAEvC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAErE,IAAI,aAAqB,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;YAC1E,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,OAAO,IAAI,CAAC;YAC9B,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAyB,CAAC;YAC7D,aAAa,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;QACrC,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;QAED,MAAM,WAAW,EAAE,CAAC;QAEpB,IAAI,CAAC,aAAa;YAAE,OAAO,IAAI,CAAC;QAEhC,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;QAC3C,IAAI,eAAe,CAAC,aAAa,EAAE,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACvD,OAAO,aAAa,CAAC;QACvB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,wEAAwE;QACxE,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"version-check.js","sourceRoot":"","sources":["../../src/cli/version-check.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"skill-generator.d.ts","sourceRoot":"","sources":["../../src/plan/skill-generator.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,MAAM,CA2H/D"}
1
+ {"version":3,"file":"skill-generator.d.ts","sourceRoot":"","sources":["../../src/plan/skill-generator.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,MAAM,CA2Q/D"}
@@ -1,6 +1,7 @@
1
1
  export function generatePlanAppSkill(input) {
2
2
  const name = input?.name ?? 'your_app';
3
3
  const description = input?.description ?? 'A Flutter app';
4
+ const ticks = '```';
4
5
  return `---
5
6
  description: AI-guided planning for ${name}. Leads through vision, features, technical decisions, and PRD generation. Ask questions one at a time.
6
7
  model: claude-opus-4-6
@@ -109,16 +110,158 @@ Summarize all decisions collected in Steps 1-4:
109
110
 
110
111
  **Question 5.1** — Does this summary accurately reflect your app? Should we proceed with generating the config and PRD, or would you like to adjust anything?
111
112
 
112
- Once the user confirms and approves, generate:
113
+ Once the user confirms and approves, proceed through Steps 6-9.
113
114
 
114
- 1. **Complete \`maxsim.config.yaml\`** with all selected modules configured
115
- 2. **\`prd.json\`** with user stories organized by phase
116
- 3. **\`docs/architecture.md\`** with system design overview
115
+ ---
116
+
117
+ ## Step 6: Generate project-brief.md
118
+
119
+ Synthesize the conversation into a complete \`docs/project-brief.md\` file:
120
+
121
+ ${ticks}markdown
122
+ # Project Brief — ${name}
123
+
124
+ ## Description
125
+ ${description}
126
+
127
+ ## Problem Statement
128
+ [from Question 1.1]
129
+
130
+ ## Core User Journey
131
+ [from Question 1.2]
132
+
133
+ ## Core Features (v1)
134
+ [from Question 2.1]
135
+
136
+ ## Non-Goals (v1)
137
+ [from Question 2.2]
138
+
139
+ ## Technical Decisions
140
+ - Auth: [result]
141
+ - Database: [result]
142
+ - Platforms: [result]
143
+ - Modules: [final list]
144
+ ${ticks}
145
+
146
+ Write this file to: \`docs/project-brief.md\`
147
+
148
+ ---
149
+
150
+ ## Step 7: Generate architecture.md
151
+
152
+ Create \`docs/architecture.md\` with provider tree and navigation flow ASCII diagrams.
153
+
154
+ ### Provider Tree (Riverpod ASCII Diagram)
155
+
156
+ ${ticks}
157
+ AppProviders
158
+ ├── authStateProvider (StreamProvider)
159
+ │ └── userProvider (derived)
160
+ ├── [featureNameProvider] (StateNotifierProvider)
161
+ │ └── [featureNameState]
162
+ └── routerProvider (go_router routing)
163
+ ${ticks}
164
+
165
+ ### Navigation Flow (go_router ASCII Diagram)
166
+
167
+ ${ticks}
168
+ / (root)
169
+ ├── /login
170
+ ├── /home
171
+ │ ├── /home/[feature-1]
172
+ │ └── /home/[feature-2]
173
+ └── /settings
174
+ ${ticks}
175
+
176
+ ### Clean Architecture Layers
177
+
178
+ For each enabled module, describe domain / data / presentation layers.
179
+
180
+ ### Database Schema (if database module enabled)
181
+
182
+ Describe key data models and relationships.
183
+
184
+ Write to: \`docs/architecture.md\`
185
+
186
+ ---
187
+
188
+ ## Step 8: Generate complete maxsim.config.yaml
189
+
190
+ Using all decisions from Steps 1-5, generate a complete \`maxsim.config.yaml\`:
191
+
192
+ ${ticks}yaml
193
+ project:
194
+ name: ${name}
195
+ description: >-
196
+ ${description}
197
+ orgId: com.example
198
+
199
+ platforms:
200
+ - android
201
+ - ios
202
+
203
+ modules:
204
+ auth:
205
+ enabled: true
206
+ provider: firebase
207
+ # ... other selected modules
208
+
209
+ claude:
210
+ preset: standard
211
+ ${ticks}
212
+
213
+ Write to: \`maxsim.config.yaml\` (overwrites the partial config).
214
+
215
+ ---
216
+
217
+ ## Step 9: Generate prd.json
218
+
219
+ Create \`prd.json\` in v2 format. Derive user stories from the user journeys and core features.
220
+ Organize stories across **4 phases**.
221
+
222
+ ${ticks}json
223
+ {
224
+ "version": "2.0.0",
225
+ "project": "${name}",
226
+ "phases": [
227
+ { "phase": 1, "title": "Core Infrastructure", "description": "Auth, navigation, theme" },
228
+ { "phase": 2, "title": "Core Features", "description": "Primary user journey features" },
229
+ { "phase": 3, "title": "Secondary Features", "description": "Additional features" },
230
+ { "phase": 4, "title": "Polish & Optimization", "description": "Analytics, CI/CD, i18n" }
231
+ ],
232
+ "stories": [
233
+ {
234
+ "id": "S-001",
235
+ "phase": 1,
236
+ "priority": "P0",
237
+ "title": "...",
238
+ "description": "As a user, I want to...",
239
+ "storyPoints": 3,
240
+ "dependencies": [],
241
+ "acceptanceCriteria": [{ "description": "..." }],
242
+ "passes": false
243
+ }
244
+ ]
245
+ }
246
+ ${ticks}
247
+
248
+ Write to: \`prd.json\`
249
+
250
+ ---
251
+
252
+ ## Next Steps
253
+
254
+ Once all artifacts are generated, tell the user:
255
+
256
+ ${ticks}
257
+ ✅ Planning complete! Your planning workspace is ready.
117
258
 
118
- Then tell the user:
119
- \`\`\`
120
- maxsim-flutter create --config maxsim.config.yaml
121
- \`\`\`
259
+ Next steps:
260
+ 1. Review docs/project-brief.md and docs/architecture.md
261
+ 2. Run: maxsim-flutter create --config maxsim.config.yaml
262
+ 3. Then: cd ${name} && claude
263
+ 4. Start implementing stories from prd.json with Ralph
264
+ ${ticks}
122
265
  `;
123
266
  }
124
267
  //# sourceMappingURL=skill-generator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skill-generator.js","sourceRoot":"","sources":["../../src/plan/skill-generator.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,oBAAoB,CAAC,KAAkB;IACrD,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,IAAI,UAAU,CAAC;IACvC,MAAM,WAAW,GAAG,KAAK,EAAE,WAAW,IAAI,eAAe,CAAC;IAE1D,OAAO;sCAC6B,IAAI;;;;gBAI1B,IAAI;;;;eAIL,IAAI;mBACA,WAAW;;;;;;;;;;kDAUoB,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCAiEnB,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCtC,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"skill-generator.js","sourceRoot":"","sources":["../../src/plan/skill-generator.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,oBAAoB,CAAC,KAAkB;IACrD,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,IAAI,UAAU,CAAC;IACvC,MAAM,WAAW,GAAG,KAAK,EAAE,WAAW,IAAI,eAAe,CAAC;IAE1D,MAAM,KAAK,GAAG,KAAK,CAAC;IAEpB,OAAO;sCAC6B,IAAI;;;;gBAI1B,IAAI;;;;eAIL,IAAI;mBACA,WAAW;;;;;;;;;;kDAUoB,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCAiEnB,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BrC,KAAK;oBACa,IAAI;;;EAGtB,WAAW;;;;;;;;;;;;;;;;;;;EAmBX,KAAK;;;;;;;;;;;;EAYL,KAAK;;;;;;;EAOL,KAAK;;;;EAIL,KAAK;;;;;;;EAOL,KAAK;;;;;;;;;;;;;;;;;;EAkBL,KAAK;;UAEG,IAAI;;MAER,WAAW;;;;;;;;;;;;;;;EAef,KAAK;;;;;;;;;;;EAWL,KAAK;;;gBAGS,IAAI;;;;;;;;;;;;;;;;;;;;;EAqBlB,KAAK;;;;;;;;;;EAUL,KAAK;;;;;;gBAMS,IAAI;;EAElB,KAAK;CACN,CAAC;AACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "maxsim-flutter",
3
- "version": "1.30.0",
3
+ "version": "1.31.1",
4
4
  "description": "AI-powered Flutter app scaffolding with Clean Architecture, Riverpod, and autonomous development via Ralph",
5
5
  "type": "module",
6
6
  "bin": {