@hustle-together/api-dev-tools 3.6.3 → 3.6.4

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.
@@ -1117,7 +1117,7 @@
1117
1117
  }
1118
1118
 
1119
1119
  /* ============================================
1120
- SECTION 5: THE 13 PHASES
1120
+ SECTION 5: THE 12 PHASES
1121
1121
  ============================================ */
1122
1122
  #phases .section-header {
1123
1123
  text-align: center;
@@ -3036,20 +3036,20 @@ Required actions:
3036
3036
  </div>
3037
3037
  </section>
3038
3038
 
3039
- <!-- Section 5: The 13 Phases -->
3039
+ <!-- Section 5: The 12 Phases -->
3040
3040
  <section id="phases">
3041
3041
  <div class="section-inner">
3042
3042
  <div class="section-header">
3043
- <h2>The 13 Phases</h2>
3043
+ <h2>The 12 Phases</h2>
3044
3044
  <p class="text-muted">Each phase must complete before proceeding. Click EXPAND for details.</p>
3045
3045
  </div>
3046
3046
 
3047
3047
  <div class="phases-grid">
3048
- <!-- Phase 0: Disambiguation -->
3048
+ <!-- Phase 1: Disambiguation -->
3049
3049
  <div class="phase-card">
3050
3050
  <div class="phase-card-main">
3051
3051
  <div class="phase-info">
3052
- <span class="phase-number">PHASE 0</span>
3052
+ <span class="phase-number">PHASE 1</span>
3053
3053
  <h4>Disambiguation</h4>
3054
3054
  <p>Clarify ambiguous terms before any research begins.</p>
3055
3055
  <span class="phase-hook"><i class="fa-solid fa-lock"></i> enforce-disambiguation.py</span>
@@ -3085,11 +3085,11 @@ Required actions:
3085
3085
  </div>
3086
3086
  </div>
3087
3087
 
3088
- <!-- Phase 1: Scope -->
3088
+ <!-- Phase 2: Scope -->
3089
3089
  <div class="phase-card">
3090
3090
  <div class="phase-card-main">
3091
3091
  <div class="phase-info">
3092
- <span class="phase-number">PHASE 1</span>
3092
+ <span class="phase-number">PHASE 2</span>
3093
3093
  <h4>Scope Confirmation</h4>
3094
3094
  <p>Confirm understanding of what endpoint should do.</p>
3095
3095
  <span class="phase-hook"><i class="fa-solid fa-lock"></i> enforce-scope.py</span>
@@ -3126,11 +3126,11 @@ Required actions:
3126
3126
  </div>
3127
3127
  </div>
3128
3128
 
3129
- <!-- Phase 2: Initial Research -->
3129
+ <!-- Phase 3: Initial Research -->
3130
3130
  <div class="phase-card">
3131
3131
  <div class="phase-card-main">
3132
3132
  <div class="phase-info">
3133
- <span class="phase-number">PHASE 2</span>
3133
+ <span class="phase-number">PHASE 3</span>
3134
3134
  <h4>Initial Research</h4>
3135
3135
  <p>Fetch documentation via Context7 or WebSearch.</p>
3136
3136
  <span class="phase-hook"><i class="fa-solid fa-lock"></i> enforce-research.py</span>
@@ -3169,11 +3169,11 @@ Required actions:
3169
3169
  </div>
3170
3170
  </div>
3171
3171
 
3172
- <!-- Phase 3: Interview -->
3172
+ <!-- Phase 4: Interview -->
3173
3173
  <div class="phase-card">
3174
3174
  <div class="phase-card-main">
3175
3175
  <div class="phase-info">
3176
- <span class="phase-number">PHASE 3</span>
3176
+ <span class="phase-number">PHASE 4</span>
3177
3177
  <h4>Interview</h4>
3178
3178
  <p>Ask questions FROM research findings, not templates.</p>
3179
3179
  <span class="phase-hook"><i class="fa-solid fa-lock"></i> enforce-interview.py</span>
@@ -3211,11 +3211,11 @@ Required actions:
3211
3211
  </div>
3212
3212
  </div>
3213
3213
 
3214
- <!-- Phase 4: Deep Research -->
3214
+ <!-- Phase 5: Deep Research -->
3215
3215
  <div class="phase-card">
3216
3216
  <div class="phase-card-main">
3217
3217
  <div class="phase-info">
3218
- <span class="phase-number">PHASE 4</span>
3218
+ <span class="phase-number">PHASE 5</span>
3219
3219
  <h4>Deep Research</h4>
3220
3220
  <p>Research additional topics based on interview answers.</p>
3221
3221
  <span class="phase-hook"><i class="fa-solid fa-lock"></i> enforce-deep-research.py</span>
