agileflow 2.80.0 → 2.81.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.
@@ -1,17 +1,15 @@
1
1
  ---
2
- description: Configure advanced AgileFlow features (git, hooks, archival, CI, status line)
3
- argument-hint: [--profile=full|basic|minimal|none] [--enable/--disable=features] [--migrate] [--upgrade] [--repair] [--version] [--list-scripts]
2
+ description: Configure AgileFlow features, hooks, and project infrastructure (Visual E2E, CI, git)
3
+ argument-hint: [--profile=<name>] [--save-profile=<name>] [--list-profiles] [--export-profile=<name>] [--import-profile=<file>] [--enable/--disable=features]
4
4
  compact_context:
5
5
  priority: critical
6
6
  preserve_rules:
7
7
  - "ACTIVE COMMAND: /agileflow:configure - Configuration manager for AgileFlow features"
8
- - "CRITICAL: ALWAYS run --detect FIRST to check status before anything else"
9
- - "CRITICAL: If ⚠️ INVALID FORMAT shown offer --migrate BEFORE other options"
10
- - "CRITICAL: If 🔄 OUTDATED shown offer --upgrade to re-deploy latest scripts"
11
- - "MUST backup created on migrate: .claude/settings.json.backup"
12
- - "MUST show RED RESTART banner after ANY changes (quit, wait 5s, restart)"
13
- - "Features: sessionstart, precompact, ralphloop, selfimprove, archival, statusline, autoupdate, askuserquestion"
14
- - "Stop hooks (ralphloop, selfimprove) run when Claude completes or pauses"
8
+ - "CRITICAL: Max 4 options per AskUserQuestion - use hierarchical menus"
9
+ - "CRITICAL: Run --detect FIRST, handle issues, then show Main Menu"
10
+ - "Main Menu (4 categories): Profiles | Features | Infrastructure | Maintenance"
11
+ - "Each category has its own sub-menu with max 4 options"
12
+ - "MUST show RED RESTART banner after ANY changes"
15
13
  state_fields:
16
14
  - detection_status
17
15
  - has_format_issues
@@ -23,45 +21,43 @@ compact_context:
23
21
 
24
22
  ## Compact Summary
25
23
 
26
- Configuration management with **profiles**, **enable/disable**, **format migration**, and **upgrade detection**.
24
+ Configuration management with **hierarchical menus** (4 options max per question).
27
25
 
28
26
  ### Workflow (MUST FOLLOW)
29
27
 
30
28
  1. **Run detection**: `node .agileflow/scripts/agileflow-configure.js --detect`
31
- 2. **If ⚠️ INVALID FORMAT shown**: Ask user to fix with `--migrate` BEFORE anything else
32
- 3. **If 🔄 OUTDATED shown**: Ask user to upgrade with `--upgrade`
33
- 4. **Present options**: Profiles, enable/disable, or check status
29
+ 2. **Handle issues**: If ⚠️ INVALID FORMAT migrate. If 🔄 OUTDATED upgrade.
30
+ 3. **Main menu** (4 categories): Profiles | Features | Infrastructure | Maintenance
31
+ 4. **Sub-menu**: Based on selection, show category-specific options
34
32
 
35
- ### Quick Commands
33
+ ### Menu Flow
36
34
 
