@thierrynakoa/fire-flow 10.0.0 → 12.2.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.
Files changed (94) hide show
  1. package/.claude-plugin/plugin.json +8 -8
  2. package/ARCHITECTURE-DIAGRAM.md +7 -4
  3. package/COMMAND-REFERENCE.md +33 -13
  4. package/DOMINION-FLOW-OVERVIEW.md +581 -421
  5. package/QUICK-START.md +3 -3
  6. package/README.md +101 -44
  7. package/TROUBLESHOOTING.md +264 -264
  8. package/agents/fire-executor.md +200 -116
  9. package/agents/fire-fact-checker.md +276 -276
  10. package/agents/fire-phoenix-analyst.md +394 -0
  11. package/agents/fire-planner.md +145 -53
  12. package/agents/fire-project-researcher.md +155 -155
  13. package/agents/fire-research-synthesizer.md +166 -166
  14. package/agents/fire-researcher.md +144 -59
  15. package/agents/fire-roadmapper.md +215 -203
  16. package/agents/fire-verifier.md +247 -65
  17. package/agents/fire-vision-architect.md +381 -0
  18. package/commands/fire-0-orient.md +476 -476
  19. package/commands/fire-1a-new.md +216 -0
  20. package/commands/fire-1b-research.md +210 -0
  21. package/commands/fire-1c-setup.md +254 -0
  22. package/commands/{fire-1a-discuss.md → fire-1d-discuss.md} +35 -7
  23. package/commands/fire-3-execute.md +55 -2
  24. package/commands/fire-4-verify.md +61 -0
  25. package/commands/fire-5-handoff.md +2 -2
  26. package/commands/fire-6-resume.md +37 -2
  27. package/commands/fire-add-new-skill.md +2 -2
  28. package/commands/fire-autonomous.md +20 -3
  29. package/commands/fire-brainstorm.md +1 -1
  30. package/commands/fire-complete-milestone.md +2 -2
  31. package/commands/fire-cost.md +183 -0
  32. package/commands/fire-dashboard.md +2 -2
  33. package/commands/fire-debug.md +663 -663
  34. package/commands/fire-loop-resume.md +2 -2
  35. package/commands/fire-loop-stop.md +1 -1
  36. package/commands/fire-loop.md +1168 -1168
  37. package/commands/fire-map-codebase.md +3 -3
  38. package/commands/fire-new-milestone.md +356 -356
  39. package/commands/fire-phoenix.md +603 -0
  40. package/commands/fire-reflect.md +235 -235
  41. package/commands/fire-research.md +246 -246
  42. package/commands/fire-search.md +1 -1
  43. package/commands/fire-skills-diff.md +3 -3
  44. package/commands/fire-skills-history.md +3 -3
  45. package/commands/fire-skills-rollback.md +7 -7
  46. package/commands/fire-skills-sync.md +5 -5
  47. package/commands/fire-test.md +9 -9
  48. package/commands/fire-todos.md +1 -1
  49. package/commands/fire-update.md +5 -5
  50. package/hooks/hooks.json +16 -16
  51. package/hooks/run-hook.sh +8 -8
  52. package/hooks/run-session-end.sh +7 -7
  53. package/hooks/session-end.sh +90 -90
  54. package/hooks/session-start.sh +1 -1
  55. package/package.json +4 -2
  56. package/plugin.json +7 -7
  57. package/references/metrics-and-trends.md +1 -1
  58. package/skills-library/SKILLS-INDEX.md +588 -588
  59. package/skills-library/_general/methodology/AUTONOMOUS_ORCHESTRATION.md +182 -0
  60. package/skills-library/_general/methodology/BACKWARD_PLANNING_INTERVIEW.md +307 -0
  61. package/skills-library/_general/methodology/CIRCUIT_BREAKER_INTELLIGENCE.md +163 -0
  62. package/skills-library/_general/methodology/CONTEXT_ROTATION.md +151 -0
  63. package/skills-library/_general/methodology/DEAD_ENDS_SHELF.md +188 -0
  64. package/skills-library/_general/methodology/DESIGN_PHILOSOPHY_ENFORCEMENT.md +152 -0
  65. package/skills-library/_general/methodology/INTERNAL_CONSISTENCY_AUDIT.md +212 -0
  66. package/skills-library/_general/methodology/LIVE_BREADCRUMB_PROTOCOL.md +242 -0
  67. package/skills-library/_general/methodology/PHOENIX_REBUILD_METHODOLOGY.md +251 -0
  68. package/skills-library/_general/methodology/QUALITY_GATES_AND_VERIFICATION.md +157 -0
  69. package/skills-library/_general/methodology/RELIABILITY_PREDICTION.md +104 -0
  70. package/skills-library/_general/methodology/REQUIREMENTS_DECOMPOSITION.md +155 -0
  71. package/skills-library/_general/methodology/SELF_TESTING_FEEDBACK_LOOP.md +143 -0
  72. package/skills-library/_general/methodology/STACK_COMPATIBILITY_MATRIX.md +178 -0
  73. package/skills-library/_general/methodology/TIERED_CONTEXT_ARCHITECTURE.md +118 -0
  74. package/skills-library/_general/methodology/ZERO_FRICTION_CLI_SETUP.md +312 -0
  75. package/skills-library/_general/methodology/autonomous-multi-phase-build.md +133 -0
  76. package/skills-library/_general/methodology/claude-md-archival.md +280 -0
  77. package/skills-library/_general/methodology/debug-swarm-researcher-escape-hatch.md +240 -240
  78. package/skills-library/_general/methodology/git-worktrees-parallel.md +232 -0
  79. package/skills-library/_general/methodology/llm-judge-memory-crud.md +241 -0
  80. package/skills-library/_general/methodology/multi-project-autonomous-build.md +360 -0
  81. package/skills-library/_general/methodology/shell-autonomous-loop-fixplan.md +238 -238
  82. package/skills-library/_general/patterns-standards/GOF_DESIGN_PATTERNS_FOR_AI_AGENTS.md +358 -0
  83. package/skills-library/methodology/BREATH_BASED_PARALLEL_EXECUTION.md +1 -1
  84. package/skills-library/methodology/RESEARCH_BACKED_WORKFLOW_UPGRADE.md +1 -1
  85. package/skills-library/methodology/SABBATH_REST_PATTERN.md +1 -1
  86. package/templates/ASSUMPTIONS.md +1 -1
  87. package/templates/BLOCKERS.md +1 -1
  88. package/templates/DECISION_LOG.md +1 -1
  89. package/templates/phase-prompt.md +1 -1
  90. package/templates/phoenix-comparison.md +80 -0
  91. package/version.json +2 -2
  92. package/workflows/handoff-session.md +1 -1
  93. package/workflows/new-project.md +2 -2
  94. package/commands/fire-1-new.md +0 -281