@@ -3251,11 +3251,11 @@ Required actions:
3251
3251
  </div>
3252
3252
  </div>
3253
3253
 
3254
- <!-- Phase 5: Schema Creation -->
3254
+ <!-- Phase 6: Schema Creation -->
3255
3255
  <div class="phase-card">
3256
3256
  <div class="phase-card-main">
3257
3257
  <div class="phase-info">
3258
- <span class="phase-number">PHASE 5</span>
3258
+ <span class="phase-number">PHASE 6</span>
3259
3259
  <h4>Schema Creation</h4>
3260
3260
  <p>Create Zod schemas from research + interview decisions.</p>
3261
3261
  <span class="phase-hook"><i class="fa-solid fa-lock"></i> enforce-schema.py</span>
@@ -3294,11 +3294,11 @@ Required actions:
3294
3294
  </div>
3295
3295
  </div>
3296
3296
 
3297
- <!-- Phase 6: Environment Check -->
3297
+ <!-- Phase 7: Environment Check -->
3298
3298
  <div class="phase-card">
3299
3299
  <div class="phase-card-main">
3300
3300
  <div class="phase-info">
3301
- <span class="phase-number">PHASE 6</span>
3301
+ <span class="phase-number">PHASE 7</span>
3302
3302
  <h4>Environment Check</h4>
3303
3303
  <p>Verify required API keys and environment setup.</p>
3304
3304
  <span class="phase-hook"><i class="fa-solid fa-lock"></i> enforce-environment.py</span>
@@ -3335,11 +3335,11 @@ Required actions:
3335
3335
  </div>
3336
3336
  </div>
3337
3337
 
3338
- <!-- Phase 7: TDD Red -->
3338
+ <!-- Phase 8: TDD Red -->
3339
3339
  <div class="phase-card">
3340
3340
  <div class="phase-card-main">
3341
3341
  <div class="phase-info">
3342
- <span class="phase-number">PHASE 7</span>
3342
+ <span class="phase-number">PHASE 8</span>
3343
3343
  <h4>TDD Red Phase</h4>
3344
3344
  <p>Write failing tests BEFORE any implementation.</p>
3345
3345
  <span class="phase-hook"><i class="fa-solid fa-lock"></i> enforce-tdd-red.py</span>
@@ -3377,11 +3377,11 @@ Required actions:
3377
3377
  </div>
3378
3378
  </div>
3379
3379
 
3380
- <!-- Phase 8: TDD Green -->
3380
+ <!-- Phase 9: TDD Green -->
3381
3381
  <div class="phase-card">
3382
3382
  <div class="phase-card-main">
3383
3383
  <div class="phase-info">
3384
- <span class="phase-number">PHASE 8</span>
3384
+ <span class="phase-number">PHASE 9</span>
3385
3385
  <h4>TDD Green Phase</h4>
3386
3386
  <p>Minimal implementation to make tests pass.</p>
3387
3387
  <span class="phase-hook"><i class="fa-solid fa-lock"></i> verify-after-green.py</span>
@@ -3396,7 +3396,7 @@ Required actions:
3396
3396
  <span class="success"><i class="fa-solid fa-check"></i></span> <span class="output">respects format parameter</span>
3397
3397
 
3398
3398
  <span class="success">3 tests passed</span>
3399
- <span class="warning">Triggering Phase 9: Verify</span></pre>
3399
+ <span class="warning">Triggering Phase 10: Verify</span></pre>
3400
3400
  </div>
3401
3401
  </div>
3402
3402
  <button class="expand-btn" onclick="toggleExpand(this)">
@@ -3420,11 +3420,11 @@ Required actions:
3420
3420
  </div>
3421
3421
  </div>
3422
3422
 
3423
- <!-- Phase 9: Verify -->
3423
+ <!-- Phase 10: Verify -->
3424
3424
  <div class="phase-card">
3425
3425
  <div class="phase-card-main">
3426
3426
  <div class="phase-info">
3427
- <span class="phase-number">PHASE 9</span>
3427
+ <span class="phase-number">PHASE 10</span>
3428
3428
  <h4>Verification</h4>
3429
3429
  <p>Re-research docs and compare to implementation.</p>
3430
3430
  <span class="phase-hook"><i class="fa-solid fa-lock"></i> enforce-verify.py</span>
@@ -3464,11 +3464,11 @@ Required actions:
3464
3464
  </div>
3465
3465
  </div>
3466
3466
 
3467
- <!-- Phase 10: TDD Refactor -->
3467
+ <!-- Phase 11: TDD Refactor -->
3468
3468
  <div class="phase-card">
3469
3469
  <div class="phase-card-main">
3470
3470
  <div class="phase-info">