37
- ```bash
38
- node .agileflow/scripts/agileflow-configure.js --detect # Check status
39
- node .agileflow/scripts/agileflow-configure.js --migrate # Fix format issues
40
- node .agileflow/scripts/agileflow-configure.js --upgrade # Update outdated scripts
41
- node .agileflow/scripts/agileflow-configure.js --profile=full # Enable all
42
- node .agileflow/scripts/agileflow-configure.js --profile=none # Disable all
43
- node .agileflow/scripts/agileflow-configure.js --enable=sessionstart # Enable specific
44
- node .agileflow/scripts/agileflow-configure.js --disable=archival # Disable specific
45
- node .agileflow/scripts/agileflow-configure.js --list-scripts # Show all scripts status
46
- node .agileflow/scripts/agileflow-configure.js --version # Version info
47
- node .agileflow/scripts/agileflow-configure.js --repair # Fix missing scripts
48
- node .agileflow/scripts/agileflow-configure.js --repair=statusline # Fix specific feature
35
+ ```
36
+ Main Menu "What would you like to configure?"
37
+ ├─ Profiles → Apply preset | Apply custom | Save current | Manage
38
+ │ ├─ Presets: Full | Basic | Minimal | None
39
+ │ └─ Custom: Save, Export, Import, Delete
40
+ ├─ Features Enable | Disable | View status
41
+ │ └─ Hooks (4) + Other Features (4)
42
+ ├─ Infrastructure Visual E2E | Damage Control | CI/CD
43
+ └─ Maintenance → Fix format | Upgrade | Repair | Check status
49
44
  ```
50
45
 
51
- **Note:** All scripts are located in `.agileflow/scripts/` - no files in project root `scripts/`.
52
-
53
- ### Features
54
-
55
- `sessionstart`, `precompact`, `ralphloop`, `selfimprove`, `archival`, `statusline`, `autoupdate`, `askuserquestion`
46
+ ### Quick Commands
56
47
 
57
- **Stop hooks** (ralphloop, selfimprove) run when Claude completes or pauses work.
48
+ ```bash
49
+ node .agileflow/scripts/agileflow-configure.js --detect # Check status
50
+ node .agileflow/scripts/agileflow-configure.js --profile=full # Enable all
51
+ node .agileflow/scripts/agileflow-configure.js --migrate # Fix format
52
+ node .agileflow/scripts/agileflow-configure.js --upgrade # Update scripts
53
+ node .agileflow/scripts/agileflow-configure.js --repair # Restore missing
54
+ ```
58
55
 
59
56
  ### Critical Rules
60
57
 
61
- - **Check for format issues FIRST** - offer to fix before other options
62
- - **Check for outdated scripts** - offer to upgrade if versions differ
63
- - **Backup created** on migrate: `.claude/settings.json.backup`
64
- - **Restart required** - always show red banner after changes
58
+ - **Max 4 options per AskUserQuestion** - use hierarchical menus
59
+ - **Run detection FIRST** - show current state before changes
60
+ - **Restart required** - show red banner after any changes
65
61
 
66
62
  <!-- COMPACT_SUMMARY_END -->
67
63
 
@@ -123,125 +119,401 @@ If user says yes:
123
119
  node .agileflow/scripts/agileflow-configure.js --upgrade
124
120
  ```
125
121
 
126
- ## STEP 3: Configuration Options
122
+ ## STEP 3: Main Menu
127
123
 
128
- After fixing issues (or if no issues), present main options:
124
+ After handling issues (or if none), present the main category menu:
129
125
 
130
126
  ```xml
131
127
  <invoke name="AskUserQuestion">
132
128
  <parameter name="questions">[{
133
- "question": "What would you like to do?",
129
+ "question": "What would you like to configure?",
134
130
  "header": "Configure",
135
131
  "multiSelect": false,
136
132
  "options": [
137
- {"label": "Quick setup (full profile)", "description": "Enable all features: hooks, archival, status line"},
138
- {"label": "Basic setup", "description": "SessionStart + PreCompact + Archival"},
139
- {"label": "Enable specific features", "description": "Choose which features to enable"},
140
- {"label": "Disable specific features", "description": "Choose which features to disable"},
141
- {"label": "Check current status only", "description": "Already done - no changes needed"}
133
+ {"label": "Profiles", "description": "Quick setup with preset configurations (full, basic, minimal)"},
134
+ {"label": "Features", "description": "Enable or disable individual hooks and features"},
135
+ {"label": "Infrastructure", "description": "Set up Visual E2E, Damage Control, or CI/CD"},
136
+ {"label": "Maintenance", "description": "Fix issues, repair scripts, or check status"}
142
137
  ]
143
138
  }]</parameter>
144
139
  </invoke>
145
140
  ```
