wogiflow 1.0.21 → 1.0.22

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 (121) hide show
  1. package/.claude/commands/wogi-bug.md +43 -0
  2. package/.claude/commands/wogi-bulk.md +144 -0
  3. package/.claude/commands/wogi-changelog.md +36 -0
  4. package/.claude/commands/wogi-compact.md +99 -0
  5. package/.claude/commands/wogi-config.md +50 -0
  6. package/.claude/commands/wogi-context.md +68 -0
  7. package/.claude/commands/wogi-correction.md +73 -0
  8. package/.claude/commands/wogi-debt.md +128 -0
  9. package/.claude/commands/wogi-deps.md +32 -0
  10. package/.claude/commands/wogi-epics.md +145 -0
  11. package/.claude/commands/wogi-export.md +100 -0
  12. package/.claude/commands/wogi-feature.md +149 -0
  13. package/.claude/commands/wogi-guided-edit.md +83 -0
  14. package/.claude/commands/wogi-health.md +43 -0
  15. package/.claude/commands/wogi-help.md +96 -0
  16. package/.claude/commands/wogi-hybrid-edit.md +36 -0
  17. package/.claude/commands/wogi-hybrid-off.md +24 -0
  18. package/.claude/commands/wogi-hybrid-setup.md +79 -0
  19. package/.claude/commands/wogi-hybrid-status.md +45 -0
  20. package/.claude/commands/wogi-hybrid.md +54 -0
  21. package/.claude/commands/wogi-import.md +44 -0
  22. package/.claude/commands/wogi-init.md +618 -0
  23. package/.claude/commands/wogi-log.md +38 -0
  24. package/.claude/commands/wogi-map-add.md +29 -0
  25. package/.claude/commands/wogi-map-check.md +35 -0
  26. package/.claude/commands/wogi-map-index.md +98 -0
  27. package/.claude/commands/wogi-map-scan.md +38 -0
  28. package/.claude/commands/wogi-map-sync.md +91 -0
  29. package/.claude/commands/wogi-map.md +33 -0
  30. package/.claude/commands/wogi-morning.md +65 -0
  31. package/.claude/commands/wogi-onboard.md +99 -0
  32. package/.claude/commands/wogi-plan.md +173 -0
  33. package/.claude/commands/wogi-ready.md +84 -0
  34. package/.claude/commands/wogi-resume.md +95 -0
  35. package/.claude/commands/wogi-review.md +636 -0
  36. package/.claude/commands/wogi-roadmap.md +241 -0
  37. package/.claude/commands/wogi-rules.md +104 -0
  38. package/.claude/commands/wogi-search.md +33 -0
  39. package/.claude/commands/wogi-session-end.md +49 -0
  40. package/.claude/commands/wogi-setup-stack.md +151 -0
  41. package/.claude/commands/wogi-skill-learn.md +66 -0
  42. package/.claude/commands/wogi-skills.md +87 -0
  43. package/.claude/commands/wogi-standup.md +28 -0
  44. package/.claude/commands/wogi-start.md +465 -0
  45. package/.claude/commands/wogi-status.md +41 -0
  46. package/.claude/commands/wogi-statusline-setup/skill.md +109 -0
  47. package/.claude/commands/wogi-story.md +98 -0
  48. package/.claude/commands/wogi-suspend.md +87 -0
  49. package/.claude/commands/wogi-test-browser.md +43 -0
  50. package/.claude/commands/wogi-trace.md +198 -0
  51. package/.claude/docs/architecture.md +37 -0
  52. package/.claude/docs/commands.md +343 -0
  53. package/.claude/docs/knowledge-base/01-setup-onboarding/README.md +177 -0
  54. package/.claude/docs/knowledge-base/01-setup-onboarding/component-indexing.md +341 -0
  55. package/.claude/docs/knowledge-base/01-setup-onboarding/framework-detection.md +269 -0
  56. package/.claude/docs/knowledge-base/01-setup-onboarding/installation.md +146 -0
  57. package/.claude/docs/knowledge-base/01-setup-onboarding/onboarding-existing.md +317 -0
  58. package/.claude/docs/knowledge-base/01-setup-onboarding/team-setup.md +346 -0
  59. package/.claude/docs/knowledge-base/02-task-execution/01-task-planning.md +259 -0
  60. package/.claude/docs/knowledge-base/02-task-execution/02-execution-loop.md +443 -0
  61. package/.claude/docs/knowledge-base/02-task-execution/03-verification.md +417 -0
  62. package/.claude/docs/knowledge-base/02-task-execution/04-completion.md +374 -0
  63. package/.claude/docs/knowledge-base/02-task-execution/05-session-review.md +170 -0
  64. package/.claude/docs/knowledge-base/02-task-execution/README.md +173 -0
  65. package/.claude/docs/knowledge-base/02-task-execution/external-integrations.md +133 -0
  66. package/.claude/docs/knowledge-base/02-task-execution/model-management.md +202 -0
  67. package/.claude/docs/knowledge-base/02-task-execution/specification-mode.md +292 -0
  68. package/.claude/docs/knowledge-base/02-task-execution/sync-daemon.md +96 -0
  69. package/.claude/docs/knowledge-base/02-task-execution/trade-offs.md +345 -0
  70. package/.claude/docs/knowledge-base/02-task-execution/workflow-steps.md +357 -0
  71. package/.claude/docs/knowledge-base/03-self-improvement/README.md +199 -0
  72. package/.claude/docs/knowledge-base/03-self-improvement/long-input-processing.md +160 -0
  73. package/.claude/docs/knowledge-base/03-self-improvement/model-learning.md +334 -0
  74. package/.claude/docs/knowledge-base/03-self-improvement/project-learning.md +301 -0
  75. package/.claude/docs/knowledge-base/03-self-improvement/skill-learning.md +372 -0
  76. package/.claude/docs/knowledge-base/03-self-improvement/skill-matching.md +304 -0
  77. package/.claude/docs/knowledge-base/03-self-improvement/team-learning.md +342 -0
  78. package/.claude/docs/knowledge-base/04-memory-context/README.md +189 -0
  79. package/.claude/docs/knowledge-base/04-memory-context/context-management.md +308 -0
  80. package/.claude/docs/knowledge-base/04-memory-context/memory-commands.md +176 -0
  81. package/.claude/docs/knowledge-base/04-memory-context/memory-systems.md +359 -0
  82. package/.claude/docs/knowledge-base/04-memory-context/prd-management.md +115 -0
  83. package/.claude/docs/knowledge-base/04-memory-context/session-persistence.md +359 -0
  84. package/.claude/docs/knowledge-base/04-memory-context/team-history.md +317 -0
  85. package/.claude/docs/knowledge-base/05-development-tools/README.md +84 -0
  86. package/.claude/docs/knowledge-base/05-development-tools/code-traces.md +278 -0
  87. package/.claude/docs/knowledge-base/05-development-tools/figma-analyzer.md +253 -0
  88. package/.claude/docs/knowledge-base/05-development-tools/guided-edit.md +173 -0
  89. package/.claude/docs/knowledge-base/05-development-tools/mcp-integrations.md +286 -0
  90. package/.claude/docs/knowledge-base/06-safety-guardrails/README.md +153 -0
  91. package/.claude/docs/knowledge-base/06-safety-guardrails/checkpoint-rollback.md +302 -0
  92. package/.claude/docs/knowledge-base/06-safety-guardrails/commit-gates.md +309 -0
  93. package/.claude/docs/knowledge-base/06-safety-guardrails/damage-control.md +292 -0
  94. package/.claude/docs/knowledge-base/06-safety-guardrails/security-scanning.md +291 -0
  95. package/.claude/docs/knowledge-base/README.md +92 -0
  96. package/.claude/docs/knowledge-base/configuration/README.md +228 -0
  97. package/.claude/docs/knowledge-base/configuration/all-options.md +1632 -0
  98. package/.claude/docs/knowledge-base/future-features.md +277 -0
  99. package/.claude/docs/stack.md +25 -0
  100. package/.claude/docs/testing.md +71 -0
  101. package/.claude/rules/README.md +60 -0
  102. package/.claude/rules/architecture/component-reuse.md +38 -0
  103. package/.claude/rules/architecture/document-structure.md +76 -0
  104. package/.claude/rules/architecture/feature-refactoring-cleanup.md +87 -0
  105. package/.claude/rules/architecture/model-management.md +35 -0
  106. package/.claude/rules/code-style/naming-conventions.md +55 -0
  107. package/.claude/rules/security/security-patterns.md +116 -0
  108. package/.claude/skills/.gitkeep +0 -0
  109. package/.claude/skills/README.md +131 -0
  110. package/.claude/skills/_template/commands/.gitkeep +0 -0
  111. package/.claude/skills/_template/knowledge/anti-patterns.md +49 -0
  112. package/.claude/skills/_template/knowledge/learnings.md +60 -0
  113. package/.claude/skills/_template/knowledge/patterns.md +45 -0
  114. package/.claude/skills/_template/rules/.gitkeep +0 -0
  115. package/.claude/skills/_template/skill.md +99 -0
  116. package/.claude/skills/_template/templates/.gitkeep +0 -0
  117. package/.claude/skills/figma-analyzer/knowledge/anti-patterns.md +216 -0
  118. package/.claude/skills/figma-analyzer/knowledge/patterns.md +144 -0
  119. package/.claude/skills/figma-analyzer/skill.md +236 -0
  120. package/lib/installer.js +59 -19
  121. package/package.json +5 -1