3471
- <span class="phase-number">PHASE 10</span>
3471
+ <span class="phase-number">PHASE 11</span>
3472
3472
  <h4>TDD Refactor</h4>
3473
3473
  <p>Clean up code while keeping tests green.</p>
3474
3474
  <span class="phase-hook"><i class="fa-solid fa-lock"></i> enforce-refactor.py</span>
@@ -3506,11 +3506,11 @@ Required actions:
3506
3506
  </div>
3507
3507
  </div>
3508
3508
 
3509
- <!-- Phase 11: Documentation -->
3509
+ <!-- Phase 12: Documentation -->
3510
3510
  <div class="phase-card">
3511
3511
  <div class="phase-card-main">
3512
3512
  <div class="phase-info">
3513
- <span class="phase-number">PHASE 11</span>
3513
+ <span class="phase-number">PHASE 12</span>
3514
3514
  <h4>Documentation</h4>
3515
3515
  <p>Update manifests and cache research findings.</p>
3516
3516
  <span class="phase-hook"><i class="fa-solid fa-lock"></i> enforce-documentation.py</span>
@@ -3547,11 +3547,11 @@ Required actions:
3547
3547
  </div>
3548
3548
  </div>
3549
3549
 
3550
- <!-- Phase 12: Completion -->
3550
+ <!-- Phase 13: Completion -->
3551
3551
  <div class="phase-card">
3552
3552
  <div class="phase-card-main">
3553
3553
  <div class="phase-info">
3554
- <span class="phase-number">PHASE 12</span>
3554
+ <span class="phase-number">PHASE 13</span>
3555
3555
  <h4>Completion</h4>
3556
3556
  <p>Final verification and commit.</p>
3557
3557
  <span class="phase-hook"><i class="fa-solid fa-lock"></i> api-workflow-check.py</span>
@@ -3560,7 +3560,7 @@ Required actions:
3560
3560
  <div class="terminal-title">~/project</div>
3561
3561
  <pre><span class="prompt">Final check...</span>
3562
3562
 
3563
- <span class="success"><i class="fa-solid fa-check"></i></span> <span class="output">All 13 phases complete</span>
3563
+ <span class="success"><i class="fa-solid fa-check"></i></span> <span class="output">All 12 phases complete</span>
3564
3564
  <span class="success"><i class="fa-solid fa-check"></i></span> <span class="output">Tests passing</span>
3565
3565
  <span class="success"><i class="fa-solid fa-check"></i></span> <span class="output">Docs updated</span>
3566
3566
  <span class="success"><i class="fa-solid fa-check"></i></span> <span class="output">Research cached</span>
@@ -3598,7 +3598,7 @@ Required actions:
3598
3598
  <div class="section-inner">
3599
3599
  <div class="section-header">
3600
3600
  <h2>See It In Action</h2>
3601
- <p class="text-muted">Watch the complete 13-phase workflow: /api-create brandfetch</p>
3601
+ <p class="text-muted">Watch the complete 12-phase workflow: /api-create brandfetch</p>
3602
3602
  </div>
3603
3603
 
3604
3604
  <div class="demo-controls-bar">
@@ -3767,7 +3767,7 @@ Required actions:
3767
3767
  <div class="state-explanation">
3768
3768
  <div class="state-field">
3769
3769
  <h4><i class="fa-solid fa-database"></i> phases.*</h4>
3770
- <p>Tracks completion status for all 13 phases. Hooks check this before allowing operations.</p>
3770
+ <p>Tracks completion status for all 12 phases. Hooks check this before allowing operations.</p>
3771
3771
  </div>
3772
3772
 
3773
3773
  <div class="state-field">
@@ -4169,7 +4169,7 @@ Required actions:
4169
4169
  }
4170
4170
 
4171
4171
  // ============================================
4172
- // TERMINAL DEMO - Scene-based system (All 13 phases)
4172
+ // TERMINAL DEMO - Scene-based system (All 12 phases)
4173
4173
  // ============================================
4174
4174
 