146
141
 
147
- ## Profile Commands
142
+ ---
148
143
 
149
- **Use a profile:**
144
+ ## STEP 4: Sub-menus
150
145
 
151
- ```bash
152
- # Full - all features
153
- node .agileflow/scripts/agileflow-configure.js --profile=full
146
+ ### If "Profiles" selected
154
147
 
155
- # Basic - essential hooks + archival
156
- node .agileflow/scripts/agileflow-configure.js --profile=basic
148
+ ```xml
149
+ <invoke name="AskUserQuestion">
150
+ <parameter name="questions">[{
151
+ "question": "What would you like to do with profiles?",
152
+ "header": "Profiles",
153
+ "multiSelect": false,
154
+ "options": [
155
+ {"label": "Apply preset profile", "description": "Full, Basic, Minimal, or None"},
156
+ {"label": "Apply custom profile", "description": "Use one of your saved profiles"},
157
+ {"label": "Save current as profile", "description": "Save current feature settings as reusable profile"},
158
+ {"label": "Manage profiles", "description": "View, export, import, or delete profiles"}
159
+ ]
160
+ }]</parameter>
161
+ </invoke>
162
+ ```
157
163
 
158
- # Minimal - welcome + archival
159
- node .agileflow/scripts/agileflow-configure.js --profile=minimal
164
+ #### If "Apply preset profile" selected
160
165
 
161
- # None - disable all AgileFlow features
162
- node .agileflow/scripts/agileflow-configure.js --profile=none
166
+ ```xml
167
+ <invoke name="AskUserQuestion">
168
+ <parameter name="questions">[{
169
+ "question": "Which preset?",
170
+ "header": "Preset",
171
+ "multiSelect": false,
172
+ "options": [
173
+ {"label": "Full (Recommended)", "description": "All features: hooks, archival, status line, AskUserQuestion"},
174
+ {"label": "Basic", "description": "SessionStart + PreCompact + Archival + AskUserQuestion"},
175
+ {"label": "Minimal", "description": "SessionStart + Archival only"},
176
+ {"label": "None", "description": "Disable all AgileFlow features"}
177
+ ]
178
+ }]</parameter>
179
+ </invoke>
163
180
  ```
164
181
 
165
- **Option B: Enable/disable specific features**
182
+ Then run:
183
+ - "Full" → `node .agileflow/scripts/agileflow-configure.js --profile=full`
184
+ - "Basic" → `node .agileflow/scripts/agileflow-configure.js --profile=basic`
185
+ - "Minimal" → `node .agileflow/scripts/agileflow-configure.js --profile=minimal`
186
+ - "None" → `node .agileflow/scripts/agileflow-configure.js --profile=none`
166
187
 
167
- ```bash
168
- # Enable features
169
- node .agileflow/scripts/agileflow-configure.js --enable=sessionstart,precompact
188
+ #### If "Apply custom profile" selected
170
189
 
171
- # Disable features
172
- node .agileflow/scripts/agileflow-configure.js --disable=statusline
190
+ First, check if custom profiles exist:
191
+ ```bash
192
+ node .agileflow/scripts/agileflow-configure.js --list-profiles
193
+ ```
173
194
 
174
- # Both at once
175
- node .agileflow/scripts/agileflow-configure.js --enable=statusline --disable=archival
195
+ If no profiles: "No custom profiles saved yet. Create one with 'Save current as profile'."
176
196
 
177
- # With custom archival days
178
- node .agileflow/scripts/agileflow-configure.js --enable=archival --archival-days=14
197
+ If profiles exist, list them (max 4 at a time):
198
+ ```xml
199
+ <invoke name="AskUserQuestion">
200
+ <parameter name="questions">[{
201
+ "question": "Which custom profile?",
202
+ "header": "Custom",
203
+ "multiSelect": false,
204
+ "options": [
205
+ {"label": "my-backend-setup", "description": "Backend dev - no UI features"},
206
+ {"label": "ui-heavy", "description": "UI development with visual verification"},
207
+ {"label": "ci-mode", "description": "Minimal for CI/CD pipelines"}
208
+ ]
209
+ }]</parameter>
210
+ </invoke>
179
211
  ```