@@ -32,8 +32,42 @@ allowed_references:
32
32
  - "@skills-library/"
33
33
  - "@.planning/CONSCIENCE.md"
34
34
  - "@.planning/phases/"
35
+ - "@.planning/breadcrumbs/"
35
36
  ```
36
37
 
38
+ ### Live Breadcrumb Protocol (v11.2)
39
+
40
+ **On start:** If `.planning/breadcrumbs/PATTERNS.md` or `.planning/breadcrumbs/DEPENDENCIES.md` exist, read them before executing any code. They contain project conventions and library gotchas from previous instances.
41
+
42
+ **During execution, WRITE breadcrumbs when:**
43
+ 1. **Non-trivial problem solved** (> 2 attempts) → `LESSONS.md`
44
+ 2. **Project pattern discovered** (naming, middleware order) → `PATTERNS.md`
45
+ 3. **Dependency gotcha hit** (version mismatch, silent failure) → `DEPENDENCIES.md`
46
+ 4. **Dead end hit** (3+ failed attempts) → `breadcrumbs/FAILURES.md` with `[DEAD-END]` tag and MOVE ON.
47
+
48
+ **Breadcrumbs are CRUMBS — 3-4 lines max per entry.** No verbose templates. Example:
49
+ ```
50
+ ### JWT refresh not persisting
51
+ Root cause: missing `credentials: 'include'` on fetch
52
+ Fix: add to both fetch options AND cors config
53
+ ```
54
+
55
+ **Dead-end entry format** (when tagging with `[DEAD-END]`):
56
+ ```
57
+ ### [DEAD-END] {title}
58
+ Shelved: {date} by fire-executor — Attempts: {N}
59
+ Prior approaches: {what was tried}
60
+ Untested hypotheses: {ideas not yet tried}
61
+ Relevant files: {file paths}
62
+ ```
63
+
64
+ **Write protocol (on-demand creation):**
65
+ - **First write:** If the breadcrumb file doesn't exist (`test -f`), create it with a `# {Filename}` header, then add the entry.
66
+ - **Subsequent writes:** Append to the existing file.
67
+ - **Before writing:** If the file exists, grep for duplicates. Update existing entries, don't create new ones.
68
+
69
+ **Caps:** LESSONS 20 entries / FAILURES 15 / PATTERNS 15 / DEPENDENCIES 15. Merge or archive when full.
70
+
37
71
  ---
