@champpaba/claude-agent-kit 1.5.1 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/CLAUDE.md +39 -13
- package/.claude/commands/csetup.md +82 -3
- package/.claude/commands/pageplan.md +233 -6
- package/.claude/lib/agent-executor.md +449 -0
- package/.claude/lib/detailed-guides/incremental-testing.md +460 -0
- package/.claude/lib/task-analyzer.md +398 -2
- package/.claude/templates/phase-templates.json +50 -1
- package/README.md +125 -39
- package/package.json +1 -1
package/.claude/CLAUDE.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# CLAUDE.md
|
|
2
2
|
|
|
3
3
|
> **Navigation Hub for AI Agents**
|
|
4
|
-
> **Template Version:** 1.
|
|
5
|
-
> **Latest:**
|
|
4
|
+
> **Template Version:** 1.6.0 - Universal Multi-Agent Template
|
|
5
|
+
> **Latest:** Incremental Testing - Milestone-based validation for high-risk tasks with round-based retry
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -51,8 +51,10 @@ Universal, framework-agnostic template for AI-assisted development.
|
|
|
51
51
|
- `/agentsetup` - Auto-detect tech stack and generate best practices
|
|
52
52
|
|
|
53
53
|
**Page Planning (UI Tasks):**
|
|
54
|
-
- `/pageplan @prd.md @brief.md` - **
|
|
55
|
-
- Output: `openspec/changes/{id}/page-plan.md` (component reuse,
|
|
54
|
+
- `/pageplan @prd.md @brief.md` - **ENHANCED v1.4.0!** Generate page structure & conversion-optimized content
|
|
55
|
+
- Output: `openspec/changes/{id}/page-plan.md` (component reuse, buyer avatar, conversion copy, asset checklist)
|
|
56
|
+
- **NEW:** Buyer avatar analysis (Eugene Schwartz framework) for marketing pages
|
|
57
|
+
- **NEW:** Conversion-optimized content (pain → promise → CTA)
|
|
56
58
|
- Used by: uxui-frontend agent (auto-reads in STEP 0.5)
|
|
57
59
|
|
|
58
60
|
**OpenSpec Multi-Agent Workflow:**
|
|
@@ -70,12 +72,13 @@ Universal, framework-agnostic template for AI-assisted development.
|
|
|
70
72
|
- Level 2: `.claude/contexts/domain/{project}/README.md` (Project Overview)
|
|
71
73
|
- Level 3: `.claude/contexts/domain/{project}/best-practices/index.md` (Best Practices Registry)
|
|
72
74
|
|
|
73
|
-
|
|
75
|
+
**Implementation Logic:**
|
|
74
76
|
- `@/.claude/lib/README.md` - Implementation logic overview
|
|
75
|
-
- `@/.claude/lib/agent-executor.md` - Agent retry & escalation logic (used by /cdev)
|
|
77
|
+
- `@/.claude/lib/agent-executor.md` - Agent retry & escalation logic (used by /cdev) + 🆕 Incremental testing execution (v1.6.0)
|
|
76
78
|
- `@/.claude/lib/tdd-classifier.md` - TDD classification logic (used by /csetup)
|
|
77
|
-
- `@/.claude/lib/
|
|
78
|
-
- `@/.claude/lib/
|
|
79
|
+
- `@/.claude/lib/task-analyzer.md` - 🆕 Task analysis with milestone generation (v1.6.0)
|
|
80
|
+
- `@/.claude/lib/flags-updater.md` - Progress tracking protocol (Main Claude updates flags.json)
|
|
81
|
+
- `@/.claude/lib/agent-router.md` - Mandatory agent routing rules (enforce delegation)
|
|
79
82
|
- `@/.claude/contexts/patterns/agent-discovery.md` - Shared agent discovery flow
|
|
80
83
|
|
|
81
84
|
---
|
|
@@ -115,15 +118,24 @@ Universal, framework-agnostic template for AI-assisted development.
|
|
|
115
118
|
|
|
116
119
|
---
|
|
117
120
|
|
|
118
|
-
## 📋 Page Planning System
|
|
121
|
+
## 📋 Page Planning System (v1.4.0 - Conversion-Optimized)
|
|
119
122
|
|
|
120
123
|
**→ See:** `@/.claude/lib/detailed-guides/page-planning.md` for complete guide
|
|
121
124
|
|
|
122
125
|
**Quick Summary:**
|
|
123
|
-
- **Problem:** Agents duplicate components (Navbar 3x), use random colors, lorem ipsum content
|
|
124
|
-
- **Solution:** `/pageplan @prd.md @brief.md` → Generates `openspec/changes/{id}/page-plan.md` with
|
|
125
|
-
-
|
|
126
|
-
- **
|
|
126
|
+
- **Problem:** Agents duplicate components (Navbar 3x), use random colors, lorem ipsum content, **generic copy that doesn't convert**
|
|
127
|
+
- **Solution:** `/pageplan @prd.md @brief.md` → Generates `openspec/changes/{id}/page-plan.md` with:
|
|
128
|
+
- Component reuse plan ✅ (prevent duplicates)
|
|
129
|
+
- **Buyer avatar analysis** 🆕 (Eugene Schwartz framework)
|
|
130
|
+
- **Conversion-optimized content** 🆕 (pain → promise → CTA)
|
|
131
|
+
- Asset checklist ✅ (performance-optimized)
|
|
132
|
+
- **Benefits:**
|
|
133
|
+
- Prevents duplicates, ensures design consistency
|
|
134
|
+
- **Real content from PRD with conversion psychology** 🆕
|
|
135
|
+
- **2-5x better conversion rates** (pain-based headlines vs generic)
|
|
136
|
+
- 25% faster (search + copy strategy done once upfront)
|
|
137
|
+
- **Use for:** Landing pages, marketing sites, product pages (auto-detects marketing vs dashboard)
|
|
138
|
+
- **Skips for:** Dashboards, admin panels, backend/database work (no buyer avatar needed)
|
|
127
139
|
|
|
128
140
|
---
|
|
129
141
|
|
|
@@ -139,6 +151,20 @@ Universal, framework-agnostic template for AI-assisted development.
|
|
|
139
151
|
|
|
140
152
|
---
|
|
141
153
|
|
|
154
|
+
## 🔄 Incremental Testing (v1.6.0)
|
|
155
|
+
|
|
156
|
+
**→ See:** `@/.claude/lib/detailed-guides/incremental-testing.md` for complete guide
|
|
157
|
+
|
|
158
|
+
**Quick Summary:**
|
|
159
|
+
- **Problem:** All-or-nothing testing → bugs found at scale (1000 records) → hard to debug, expensive rework
|
|
160
|
+
- **Solution:** Milestone-based validation → Test 1 record → 10 → errors → scale → catch bugs early (75% faster debug)
|
|
161
|
+
- **3 Patterns:** Backend API (4 milestones), Complex Form (3 milestones), Database Migration (3 milestones)
|
|
162
|
+
- **Round-based Retry:** 2 attempts → Main Claude intervention (hints vs ask human) → new round (unlimited)
|
|
163
|
+
- **Detection:** Auto-triggered for Risk=HIGH OR (Risk=MEDIUM + Complexity≥7) OR External API OR Data-intensive (~20-30% of tasks)
|
|
164
|
+
- **Benefits:** 60-70% rework reduction, 40-50% net speedup, 90% success rate with progressive confidence
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
142
168
|
## 🤖 Agent System
|
|
143
169
|
|
|
144
170
|
**→ See:** `@/.claude/lib/detailed-guides/agent-system.md` for complete guide
|
|
@@ -201,6 +201,10 @@ for (const task of tasks) {
|
|
|
201
201
|
// Sort by priority (CRITICAL → HIGH → MEDIUM → LOW)
|
|
202
202
|
analyzedTasks.sort((a, b) => b.priority.score - a.priority.score)
|
|
203
203
|
|
|
204
|
+
// Calculate testing strategy stats (NEW in v1.4.0)
|
|
205
|
+
const incrementalTasks = analyzedTasks.filter(t => t.testingStrategy?.type === 'incremental')
|
|
206
|
+
const totalMilestones = incrementalTasks.reduce((sum, t) => sum + (t.testingStrategy?.milestones?.length || 0), 0)
|
|
207
|
+
|
|
204
208
|
// Store for phases.md generation
|
|
205
209
|
const taskAnalysis = {
|
|
206
210
|
tasks: analyzedTasks,
|
|
@@ -219,7 +223,11 @@ const taskAnalysis = {
|
|
|
219
223
|
},
|
|
220
224
|
researchRequired: analyzedTasks.filter(t => t.research?.required).length,
|
|
221
225
|
subtasksExpanded: analyzedTasks.filter(t => t.subtasks.length > 0).length,
|
|
222
|
-
averageComplexity: (analyzedTasks.reduce((sum, t) => sum + t.complexity.score, 0) / analyzedTasks.length).toFixed(1)
|
|
226
|
+
averageComplexity: (analyzedTasks.reduce((sum, t) => sum + t.complexity.score, 0) / analyzedTasks.length).toFixed(1),
|
|
227
|
+
// NEW: Incremental Testing stats
|
|
228
|
+
incrementalTesting: incrementalTasks.length,
|
|
229
|
+
standardTesting: analyzedTasks.length - incrementalTasks.length,
|
|
230
|
+
totalMilestones: totalMilestones
|
|
223
231
|
}
|
|
224
232
|
}
|
|
225
233
|
```
|
|
@@ -244,6 +252,13 @@ const taskAnalysis = {
|
|
|
244
252
|
⚠️ MEDIUM risk: 3 tasks
|
|
245
253
|
✅ LOW risk: 3 tasks
|
|
246
254
|
|
|
255
|
+
🔄 Testing Strategy (NEW in v1.4.0):
|
|
256
|
+
🔄 Incremental: 3 tasks (11 milestones total)
|
|
257
|
+
→ Payment integration (4 milestones)
|
|
258
|
+
→ Auth system (4 milestones)
|
|
259
|
+
→ User data migration (3 milestones)
|
|
260
|
+
▶️ Standard: 5 tasks
|
|
261
|
+
|
|
247
262
|
🔬 Research Required: 2 tasks
|
|
248
263
|
- React Query v5 migration (15 min)
|
|
249
264
|
- Stripe payment best practices (15 min)
|
|
@@ -360,7 +375,7 @@ const allPhases = [...researchPhases, ...phaseSections]
|
|
|
360
375
|
|
|
361
376
|
---
|
|
362
377
|
|
|
363
|
-
## 📊 Task Analysis Summary (v1.
|
|
378
|
+
## 📊 Task Analysis Summary (v1.4.0 - Incremental Testing)
|
|
364
379
|
|
|
365
380
|
**Analyzed Tasks:** {taskAnalysis.summary.total}
|
|
366
381
|
**Average Complexity:** {taskAnalysis.summary.averageComplexity}/10
|
|
@@ -376,6 +391,10 @@ const allPhases = [...researchPhases, ...phaseSections]
|
|
|
376
391
|
- ⚠️ MEDIUM risk: {taskAnalysis.summary.risk.medium} tasks
|
|
377
392
|
- ✅ LOW risk: {taskAnalysis.summary.risk.low} tasks
|
|
378
393
|
|
|
394
|
+
**Testing Strategy:** (NEW in v1.4.0)
|
|
395
|
+
- 🔄 Incremental: {taskAnalysis.summary.incrementalTesting} tasks ({taskAnalysis.summary.totalMilestones} milestones)
|
|
396
|
+
- ▶️ Standard: {taskAnalysis.summary.standardTesting} tasks
|
|
397
|
+
|
|
379
398
|
**Research Phases:** {taskAnalysis.summary.researchRequired} added
|
|
380
399
|
**Subtasks Expanded:** {taskAnalysis.summary.subtasksExpanded} tasks
|
|
381
400
|
|
|
@@ -435,7 +454,10 @@ ${allPhases.map((phaseSection, index) => {
|
|
|
435
454
|
)
|
|
436
455
|
|
|
437
456
|
let metadata = ''
|
|
457
|
+
let milestonesSection = ''
|
|
458
|
+
|
|
438
459
|
if (matchingTask) {
|
|
460
|
+
// Standard metadata
|
|
439
461
|
metadata = `
|
|
440
462
|
**Task Metadata (TaskMaster Analysis):**
|
|
441
463
|
- **Complexity:** ${matchingTask.complexity.score}/10 (${matchingTask.complexity.level})
|
|
@@ -452,9 +474,66 @@ ${matchingTask.risk.mitigation.length > 0 ? ` - Mitigation:\n${matchingTask.ris
|
|
|
452
474
|
|
|
453
475
|
${matchingTask.subtasks.length > 0 ? `**Subtasks:**\n${matchingTask.subtasks.map(st => ` - ${st.id}: ${st.description} (${st.estimatedTime} min)`).join('\n')}\n` : ''}
|
|
454
476
|
`
|
|
477
|
+
|
|
478
|
+
// NEW: Incremental Testing Milestones (v1.4.0)
|
|
479
|
+
if (matchingTask.testingStrategy?.type === 'incremental' && matchingTask.testingStrategy.milestones) {
|
|
480
|
+
metadata += `
|
|
481
|
+
**Testing Strategy:** 🔄 INCREMENTAL
|
|
482
|
+
- **Reason:** ${matchingTask.testingStrategy.reason}
|
|
483
|
+
- **Total Milestones:** ${matchingTask.testingStrategy.milestones.length}
|
|
484
|
+
|
|
485
|
+
`
|
|
486
|
+
|
|
487
|
+
// Generate milestone subsections
|
|
488
|
+
milestonesSection = matchingTask.testingStrategy.milestones.map(milestone => `
|
|
489
|
+
#### Milestone ${milestone.id}/${matchingTask.testingStrategy.milestones.length}: ${milestone.name}
|
|
490
|
+
|
|
491
|
+
**Test Scope:** ${milestone.testScope}
|
|
492
|
+
**Estimated Time:** ${milestone.estimatedTime} min
|
|
493
|
+
**Retry Limit:** ${milestone.retryLimit} attempts
|
|
494
|
+
|
|
495
|
+
**Exit Criteria:**
|
|
496
|
+
${milestone.exitCriteria.map(criterion => `- [ ] ${criterion}`).join('\n')}
|
|
497
|
+
|
|
498
|
+
**Instructions for Agent:**
|
|
499
|
+
1. **Implement:** ${milestone.name}
|
|
500
|
+
2. **Test:** ${milestone.testScope}
|
|
501
|
+
3. **Validate:** Check ALL exit criteria above
|
|
502
|
+
4. **Report results in this format:**
|
|
503
|
+
|
|
504
|
+
\`\`\`
|
|
505
|
+
## Milestone ${milestone.id} Results
|
|
506
|
+
|
|
507
|
+
**Implementation Summary:**
|
|
508
|
+
[Brief description of what was implemented]
|
|
509
|
+
|
|
510
|
+
**Test Results:**
|
|
511
|
+
${milestone.exitCriteria.map(criterion => `- [ ] ${criterion} - [PASS/FAIL] - [Brief explanation]`).join('\n')}
|
|
512
|
+
|
|
513
|
+
**Issues Found (if any):**
|
|
514
|
+
[List any issues encountered]
|
|
515
|
+
|
|
516
|
+
**Conclusion:**
|
|
517
|
+
[PASS → Ready for Milestone ${milestone.id + 1}]
|
|
518
|
+
[FAIL → Need to fix [X] before retry]
|
|
519
|
+
\`\`\`
|
|
520
|
+
|
|
521
|
+
5. **IF FAILED:** Debug issues → Retry (max ${milestone.retryLimit} attempts)
|
|
522
|
+
6. **IF ALL RETRIES FAIL:** Escalate to Main Claude for guidance
|
|
523
|
+
7. **IF PASSED:** Proceed to ${milestone.id < matchingTask.testingStrategy.milestones.length ? `Milestone ${milestone.id + 1}` : 'next phase'}
|
|
524
|
+
|
|
525
|
+
---
|
|
526
|
+
`).join('\n')
|
|
527
|
+
} else if (matchingTask.testingStrategy?.type === 'standard') {
|
|
528
|
+
metadata += `
|
|
529
|
+
**Testing Strategy:** ▶️ STANDARD
|
|
530
|
+
- **Reason:** ${matchingTask.testingStrategy.reason}
|
|
531
|
+
|
|
532
|
+
`
|
|
533
|
+
}
|
|
455
534
|
}
|
|
456
535
|
|
|
457
|
-
return `${phaseSection}\n${metadata}`
|
|
536
|
+
return `${phaseSection}\n${metadata}${milestonesSection}`
|
|
458
537
|
}).join('\n---\n\n')}
|
|
459
538
|
|
|
460
539
|
---
|
|
@@ -76,6 +76,28 @@ const contextFiles = [
|
|
|
76
76
|
// Read all context
|
|
77
77
|
let context = contextFiles.map(readFile).join('\n\n---\n\n')
|
|
78
78
|
|
|
79
|
+
// 🆕 Extract individual content for buyer avatar analysis (STEP 3.5)
|
|
80
|
+
let proposalContent = ''
|
|
81
|
+
let briefContent = ''
|
|
82
|
+
let tasksContent = ''
|
|
83
|
+
|
|
84
|
+
// Read proposal separately if exists
|
|
85
|
+
if (fileExists(proposalPath)) {
|
|
86
|
+
proposalContent = Read(proposalPath)
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// Read tasks.md if exists (for marketing page detection)
|
|
90
|
+
const tasksPath = `openspec/changes/${changeId}/tasks.md`
|
|
91
|
+
if (fileExists(tasksPath)) {
|
|
92
|
+
tasksContent = Read(tasksPath)
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// Extract brief from user files
|
|
96
|
+
const briefFile = userFiles.find(f => f.toLowerCase().includes('brief'))
|
|
97
|
+
if (briefFile && fileExists(briefFile)) {
|
|
98
|
+
briefContent = Read(briefFile)
|
|
99
|
+
}
|
|
100
|
+
|
|
79
101
|
// 🆕 Load design tokens (lightweight)
|
|
80
102
|
if (fileExists(tokensPath)) {
|
|
81
103
|
const tokens = JSON.parse(Read(tokensPath))
|
|
@@ -119,9 +141,84 @@ for (const pattern of searchPatterns) {
|
|
|
119
141
|
}
|
|
120
142
|
```
|
|
121
143
|
|
|
122
|
-
### STEP
|
|
144
|
+
### STEP 3.5: Buyer Avatar Analysis (NEW - Conversion Optimization)
|
|
145
|
+
|
|
146
|
+
> **Purpose:** Extract buyer psychology to generate conversion-optimized copy (inspired by Eugene Schwartz framework)
|
|
147
|
+
|
|
148
|
+
```typescript
|
|
149
|
+
// Only analyze if this is a marketing/landing page
|
|
150
|
+
const isMarketingPage = tasksContent.toLowerCase().match(/(landing|marketing|homepage|product page|sales)/i)
|
|
151
|
+
|
|
152
|
+
let buyerAvatar = null
|
|
153
|
+
|
|
154
|
+
if (isMarketingPage && (proposalContent || briefContent)) {
|
|
155
|
+
output(`
|
|
156
|
+
🎯 Detecting marketing page - analyzing buyer psychology...
|
|
157
|
+
`)
|
|
158
|
+
|
|
159
|
+
const avatarPrompt = `
|
|
160
|
+
You are a conversion copywriter analyzing a product to understand the target buyer.
|
|
161
|
+
|
|
162
|
+
Context:
|
|
163
|
+
${proposalContent || ''}
|
|
164
|
+
${briefContent || ''}
|
|
165
|
+
|
|
166
|
+
Task: Extract buyer psychology using Eugene Schwartz's market awareness framework.
|
|
167
|
+
|
|
168
|
+
Return JSON:
|
|
169
|
+
{
|
|
170
|
+
"demographics": {
|
|
171
|
+
"age_range": "string",
|
|
172
|
+
"job_role": "string",
|
|
173
|
+
"description": "string"
|
|
174
|
+
},
|
|
175
|
+
"psychographics": {
|
|
176
|
+
"top_pain_points": ["string", "string", "string"],
|
|
177
|
+
"secret_desires": "string (what they truly want beyond features)",
|
|
178
|
+
"decision_triggers": "string (what makes them buy NOW)",
|
|
179
|
+
"dominant_emotion": "fear" | "aspiration" | "frustration" | "urgency"
|
|
180
|
+
},
|
|
181
|
+
"market_awareness": "unaware" | "problem_aware" | "solution_aware" | "product_aware" | "most_aware",
|
|
182
|
+
"messaging_tone": "B2B" | "B2C",
|
|
183
|
+
"messaging_strategy": {
|
|
184
|
+
"hero_hook": "string (pain-based headline angle)",
|
|
185
|
+
"value_prop_focus": "string (primary benefit to emphasize)",
|
|
186
|
+
"cta_angle": "string (decision trigger for CTA)"
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
If insufficient context, return { "has_context": false }
|
|
191
|
+
`
|
|
192
|
+
|
|
193
|
+
buyerAvatar = await LLM({
|
|
194
|
+
prompt: avatarPrompt,
|
|
195
|
+
response_format: 'json',
|
|
196
|
+
temperature: 0.3
|
|
197
|
+
})
|
|
198
|
+
|
|
199
|
+
if (buyerAvatar.has_context === false) {
|
|
200
|
+
warn(`⚠️ Insufficient context for buyer avatar - will generate generic copy`)
|
|
201
|
+
buyerAvatar = null
|
|
202
|
+
} else {
|
|
203
|
+
output(`
|
|
204
|
+
✅ Buyer Avatar Analyzed:
|
|
205
|
+
- Pain Points: ${buyerAvatar.psychographics.top_pain_points.slice(0, 2).join(', ')}
|
|
206
|
+
- Market Awareness: ${buyerAvatar.market_awareness}
|
|
207
|
+
- Tone: ${buyerAvatar.messaging_tone}
|
|
208
|
+
`)
|
|
209
|
+
}
|
|
210
|
+
} else {
|
|
211
|
+
output(`
|
|
212
|
+
ℹ️ Non-marketing page detected - skipping buyer avatar analysis
|
|
213
|
+
`)
|
|
214
|
+
}
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
### STEP 4: Analyze & Generate Plan (ENHANCED with Conversion Copy)
|
|
123
220
|
|
|
124
|
-
Based on context + found components, generate:
|
|
221
|
+
Based on context + found components + buyer avatar (if available), generate:
|
|
125
222
|
|
|
126
223
|
```markdown
|
|
127
224
|
# Page Plan: [Page Name]
|
|
@@ -487,7 +584,52 @@ className="hover:scale-105 transform"
|
|
|
487
584
|
|
|
488
585
|
---
|
|
489
586
|
|
|
490
|
-
## 3.
|
|
587
|
+
## 3. 🎯 Target Audience & Conversion Strategy (if marketing page)
|
|
588
|
+
|
|
589
|
+
${buyerAvatar ? `
|
|
590
|
+
> **Auto-generated from buyer avatar analysis (Eugene Schwartz framework)**
|
|
591
|
+
|
|
592
|
+
### Buyer Profile
|
|
593
|
+
|
|
594
|
+
**Demographics:**
|
|
595
|
+
- Age Range: ${buyerAvatar.demographics.age_range}
|
|
596
|
+
- Job Role: ${buyerAvatar.demographics.job_role}
|
|
597
|
+
- Description: ${buyerAvatar.demographics.description}
|
|
598
|
+
|
|
599
|
+
**Psychographics:**
|
|
600
|
+
- **Top Pain Points:**
|
|
601
|
+
${buyerAvatar.psychographics.top_pain_points.map(p => `- ${p}`).join('\n ')}
|
|
602
|
+
- **Secret Desires:** ${buyerAvatar.psychographics.secret_desires}
|
|
603
|
+
- **Decision Triggers:** ${buyerAvatar.psychographics.decision_triggers}
|
|
604
|
+
- **Dominant Emotion:** ${buyerAvatar.psychographics.dominant_emotion}
|
|
605
|
+
|
|
606
|
+
**Market Awareness:** ${buyerAvatar.market_awareness}
|
|
607
|
+
- Messaging should be: ${getAwarenessGuidance(buyerAvatar.market_awareness)}
|
|
608
|
+
|
|
609
|
+
**Messaging Tone:** ${buyerAvatar.messaging_tone} ${buyerAvatar.messaging_tone === 'B2B' ? '(Logic + ROI + Authority)' : '(Emotion + Transformation + Identity)'}
|
|
610
|
+
|
|
611
|
+
---
|
|
612
|
+
|
|
613
|
+
### Conversion Framework
|
|
614
|
+
|
|
615
|
+
**Hero Section Strategy:**
|
|
616
|
+
- **Hook Angle:** ${buyerAvatar.messaging_strategy.hero_hook}
|
|
617
|
+
- **Value Prop Focus:** ${buyerAvatar.messaging_strategy.value_prop_focus}
|
|
618
|
+
- **CTA Angle:** ${buyerAvatar.messaging_strategy.cta_angle}
|
|
619
|
+
|
|
620
|
+
**Content Guidelines:**
|
|
621
|
+
- Lead with pain point (not features)
|
|
622
|
+
- Feature → Benefit → Emotional payoff translation
|
|
623
|
+
- Use ${buyerAvatar.psychographics.dominant_emotion}-based triggers
|
|
624
|
+
- Social proof with specific results (not generic testimonials)
|
|
625
|
+
|
|
626
|
+
---
|
|
627
|
+
` : `
|
|
628
|
+
> Skipped (non-marketing page)
|
|
629
|
+
|
|
630
|
+
`}
|
|
631
|
+
|
|
632
|
+
## 4. 📦 Assets to Prepare (Performance-Optimized)
|
|
491
633
|
|
|
492
634
|
> **Performance Note:** Follow image optimization best practices for faster load times and better SEO.
|
|
493
635
|
> See: `.claude/contexts/patterns/performance-optimization.md`
|
|
@@ -540,7 +682,72 @@ className="hover:scale-105 transform"
|
|
|
540
682
|
|
|
541
683
|
---
|
|
542
684
|
|
|
543
|
-
##
|
|
685
|
+
## 5. 📝 Content Draft (${buyerAvatar ? 'Conversion-Optimized' : 'AI-Generated'})
|
|
686
|
+
|
|
687
|
+
${buyerAvatar ? `
|
|
688
|
+
> **Generated using buyer avatar insights for conversion optimization**
|
|
689
|
+
|
|
690
|
+
### Hero Section
|
|
691
|
+
|
|
692
|
+
**Headline (Pain Hook):**
|
|
693
|
+
"[${buyerAvatar.messaging_strategy.hero_hook}]"
|
|
694
|
+
|
|
695
|
+
_Strategy: Lead with biggest pain point from avatar analysis_
|
|
696
|
+
_Length: 8-12 words, emotional trigger: ${buyerAvatar.psychographics.dominant_emotion}_
|
|
697
|
+
|
|
698
|
+
**Subheadline (Promise + Benefit):**
|
|
699
|
+
"[Focus on ${buyerAvatar.messaging_strategy.value_prop_focus}]"
|
|
700
|
+
|
|
701
|
+
_Strategy: Concrete benefit + emotional payoff_
|
|
702
|
+
_Length: 15-25 words_
|
|
703
|
+
|
|
704
|
+
**CTA (Decision Trigger):**
|
|
705
|
+
"[${buyerAvatar.messaging_strategy.cta_angle}]"
|
|
706
|
+
|
|
707
|
+
_Strategy: Action verb + outcome/time-based urgency_
|
|
708
|
+
_Example: "See Results in 5 Minutes" or "Start Your Free Trial"_
|
|
709
|
+
|
|
710
|
+
---
|
|
711
|
+
|
|
712
|
+
### Value Proposition Section
|
|
713
|
+
|
|
714
|
+
**How to Structure:**
|
|
715
|
+
For each feature, translate to buyer language:
|
|
716
|
+
|
|
717
|
+
**Feature 1: [Technical feature name]**
|
|
718
|
+
- **What User Gets:** [Practical benefit]
|
|
719
|
+
- **Emotional Payoff:** [How it makes them feel - addresses pain point: ${buyerAvatar.psychographics.top_pain_points[0]}]
|
|
720
|
+
- **Copy:** "[Benefit-first description, NOT feature dump]"
|
|
721
|
+
|
|
722
|
+
**Example:**
|
|
723
|
+
❌ Bad: "Advanced analytics dashboard with real-time data"
|
|
724
|
+
✅ Good: "See exactly where projects are stuck—before your boss asks" (addresses pain: missed deadlines)
|
|
725
|
+
|
|
726
|
+
---
|
|
727
|
+
|
|
728
|
+
### Social Proof & Trust Section
|
|
729
|
+
|
|
730
|
+
**Strategy:** Use ${buyerAvatar.messaging_tone === 'B2B' ? 'logic-based proof (ROI, case studies, metrics)' : 'emotional proof (transformations, identity, belonging)'}
|
|
731
|
+
|
|
732
|
+
**Testimonial Template:**
|
|
733
|
+
- Before state (pain point): "${buyerAvatar.psychographics.top_pain_points[0]}"
|
|
734
|
+
- After state (resolution): "[Specific result]"
|
|
735
|
+
- Attribution: [Name, Company/Role]
|
|
736
|
+
|
|
737
|
+
**Risk Reversal:**
|
|
738
|
+
- Address objection: "${buyerAvatar.psychographics.decision_triggers}"
|
|
739
|
+
- Offer: [Free trial / Money-back guarantee / No credit card required]
|
|
740
|
+
|
|
741
|
+
---
|
|
742
|
+
|
|
743
|
+
### Call-to-Action (Final)
|
|
744
|
+
|
|
745
|
+
**CTA Copy:** "[Repeat hero CTA or variation]"
|
|
746
|
+
**Supporting Text:** "[Reinforce ${buyerAvatar.messaging_strategy.value_prop_focus}]"
|
|
747
|
+
**Urgency (optional):** ${buyerAvatar.psychographics.dominant_emotion === 'urgency' ? '[Add time-based urgency]' : '[Social proof count or limited offer]'}
|
|
748
|
+
|
|
749
|
+
` : `
|
|
750
|
+
> **Standard AI-generated content (non-marketing page)**
|
|
544
751
|
|
|
545
752
|
### [Section Name]
|
|
546
753
|
|
|
@@ -548,6 +755,7 @@ className="hover:scale-105 transform"
|
|
|
548
755
|
_([length] chars - based on [source])_
|
|
549
756
|
|
|
550
757
|
[Repeat for all content elements]
|
|
758
|
+
`}
|
|
551
759
|
|
|
552
760
|
---
|
|
553
761
|
|
|
@@ -559,7 +767,7 @@ _([length] chars - based on [source])_
|
|
|
559
767
|
|
|
560
768
|
---
|
|
561
769
|
|
|
562
|
-
##
|
|
770
|
+
## 6. Design Notes
|
|
563
771
|
|
|
564
772
|
**Design System Files:**
|
|
565
773
|
- Tokens (lightweight): \`design-system/STYLE_TOKENS.json\`
|
|
@@ -577,7 +785,7 @@ _([length] chars - based on [source])_
|
|
|
577
785
|
- Use theme tokens (text-foreground/70), NOT hardcoded colors
|
|
578
786
|
- Use spacing scale (p-4, p-6), NOT arbitrary values (p-5)
|
|
579
787
|
|
|
580
|
-
##
|
|
788
|
+
## 7. Implementation Notes
|
|
581
789
|
|
|
582
790
|
### Component Imports (Reference)
|
|
583
791
|
\`\`\`tsx
|
|
@@ -664,6 +872,25 @@ Result:
|
|
|
664
872
|
|
|
665
873
|
---
|
|
666
874
|
|
|
875
|
+
## Helper Functions
|
|
876
|
+
|
|
877
|
+
### getAwarenessGuidance()
|
|
878
|
+
```typescript
|
|
879
|
+
// Provide messaging guidance based on Eugene Schwartz's market awareness stages
|
|
880
|
+
function getAwarenessGuidance(stage: string): string {
|
|
881
|
+
const guidance = {
|
|
882
|
+
'unaware': 'Educate about the problem first (they don\'t know they have it)',
|
|
883
|
+
'problem_aware': 'Agitate the pain, present your solution as THE answer',
|
|
884
|
+
'solution_aware': 'Differentiate - why YOUR solution vs alternatives',
|
|
885
|
+
'product_aware': 'Overcome objections, provide social proof, reduce risk',
|
|
886
|
+
'most_aware': 'Make the offer irresistible, urgency-based CTAs'
|
|
887
|
+
}
|
|
888
|
+
return guidance[stage] || 'Focus on benefits and clear CTAs'
|
|
889
|
+
}
|
|
890
|
+
```
|
|
891
|
+
|
|
892
|
+
---
|
|
893
|
+
|
|
667
894
|
## Error Handling
|
|
668
895
|
|
|
669
896
|
1. **No change ID found:**
|