180
212
 
181
- ## Profile Details
213
+ Then run: `node .agileflow/scripts/agileflow-configure.js --profile=<selected-name>`
182
214
 
183
- | Profile | SessionStart | PreCompact | RalphLoop | SelfImprove | Archival | StatusLine | AskUserQuestion |
184
- |---------|-------------|------------|-----------|-------------|----------|------------|-----------------|
185
- | `full` | ✅ | ✅ | ✅ | ✅ | ✅ 30 days | ✅ | ✅ |
186
- | `basic` | ✅ | ✅ | ❌ | ❌ | ✅ 30 days | ❌ | ✅ |
187
- | `minimal` | ✅ | ❌ | ❌ | ❌ | ✅ 30 days | ❌ | ❌ |
188
- | `none` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
215
+ #### If "Save current as profile" selected
189
216
 
190
- ## Interactive Mode (via /configure command)
217
+ Ask for profile name and description:
218
+ ```xml
219
+ <invoke name="AskUserQuestion">
220
+ <parameter name="questions">[{
221
+ "question": "What should we name this profile?",
222
+ "header": "Name",
223
+ "multiSelect": false,
224
+ "options": [
225
+ {"label": "my-setup", "description": "Generic name for personal setup"},
226
+ {"label": "backend-dev", "description": "For backend development work"},
227
+ {"label": "ui-dev", "description": "For UI/frontend development"},
228
+ {"label": "ci-mode", "description": "Minimal config for CI pipelines"}
229
+ ]
230
+ }]</parameter>
231
+ </invoke>
232
+ ```
191
233
 
192
- When user runs `/configure` without arguments, present options:
234
+ User can select or type custom name via "Other".
235
+
236
+ Then run:
237
+ ```bash
238
+ node .agileflow/scripts/agileflow-configure.js --save-profile=<name> --description="<description>"
239
+ ```
240
+
241
+ #### If "Manage profiles" selected
193
242
 
194
243
  ```xml
195
244
  <invoke name="AskUserQuestion">
196
245
  <parameter name="questions">[{
197
246
  "question": "What would you like to do?",
198
- "header": "Configure",
247
+ "header": "Manage",
248
+ "multiSelect": false,
249
+ "options": [
250
+ {"label": "View all profiles", "description": "See details of all saved profiles"},
251
+ {"label": "Export profile", "description": "Export a profile to share with others"},
252
+ {"label": "Import profile", "description": "Import a profile from file"},
253
+ {"label": "Delete profile", "description": "Remove a saved custom profile"}
254
+ ]
255
+ }]</parameter>
256
+ </invoke>
257
+ ```
258
+
259
+ Commands:
260
+ - View: `node .agileflow/scripts/agileflow-configure.js --list-profiles --verbose`
261
+ - Export: `node .agileflow/scripts/agileflow-configure.js --export-profile=<name> --output=profile.json`
262
+ - Import: `node .agileflow/scripts/agileflow-configure.js --import-profile=profile.json`
263
+ - Delete: `node .agileflow/scripts/agileflow-configure.js --delete-profile=<name>`
264
+
265
+ ---
266
+
267
+ ### If "Features" selected
268
+
269
+ ```xml
270
+ <invoke name="AskUserQuestion">
271
+ <parameter name="questions">[{
272
+ "question": "What do you want to do?",
273
+ "header": "Features",
199
274
  "multiSelect": false,
200
275
  "options": [
201
- {"label": "Quick setup (full profile)", "description": "Enable all features: hooks, archival, status line"},
202
- {"label": "Basic setup", "description": "SessionStart + PreCompact + Archival"},
203
- {"label": "Fix format issues", "description": "Migrate old/invalid settings formats"},
204
- {"label": "Enable specific features", "description": "Choose which features to enable"},
205
- {"label": "Disable specific features", "description": "Choose which features to disable"},
206
- {"label": "Check current status", "description": "See what's currently configured"}
276
+ {"label": "Enable features", "description": "Turn on specific hooks and features"},
277
+ {"label": "Disable features", "description": "Turn off specific hooks and features"},
278
+ {"label": "View current status", "description": "See what's currently enabled/disabled"}
207
279
  ]
208
280
  }]</parameter>
209
281
  </invoke>
210
282
  ```