@@ -0,0 +1,1632 @@
1
+ # Configuration Reference
2
+
3
+ Complete reference for all WogiFlow configuration options.
4
+
5
+ ---
6
+
7
+ ## Location
8
+
9
+ Configuration lives in `.workflow/config.json`
10
+
11
+ ```json
12
+ {
13
+ "version": "2.0.0",
14
+ "projectName": "my-project",
15
+ // ... options
16
+ }
17
+ ```
18
+
19
+ ---
20
+
21
+ ## Quick Navigation
22
+
23
+ ### Core Settings
24
+ | Option | Purpose |
25
+ |--------|---------|
26
+ | [version](#other-top-level-options) | Config schema version |
27
+ | [projectName](#other-top-level-options) | Project name |
28
+ | [autoLog](#other-top-level-options) | Auto-update request log |
29
+ | [autoUpdateAppMap](#other-top-level-options) | Auto-update app-map |
30
+
31
+ ### Category 1: Task & Workflow
32
+ | Section | Purpose |
33
+ |---------|---------|
34
+ | [enforcement](#enforcement) | Task gating and strict mode |
35
+ | [workflow](#workflow) | Planning and agent structure |
36
+ | [loops](#loops) | Self-completing execution loops |
37
+ | [durableSteps](#durablesteps) | Crash recovery |
38
+ | [suspension](#suspension) | Long-running task handling |
39
+ | [parallel](#parallel) | Concurrent execution |
40
+ | [phases](#phases) | Project phase tracking |
41
+ | [mandatorySteps](#mandatorysteps) | Required workflow steps |
42
+ | [priorities](#priorities) | Task priority levels |
43
+ | [storyDecomposition](#storydecomposition) | Story breakdown |
44
+
45
+ ### Category 2: Quality & Validation
46
+ | Section | Purpose |
47
+ |---------|---------|
48
+ | [qualityGates](#qualitygates) | Per-task-type requirements |
49
+ | [validation](#validation) | Auto-validation commands |
50
+ | [testing](#testing) | Test execution |
51
+ | [regressionTesting](#regressiontesting) | Regression checks |
52
+ | [browserTesting](#browsertesting) | Browser test integration |
53
+ | [componentRules](#componentrules) | Component reuse rules |
54
+ | [strictMode](#strictmode) | Additional strict options |
55
+
56
+ ### Category 3: Learning & Memory
57
+ | Section | Purpose |
58
+ |---------|---------|
59
+ | [skills](#skills) | Installed skills |
60
+ | [skillLearning](#skilllearning) | Skill auto-creation |
61
+ | [memory](#memory) | Fact storage |
62
+ | [automaticMemory](#automaticmemory) | Memory management |
63
+ | [automaticPromotion](#automaticpromotion) | Pattern promotion |
64
+ | [knowledgeRouting](#knowledgerouting) | Local vs team knowledge |
65
+ | [modelAdapters](#modeladapters) | Per-model learning |
66
+ | [prd](#prd) | PRD chunking |
67
+
68
+ ### Category 4: Context & Session
69
+ | Section | Purpose |
70
+ |---------|---------|
71
+ | [autoContext](#autocontext) | Auto-loading related files |
72
+ | [sessionState](#sessionstate) | Session persistence |
73
+ | [contextMonitor](#contextmonitor) | Context window management |
74
+ | [morningBriefing](#morningbriefing) | Session start context |
75
+ | [requestLog](#requestlog) | Change history |
76
+
77
+ ### Category 5: Development Tools
78
+ | Section | Purpose |
79
+ |---------|---------|
80
+ | [componentIndex](#componentindex) | Component scanning |
81
+ | [figmaAnalyzer](#figmaanalyzer) | Design-to-code |
82
+ | [guidedEdit](#guidededit) | Multi-file editing |
83
+ | [traces](#traces) | Code flow traces |
84
+ | [worktree](#worktree) | Git worktree isolation |
85
+ | [hybrid](#hybrid) | Local LLM execution |
86
+ | [lsp](#lsp) | Language server integration |
87
+ | [codebaseInsights](#codebaseinsights) | Project analysis |
88
+
89
+ ### Category 6: Safety & Commits
90
+ | Section | Purpose |
91
+ |---------|---------|
92
+ | [commits](#commits) | Commit approval workflow |
93
+ | [security](#security) | Pre-commit security scans |
94
+ | [damageControl](#damagecontrol) | Destructive command protection |
95
+
96
+ ### Category 7: Integrations
97
+ | Section | Purpose |
98
+ |---------|---------|
99
+ | [team](#team) | Team sync |
100
+ | [agents](#agents) | Agent personas |
101
+ | [multiApproach](#multiapproach) | Multiple solution analysis |
102
+ | [hooks](#hooks) | CLI hooks (Claude Code, etc.) |
103
+ | [metrics](#metrics) | Usage tracking |
104
+ | [corrections](#corrections) | Correction file handling |
105
+
106
+ ---
107
+
108
+ ## enforcement
109
+
110
+ Controls task gating and strict mode behavior.
111
+
112
+ ```json
113
+ {
114
+ "enforcement": {
115
+ "strictMode": true,
116
+ "requireTaskForImplementation": true,
117
+ "requireStoryForMediumTasks": true,
118
+ "requirePatternCitation": false,
119
+ "citationFormat": "// Pattern: {pattern}",
120
+ "taskSizeThresholds": {
121
+ "small": { "maxFiles": 3, "maxHours": 1 },
122
+ "medium": { "maxFiles": 10, "maxHours": 4 },
123
+ "large": { "minFiles": 10, "minHours": 4 }
124
+ }
125
+ }
126
+ }
127
+ ```
128
+
129
+ | Option | Type | Default | Description |
130
+ |--------|------|---------|-------------|
131
+ | `strictMode` | boolean | `true` | Enable strict task gating |
132
+ | `requireTaskForImplementation` | boolean | `true` | Require task before coding |
133
+ | `requireStoryForMediumTasks` | boolean | `true` | Require story for medium+ tasks |
134
+ | `requirePatternCitation` | boolean | `false` | Require citing patterns in code |
135
+ | `citationFormat` | string | `"// Pattern: {pattern}"` | Format for pattern citations |
136
+ | `taskSizeThresholds.small.maxFiles` | number | `3` | Max files for small task |
137
+ | `taskSizeThresholds.small.maxHours` | number | `1` | Max hours for small task |
138
+ | `taskSizeThresholds.medium.maxFiles` | number | `10` | Max files for medium task |
139
+ | `taskSizeThresholds.medium.maxHours` | number | `4` | Max hours for medium task |
140
+ | `taskSizeThresholds.large.minFiles` | number | `10` | Min files for large task |
141
+ | `taskSizeThresholds.large.minHours` | number | `4` | Min hours for large task |
142
+
143
+ ---
144
+
145
+ ## commits
146
+
147
+ Controls commit approval workflow.
148
+
149
+ ```json
150
+ {
151
+ "commits": {
152
+ "requireApproval": {
153
+ "feature": true,
154
+ "bugfix": false,
155
+ "refactor": true,
156
+ "docs": false
157
+ },
158
+ "autoCommitSmallFixes": true,
159
+ "smallFixThreshold": 3,
160
+ "squashTaskCommits": true,
161
+ "commitMessageFormat": "conventional"
162
+ }
163
+ }
164
+ ```
165
+
166
+ | Option | Type | Default | Description |
167
+ |--------|------|---------|-------------|
168
+ | `requireApproval.feature` | boolean | `true` | Require approval for features |
169
+ | `requireApproval.bugfix` | boolean | `false` | Require approval for bugfixes |
170
+ | `requireApproval.refactor` | boolean | `true` | Require approval for refactors |
171
+ | `requireApproval.docs` | boolean | `false` | Require approval for docs |
172
+ | `autoCommitSmallFixes` | boolean | `true` | Auto-commit small changes |
173
+ | `smallFixThreshold` | number | `3` | Max files for "small fix" |
174
+ | `squashTaskCommits` | boolean | `true` | Squash commits on task complete |
175
+ | `commitMessageFormat` | string | `"conventional"` | `"conventional"` or `"simple"` |
176
+
177
+ ---
178
+
179
+ ## workflow
180
+
181
+ High-level workflow configuration.
182
+
183
+ ```json
184
+ {
185
+ "workflow": {
186
+ "planningStyle": "feature-based",
187
+ "agentStructure": "unified"
188
+ }
189
+ }
190
+ ```
191
+
192
+ | Option | Type | Default | Description |
193
+ |--------|------|---------|-------------|
194
+ | `planningStyle` | string | `"feature-based"` | Planning approach |
195
+ | `agentStructure` | string | `"unified"` | Agent organization |
196
+
197
+ ---
198
+
199
+ ## loops
200
+
201
+ Controls self-completing execution loops.
202
+
203
+ ```json
204
+ {
205
+ "loops": {
206
+ "enabled": true,
207
+ "enforced": true,
208
+ "blockExitUntilComplete": true,
209
+ "requireVerification": true,
210
+ "blockOnSkip": true,
211
+ "maxRetries": 5,
212
+ "maxIterations": 20,
213
+ "commitEvery": 3,
214
+ "pauseBetweenScenarios": false,
215
+ "autoInferVerification": true,
216
+ "fallbackToManual": true,
217
+ "suggestBrowserTests": true
218
+ }
219
+ }
220
+ ```
221
+
222
+ | Option | Type | Default | Description |
223
+ |--------|------|---------|-------------|
224
+ | `enabled` | boolean | `true` | Enable execution loops |
225
+ | `enforced` | boolean | `true` | Enforce loop completion |
226
+ | `blockExitUntilComplete` | boolean | `true` | Prevent early exit |
227
+ | `requireVerification` | boolean | `true` | Require verification pass |
228
+ | `blockOnSkip` | boolean | `true` | Block if scenario skipped |
229
+ | `maxRetries` | number | `5` | Max retries per scenario |
230
+ | `maxIterations` | number | `20` | Max total loop iterations |
231
+ | `commitEvery` | number | `3` | Commit every N scenarios |
232
+ | `pauseBetweenScenarios` | boolean | `false` | Pause between scenarios |
233
+ | `autoInferVerification` | boolean | `true` | Auto-generate verification steps |
234
+ | `fallbackToManual` | boolean | `true` | Fall back to manual on failure |
235
+ | `suggestBrowserTests` | boolean | `true` | Suggest browser tests for UI |
236
+
237
+ **Trade-off**: Higher `maxRetries`/`maxIterations` = higher completion rate but more token usage.
238
+
239
+ ---
240
+
241
+ ## durableSteps
242
+
243
+ Controls crash recovery and session persistence.
244
+
245
+ ```json
246
+ {
247
+ "durableSteps": {
248
+ "enabled": true,
249
+ "autoResume": true,
250
+ "checkSuspensionsOnStart": true,
251
+ "defaultMaxAttempts": 5
252
+ }
253
+ }
254
+ ```
255
+
256
+ | Option | Type | Default | Description |
257
+ |--------|------|---------|-------------|
258
+ | `enabled` | boolean | `true` | Enable durable sessions |
259
+ | `autoResume` | boolean | `true` | Auto-resume interrupted tasks |
260
+ | `checkSuspensionsOnStart` | boolean | `true` | Check for suspended tasks |
261
+ | `defaultMaxAttempts` | number | `5` | Default retry attempts |
262
+
263
+ ---
264
+
265
+ ## suspension
266
+
267
+ Controls long-running task handling.
268
+
269
+ ```json
270
+ {
271
+ "suspension": {
272
+ "enabled": true,
273
+ "pollIntervalSeconds": 60,
274
+ "maxPollAttempts": 120,
275
+ "reminderAfterHours": 24
276
+ }
277
+ }
278
+ ```
279
+
280
+ | Option | Type | Default | Description |
281
+ |--------|------|---------|-------------|
282
+ | `enabled` | boolean | `true` | Enable suspend/resume |
283
+ | `pollIntervalSeconds` | number | `60` | Polling interval for conditions |
284
+ | `maxPollAttempts` | number | `120` | Max poll attempts before timeout |
285
+ | `reminderAfterHours` | number | `24` | Hours before reminder |
286
+
287
+ ---
288
+
289
+ ## parallel
290
+
291
+ Controls concurrent task execution.
292
+
293
+ ```json
294
+ {
295
+ "parallel": {
296
+ "enabled": true,
297
+ "maxConcurrent": 3,
298
+ "autoApprove": false,
299
+ "requireWorktree": true,
300
+ "showProgress": true,
301
+ "autoDetect": true,
302
+ "autoSuggest": true,
303
+ "autoExecute": false,
304
+ "minTasksForParallel": 2
305
+ }
306
+ }
307
+ ```
308
+
309
+ | Option | Type | Default | Description |
310
+ |--------|------|---------|-------------|
311
+ | `enabled` | boolean | `true` | Enable parallel execution |
312
+ | `maxConcurrent` | number | `3` | Max concurrent tasks |
313
+ | `autoApprove` | boolean | `false` | Auto-approve parallel work |
314
+ | `requireWorktree` | boolean | `true` | Require git worktree isolation |
315
+ | `showProgress` | boolean | `true` | Show progress indicators |
316
+ | `autoDetect` | boolean | `true` | Auto-detect parallelizable tasks |
317
+ | `autoSuggest` | boolean | `true` | Suggest parallel execution |
318
+ | `autoExecute` | boolean | `false` | Auto-execute in parallel |
319
+ | `minTasksForParallel` | number | `2` | Min tasks for parallel mode |
320
+
321
+ ---
322
+
323
+ ## corrections
324
+
325
+ Controls correction file handling.
326
+
327
+ ```json
328
+ {
329
+ "corrections": {
330
+ "mode": "inline",
331
+ "detailPath": ".workflow/corrections"
332
+ }
333
+ }
334
+ ```
335
+
336
+ | Option | Type | Default | Description |
337
+ |--------|------|---------|-------------|
338
+ | `mode` | string | `"inline"` | `"inline"` or `"detailed"` |
339
+ | `detailPath` | string | `".workflow/corrections"` | Path for detailed corrections |
340
+
341
+ ---
342
+
343
+ ## phases
344
+
345
+ Controls project phases (disabled by default).
346
+
347
+ ```json
348
+ {
349
+ "phases": {
350
+ "enabled": false,
351
+ "definitions": []
352
+ }
353
+ }
354
+ ```
355
+
356
+ | Option | Type | Default | Description |
357
+ |--------|------|---------|-------------|
358
+ | `enabled` | boolean | `false` | Enable phase tracking |
359
+ | `definitions` | array | `[]` | Phase definitions |
360
+
361
+ ---
362
+
363
+ ## mandatorySteps
364
+
365
+ Required steps at various points.
366
+
367
+ ```json
368
+ {
369
+ "mandatorySteps": {
370
+ "afterTask": [],
371
+ "beforeCommit": [],
372
+ "onSessionEnd": ["updateRequestLog", "updateAppMap"]
373
+ }
374
+ }
375
+ ```
376
+
377
+ | Option | Type | Default | Description |
378
+ |--------|------|---------|-------------|
379
+ | `afterTask` | array | `[]` | Steps after each task |
380
+ | `beforeCommit` | array | `[]` | Steps before commit |
381
+ | `onSessionEnd` | array | `["updateRequestLog", "updateAppMap"]` | Steps on session end |
382
+
383
+ ---
384
+
385
+ ## qualityGates
386
+
387
+ Per-task-type quality requirements.
388
+
389
+ ```json
390
+ {
391
+ "qualityGates": {
392
+ "feature": {
393
+ "require": ["loopComplete", "tests", "appMapUpdate", "requestLogEntry"],
394
+ "optional": ["review", "docs"]
395
+ },
396
+ "bugfix": {
397
+ "require": ["loopComplete", "tests", "requestLogEntry"],
398
+ "optional": ["review"]
399
+ },
400
+ "refactor": {
401
+ "require": ["loopComplete", "tests", "noNewFeatures"],
402
+ "optional": ["review"]
403
+ }
404
+ }
405
+ }
406
+ ```
407
+
408
+ | Gate | Description |
409
+ |------|-------------|
410
+ | `loopComplete` | Self-completing loop must finish all acceptance criteria |
411
+ | `tests` | Tests must pass |
412
+ | `appMapUpdate` | App-map must be updated |
413
+ | `requestLogEntry` | Request log must be updated |
414
+ | `review` | Code review required |
415
+ | `docs` | Documentation required |
416
+ | `noNewFeatures` | No new features (refactor only) |
417
+
418
+ ---
419
+
420
+ ## strictMode
421
+
422
+ Additional strict mode options.
423
+
424
+ ```json
425
+ {
426
+ "strictMode": {
427
+ "verificationChecklist": false,
428
+ "correctionReportsOnFail": false,
429
+ "featureReportsOnComplete": false
430
+ }
431
+ }
432
+ ```
433
+
434
+ | Option | Type | Default | Description |
435
+ |--------|------|---------|-------------|
436
+ | `verificationChecklist` | boolean | `false` | Require verification checklist |
437
+ | `correctionReportsOnFail` | boolean | `false` | Generate correction reports |
438
+ | `featureReportsOnComplete` | boolean | `false` | Generate feature reports |
439
+
440
+ ---
441
+
442
+ ## componentRules
443
+
444
+ Component reuse and creation rules.
445
+
446
+ ```json
447
+ {
448
+ "componentRules": {
449
+ "preferVariants": true,
450
+ "requireAppMapEntry": true,
451
+ "requireDetailDoc": false,
452
+ "autoGenerateStorybook": false,
453
+ "storybookPath": "src/stories"
454
+ }
455
+ }
456
+ ```
457
+
458
+ | Option | Type | Default | Description |
459
+ |--------|------|---------|-------------|
460
+ | `preferVariants` | boolean | `true` | Prefer variants over new components |
461
+ | `requireAppMapEntry` | boolean | `true` | Require app-map entry for new components |
462
+ | `requireDetailDoc` | boolean | `false` | Require detailed documentation |
463
+ | `autoGenerateStorybook` | boolean | `false` | Auto-generate Storybook stories |
464
+ | `storybookPath` | string | `"src/stories"` | Path for Storybook stories |
465
+
466
+ ---
467
+
468
+ ## testing
469
+
470
+ Test execution configuration.
471
+
472
+ ```json
473
+ {
474
+ "testing": {
475
+ "runAfterTask": false,
476
+ "runBeforeCommit": false,
477
+ "browserTests": false,
478
+ "browserTestUrl": "http://localhost:3000"
479
+ }
480
+ }
481
+ ```
482
+
483
+ | Option | Type | Default | Description |
484
+ |--------|------|---------|-------------|
485
+ | `runAfterTask` | boolean | `false` | Run tests after task |
486
+ | `runBeforeCommit` | boolean | `false` | Run tests before commit |
487
+ | `browserTests` | boolean | `false` | Enable browser tests |
488
+ | `browserTestUrl` | string | `"http://localhost:3000"` | Browser test base URL |
489
+
490
+ ---
491
+
492
+ ## hooks
493
+
494
+ CLI hooks configuration for AI tools (Claude Code, future Gemini/Codex support).
495
+
496
+ ```json
497
+ {
498
+ "hooks": {
499
+ "enabled": true,
500
+ "targets": ["claude-code"],
501
+ "gracefulDegradation": true,
502
+ "timeout": 5000,
503
+ "rules": {
504
+ "taskGating": { "enabled": true, "blockWithoutTask": true },
505
+ "validation": { "enabled": true, "runAfterEdit": true },
506
+ "loopEnforcement": { "enabled": true },
507
+ "componentReuse": { "enabled": true, "threshold": 80, "blockOnSimilar": false },
508
+ "sessionContext": { "enabled": true, "loadSuspendedTasks": true },
509
+ "autoLogging": { "enabled": true }
510
+ },
511
+ "claudeCode": {
512
+ "installPath": ".claude/settings.local.json"
513
+ }
514
+ }
515
+ }
516
+ ```
517
+
518
+ | Option | Type | Default | Description |
519
+ |--------|------|---------|-------------|
520
+ | `enabled` | boolean | `true` | Enable CLI hooks |
521
+ | `targets` | array | `["claude-code"]` | Target CLIs for hooks |
522
+ | `gracefulDegradation` | boolean | `true` | Continue on hook failure |
523
+ | `timeout` | number | `5000` | Hook timeout in ms |
524
+ | `rules.taskGating.enabled` | boolean | `true` | Enable task gating hook |
525
+ | `rules.taskGating.blockWithoutTask` | boolean | `true` | Block edits without active task |
526
+ | `rules.validation.enabled` | boolean | `true` | Enable validation hook |
527
+ | `rules.validation.runAfterEdit` | boolean | `true` | Run validation after file edits |
528
+ | `rules.loopEnforcement.enabled` | boolean | `true` | Block stop until criteria met |
529
+ | `rules.componentReuse.enabled` | boolean | `true` | Check for similar components |
530
+ | `rules.componentReuse.threshold` | number | `80` | Similarity threshold (0-100) |
531
+ | `rules.sessionContext.enabled` | boolean | `true` | Load context on session start |
532
+ | `rules.autoLogging.enabled` | boolean | `true` | Auto-log session activity |
533
+
534
+ **Setup/Management:**
535
+ ```bash
536
+ ./scripts/flow hooks setup # Install hooks
537
+ ./scripts/flow hooks status # Check hook status
538
+ ./scripts/flow hooks remove # Remove hooks
539
+ ./scripts/flow hooks test X # Test a specific hook
540
+ ```
541
+
542
+ ---
543
+
544
+ ## skills
545
+
546
+ Installed skills.
547
+
548
+ ```json
549
+ {
550
+ "skills": {
551
+ "installed": []
552
+ }
553
+ }
554
+ ```
555
+
556
+ | Option | Type | Default | Description |
557
+ |--------|------|---------|-------------|
558
+ | `installed` | array | `[]` | List of installed skill names |
559
+
560
+ ---
561
+
562
+ ## skillLearning
563
+
564
+ Skill auto-creation and learning.
565
+
566
+ ```json
567
+ {
568
+ "skillLearning": {
569
+ "enabled": true,
570
+ "autoExtract": true,
571
+ "triggers": {
572
+ "onCommit": true,
573
+ "onTaskComplete": true,
574
+ "onCompact": true
575
+ },
576
+ "minCorrectionsToLearn": 1,
577
+ "autoCreateSkills": "ask",
578
+ "autoDetectFrameworks": true,
579
+ "fetchOfficialDocs": true,
580
+ "frameworkDetectionPatterns": {
581
+ "nestjs": ["*.module.ts", "*.controller.ts", "*.service.ts", "@nestjs/*"],
582
+ "react": ["*.tsx", "*.jsx", "use*.ts", "react", "react-dom"],
583
+ "vue": ["*.vue", "vue", "@vue/*"],
584
+ "angular": ["*.component.ts", "*.module.ts", "@angular/*"],
585
+ "fastapi": ["main.py", "fastapi", "pydantic"],
586
+ "django": ["manage.py", "django", "settings.py"],
587
+ "express": ["app.js", "express", "router.js"]
588
+ },
589
+ "officialDocsUrls": {
590
+ "nestjs": "https://docs.nestjs.com",
591
+ "react": "https://react.dev",
592
+ "vue": "https://vuejs.org/guide",
593
+ "angular": "https://angular.io/docs",
594
+ "fastapi": "https://fastapi.tiangolo.com",
595
+ "django": "https://docs.djangoproject.com",
596
+ "express": "https://expressjs.com/en/guide"
597
+ }
598
+ }
599
+ }
600
+ ```
601
+
602
+ | Option | Type | Default | Description |
603
+ |--------|------|---------|-------------|
604
+ | `enabled` | boolean | `true` | Enable skill learning |
605
+ | `autoExtract` | boolean | `true` | Auto-extract patterns |
606
+ | `triggers.onCommit` | boolean | `true` | Learn on commit |
607
+ | `triggers.onTaskComplete` | boolean | `true` | Learn on task complete |
608
+ | `triggers.onCompact` | boolean | `true` | Learn on compact |
609
+ | `minCorrectionsToLearn` | number | `1` | Min corrections to create pattern |
610
+ | `autoCreateSkills` | string | `"ask"` | `"ask"`, `"auto"`, or `"never"` |
611
+ | `autoDetectFrameworks` | boolean | `true` | Auto-detect frameworks |
612
+ | `fetchOfficialDocs` | boolean | `true` | Fetch official documentation |
613
+ | `frameworkDetectionPatterns` | object | (see above) | Patterns to detect frameworks |
614
+ | `officialDocsUrls` | object | (see above) | URLs for official docs |
615
+
616
+ ---
617
+
618
+ ## componentIndex
619
+
620
+ Component auto-scanning configuration.
621
+
622
+ ```json
623
+ {
624
+ "componentIndex": {
625
+ "autoScan": true,
626
+ "scanOn": ["sessionStart", "afterTask", "preCommit"],
627
+ "staleAfterMinutes": 60,
628
+ "directories": [
629
+ "src/components",
630
+ "src/hooks",
631
+ "src/services",
632
+ "src/pages",
633
+ "src/modules",
634
+ "app"
635
+ ],
636
+ "ignore": [
637
+ "*.test.*",
638
+ "*.spec.*",
639
+ "*.stories.*",
640
+ "index.ts",
641
+ "index.js",
642
+ "__tests__",
643
+ "__mocks__"
644
+ ]
645
+ }
646
+ }
647
+ ```
648
+
649
+ | Option | Type | Default | Description |
650
+ |--------|------|---------|-------------|
651
+ | `autoScan` | boolean | `true` | Auto-scan on triggers |
652
+ | `scanOn` | array | `["sessionStart"]` | When to scan: `sessionStart`, `afterTask`, `preCommit` |
653
+ | `staleAfterMinutes` | number | `60` | Refresh if older than this (with sessionStart) |
654
+ | `directories` | array | (see above) | Directories to scan |
655
+ | `ignore` | array | (see above) | Patterns to ignore |
656
+
657
+ ---
658
+
659
+ ## guidedEdit
660
+
661
+ Step-by-step multi-file editing configuration.
662
+
663
+ ```json
664
+ {
665
+ "guidedEdit": {
666
+ "enabled": true,
667
+ "sessionFile": ".workflow/state/guided-edit-session.json",
668
+ "extensions": ["ts", "tsx", "js", "jsx", "vue", "svelte"],
669
+ "srcDir": null
670
+ }
671
+ }
672
+ ```
673
+
674
+ | Option | Type | Default | Description |
675
+ |--------|------|---------|-------------|
676
+ | `enabled` | boolean | `true` | Enable guided edit |
677
+ | `sessionFile` | string | (see above) | Session persistence file |
678
+ | `extensions` | array | `["ts", "tsx", "js", "jsx", "vue", "svelte"]` | File extensions to search |
679
+ | `srcDir` | string\|null | `null` | Source directory (null = auto-detect) |
680
+
681
+ ---
682
+
683
+ ## figmaAnalyzer
684
+
685
+ Design-to-code matching configuration.
686
+
687
+ ```json
688
+ {
689
+ "figmaAnalyzer": {
690
+ "enabled": true,
691
+ "thresholds": {
692
+ "exactMatch": 95,
693
+ "strongMatch": 80,
694
+ "variantCandidate": 60
695
+ },
696
+ "componentDirs": ["src/components", "components", "src/ui", "ui"],
697
+ "mcpServer": {
698
+ "port": 3847,
699
+ "autoStart": false
700
+ },
701
+ "autoScanOnAnalyze": true,
702
+ "generatePrompts": true
703
+ }
704
+ }
705
+ ```
706
+
707
+ | Option | Type | Default | Description |
708
+ |--------|------|---------|-------------|
709
+ | `enabled` | boolean | `true` | Enable Figma analyzer |
710
+ | `thresholds.exactMatch` | number | `95` | Score for exact match |
711
+ | `thresholds.strongMatch` | number | `80` | Score for strong match |
712
+ | `thresholds.variantCandidate` | number | `60` | Score for variant candidate |
713
+ | `componentDirs` | array | (see above) | Directories to search |
714
+ | `mcpServer.port` | number | `3847` | MCP server port |
715
+ | `mcpServer.autoStart` | boolean | `false` | Auto-start MCP server |
716
+ | `autoScanOnAnalyze` | boolean | `true` | Scan components on analyze |
717
+ | `generatePrompts` | boolean | `true` | Generate implementation prompts |
718
+
719
+ ---
720
+
721
+ ## traces
722
+
723
+ Code flow trace configuration.
724
+
725
+ ```json
726
+ {
727
+ "traces": {
728
+ "saveTo": ".workflow/traces",
729
+ "generateDiagrams": true
730
+ }
731
+ }
732
+ ```
733
+
734
+ | Option | Type | Default | Description |
735
+ |--------|------|---------|-------------|
736
+ | `saveTo` | string | `".workflow/traces"` | Where to save traces |
737
+ | `generateDiagrams` | boolean | `true` | Generate Mermaid diagrams |
738
+
739
+ ---
740
+
741
+ ## worktree
742
+
743
+ Git worktree isolation configuration.
744
+
745
+ ```json
746
+ {
747
+ "worktree": {
748
+ "enabled": false,
749
+ "autoCleanupHours": 24,
750
+ "keepOnFailure": false,
751
+ "squashOnMerge": true
752
+ }
753
+ }
754
+ ```
755
+
756
+ | Option | Type | Default | Description |
757
+ |--------|------|---------|-------------|
758
+ | `enabled` | boolean | `false` | Enable worktree isolation |
759
+ | `autoCleanupHours` | number | `24` | Hours before cleanup |
760
+ | `keepOnFailure` | boolean | `false` | Keep worktree on failure |
761
+ | `squashOnMerge` | boolean | `true` | Squash commits on merge |
762
+
763
+ ---
764
+
765
+ ## hybrid
766
+
767
+ Local LLM execution configuration (85-95% token savings).
768
+
769
+ ```json
770
+ {
771
+ "hybrid": {
772
+ "enabled": false,
773
+ "executor": {
774
+ "type": "local",
775
+ "provider": null,
776
+ "providerEndpoint": null,
777
+ "model": null,
778
+ "apiKey": null
779
+ },
780
+ "planner": {
781
+ "adaptToExecutor": true,
782
+ "useAdapterKnowledge": true
783
+ },
784
+ "settings": {
785
+ "temperature": 0.7,
786
+ "maxTokens": 4096,
787
+ "maxRetries": 20,
788
+ "timeout": 120000,
789
+ "autoExecute": false,
790
+ "createBranch": false,
791
+ "tokenEstimation": {
792
+ "enabled": true,
793
+ "minTokens": 1000,
794
+ "maxTokens": 8000,
795
+ "defaultLevel": "medium",
796
+ "logMetrics": true
797
+ }
798
+ },
799
+ "cloudProviders": {
800
+ "openai": {
801
+ "models": ["gpt-4o-mini", "gpt-4o"],
802
+ "defaultModel": "gpt-4o-mini",
803
+ "envKey": "OPENAI_API_KEY"
804
+ },
805
+ "anthropic": {
806
+ "models": ["claude-3-5-haiku-latest", "claude-3-haiku-20240307"],
807
+ "defaultModel": "claude-3-5-haiku-latest",
808
+ "envKey": "ANTHROPIC_API_KEY"
809
+ },
810
+ "google": {
811
+ "models": ["gemini-2.0-flash-exp", "gemini-1.5-flash"],
812
+ "defaultModel": "gemini-2.0-flash-exp",
813
+ "envKey": "GOOGLE_API_KEY"
814
+ }
815
+ },
816
+ "templates": {
817
+ "directory": "templates/hybrid"
818
+ },
819
+ "projectContext": {
820
+ "uiFramework": null,
821
+ "stylingApproach": null,
822
+ "componentDirs": [],
823
+ "typeDirs": ["src/types/*.ts"],
824
+ "doNotImport": ["React"],
825
+ "excludeDirectories": ["__tests__", "__mocks__", "node_modules", ".git", "dist", "build"]
826
+ }
827
+ }
828
+ }
829
+ ```
830
+
831
+ | Option | Type | Default | Description |
832
+ |--------|------|---------|-------------|
833
+ | `enabled` | boolean | `false` | Enable hybrid mode |
834
+ | `executor.type` | string | `"local"` | `"local"` or `"cloud"` |
835
+ | `executor.provider` | string | `null` | Cloud provider name |
836
+ | `executor.providerEndpoint` | string | `null` | Custom endpoint URL |
837
+ | `executor.model` | string | `null` | Model to use |
838
+ | `executor.apiKey` | string | `null` | API key (or use env var) |
839
+ | `planner.adaptToExecutor` | boolean | `true` | Adapt prompts to executor |
840
+ | `planner.useAdapterKnowledge` | boolean | `true` | Use model adapter knowledge |
841
+ | `settings.temperature` | number | `0.7` | LLM temperature |
842
+ | `settings.maxTokens` | number | `4096` | Max tokens per request |
843
+ | `settings.maxRetries` | number | `20` | Max retry attempts |
844
+ | `settings.timeout` | number | `120000` | Timeout in ms |
845
+ | `settings.autoExecute` | boolean | `false` | Auto-execute plans |
846
+ | `settings.createBranch` | boolean | `false` | Create branch for changes |
847
+ | `tokenEstimation.enabled` | boolean | `true` | Estimate tokens |
848
+ | `tokenEstimation.minTokens` | number | `1000` | Min estimated tokens |
849
+ | `tokenEstimation.maxTokens` | number | `8000` | Max estimated tokens |
850
+
851
+ ---
852
+
853
+ ## validation
854
+
855
+ Auto-validation command configuration.
856
+
857
+ ```json
858
+ {
859
+ "validation": {
860
+ "afterFileEdit": {
861
+ "enabled": false,
862
+ "commands": {
863
+ "*.ts": ["npx tsc --noEmit"],
864
+ "*.tsx": ["npx tsc --noEmit", "npx eslint {file} --fix"],
865
+ "*.js": ["npx eslint {file} --fix"],
866
+ "*.jsx": ["npx eslint {file} --fix"]
867
+ },
868
+ "fixErrorsBeforeContinuing": true
869
+ },
870
+ "afterTaskComplete": {
871
+ "enabled": true,
872
+ "commands": ["npm run lint", "npm run typecheck"]
873
+ },
874
+ "beforeCommit": {
875
+ "enabled": true,
876
+ "commands": ["npm run lint", "npm run typecheck", "npm run test"]
877
+ }
878
+ }
879
+ }
880
+ ```
881
+
882
+ | Option | Type | Default | Description |
883
+ |--------|------|---------|-------------|
884
+ | `afterFileEdit.enabled` | boolean | `false` | Validate after each edit |
885
+ | `afterFileEdit.commands` | object | (see above) | Commands per file type |
886
+ | `afterFileEdit.fixErrorsBeforeContinuing` | boolean | `true` | Block on errors |
887
+ | `afterTaskComplete.enabled` | boolean | `true` | Validate after task |
888
+ | `afterTaskComplete.commands` | array | (see above) | Commands to run |
889
+ | `beforeCommit.enabled` | boolean | `true` | Validate before commit |
890
+ | `beforeCommit.commands` | array | (see above) | Commands to run |
891
+
892
+ ---
893
+
894
+ ## agents
895
+
896
+ Agent persona configuration.
897
+
898
+ ```json
899
+ {
900
+ "agents": {
901
+ "enabled": ["orchestrator", "story-writer", "developer", "reviewer", "tester"],
902
+ "optional": ["accessibility", "security", "performance", "docs", "design-system", "onboarding"]
903
+ }
904
+ }
905
+ ```
906
+
907
+ | Option | Type | Default | Description |
908
+ |--------|------|---------|-------------|
909
+ | `enabled` | array | (see above) | Enabled agent personas |
910
+ | `optional` | array | (see above) | Optional agent personas |
911
+
912
+ ---
913
+
914
+ ## multiApproach
915
+
916
+ Multiple solution analysis configuration.
917
+
918
+ ```json
919
+ {
920
+ "multiApproach": {
921
+ "enabled": true,
922
+ "mode": "suggest",
923
+ "triggerOn": ["large", "xl"],
924
+ "maxApproaches": 3,
925
+ "selectionStrategy": "first-passing"
926
+ }
927
+ }
928
+ ```
929
+
930
+ | Option | Type | Default | Description |
931
+ |--------|------|---------|-------------|
932
+ | `enabled` | boolean | `true` | Enable multi-approach |
933
+ | `mode` | string | `"suggest"` | `"suggest"` or `"auto"` |
934
+ | `triggerOn` | array | `["large", "xl"]` | Task sizes to trigger |
935
+ | `maxApproaches` | number | `3` | Max approaches to generate |
936
+ | `selectionStrategy` | string | `"first-passing"` | How to select approach |
937
+
938
+ ---
939
+
940
+ ## autoContext
941
+
942
+ Auto-loading related files configuration. Automatically discovers relevant files, semantic memory facts, and LSP type information when starting a task.
943
+
944
+ ```json
945
+ {
946
+ "autoContext": {
947
+ "enabled": true,
948
+ "showLoadedFiles": true,
949
+ "maxFilesToLoad": 10,
950
+ "maxGrepResults": 10,
951
+ "maxComponentMatches": 15,
952
+ "maxContentLines": 50,
953
+ "includeContent": false,
954
+ "useAstGrep": false,
955
+ "maxSemanticFacts": 5,
956
+ "semanticMinRelevance": 40,
957
+ "lspEnrichment": {
958
+ "enabled": true,
959
+ "maxFiles": 5,
960
+ "timeoutMs": 2000,
961
+ "showExports": true,
962
+ "showDiagnostics": true,
963
+ "prioritizeHealthyFiles": true
964
+ }
965
+ }
966
+ }
967
+ ```
968
+
969
+ | Option | Type | Default | Description |
970
+ |--------|------|---------|-------------|
971
+ | `enabled` | boolean | `true` | Enable auto-context |
972
+ | `showLoadedFiles` | boolean | `true` | Show loaded files |
973
+ | `maxFilesToLoad` | number | `10` | Max files to load |
974
+ | `maxGrepResults` | number | `10` | Max grep results |
975
+ | `maxComponentMatches` | number | `15` | Max component matches |
976
+ | `maxContentLines` | number | `50` | Max lines per file |
977
+ | `includeContent` | boolean | `false` | Include file content |
978
+ | `useAstGrep` | boolean | `false` | Use AST-based grep |
979
+ | `maxSemanticFacts` | number | `5` | Max semantic memory facts to include |
980
+ | `semanticMinRelevance` | number | `40` | Min relevance % for semantic facts |
981
+
982
+ ### LSP Enrichment (v2.2+)
983
+
984
+ LSP enrichment adds type information and diagnostics to discovered files.
985
+
986
+ | Option | Type | Default | Description |
987
+ |--------|------|---------|-------------|
988
+ | `lspEnrichment.enabled` | boolean | `true` | Enable LSP enrichment |
989
+ | `lspEnrichment.maxFiles` | number | `5` | Max files to enrich |
990
+ | `lspEnrichment.timeoutMs` | number | `2000` | LSP timeout in ms |
991
+ | `lspEnrichment.showExports` | boolean | `true` | Show exported symbols |
992
+ | `lspEnrichment.showDiagnostics` | boolean | `true` | Show error/warning counts |
993
+ | `lspEnrichment.prioritizeHealthyFiles` | boolean | `true` | Sort error-free files first |
994
+
995
+ **Output Example:**
996
+ ```
997
+ 📂 Auto-loaded context:
998
+ ✓ src/services/AuthService.ts
999
+ ⚠️ src/hooks/useAuth.ts (2 warnings)
1000
+ ❌ src/utils/broken.ts (1 error)
1001
+
1002
+ 📦 Key exports:
1003
+ AuthService.ts: login, logout, refreshToken
1004
+ useAuth.ts: useAuth, AuthProvider
1005
+
1006
+ 🧠 Learned facts:
1007
+ ● Always use AuthContext for user state
1008
+ ```
1009
+
1010
+ ---
1011
+
1012
+ ## metrics
1013
+
1014
+ Usage tracking configuration.
1015
+
1016
+ ```json
1017
+ {
1018
+ "metrics": {
1019
+ "enabled": true,
1020
+ "trackCommands": true,
1021
+ "retentionDays": 30,
1022
+ "alertOnFailureRate": 0.3
1023
+ }
1024
+ }
1025
+ ```
1026
+
1027
+ | Option | Type | Default | Description |
1028
+ |--------|------|---------|-------------|
1029
+ | `enabled` | boolean | `true` | Enable metrics |
1030
+ | `trackCommands` | boolean | `true` | Track command usage |
1031
+ | `retentionDays` | number | `30` | Days to retain metrics |
1032
+ | `alertOnFailureRate` | number | `0.3` | Alert threshold (0-1) |
1033
+
1034
+ ---
1035
+
1036
+ ## security
1037
+
1038
+ Pre-commit security scanning configuration.
1039
+
1040
+ ```json
1041
+ {
1042
+ "security": {
1043
+ "scanBeforeCommit": true,
1044
+ "blockOnHigh": true,
1045
+ "checkPatterns": {
1046
+ "secrets": true,
1047
+ "injection": true,
1048
+ "npmAudit": true
1049
+ },
1050
+ "ignoreFiles": ["*.test.ts", "*.spec.ts"]
1051
+ }
1052
+ }
1053
+ ```
1054
+
1055
+ | Option | Type | Default | Description |
1056
+ |--------|------|---------|-------------|
1057
+ | `scanBeforeCommit` | boolean | `true` | Scan before commit |
1058
+ | `blockOnHigh` | boolean | `true` | Block on high severity |
1059
+ | `checkPatterns.secrets` | boolean | `true` | Check for secrets |
1060
+ | `checkPatterns.injection` | boolean | `true` | Check for injection |
1061
+ | `checkPatterns.npmAudit` | boolean | `true` | Run npm audit |
1062
+ | `ignoreFiles` | array | (see above) | Files to ignore |
1063
+
1064
+ ---
1065
+
1066
+ ## modelAdapters
1067
+
1068
+ Per-model learning configuration.
1069
+
1070
+ ```json
1071
+ {
1072
+ "modelAdapters": {
1073
+ "enabled": true,
1074
+ "autoLearn": true,
1075
+ "directory": ".workflow/model-adapters"
1076
+ }
1077
+ }
1078
+ ```
1079
+
1080
+ | Option | Type | Default | Description |
1081
+ |--------|------|---------|-------------|
1082
+ | `enabled` | boolean | `true` | Enable model adapters |
1083
+ | `autoLearn` | boolean | `true` | Auto-learn from errors |
1084
+ | `directory` | string | `".workflow/model-adapters"` | Adapter storage path |
1085
+
1086
+ ---
1087
+
1088
+ ## codebaseInsights
1089
+
1090
+ Project analysis configuration.
1091
+
1092
+ ```json
1093
+ {
1094
+ "codebaseInsights": {
1095
+ "enabled": true,
1096
+ "generateOn": ["onboarding", "manual"]
1097
+ }
1098
+ }
1099
+ ```
1100
+
1101
+ | Option | Type | Default | Description |
1102
+ |--------|------|---------|-------------|
1103
+ | `enabled` | boolean | `true` | Enable insights |
1104
+ | `generateOn` | array | `["onboarding", "manual"]` | When to generate |
1105
+
1106
+ ---
1107
+
1108
+ ## lsp
1109
+
1110
+ Language server integration configuration. LSP provides type information, diagnostics, and symbol navigation.
1111
+
1112
+ ```json
1113
+ {
1114
+ "lsp": {
1115
+ "enabled": true,
1116
+ "server": "typescript-language-server",
1117
+ "timeout": 5000,
1118
+ "cacheTypes": true
1119
+ }
1120
+ }
1121
+ ```
1122
+
1123
+ | Option | Type | Default | Description |
1124
+ |--------|------|---------|-------------|
1125
+ | `enabled` | boolean | `true` | Enable LSP integration |
1126
+ | `server` | string | `"typescript-language-server"` | LSP server to use |
1127
+ | `timeout` | number | `5000` | Request timeout in ms |
1128
+ | `cacheTypes` | boolean | `true` | Cache type information |
1129
+
1130
+ ### Installation
1131
+
1132
+ LSP dependencies can be installed manually:
1133
+
1134
+ ```bash
1135
+ npm i -D typescript-language-server typescript
1136
+ ```
1137
+
1138
+ ### Auto-Context Integration
1139
+
1140
+ When `autoContext.lspEnrichment.enabled` is `true`, the LSP server enriches auto-context results with:
1141
+ - **Exported symbols**: Function, class, interface, and variable names
1142
+ - **Diagnostics**: Error and warning counts per file
1143
+ - **Health prioritization**: Files with errors are sorted to the bottom
1144
+
1145
+ See [autoContext.lspEnrichment](#lsp-enrichment-v22) for configuration options.
1146
+
1147
+ ---
1148
+
1149
+ ## contextMonitor
1150
+
1151
+ Context window management configuration.
1152
+
1153
+ ```json
1154
+ {
1155
+ "contextMonitor": {
1156
+ "enabled": true,
1157
+ "warnAt": 0.7,
1158
+ "criticalAt": 0.85,
1159
+ "contextWindow": 200000,
1160
+ "checkOnSessionStart": true,
1161
+ "checkAfterTask": true
1162
+ }
1163
+ }
1164
+ ```
1165
+
1166
+ | Option | Type | Default | Description |
1167
+ |--------|------|---------|-------------|
1168
+ | `enabled` | boolean | `true` | Enable monitoring |
1169
+ | `warnAt` | number | `0.7` | Warning threshold (0-1) |
1170
+ | `criticalAt` | number | `0.85` | Critical threshold (0-1) |
1171
+ | `contextWindow` | number | `200000` | Estimated context window |
1172
+ | `checkOnSessionStart` | boolean | `true` | Check on start |
1173
+ | `checkAfterTask` | boolean | `true` | Check after task |
1174
+ | `trackingMethod` | string | `"auto"` | Tracking method: "auto", "native", or "estimated" |
1175
+
1176
+ ---
1177
+
1178
+ ## requestLog
1179
+
1180
+ Change history configuration.
1181
+
1182
+ ```json
1183
+ {
1184
+ "requestLog": {
1185
+ "enabled": true,
1186
+ "autoArchive": true,
1187
+ "maxRecentEntries": 50,
1188
+ "keepRecent": 30,
1189
+ "createSummary": true
1190
+ }
1191
+ }
1192
+ ```
1193
+
1194
+ | Option | Type | Default | Description |
1195
+ |--------|------|---------|-------------|
1196
+ | `enabled` | boolean | `true` | Enable request log |
1197
+ | `autoArchive` | boolean | `true` | Auto-archive old entries |
1198
+ | `maxRecentEntries` | number | `50` | Max entries before archive |
1199
+ | `keepRecent` | number | `30` | Days to keep recent |
1200
+ | `createSummary` | boolean | `true` | Create summary on archive |
1201
+
1202
+ ---
1203
+
1204
+ ## sessionState
1205
+
1206
+ Session persistence configuration.
1207
+
1208
+ ```json
1209
+ {
1210
+ "sessionState": {
1211
+ "enabled": true,
1212
+ "autoRestore": true,
1213
+ "maxGapHours": 24,
1214
+ "trackFiles": true,
1215
+ "trackDecisions": true,
1216
+ "maxRecentFiles": 20,
1217
+ "maxRecentDecisions": 10
1218
+ }
1219
+ }
1220
+ ```
1221
+
1222
+ | Option | Type | Default | Description |
1223
+ |--------|------|---------|-------------|
1224
+ | `enabled` | boolean | `true` | Enable session state |
1225
+ | `autoRestore` | boolean | `true` | Auto-restore session |
1226
+ | `maxGapHours` | number | `24` | Max hours between sessions |
1227
+ | `trackFiles` | boolean | `true` | Track file access |
1228
+ | `trackDecisions` | boolean | `true` | Track decisions |
1229
+ | `maxRecentFiles` | number | `20` | Max recent files |
1230
+ | `maxRecentDecisions` | number | `10` | Max recent decisions |
1231
+
1232
+ ---
1233
+
1234
+ ## team
1235
+
1236
+ Team sync configuration.
1237
+
1238
+ ```json
1239
+ {
1240
+ "team": {
1241
+ "enabled": false,
1242
+ "teamId": null,
1243
+ "userId": null,
1244
+ "setupId": null,
1245
+ "projectId": null,
1246
+ "apiKey": null,
1247
+ "backendUrl": "https://api.wogi-flow.com",
1248
+ "syncInterval": 300000,
1249
+ "autoSync": true,
1250
+ "projectScope": true,
1251
+ "sync": {
1252
+ "decisions": true,
1253
+ "appMap": true,
1254
+ "componentIndex": true,
1255
+ "skills": true,
1256
+ "memory": true,
1257
+ "requestLog": "recent",
1258
+ "tasks": false
1259
+ },
1260
+ "conflictResolution": "newest-wins"
1261
+ }
1262
+ }
1263
+ ```
1264
+
1265
+ | Option | Type | Default | Description |
1266
+ |--------|------|---------|-------------|
1267
+ | `enabled` | boolean | `false` | Enable team sync |
1268
+ | `teamId` | string | `null` | Team identifier |
1269
+ | `userId` | string | `null` | User identifier |
1270
+ | `backendUrl` | string | `"https://api.wogi-flow.com"` | Backend URL |
1271
+ | `syncInterval` | number | `300000` | Sync interval in ms |
1272
+ | `autoSync` | boolean | `true` | Auto-sync enabled |
1273
+ | `sync.decisions` | boolean | `true` | Sync decisions |
1274
+ | `sync.appMap` | boolean | `true` | Sync app-map |
1275
+ | `sync.componentIndex` | boolean | `true` | Sync component index |
1276
+ | `sync.skills` | boolean | `true` | Sync skills |
1277
+ | `sync.memory` | boolean | `true` | Sync memory |
1278
+ | `sync.requestLog` | string | `"recent"` | `"all"`, `"recent"`, or `false` |
1279
+ | `sync.tasks` | boolean | `false` | Sync tasks |
1280
+ | `conflictResolution` | string | `"newest-wins"` | Conflict resolution strategy |
1281
+
1282
+ ---
1283
+
1284
+ ## memory
1285
+
1286
+ Fact storage configuration.
1287
+
1288
+ ```json
1289
+ {
1290
+ "memory": {
1291
+ "enabled": true,
1292
+ "localDb": ".workflow/memory/local.db",
1293
+ "embeddingModel": "Xenova/all-MiniLM-L6-v2",
1294
+ "maxLocalFacts": 1000,
1295
+ "autoRemember": false
1296
+ }
1297
+ }
1298
+ ```
1299
+
1300
+ | Option | Type | Default | Description |
1301
+ |--------|------|---------|-------------|
1302
+ | `enabled` | boolean | `true` | Enable memory system |
1303
+ | `localDb` | string | `".workflow/memory/local.db"` | Local database path |
1304
+ | `embeddingModel` | string | `"Xenova/all-MiniLM-L6-v2"` | Embedding model |
1305
+ | `maxLocalFacts` | number | `1000` | Max stored facts |
1306
+ | `autoRemember` | boolean | `false` | Auto-remember facts |
1307
+
1308
+ ---
1309
+
1310
+ ## knowledgeRouting
1311
+
1312
+ Local vs team knowledge configuration.
1313
+
1314
+ ```json
1315
+ {
1316
+ "knowledgeRouting": {
1317
+ "autoDetect": true,
1318
+ "confirmWithUser": true,
1319
+ "defaultScope": "local",
1320
+ "modelSpecificLearning": true
1321
+ }
1322
+ }
1323
+ ```
1324
+
1325
+ | Option | Type | Default | Description |
1326
+ |--------|------|---------|-------------|
1327
+ | `autoDetect` | boolean | `true` | Auto-detect knowledge type |
1328
+ | `confirmWithUser` | boolean | `true` | Confirm before routing |
1329
+ | `defaultScope` | string | `"local"` | Default scope |
1330
+ | `modelSpecificLearning` | boolean | `true` | Per-model learning |
1331
+
1332
+ ---
1333
+
1334
+ ## prd
1335
+
1336
+ PRD chunking configuration.
1337
+
1338
+ ```json
1339
+ {
1340
+ "prd": {
1341
+ "enabled": true,
1342
+ "maxContextTokens": 2000,
1343
+ "chunkSize": 500,
1344
+ "autoRetrieve": false
1345
+ }
1346
+ }
1347
+ ```
1348
+
1349
+ | Option | Type | Default | Description |
1350
+ |--------|------|---------|-------------|
1351
+ | `enabled` | boolean | `true` | Enable PRD support |
1352
+ | `maxContextTokens` | number | `2000` | Max tokens per chunk |
1353
+ | `chunkSize` | number | `500` | Chunk size in tokens |
1354
+ | `autoRetrieve` | boolean | `false` | Auto-retrieve relevant chunks |
1355
+
1356
+ ---
1357
+
1358
+ ## automaticMemory
1359
+
1360
+ Memory management configuration.
1361
+
1362
+ ```json
1363
+ {
1364
+ "automaticMemory": {
1365
+ "enabled": true,
1366
+ "entropyThreshold": 0.7,
1367
+ "compactOnSessionEnd": true,
1368
+ "relevanceDecay": {
1369
+ "enabled": true,
1370
+ "decayRate": 0.033,
1371
+ "neverAccessedPenalty": 0.1
1372
+ },
1373
+ "demotion": {
1374
+ "relevanceThreshold": 0.3,
1375
+ "coldRetentionDays": 90
1376
+ },
1377
+ "selfTuning": {
1378
+ "enabled": false,
1379
+ "adjustOnOverflow": true,
1380
+ "adjustOnFailures": true
1381
+ }
1382
+ }
1383
+ }
1384
+ ```
1385
+
1386
+ | Option | Type | Default | Description |
1387
+ |--------|------|---------|-------------|
1388
+ | `enabled` | boolean | `true` | Enable auto memory |
1389
+ | `entropyThreshold` | number | `0.7` | Entropy threshold |
1390
+ | `compactOnSessionEnd` | boolean | `true` | Compact on session end |
1391
+ | `relevanceDecay.enabled` | boolean | `true` | Enable decay |
1392
+ | `relevanceDecay.decayRate` | number | `0.033` | Decay rate per day |
1393
+ | `relevanceDecay.neverAccessedPenalty` | number | `0.1` | Penalty for unused |
1394
+ | `demotion.relevanceThreshold` | number | `0.3` | Threshold for demotion |
1395
+ | `demotion.coldRetentionDays` | number | `90` | Days to keep cold |
1396
+ | `selfTuning.enabled` | boolean | `false` | Enable self-tuning |
1397
+
1398
+ ---
1399
+
1400
+ ## automaticPromotion
1401
+
1402
+ Pattern promotion configuration.
1403
+
1404
+ ```json
1405
+ {
1406
+ "automaticPromotion": {
1407
+ "enabled": false,
1408
+ "threshold": 3,
1409
+ "minRelevance": 0.8,
1410
+ "destinations": ["decisions.md"],
1411
+ "requireApproval": true,
1412
+ "autoApplyTeamApproved": true
1413
+ }
1414
+ }
1415
+ ```
1416
+
1417
+ | Option | Type | Default | Description |
1418
+ |--------|------|---------|-------------|
1419
+ | `enabled` | boolean | `false` | Enable promotion |
1420
+ | `threshold` | number | `3` | Uses before promotion |
1421
+ | `minRelevance` | number | `0.8` | Min relevance score |
1422
+ | `destinations` | array | `["decisions.md"]` | Where to promote |
1423
+ | `requireApproval` | boolean | `true` | Require user approval |
1424
+ | `autoApplyTeamApproved` | boolean | `true` | Auto-apply team approved |
1425
+
1426
+ ---
1427
+
1428
+ ## regressionTesting
1429
+
1430
+ Regression test configuration.
1431
+
1432
+ ```json
1433
+ {
1434
+ "regressionTesting": {
1435
+ "enabled": true,
1436
+ "sampleSize": 3,
1437
+ "runOnTaskComplete": true,
1438
+ "onFailure": "warn"
1439
+ }
1440
+ }
1441
+ ```
1442
+
1443
+ | Option | Type | Default | Description |
1444
+ |--------|------|---------|-------------|
1445
+ | `enabled` | boolean | `true` | Enable regression tests |
1446
+ | `sampleSize` | number | `3` | Tasks to test |
1447
+ | `runOnTaskComplete` | boolean | `true` | Run after task |
1448
+ | `onFailure` | string | `"warn"` | `"warn"`, `"block"`, or `"fix"` |
1449
+
1450
+ ---
1451
+
1452
+ ## storyDecomposition
1453
+
1454
+ Story breakdown configuration.
1455
+
1456
+ ```json
1457
+ {
1458
+ "storyDecomposition": {
1459
+ "autoDetect": true,
1460
+ "autoDecompose": false,
1461
+ "complexityThreshold": "medium",
1462
+ "minSubTasks": 5,
1463
+ "edgeCases": true,
1464
+ "loadingStates": true,
1465
+ "errorStates": true
1466
+ }
1467
+ }
1468
+ ```
1469
+
1470
+ | Option | Type | Default | Description |
1471
+ |--------|------|---------|-------------|
1472
+ | `autoDetect` | boolean | `true` | Auto-detect complex stories |
1473
+ | `autoDecompose` | boolean | `false` | Auto-decompose stories |
1474
+ | `complexityThreshold` | string | `"medium"` | Threshold for decomposition |
1475
+ | `minSubTasks` | number | `5` | Min sub-tasks to suggest |
1476
+ | `edgeCases` | boolean | `true` | Include edge cases |
1477
+ | `loadingStates` | boolean | `true` | Include loading states |
1478
+ | `errorStates` | boolean | `true` | Include error states |
1479
+
1480
+ ---
1481
+
1482
+ ## browserTesting
1483
+
1484
+ Browser test configuration.
1485
+
1486
+ ```json
1487
+ {
1488
+ "browserTesting": {
1489
+ "enabled": true,
1490
+ "runOnTaskComplete": true,
1491
+ "runForUITasks": true,
1492
+ "autoRun": false,
1493
+ "timeout": 30000,
1494
+ "screenshotOnFailure": true
1495
+ }
1496
+ }
1497
+ ```
1498
+
1499
+ | Option | Type | Default | Description |
1500
+ |--------|------|---------|-------------|
1501
+ | `enabled` | boolean | `true` | Enable browser tests |
1502
+ | `runOnTaskComplete` | boolean | `true` | Run after task |
1503
+ | `runForUITasks` | boolean | `true` | Run for UI tasks |
1504
+ | `autoRun` | boolean | `false` | Auto-run tests |
1505
+ | `timeout` | number | `30000` | Test timeout in ms |
1506
+ | `screenshotOnFailure` | boolean | `true` | Screenshot on failure |
1507
+
1508
+ ---
1509
+
1510
+ ## damageControl
1511
+
1512
+ Destructive command protection configuration.
1513
+
1514
+ ```json
1515
+ {
1516
+ "damageControl": {
1517
+ "enabled": false,
1518
+ "patternsFile": ".workflow/damage-control.yaml",
1519
+ "promptHook": {
1520
+ "enabled": false,
1521
+ "model": "haiku",
1522
+ "timeout": 5000,
1523
+ "skipSafeCommands": true
1524
+ },
1525
+ "onBlock": "error",
1526
+ "onAsk": "prompt",
1527
+ "logging": true
1528
+ }
1529
+ }
1530
+ ```
1531
+
1532
+ | Option | Type | Default | Description |
1533
+ |--------|------|---------|-------------|
1534
+ | `enabled` | boolean | `false` | Enable damage control |
1535
+ | `patternsFile` | string | `".workflow/damage-control.yaml"` | Patterns file path |
1536
+ | `promptHook.enabled` | boolean | `false` | Enable AI review |
1537
+ | `promptHook.model` | string | `"haiku"` | Model for review |
1538
+ | `promptHook.timeout` | number | `5000` | Review timeout |
1539
+ | `promptHook.skipSafeCommands` | boolean | `true` | Skip safe commands |
1540
+ | `onBlock` | string | `"error"` | `"error"`, `"warn"`, or `"log"` |
1541
+ | `onAsk` | string | `"prompt"` | `"prompt"`, `"block"`, or `"allow"` |
1542
+ | `logging` | boolean | `true` | Log blocked commands |
1543
+
1544
+ ---
1545
+
1546
+ ## priorities
1547
+
1548
+ Task priority configuration.
1549
+
1550
+ ```json
1551
+ {
1552
+ "priorities": {
1553
+ "defaultPriority": "P2",
1554
+ "autoBoostDays": 2,
1555
+ "autoBoostAmount": 1,
1556
+ "levels": {
1557
+ "P0": { "label": "Critical", "description": "Drop everything" },
1558
+ "P1": { "label": "High", "description": "Do today" },
1559
+ "P2": { "label": "Medium", "description": "Do this week" },
1560
+ "P3": { "label": "Low", "description": "Do when possible" },
1561
+ "P4": { "label": "Backlog", "description": "Someday" }
1562
+ }
1563
+ }
1564
+ }
1565
+ ```
1566
+
1567
+ | Option | Type | Default | Description |
1568
+ |--------|------|---------|-------------|
1569
+ | `defaultPriority` | string | `"P2"` | Default task priority |
1570
+ | `autoBoostDays` | number | `2` | Days before auto-boost |
1571
+ | `autoBoostAmount` | number | `1` | Priority levels to boost |
1572
+ | `levels` | object | (see above) | Priority level definitions |
1573
+
1574
+ ---
1575
+
1576
+ ## morningBriefing
1577
+
1578
+ Session start context configuration.
1579
+
1580
+ ```json
1581
+ {
1582
+ "morningBriefing": {
1583
+ "enabled": true,
1584
+ "showLastSession": true,
1585
+ "showChanges": true,
1586
+ "showRecommendedTasks": 3,
1587
+ "generatePrompt": true,
1588
+ "showBlockers": true,
1589
+ "showKeyContext": true
1590
+ }
1591
+ }
1592
+ ```
1593
+
1594
+ | Option | Type | Default | Description |
1595
+ |--------|------|---------|-------------|
1596
+ | `enabled` | boolean | `true` | Enable briefing |
1597
+ | `showLastSession` | boolean | `true` | Show last session info |
1598
+ | `showChanges` | boolean | `true` | Show recent changes |
1599
+ | `showRecommendedTasks` | number | `3` | Tasks to recommend |
1600
+ | `generatePrompt` | boolean | `true` | Generate startup prompt |
1601
+ | `showBlockers` | boolean | `true` | Show blockers |
1602
+ | `showKeyContext` | boolean | `true` | Show key context |
1603
+
1604
+ ---
1605
+
1606
+ ## Other Top-Level Options
1607
+
1608
+ ```json
1609
+ {
1610
+ "version": "2.0.0",
1611
+ "projectName": "",
1612
+ "autoLog": true,
1613
+ "autoUpdateAppMap": true,
1614
+ "requireApproval": []
1615
+ }
1616
+ ```
1617
+
1618
+ | Option | Type | Default | Description |
1619
+ |--------|------|---------|-------------|
1620
+ | `version` | string | `"2.0.0"` | Config version |
1621
+ | `projectName` | string | `""` | Project name |
1622
+ | `autoLog` | boolean | `true` | Auto-update request log |
1623
+ | `autoUpdateAppMap` | boolean | `true` | Auto-update app-map |
1624
+ | `requireApproval` | array | `[]` | Operations requiring approval |
1625
+
1626
+ ---
1627
+
1628
+ ## Related
1629
+
1630
+ - [Task Execution](../02-task-execution/) - Where most config applies
1631
+ - [Setup & Onboarding](../01-setup-onboarding/) - Initial configuration
1632
+ - [Safety & Guardrails](../06-safety-guardrails/) - Security configuration