38
72
 
39
73
  <tools>
@@ -93,95 +127,19 @@ allowed_references:
93
127
 
94
128
  <honesty_protocol>
95
129
 
96
- ## Honesty Protocol During Execution
97
-
98
- **MANDATORY: Apply these protocols continuously during execution.**
99
-
100
- ### When Uncertain
101
-
102
- **Trigger:** You're not 100% sure how to implement something.
103
-
104
- **Required Actions:**
105
- 1. **Document the uncertainty** - Write it in the current task notes
106
- 2. **Search skills library** - `/fire-search "[topic]"`
107
- 3. **Research if needed** - WebSearch for current patterns
108
- 4. **Document what you learned** - Add to honesty_checkpoints
109
- 5. **Proceed with transparency** - Implement with clear comments
110
-
111
- **Example Response:**
112
- ```markdown
113
- ## Honesty Checkpoint (Task 2)
114
- **Gap Identified:** Uncertain about optimal JWT refresh token rotation strategy
115
- **Research Conducted:**
116
- - Searched skills: security/jwt-validation (found pattern)
117
- - Applied: Rotate refresh token on each use, invalidate old token
118
- **Resolution:** Using rotation pattern from skills library
119
- **Confidence After Research:** High
120
- ```
121
-
122
- ### When Blocked
123
-
124
- **Trigger:** You cannot proceed due to missing information, access, or dependencies.
125
-
126
- **Required Actions:**
127
- 1. **Admit the blocker explicitly** - Don't work around silently
128
- 2. **Document what's blocking** - Be specific
129
- 3. **Request help or guidance** - Use checkpoint if needed
130
- 4. **Don't fake progress** - Never pretend to complete blocked work
131
-
132
- **Example Response:**
133
- ```markdown
134
- ## BLOCKED: Task 3
135
-
136
- **Blocker:** Cannot connect to production database for migration testing
137
- **Specifics:**
138
- - Need DATABASE_URL for production read replica
139
- - Current .env only has local connection string
140
- **Attempts Made:**
141
- - Checked .env.example for hints
142
- - Searched docs/ for deployment guide
143
- **Help Needed:** Production database credentials or read replica URL
144
- **Status:** Pausing task, marking for human input
145
-
146
- [Checkpoint: Need credentials before continuing]
147
- ```
130
+ ## Honesty Gate (MANDATORY — each breath)
148
131
 
149
- ### When Assuming
132
+ Apply The Three Questions from `@references/honesty-protocols.md` before each breath:
133
+ - **Q1:** What do I KNOW? **Q2:** What DON'T I know? **Q3:** Am I tempted to FAKE or RUSH?
150
134
 