211
283
 
212
- Based on selection, run appropriate command.
284
+ #### If "Enable features" or "Disable features" selected
285
+
286
+ First, ask about hooks:
287
+
288
+ ```xml
289
+ <invoke name="AskUserQuestion">
290
+ <parameter name="questions">[{
291
+ "question": "Which hooks?",
292
+ "header": "Hooks",
293
+ "multiSelect": true,
294
+ "options": [
295
+ {"label": "SessionStart", "description": "Welcome display with project status on session start"},
296
+ {"label": "PreCompact", "description": "Context preservation when conversation compacts"},
297
+ {"label": "RalphLoop", "description": "Stop hook: autonomous story loop with tests"},
298
+ {"label": "SelfImprove", "description": "Stop hook: auto-update agent expertise from work"}
299
+ ]
300
+ }]</parameter>
301
+ </invoke>
302
+ ```
213
303
 
214
- ## Feature Selection (when Enable/Disable selected)
304
+ Then ask about other features:
215
305
 
216
306
  ```xml
217
307
  <invoke name="AskUserQuestion">
218
308
  <parameter name="questions">[{
219
- "question": "Which features?",
309
+ "question": "Which other features?",
220
310
  "header": "Features",
221
311
  "multiSelect": true,
222
312
  "options": [
223
- {"label": "SessionStart Hook", "description": "Welcome display with project status"},
224
- {"label": "PreCompact Hook", "description": "Context preservation on compact"},
225
- {"label": "RalphLoop (Stop Hook)", "description": "Autonomous story loop - runs tests, advances stories"},
226
- {"label": "SelfImprove (Stop Hook)", "description": "Auto-update agent expertise from work"},
227
- {"label": "Archival", "description": "Auto-archive old completed stories"},
228
- {"label": "Status Line", "description": "Custom status bar"},
313
+ {"label": "Archival", "description": "Auto-archive completed stories older than threshold"},
314
+ {"label": "Status Line", "description": "Custom status bar showing story/epic info"},
229
315
  {"label": "Auto-Update", "description": "Automatically update AgileFlow on session start"},
230
- {"label": "AskUserQuestion Mode", "description": "End all responses with AskUserQuestion tool for guided interaction"}
316
+ {"label": "AskUserQuestion Mode", "description": "End responses with guided options"}
317
+ ]
318
+ }]</parameter>
319
+ </invoke>
320
+ ```
321
+
322
+ Map selections to commands:
323
+ - SessionStart → `sessionstart`
324
+ - PreCompact → `precompact`
325
+ - RalphLoop → `ralphloop`
326
+ - SelfImprove → `selfimprove`
327
+ - Archival → `archival`
328
+ - Status Line → `statusline`
329
+ - Auto-Update → `autoupdate`
330
+ - AskUserQuestion Mode → `askuserquestion`
331
+
332
+ Then run:
333
+ ```bash
334
+ node .agileflow/scripts/agileflow-configure.js --enable=feature1,feature2
335
+ # or
336
+ node .agileflow/scripts/agileflow-configure.js --disable=feature1,feature2
337
+ ```
338
+
339
+ ---
340
+
341
+ ### If "Infrastructure" selected
342
+
343
+ ```xml
344
+ <invoke name="AskUserQuestion">
345
+ <parameter name="questions">[{
346
+ "question": "What infrastructure to set up?",
347
+ "header": "Setup",
348
+ "multiSelect": false,
349
+ "options": [
350
+ {"label": "Visual E2E Testing", "description": "Playwright + screenshot verification workflow"},
351
+ {"label": "Damage Control", "description": "Block destructive commands, protect sensitive paths"},
352
+ {"label": "CI/CD Workflow", "description": "GitHub Actions for automated testing"}
353
+ ]
354
+ }]</parameter>
355
+ </invoke>
356
+ ```
357
+
358
+ Spawn the appropriate configuration agent:
359
+
360
+ ```javascript
361
+ // Visual E2E
362
+ Task({ subagent_type: "configuration-visual-e2e", description: "Configure Visual E2E", prompt: "..." })
363
+
364
+ // Damage Control
365
+ Task({ subagent_type: "configuration-damage-control", description: "Configure Damage Control", prompt: "..." })
366
+
367
+ // CI/CD
368
+ Task({ subagent_type: "configuration-ci", description: "Configure CI/CD", prompt: "..." })
369
+ ```
370
+
371
+ ---
372
+
373
+ ### If "Maintenance" selected
374
+
375
+ ```xml
376
+ <invoke name="AskUserQuestion">
377
+ <parameter name="questions">[{
378
+ "question": "What maintenance task?",
379
+ "header": "Maintenance",
380
+ "multiSelect": false,
381
+ "options": [
382
+ {"label": "Fix format issues", "description": "Migrate invalid settings to correct format"},
383
+ {"label": "Upgrade scripts", "description": "Update features to latest AgileFlow version"},
384
+ {"label": "Repair missing scripts", "description": "Restore accidentally deleted scripts"},
385
+ {"label": "Check status", "description": "View current configuration (already shown above)"}
231
386
  ]
232
387
  }]</parameter>
233
388
  </invoke>
234
389
  ```