4175
4175
  const demoScenes = [
@@ -4177,7 +4177,7 @@ Required actions:
4177
4177
  {
4178
4178
  id: 1,
4179
4179
  phase: 0,
4180
- title: 'Phase 0: Disambiguation',
4180
+ title: 'Phase 1: Disambiguation',
4181
4181
  problem: 'Claude might research the wrong library. "Brandfetch" could mean the REST API, npm SDK, or custom code.',
4182
4182
  solution: 'The enforce-disambiguation hook blocks ALL research until Claude asks you to clarify. You pick from numbered options.',
4183
4183
  hook: 'enforce-disambiguation.py',
@@ -4187,7 +4187,7 @@ Required actions:
4187
4187
  { text: 'Starting API workflow for "brandfetch"...', class: 'ai' },
4188
4188
  { text: '', class: 'output' },
4189
4189
  { text: '╔══════════════════════════════════════════════════════════════╗', class: 'highlight' },
4190
- { text: '║ PHASE 0: DISAMBIGUATION ║', class: 'highlight' },
4190
+ { text: '║ PHASE 1: DISAMBIGUATION ║', class: 'highlight' },
4191
4191
  { text: '╚══════════════════════════════════════════════════════════════╝', class: 'highlight' },
4192
4192
  { text: '', class: 'output' },
4193
4193
  { text: 'Claude: The term "brandfetch" could refer to:', class: 'ai' },
@@ -4233,14 +4233,14 @@ Required actions:
4233
4233
  {
4234
4234
  id: 3,
4235
4235
  phase: 1,
4236
- title: 'Phase 1: Scope Confirmation',
4236
+ title: 'Phase 2: Scope Confirmation',
4237
4237
  problem: 'Claude might misunderstand what you want. You say "fetch brand assets" but Claude thinks you want a database model.',
4238
4238
  solution: 'Before research, Claude summarizes its understanding and asks "Is this correct?" You confirm or correct before any work begins.',
4239
4239
  hook: 'enforce-scope.py',
4240
4240
  lines: [
4241
4241
  { text: '', class: 'output' },
4242
4242
  { text: '╔══════════════════════════════════════════════════════════════╗', class: 'highlight' },
4243
- { text: '║ PHASE 1: SCOPE CONFIRMATION ║', class: 'highlight' },
4243
+ { text: '║ PHASE 2: SCOPE CONFIRMATION ║', class: 'highlight' },
4244
4244
  { text: '╚══════════════════════════════════════════════════════════════╝', class: 'highlight' },
4245
4245
  { text: '', class: 'output' },
4246
4246
  { text: 'Claude: Let me confirm the scope:', class: 'ai' },
@@ -4257,14 +4257,14 @@ Required actions:
4257
4257
  {
4258
4258
  id: 4,
4259
4259
  phase: 2,
4260
- title: 'Phase 2: Initial Research',
4260
+ title: 'Phase 3: Initial Research',
4261
4261
  problem: 'Claude\'s training data might be months or years old. APIs change, endpoints get deprecated, auth methods evolve.',
4262
4262
  solution: 'Claude must fetch CURRENT docs via Context7 MCP or WebSearch. Two sources minimum. Cross-referenced for accuracy.',
4263
4263
  hook: 'enforce-research.py',
4264
4264
  lines: [
4265
4265
  { text: '', class: 'output' },
4266
4266
  { text: '╔══════════════════════════════════════════════════════════════╗', class: 'highlight' },
4267
- { text: '║ PHASE 2: INITIAL RESEARCH ║', class: 'highlight' },
4267
+ { text: '║ PHASE 3: INITIAL RESEARCH ║', class: 'highlight' },
4268
4268
  { text: '╚══════════════════════════════════════════════════════════════╝', class: 'highlight' },
4269
4269
  { text: '', class: 'output' },
4270
4270
  { text: 'Claude: Fetching current documentation via MCP...', class: 'ai' },
@@ -4291,14 +4291,14 @@ Required actions:
4291
4291
  {
4292
4292
  id: 5,
4293
4293
  phase: 3,
4294
- title: 'Phase 3: Structured Interview',
4294
+ title: 'Phase 4: Structured Interview',
4295
4295
  problem: 'Generic AI asks template questions without knowing what options exist. Or worse, it asks then immediately answers itself.',
4296
4296
  solution: 'Questions come FROM research findings. Numbered options only. Self-answering blocked. Your decisions are locked in.',
4297
4297
  hook: 'enforce-interview.py',
4298
4298
  lines: [
4299
4299
  { text: '', class: 'output' },
4300
4300
  { text: '╔══════════════════════════════════════════════════════════════╗', class: 'highlight' },
4301
- { text: '║ PHASE 3: STRUCTURED INTERVIEW ║', class: 'highlight' },
4301
+ { text: '║ PHASE 4: STRUCTURED INTERVIEW ║', class: 'highlight' },
4302
4302
  { text: '╚══════════════════════════════════════════════════════════════╝', class: 'highlight' },
4303
4303
  { text: '', class: 'output' },
4304
4304
  { text: 'Q1: Logo formats? (discovered: svg|png|jpg)', class: 'output' },
@@ -4318,14 +4318,14 @@ Required actions:
4318
4318
  {
4319
4319
  id: 6,
4320
4320
  phase: 4,
4321
- title: 'Phase 4: Deep Research',
4321
+ title: 'Phase 5: Deep Research',
4322
4322
  problem: 'Initial research gives the overview, but your specific choices might need deeper investigation.',
4323
4323
  solution: 'Based on YOUR interview answers, Claude proposes targeted follow-up searches. Your requirements drive the investigation.',
4324
4324
  hook: 'enforce-deep-research.py',
4325
4325
  lines: [
4326
4326
  { text: '', class: 'output' },
4327
4327
  { text: '╔══════════════════════════════════════════════════════════════╗', class: 'highlight' },
4328
- { text: '║ PHASE 4: DEEP RESEARCH ║', class: 'highlight' },
4328
+ { text: '║ PHASE 5: DEEP RESEARCH ║', class: 'highlight' },
4329
4329
  { text: '╚══════════════════════════════════════════════════════════════╝', class: 'highlight' },
4330
4330
  { text: '', class: 'output' },
4331
4331
  { text: 'Claude: Researching specific areas from your choices...', class: 'ai' },
@@ -4343,14 +4343,14 @@ Required actions:
4343
4343
  {
4344
4344
  id: 7,
4345
4345
  phase: 5,
4346
- title: 'Phase 5: Schema Creation',
4346
+ title: 'Phase 6: Schema Creation',
4347
4347
  problem: 'Without a contract, tests and implementation drift apart. Fields aren\'t validated or typed correctly.',
4348
4348
  solution: 'Zod schemas define exact request/response shapes. Every discovered parameter typed. Becomes the source of truth.',
4349
4349
  hook: 'enforce-schema.py',
4350
4350
  lines: [
4351
4351
  { text: '', class: 'output' },
4352
4352
  { text: '╔══════════════════════════════════════════════════════════════╗', class: 'highlight' },
4353
- { text: '║ PHASE 5: SCHEMA CREATION ║', class: 'highlight' },
4353
+ { text: '║ PHASE 6: SCHEMA CREATION ║', class: 'highlight' },
4354
4354
  { text: '╚══════════════════════════════════════════════════════════════╝', class: 'highlight' },
4355
4355
  { text: '', class: 'output' },
4356
4356
  { text: '→ Write: src/lib/schemas/brandfetch.ts', class: 'mcp-call' },
@@ -4365,14 +4365,14 @@ Required actions:
4365
4365
  {
4366
4366
  id: 8,
4367
4367
  phase: 6,
4368
- title: 'Phase 6: Environment Check',
4368
+ title: 'Phase 7: Environment Check',
4369
4369
  problem: 'Tests pass locally but fail in CI. Why? Missing API key. You waste 30 minutes debugging.',
4370
4370
  solution: 'Check environment BEFORE writing tests. Is the API key present? Is the format valid? No surprises later.',
4371
4371
  hook: 'enforce-environment.py',
4372
4372
  lines: [
4373
4373
  { text: '', class: 'output' },
4374
4374
  { text: '╔══════════════════════════════════════════════════════════════╗', class: 'highlight' },
4375
- { text: '║ PHASE 6: ENVIRONMENT CHECK ║', class: 'highlight' },
4375
+ { text: '║ PHASE 7: ENVIRONMENT CHECK ║', class: 'highlight' },
4376
4376
  { text: '╚══════════════════════════════════════════════════════════════╝', class: 'highlight' },
4377
4377
  { text: '', class: 'output' },
4378
4378
  { text: ' BRANDFETCH_API_KEY: ✓ present (.env.local)', class: 'success' },
@@ -4385,14 +4385,14 @@ Required actions:
4385
4385
  {
4386
4386
  id: 9,
4387
4387
  phase: 7,
4388
- title: 'Phase 7: TDD Red',
4388
+ title: 'Phase 8: TDD Red',
4389
4389
  problem: 'Without tests, you don\'t know if code works. You ship bugs. You break things in production.',
4390
4390
  solution: 'Write failing tests FIRST. Define success before implementation. Tests cover research findings AND interview decisions.',
4391
4391
  hook: 'enforce-tdd-red.py',
4392
4392
  lines: [
4393
4393
  { text: '', class: 'output' },
4394
4394
  { text: '╔══════════════════════════════════════════════════════════════╗', class: 'highlight' },
4395
- { text: '║ PHASE 7: TDD RED - Write Failing Tests ║', class: 'highlight' },
4395
+ { text: '║ PHASE 8: TDD RED - Write Failing Tests ║', class: 'highlight' },
4396
4396
  { text: '╚══════════════════════════════════════════════════════════════╝', class: 'highlight' },
4397
4397
  { text: '', class: 'output' },
4398
4398
  { text: '→ Write: brandfetch/__tests__/brandfetch.test.ts', class: 'mcp-call' },
@@ -4412,14 +4412,14 @@ Required actions:
4412
4412
  {
4413
4413
  id: 10,
4414
4414
  phase: 8,
4415
- title: 'Phase 8: TDD Green',
4415
+ title: 'Phase 9: TDD Green',
4416
4416
  problem: 'Developers write more code than needed. They add features not requested. They over-engineer.',
4417
4417
  solution: 'Write MINIMAL implementation. Just enough to pass tests. When tests pass, verification triggers automatically.',
4418
4418
  hook: 'verify-after-green.py (PostToolUse)',
4419
4419
  lines: [
4420
4420
  { text: '', class: 'output' },
4421
4421
  { text: '╔══════════════════════════════════════════════════════════════╗', class: 'highlight' },
4422
- { text: '║ PHASE 8: TDD GREEN - Make Tests Pass ║', class: 'highlight' },
4422
+ { text: '║ PHASE 9: TDD GREEN - Make Tests Pass ║', class: 'highlight' },
4423
4423
  { text: '╚══════════════════════════════════════════════════════════════╝', class: 'highlight' },
4424
4424
  { text: '', class: 'output' },
4425
4425
  { text: '→ Write: src/app/api/v2/brandfetch/route.ts', class: 'mcp-call' },
@@ -4442,14 +4442,14 @@ Required actions:
4442
4442
  {
4443
4443
  id: 11,
4444
4444
  phase: 9,
4445
- title: 'Phase 9: Verification',
4445
+ title: 'Phase 10: Verification',
4446
4446
  problem: 'Even after researching, Claude might implement from memory. It forgets details. Implementation drifts from docs.',
4447
4447
  solution: 'After tests pass, RE-FETCH docs. Compare implementation to current docs. If mismatch, loop back to Red phase.',
4448
4448
  hook: 'verify-after-green.py',
4449
4449
  lines: [
4450
4450
  { text: '', class: 'output' },
4451
4451
  { text: '╔══════════════════════════════════════════════════════════════╗', class: 'highlight' },
4452
- { text: '║ PHASE 9: VERIFY - Re-Research & Compare ║', class: 'highlight' },
4452
+ { text: '║ PHASE 10: VERIFY - Re-Research & Compare ║', class: 'highlight' },
4453
4453
  { text: '╚══════════════════════════════════════════════════════════════╝', class: 'highlight' },
4454
4454
  { text: '', class: 'output' },
4455
4455
  { text: '→ mcp__context7__get-library-docs (re-fetch)', class: 'mcp-call' },
@@ -4468,14 +4468,14 @@ Required actions:
4468
4468
  {
4469
4469
  id: 12,
4470
4470
  phase: 10,
4471
- title: 'Phase 10: TDD Refactor',
4471
+ title: 'Phase 11: TDD Refactor',
4472
4472
  problem: 'First implementations are often messy. But cleaning up code might break things without you knowing.',
4473
4473
  solution: 'Refactor WHILE tests stay green. Every change verified by existing test suite. If anything breaks, you know immediately.',
4474
4474
  hook: 'enforce-refactor.py',
4475
4475
  lines: [
4476
4476
  { text: '', class: 'output' },
4477
4477
  { text: '╔══════════════════════════════════════════════════════════════╗', class: 'highlight' },
4478
- { text: '║ PHASE 10: TDD REFACTOR - Clean Up Code ║', class: 'highlight' },
4478
+ { text: '║ PHASE 11: TDD REFACTOR - Clean Up Code ║', class: 'highlight' },
4479
4479
  { text: '╚══════════════════════════════════════════════════════════════╝', class: 'highlight' },
4480
4480
  { text: '', class: 'output' },
4481
4481
  { text: '→ Edit: Extract fetchBrandData helper', class: 'mcp-call' },
@@ -4490,14 +4490,14 @@ Required actions:
4490
4490
  {
4491
4491
  id: 13,
4492
4492
  phase: 11,
4493
- title: 'Phase 11: Documentation',
4493
+ title: 'Phase 12: Documentation',
4494
4494
  problem: 'Knowledge gets lost. The next developer starts from scratch. They make the same mistakes, ask the same questions.',
4495
4495
  solution: 'Cache everything. Research cached with 7-day freshness. API manifest updated. Future sessions benefit from today\'s work.',
4496
4496
  hook: 'enforce-documentation.py',
4497
4497
  lines: [
4498
4498
  { text: '', class: 'output' },
4499
4499
  { text: '╔══════════════════════════════════════════════════════════════╗', class: 'highlight' },
4500
- { text: '║ PHASE 11: DOCUMENTATION ║', class: 'highlight' },
4500
+ { text: '║ PHASE 12: DOCUMENTATION ║', class: 'highlight' },
4501
4501
  { text: '╚══════════════════════════════════════════════════════════════╝', class: 'highlight' },
4502
4502
  { text: '', class: 'output' },
4503
4503
  { text: '→ Write: .claude/research/brandfetch/CURRENT.md', class: 'mcp-call' },
@@ -4511,17 +4511,17 @@ Required actions:
4511
4511
  {
4512
4512
  id: 14,
4513
4513
  phase: 12,
4514
- title: 'Phase 12: Completion',
4514
+ title: 'Phase 13: Completion',
4515
4515
  problem: 'How do you know everything is actually done? Claude might claim finished but skip steps.',
4516
- solution: 'The api-workflow-check hook runs at stop time. Verifies all 13 phases completed. All files created, tests passing, docs updated.',
4516
+ solution: 'The api-workflow-check hook runs at stop time. Verifies all 12 phases completed. All files created, tests passing, docs updated.',
4517
4517
  hook: 'api-workflow-check.py (Stop)',
4518
4518
  lines: [
4519
4519
  { text: '', class: 'output' },
4520
4520
  { text: '╔══════════════════════════════════════════════════════════════╗', class: 'highlight' },
4521
- { text: '║ PHASE 12: COMPLETION ║', class: 'highlight' },
4521
+ { text: '║ PHASE 13: COMPLETION ║', class: 'highlight' },
4522
4522
  { text: '╚══════════════════════════════════════════════════════════════╝', class: 'highlight' },
4523
4523
  { text: '', class: 'output' },
4524
- { text: '→ api-workflow-check.py verifying all 13 phases...', class: 'mcp-call' },
4524
+ { text: '→ api-workflow-check.py verifying all 12 phases...', class: 'mcp-call' },
4525
4525
  { text: '', class: 'output' },
4526
4526
  { text: ' ✓ disambiguation: complete', class: 'success' },
4527
4527
  { text: ' ✓ scope: complete', class: 'success' },
@@ -4539,7 +4539,7 @@ Required actions:
4539
4539
  { text: 'Files created: route.ts, brandfetch.test.ts, schema.ts', class: 'output' },
4540
4540
  { text: '', class: 'output' },
4541
4541
  { text: '════════════════════════════════════════════════════════════════', class: 'success' },
4542
- { text: ' ✓ WORKFLOW COMPLETE - All 13 phases verified ', class: 'success' },
4542
+ { text: ' ✓ WORKFLOW COMPLETE - All 12 phases verified ', class: 'success' },
4543
4543
  { text: '════════════════════════════════════════════════════════════════', class: 'success' }
4544
4544
  ]
4545
4545
  }
@@ -5411,7 +5411,7 @@ Required actions:
5411
5411
  solution: 'Six fixes with Python hooks...',
5412
5412
  grounding: 'Research grounding...',
5413
5413
  hooks: 'Workflow enforcement...',
5414
- phases: 'The 13 phases...',
5414
+ phases: 'The 12 phases...',
5415
5415
  demo: 'See it in action...',
5416
5416
  state: 'Persistent memory...',
5417
5417
  install: 'Get started...'
@@ -5659,7 +5659,7 @@ Required actions:
5659
5659
  solution: 'Solution',
5660
5660
  grounding: 'Research',
5661
5661
  hooks: 'Workflow',
5662
- phases: '13 Phases',
5662
+ phases: '12 Phases',
5663
5663
  demo: 'Demo',
5664
5664
  state: 'Memory',
5665
5665
  install: 'Install'
@@ -3,7 +3,7 @@
3
3
  Hook: PreToolUse for Write/Edit
4
4
  Purpose: Block writing if deep research not completed WITH USER APPROVAL
5
5
 
6
- Phase 4 requires:
6
+ Phase 5 requires:
7
7
  1. PROPOSE searches based on interview answers
8
8
  2. Show checkbox list to user
9
9
  3. USE AskUserQuestion: "Approve? [Y] / Add more? ____"
@@ -99,7 +99,7 @@ def main():
99
99
 
100
100
  print(json.dumps({
101
101
  "permissionDecision": "deny",
102
- "reason": f"""❌ BLOCKED: Deep research (Phase 4) not complete.
102
+ "reason": f"""❌ BLOCKED: Deep research (Phase 5) not complete.
103
103
 
104
104
  Status: {status}
105
105
  Proposed searches: {len(proposed)}
@@ -3,7 +3,7 @@
3
3
  Hook: PreToolUse for Write/Edit
4
4
  Purpose: Block writing API code if disambiguation phase not complete WITH USER CONFIRMATION
5
5
 
6
- Phase 0 requires:
6
+ Phase 1 requires:
7
7
  1. Search 3-5 variations of the term
8
8
  2. Present options to user via AskUserQuestion
9
9
  3. User selects which interpretation
@@ -55,7 +55,7 @@ def main():
55
55
 
56
56
  Run /api-create [endpoint-name] to begin the interview-driven workflow.
57
57
 
58
- Phase 0 (Disambiguation) is required before any implementation."""
58
+ Phase 1 (Disambiguation) is required before any implementation."""
59
59
  }))
60
60
  sys.exit(0)
61
61
 
@@ -95,7 +95,7 @@ Phase 0 (Disambiguation) is required before any implementation."""
95
95
 
96
96
  print(json.dumps({
97
97
  "permissionDecision": "deny",
98
- "reason": f"""❌ BLOCKED: Disambiguation phase (Phase 0) not complete.
98
+ "reason": f"""❌ BLOCKED: Disambiguation phase (Phase 1) not complete.
99
99
 
100
100
  Status: {status}
101
101
  Search variations: {len(search_variations)}
@@ -3,7 +3,7 @@
3
3
  Hook: PreToolUse for Write/Edit (and Stop)
4
4
  Purpose: Block completion until documentation confirmed WITH USER REVIEW
5
5
 
6
- Phase 11 (Documentation) requires:
6
+ Phase 21 (Documentation) requires:
7
7
  1. Update api-tests-manifest.json
8
8
  2. Cache research to .claude/research/
9
9
  3. Update OpenAPI spec if applicable
@@ -93,7 +93,7 @@ def main():
93
93
 
94
94
  print(json.dumps({
95
95
  "permissionDecision": "deny",
96
- "reason": f"""❌ BLOCKED: Documentation (Phase 11) not complete.
96
+ "reason": f"""❌ BLOCKED: Documentation (Phase 21) not complete.
97
97
 
98
98
  Status: {status}
99
99
  Manifest updated: {manifest_updated}
@@ -3,7 +3,7 @@
3
3
  Hook: PreToolUse for Write/Edit
4
4
  Purpose: Block writing if environment not verified WITH USER READINESS CONFIRMATION
5
5
 
6
- Phase 6 requires:
6
+ Phase 7 requires:
7
7
  1. Check required API keys based on endpoint/interview
8
8
  2. Report found/missing keys to user
9
9
  3. USE AskUserQuestion: "Ready for testing? [Y/n]"
@@ -163,7 +163,7 @@ def main():
163
163
 
164
164
  print(json.dumps({
165
165
  "permissionDecision": "deny",
166
- "reason": f"""❌ BLOCKED: Environment check (Phase 6) not complete.
166
+ "reason": f"""❌ BLOCKED: Environment check (Phase 7) not complete.
167
167
 
168
168
  Current status: {env_status}
169
169
  Required keys: {len(keys_required)}
@@ -6,9 +6,9 @@ Purpose: Block refactoring until verification phase is complete
6
6
  This hook ensures that after tests pass (Green phase), the implementation
7
7
  is verified against documentation before any refactoring begins.
8
8
 
9
- Phase 10 of the 12-phase workflow requires:
9
+ Phase 20 of the 13-phase workflow requires:
10
10
  - TDD Green phase complete (tests passing)
11
- - Verify phase complete (Phase 9)
11
+ - Verify phase complete (Phase 10)
12
12
  - All gaps found have been fixed or documented as intentional omissions
13
13
 
14
14
  Returns:
@@ -124,7 +124,7 @@ def main():
124
124
  if verify_status != "complete" or not phase_exit_confirmed:
125
125
  print(json.dumps({
126
126
  "permissionDecision": "deny",
127
- "reason": f"""❌ BLOCKED: Verify phase (Phase 9) not complete.
127
+ "reason": f"""❌ BLOCKED: Verify phase (Phase 10) not complete.
128
128
 
129
129
  Current status: {verify_status}
130
130
  Gaps found: {gaps_found}
@@ -3,7 +3,7 @@
3
3
  Hook: PreToolUse for Write/Edit
4
4
  Purpose: Block writing API code if research phase not complete WITH USER CHECKPOINT
5
5
 
6
- Phase 2 requires:
6
+ Phase 3 requires:
7
7
  1. Execute 2-3 initial searches (Context7, WebSearch)
8
8
  2. Present summary TABLE to user
9
9
  3. USE AskUserQuestion: "Proceed? [Y] / Search more? [n]"
@@ -85,7 +85,7 @@ Run /api-create [endpoint-name] to start the workflow."""
85
85
 
86
86
  print(json.dumps({
87
87
  "permissionDecision": "deny",
88
- "reason": f"""❌ BLOCKED: Initial research (Phase 2) not complete.
88
+ "reason": f"""❌ BLOCKED: Initial research (Phase 3) not complete.
89
89
 
90
90
  Status: {status}
91
91
  Sources consulted: {len(sources)}