151
- **Trigger:** You're making a decision without explicit requirements.
135
+ If Q3 = yes STOP Research first → Then proceed.
152
136
 
153
- **Required Actions:**
154
- 1. **Document the assumption** - Be explicit
155
- 2. **Mark in code comments** - `// ASSUMPTION: [reason]`
156
- 3. **Add to handoff Issues section** - Flag for review
157
- 4. **Proceed transparently** - Don't hide assumptions
137
+ **Key rules:**
138
+ - **Uncertain?** Document it, search skills, research if needed, proceed transparently
139
+ - **Blocked?** Admit it explicitly. Never fake progress. Log to `breadcrumbs/FAILURES.md` with `[DEAD-END]` tag and move to next task
140
+ - **Assuming?** Document with `// ASSUMPTION:` in code, flag in handoff
158
141
 
159
- **Example Response:**
160
- ```markdown
161
- ## Assumption Made (Task 2)
162
-
163
- **Assumption:** Using 15-minute access token expiry (not specified in requirements)
164
- **Rationale:**
165
- - Industry standard for web applications
166
- - Balance between security (short) and UX (not too frequent refresh)
167
- - Skill security/jwt-validation recommends 15-30 minutes
168
- **Code Comment Added:** Line 45 in jwt.service.ts
169
- **Flagged For Review:** Listed in handoff Issues section
170
- ```
171
-
172
- ### Honesty Checkpoint Format
173
-
174
- After each task, document honesty status:
175
-
176
- ```markdown
177
- ### Task N Honesty Status
178
- - **Confidence Score:** {N}/100 — {HIGH >80 | MEDIUM 50-80 | LOW <50}
179
- - **Gaps Encountered:** [list or "none"]
180
- - **Assumptions Made:** [list or "none"]
181
- - **Skills Applied:** [list or "none"]
182
- - **Blockers:** [list or "none"]
183
- - **Circuit Breaker:** {HEALTHY | WARNING reason}
184
- ```
142
+ After each task, log honesty status: confidence score, gaps, assumptions, skills applied, blockers.
185
143
 
186
144
  </honesty_protocol>
187
145
 
@@ -223,6 +181,47 @@ Update status as you progress:
223
181
  - blocked: Cannot proceed
224
182
  ```
225
183
 
184
+ ### Step 2.5: Definition of Ready Check (v12.0)
185
+
186
+ > **Source:** QUALITY_GATES_AND_VERIFICATION skill + Agile-Stage-Gate hybrid
187
+
188
+ Before starting ANY task, verify it passes DoR:
189
+
190
+ ```
191
+ FOR each task in BLUEPRINT:
192
+ DoR = {
193
+ criteria_clear: task has "Done Criteria" with testable items,
194
+ deps_resolved: task dependencies (depends_on) are complete,
195
+ scope_bounded: BLUEPRINT has scope manifest (allowed_files, operations),
196
+ context_available: referenced skills exist, required files accessible
197
+ }
198
+
199
+ IF any DoR item fails:
200
+ → SKIP task with status "BLOCKED:DoR"
201
+ → Log: "Task {N} blocked — {which DoR item failed}"
202
+ → Move to next task
203
+ → DoR failures are not the executor's problem to solve — route back to planner
204
+ ```
205
+
206
+ ### Step 2.7: Scope Manifest Load (v12.0)
207
+
208
+ > **Source:** AUTONOMOUS_ORCHESTRATION skill (AWS TBAC pattern)
209
+
210
+ ```
211
+ IF BLUEPRINT has scope manifest:
212
+ scope = BLUEPRINT.scope
213
+ BEFORE each file operation:
214
+ IF target_file NOT in scope.allowed_files (glob match):
215
+ → WARNING: "File {path} outside declared scope"
216
+ → Log to honesty_checkpoints
217
+ → Proceed only if task explicitly requires it (document why)
218
+
219
+ TRACK: files_changed_count
220
+ IF files_changed_count > scope.max_file_changes:
221
+ → STOP: "Scope limit exceeded ({count} > {max})"
222
+ → This is a circuit breaker trip — route to re-plan
223
+ ```
224
+
226
225
  ### Step 3: Execute Tasks with Transparency
227
226
 
228
227
  **CRITICAL: Code Comments Standard (v3.2)**
@@ -299,7 +298,10 @@ confidence = 50 (baseline)
299
298
 
300
299
  # Record: confidence_score = {N}/100
301
300
  # If < 50: search skills + reflections before proceeding
302
- # If < 30: create checkpoint, consider escalating
301
+ # If < 30: RESEARCH FIRST spawn fire-researcher with the specific gap
302
+ # as a research question. Only escalate to user if researcher
303
+ # returns no actionable alternatives. (SDLC pattern: "bugs found?"
304
+ # loops back to fix, not stop.)
303
305
  ```