235
390
 
236
- Map selections:
237
- - "SessionStart Hook" → `sessionstart`
238
- - "PreCompact Hook" → `precompact`
239
- - "RalphLoop (Stop Hook)" → `ralphloop`
240
- - "SelfImprove (Stop Hook)" → `selfimprove`
241
- - "Archival" → `archival`
242
- - "Status Line" → `statusline`
243
- - "Auto-Update" → `autoupdate`
244
- - "AskUserQuestion Mode" → `askuserquestion`
391
+ Then run:
392
+ - "Fix format issues" → `node .agileflow/scripts/agileflow-configure.js --migrate`
393
+ - "Upgrade scripts" → `node .agileflow/scripts/agileflow-configure.js --upgrade`
394
+ - "Repair missing scripts" → `node .agileflow/scripts/agileflow-configure.js --repair`
395
+ - "Check status" → Already shown in Step 1, no action needed
396
+
397
+ ---
398
+
399
+ ## Profile Details
400
+
401
+ | Profile | SessionStart | PreCompact | RalphLoop | SelfImprove | Archival | StatusLine | AskUserQuestion |
402
+ |---------|-------------|------------|-----------|-------------|----------|------------|-----------------|
403
+ | `full` | ✅ | ✅ | ✅ | ✅ | ✅ 30 days | ✅ | ✅ |
404
+ | `basic` | ✅ | ✅ | ❌ | ❌ | ✅ 30 days | ❌ | ✅ |
405
+ | `minimal` | ✅ | ❌ | ❌ | ❌ | ✅ 30 days | ❌ | ❌ |
406
+ | `none` | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
407
+
408
+ ## CLI Commands Reference
409
+
410
+ ```bash
411
+ # Preset Profiles
412
+ node .agileflow/scripts/agileflow-configure.js --profile=full
413
+ node .agileflow/scripts/agileflow-configure.js --profile=basic
414
+ node .agileflow/scripts/agileflow-configure.js --profile=minimal
415
+ node .agileflow/scripts/agileflow-configure.js --profile=none
416
+
417
+ # Custom Profiles
418
+ node .agileflow/scripts/agileflow-configure.js --profile=my-custom-profile # Apply custom
419
+ node .agileflow/scripts/agileflow-configure.js --save-profile=my-setup # Save current
420
+ node .agileflow/scripts/agileflow-configure.js --list-profiles # List all
421
+ node .agileflow/scripts/agileflow-configure.js --list-profiles --verbose # With details
422
+ node .agileflow/scripts/agileflow-configure.js --delete-profile=my-setup # Delete
423
+
424
+ # Export/Import Profiles (for sharing)
425
+ node .agileflow/scripts/agileflow-configure.js --export-profile=my-setup --output=my-setup.json
426
+ node .agileflow/scripts/agileflow-configure.js --import-profile=my-setup.json
427
+
428
+ # Enable/disable features
429
+ node .agileflow/scripts/agileflow-configure.js --enable=sessionstart,precompact
430
+ node .agileflow/scripts/agileflow-configure.js --disable=statusline
431
+ node .agileflow/scripts/agileflow-configure.js --enable=archival --archival-days=14
432
+
433
+ # Maintenance
434
+ node .agileflow/scripts/agileflow-configure.js --detect
435
+ node .agileflow/scripts/agileflow-configure.js --migrate
436
+ node .agileflow/scripts/agileflow-configure.js --upgrade
437
+ node .agileflow/scripts/agileflow-configure.js --repair
438
+ node .agileflow/scripts/agileflow-configure.js --list-scripts
439
+ node .agileflow/scripts/agileflow-configure.js --version
440
+ ```
441
+
442
+ ## Custom Profiles
443
+
444
+ Custom profiles let you save and reuse your preferred feature combinations.
445
+
446
+ ### Data Model
447
+
448
+ Profiles are stored in `docs/00-meta/agileflow-metadata.json`:
449
+
450
+ ```json
451
+ {
452
+ "version": "2.78.0",
453
+ "profiles": {
454
+ "my-backend-setup": {
455
+ "description": "Backend development - no UI features",
456
+ "created": "2026-01-09T10:00:00.000Z",
457
+ "features": {
458
+ "sessionstart": true,
459
+ "precompact": true,
460
+ "ralphloop": true,
461
+ "selfimprove": false,
462
+ "archival": true,
463
+ "statusline": false,
464
+ "autoupdate": true,
465
+ "askuserquestion": false
466
+ }
467
+ },
468
+ "ui-heavy": {
469
+ "description": "UI development with visual verification",
470
+ "created": "2026-01-09T10:00:00.000Z",
471
+ "features": {
472
+ "sessionstart": true,
473
+ "precompact": true,
474
+ "ralphloop": true,
475
+ "selfimprove": false,
476
+ "archival": true,
477
+ "statusline": true,
478
+ "autoupdate": false,
479
+ "askuserquestion": true
480
+ }
481
+ }
482
+ },
483
+ "features": { ... }
484
+ }
485
+ ```
486
+
487
+ ### Export Format
488
+
489
+ Exported profiles use this format (for sharing):
490
+
491
+ ```json
492
+ {
493
+ "name": "my-backend-setup",
494
+ "description": "Backend development - no UI features",
495
+ "agileflow_version": "2.78.0",
496
+ "exported": "2026-01-09T10:00:00.000Z",
497
+ "features": {
498
+ "sessionstart": true,
499
+ "precompact": true,
500
+ "ralphloop": true,
501
+ "selfimprove": false,
502
+ "archival": true,
503
+ "statusline": false,
504
+ "autoupdate": true,
505
+ "askuserquestion": false
506
+ }
507
+ }
508
+ ```
509
+
510
+ ### Sharing Profiles
511
+
512
+ 1. **Export**: `--export-profile=my-setup --output=my-setup.json`
513
+ 2. **Share**: Send the JSON file to teammate
514
+ 3. **Import**: `--import-profile=my-setup.json`
515
+
516
+ Imported profiles are added to the local metadata with the same name.
245
517
 
246
518
  ## Auto-Update Configuration
247
519