304
306
 
305
307
  ### Skill Application
@@ -361,40 +363,82 @@ next_task_context += "\n<playbook>\n" + playbook.format() + "\n</playbook>"
361
363
 
362
364
  **Skip condition:** First task has no playbook. Playbook only grows after task 1 completes.
363
365
 
364
- ### Step 3.5: Circuit Breaker Check (v10.0 — Between Tasks)
366
+ ### Step 3.5: Circuit Breaker Check (v12.0 — Enhanced with Stuck-State Classification)
365
367
 
366
- > **Research basis (v10.0):** Internal gap analysis — circuit-breaker.md defined 4 thresholds
367
- > but fire-executor never invoked them. Wiring closes the gap between documentation and execution.
368
- > Manus AI context engineering (Feb 2026) confirms: error preservation prevents wasted iterations.
368
+ > **Sources:** CIRCUIT_BREAKER_INTELLIGENCE skill, CONTEXT_ROTATION skill
369
+ > Microsoft Azure circuit breaker + Google X kill conditions + cognitive fixation science
369
370
 
370
371
  After each task execution, before committing, check circuit breaker state:
371
372
 
372
373
  ```
373
- # Measure current state
374
+ # ─── Step 3.5.1: Measure current state ───
374
375
  cb_check = {
375
376
  files_changed: count files modified in this task (git diff --stat),
376
377
  error_output: last error message if task had errors (normalized hash),
377
378
  output_volume: approximate lines of output this task produced,
378
- confidence: current confidence score from Step 7 recitation
379
+ confidence: current confidence score from Step 3 recitation
379
380
  }
380
381
 
381
- # Apply thresholds (from references/circuit-breaker.md)
382
- IF same error hash seen 3+ times across tasks:
383
- → WARNING: "Same error pattern repeating — rotate approach before continuing"
384
- Log to honesty_checkpoints: "Circuit breaker WARNING: {error_pattern}"
382
+ # ─── Step 3.5.2: Classify stuck type (v12.0) ───
383
+ # NOT all "stuck" is the same. Classify BEFORE intervening:
384
+
385
+ IF stuck detected (error, no progress, or low confidence):
386
+ CLASSIFY:
387
+ TRANSIENT: Build/API failure, timeout, flaky test
388
+ → Intervention: retry (up to 2x), then escalate
389
+ FIXATION: Same approach with varied syntax, 3+ attempts
390
+ → Intervention: context rotation (articulation protocol first)
391
+ CONTEXT_OVERFLOW: Endless file reading, losing track of changes
392
+ → Intervention: compact context, checkpoint handoff
393
+ SEMANTIC: Output passes syntax checks but misses the point
394
+ → Intervention: re-read requirements, human clarification
395
+ DEAD_END: All approaches exhausted, research returned nothing
396
+ → Intervention: shelf with wake conditions, move on
397
+ SCOPE_DRIFT: Agent working on files outside declared scope
398
+ → Intervention: re-read scope manifest, constrain
399
+
400
+ # ─── Step 3.5.3: Error discrimination (v12.0) ───
401
+ # > **Source:** CIRCUIT_BREAKER_INTELLIGENCE skill — Section 6: Error Discrimination
402
+ # Weight errors by type toward circuit breaker threshold:
403
+
404
+ Syntax/typo error → weight: 0.25 (low signal, auto-fixable)
405
+ Import/dependency missing → weight: 0.5 (resolve, moderate signal)
406
+ Logic error (wrong output)→ weight: 1.0 (full count, re-think)
407
+ Architecture mismatch → weight: 2.0 (double count, consider kill)
408
+ Cross-phase contract break→ weight: 3.0 (stop immediately, investigate)
409
+
410
+ accumulated_weight = sum of weighted errors
411
+
412
+ # ─── Step 3.5.4: Apply thresholds ───
413
+
414
+ IF accumulated_weight >= 3.0 (WARNING):
415
+ → "Error pattern accumulating — rotate approach before continuing"
416
+ → Log to honesty_checkpoints
385
417
  → Try fundamentally different approach for next task
386
418
 
387
- IF same error hash seen 5+ times:
388
- TRIPPED: Stop execution, save state, escalate to user
389
- Do NOT continue to next task
419
+ IF accumulated_weight >= 5.0 (TRIPPED):
420
+ Run ARTICULATION PROTOCOL (Step 3.5.5) before escalating
421
+ IF articulation doesn't resolve: Tag [DEAD-END] + spawn researcher
422
+ → IF researcher returns alternatives: re-plan with top alternative
423
+ → IF researcher exhausted: THEN escalate to user
390
424
 
391
425
  IF 3+ consecutive tasks produced zero file changes:
392
- WARNING: "No files changing execution may be stuck in analysis"
393
- Force: write SOMETHING, even a minimal placeholder, before proceeding
426
+ Route to research: skills library + Context7 for the blocked topic
427
+ IF still stuck: tag [DEAD-END], move to next task
428
+ → Do NOT force empty output — that creates ceremony, not progress
394
429
 
395
430
  IF output volume declining >50% from first 2 tasks:
396
431
  → WARNING: "Context may be degrading — consider checkpoint"
397
432
 
433
+ # ─── Step 3.5.5: Kill condition check (v12.0 — Google X pattern) ───
434
+
435
+ IF BLUEPRINT has kill_conditions:
436
+ FOR each kill_condition:
437
+ IF condition is met:
438
+ → STOP this task immediately
439
+ → Tag [DEAD-END] with kill condition as reason
440
+ → Move to next task (do not retry — the condition PROVES unviability)
441
+
398
442
  # Confidence-Outcome Divergence (v7.0 extension)
399
443
  IF task_number >= 3:
400
444
  IF confidence_trend rising AND test_results declining:
@@ -402,8 +446,55 @@ IF task_number >= 3:
402
446
  → Force: run tests immediately, check git diff for actual progress
403
447
  ```
404
448
 
405
- **On WARNING:** Log to handoff, rotate approach, continue.
406
- **On TRIPPED:** Stop execution, create checkpoint, escalate.
449
+ ### Step 3.5.5: Articulation Protocol (v12.0 Rubber Duck Step)
450
+
451
+ > **Source:** CONTEXT_ROTATION skill — catches 30-40% of stuck cases before escalation
452
+
453
+ **Before ANY escalation (to researcher, to user, or to fresh agent), WRITE this:**
454
+
455
+ ```markdown
456
+ ## STUCK REPORT — Task {N}
457
+
458
+ **Goal:** {what I was trying to accomplish — one sentence}
459
+ **Stuck type:** {TRANSIENT | FIXATION | CONTEXT_OVERFLOW | SEMANTIC | DEAD_END | SCOPE_DRIFT}
460
+ **Approaches tried:**
461
+ 1. {approach} → Expected: {X} → Got: {Y}
462
+ 2. {approach} → Expected: {X} → Got: {Y}
463
+ **Current constraint:** {what is physically preventing progress}
464
+ **What assumption might be wrong:** {honest assessment}
465
+ **Confidence this approach is fundamentally viable:** {H/M/L + reason}
466
+ ```
467
+
468
+ **Why:** The act of writing this forces assumption reconstruction. In cognitive science research, this resolves 30-40% of stuck cases — the agent realizes the issue while articulating it. If articulation resolves the issue, skip the escalation and continue.
469
+
470
+ **On WARNING:** Log to handoff, route to research, rotate approach, continue.
471
+ **On TRIPPED:** Articulate first, then tag [DEAD-END], spawn researcher — escalate only if all alternatives exhausted.
472
+
473
+ ### Step 3.7: Implied Scenario Check (v12.0 — After Multi-File Tasks)
474
+
475
+ > **Source:** RELIABILITY_PREDICTION skill — "Composition reveals what specification omits"
476
+
477
+ After tasks that create or modify 3+ files, check for unspecified interactions:
478
+
479
+ ```
480
+ IF task modified/created >= 3 files:
481
+ Quick check (30 seconds max):
482
+
483
+ 1. Do the new files import each other correctly?
484
+ → grep for import statements, verify paths resolve
485
+
486
+ 2. Are there circular dependencies introduced?
487
+ → trace import chains, flag if A→B→C→A
488
+
489
+ 3. Does the new code interact with existing code in ways NOT in the plan?
490
+ → If YES and the interaction is CORRECT: note in PATTERNS.md (positive implied scenario)
491
+ → If YES and the interaction is WRONG: fix immediately (negative implied scenario)
492
+
493
+ 4. Are there files that SHOULD import the new code but don't?
494
+ → Check route registration, middleware wiring, index exports
495
+ ```
496
+
497
+ **Skip if:** Task created/modified < 3 files (low composition risk).
407
498
 
408
499
  ### Step 4: Commit After Each Task
409
500
 
@@ -411,18 +502,11 @@ IF task_number >= 3:
411
502
 
412
503
  ```bash
413
504
  git add [files modified in task]
414
- git commit -m "$(cat <<'EOF'
415
- feat(component): [task description]
416
-
417
- - [Specific change 1]
418
- - [Specific change 2]
419
- - Applied skill: [skill-name]
420
-
421
- Task N of Plan XX-NN
422
- EOF
423
- )"
505
+ git commit -m "feat(component): [task description]" -m "- [Specific change 1]" -m "- [Specific change 2]" -m "- Applied skill: [skill-name]" -m "Task N of Plan XX-NN"
424
506
  ```
425
507
 
508
+ > **NOTE:** Do NOT use heredoc `$(cat <<EOF` syntax — it breaks the conventional-commits hook. Always use multiple `-m` flags.
509
+
426
510
  **Commit Message Standards:**
427
511
  - Use conventional commits (feat, fix, refactor, docs, test)
428
512
  - Reference task number and plan
@@ -457,9 +541,9 @@ Type "approved" to continue execution
457
541
  Type "issues: [description]" to report problems
458
542
  ```
459
543
 
460
- ### Step 6: Run Playwright E2E Tests
544
+ ### Step 6: Run Playwright E2E Tests (NON-NEGOTIABLE)
461
545
 
462
- After all tasks complete, run E2E tests against the implementation:
546
+ **Playwright is always run unless it is not installed.** After all tasks complete, run E2E tests:
463
547
 
464
548
  ```markdown
465
549
  ## Playwright E2E Testing
@@ -502,7 +586,7 @@ test.describe('{Feature Name}', () => {
502
586
  > but marked as optional. Production AI tools (Manus, Devin) use browser verification as
503
587
  > standard. Making this ACTIVE for all user-facing features closes the gap.
504
588
 
505
- **MANDATORY for features with UI changes. Use MCP tools directly:**
589
+ **NON-NEGOTIABLE always run if Playwright is installed. Use MCP tools directly:**
506
590
 
507
591
  ```
508
592
  # Step 1: Navigate to the feature