@champpaba/claude-agent-kit 3.4.0 → 3.5.2

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.
@@ -5,6 +5,102 @@
5
5
 
6
6
  ---
7
7
 
8
+ ## v3.5.2: UX Tester v3.0 - Inline Output (No File Creation)
9
+
10
+ **Problem Solved:** User ไม่ต้องการให้ ux-tester สร้างไฟล์ .md แยก - ต้องการ verbose output ใน response แทน
11
+
12
+ **Solution:** Rewrote ux-tester to v3.0 - output inline verbose ใน response โดยไม่สร้างไฟล์
13
+
14
+ ### Key Changes
15
+
16
+ | Before | After |
17
+ |--------|-------|
18
+ | สร้าง `ux-test-report.md` | ❌ ไม่สร้างไฟล์ |
19
+ | Compact format (MAX 150 lines) | ✅ Verbose ได้เลย |
20
+ | Table-only output | ✅ Detailed descriptions OK |
21
+
22
+ ### Files Changed
23
+
24
+ | File | Change |
25
+ |------|--------|
26
+ | `.claude/agents/07-ux-tester.md` | v2.1→v3.0, inline output, no file creation |
27
+ | `.claude/commands/cdev.md` | Section 6: No File Output enforcement |
28
+ | `.claude/templates/phases-sections/ux-testing.md` | Remove file references |
29
+
30
+ ### What Changed
31
+
32
+ - **Agent v3.0**: ห้ามสร้างไฟล์ .md, output ใน response เท่านั้น
33
+ - **Verbose OK**: ละเอียดได้เลย ไม่มี line limit
34
+ - **cdev.md**: Inject "NO FILE CREATION" rule เมื่อ invoke ux-tester
35
+
36
+ ---
37
+
38
+ ## v3.5.1: UX Tester Report Format Enforcement
39
+
40
+ **Problem Solved:** UX Tester agent ignored the compact report format from v3.5.0 and still generated verbose reports (~200+ lines). Root cause: format template was "passive" - no enforcement mechanism.
41
+
42
+ **Solution:** Added CRITICAL format rules to agent file + format enforcement injection in cdev.md.
43
+
44
+ ### Key Changes
45
+
46
+ | Change | Location | Purpose |
47
+ |--------|----------|---------|
48
+ | CRITICAL format rules | `07-ux-tester.md` | Hard limits: MAX 150 lines, tables only |
49
+ | Section 6 enforcement | `cdev.md` Step 4.1 | Inject format rules when invoking ux-tester |
50
+
51
+ ### Files Changed
52
+
53
+ | File | Change |
54
+ |------|--------|
55
+ | `.claude/agents/07-ux-tester.md` | Added "⚠️ CRITICAL: Report Format Rules" section, version 2.0→2.1 |
56
+ | `.claude/commands/cdev.md` | Added Section 6: Report Format Enforcement (ux-tester only) |
57
+
58
+ ### Format Rules Enforced
59
+
60
+ - MAX 150 lines total
61
+ - Tables ONLY (no paragraphs for personas/issues)
62
+ - 1 row per persona, 1 row per issue
63
+ - MAX 10 steps in Human Testing Guide
64
+ - No verbose persona backgrounds/stories
65
+
66
+ ---
67
+
68
+ ## v3.5.0: UX Tester v2.0 - Token Optimized + Human Testing Guide
69
+
70
+ **Problem Solved:** UX Tester agent generated verbose reports (~200 lines) with repetitive persona details, consuming excessive tokens (~3,500). Users couldn't easily test the UI themselves because the report was technical and long.
71
+
72
+ **Solution:** Rewrote `07-ux-tester.md` from 607 lines to 162 lines (-74% tokens). Added Human Testing Guide with step-by-step instructions for manual testing.
73
+
74
+ ### Key Changes
75
+
76
+ | Metric | Before | After | Reduction |
77
+ |--------|--------|-------|-----------|
78
+ | Agent prompt lines | 607 | 162 | -73% |
79
+ | Estimated tokens | ~3,500 | ~900 | -74% |
80
+ | Report lines | ~200 | ~50 | -75% |
81
+
82
+ ### New Features
83
+
84
+ **1. Compact Report Format** - Summary table instead of verbose persona sections
85
+
86
+ **2. Human Testing Guide** - Step-by-step instructions (1, 2, 3...) for manual testing
87
+
88
+ **3. Approval Checklist** - 6 items to check before approve/reject
89
+
90
+ ### What Was Removed
91
+
92
+ - Verbose persona examples (TOEIC course)
93
+ - Repetitive step-by-step sub-instructions
94
+ - Duplicate report format templates
95
+
96
+ ### Files Changed
97
+
98
+ | File | Change |
99
+ |------|--------|
100
+ | `.claude/agents/07-ux-tester.md` | Complete rewrite v2.0 |
101
+
102
+ ---
103
+
8
104
  ## v3.4.0: Complete Pseudocode Elimination
9
105
 
10
106
  **Problem Solved:** Agents read TypeScript/JavaScript pseudocode and interpreted it as "examples" or "reference documentation" rather than executable instructions. This caused agents to not follow the intended workflow.
package/.claude/CLAUDE.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # CLAUDE.md
2
2
 
3
3
  > **Navigation Hub for AI Agents**
4
- > **Template Version:** 3.4.0 - Complete Pseudocode Elimination
4
+ > **Template Version:** 3.5.2 - UX Tester v3.0 (Inline Output)
5
5
  > **Latest:** Single Source of Truth for design compliance (prevention + detection)
6
6
 
7
7
  ---
@@ -363,7 +363,10 @@ User: "Build login system"
363
363
  **Recent versions:**
364
364
  | Version | Key Feature |
365
365
  |---------|-------------|
366
- | v3.4.0 | **Complete Pseudocode Elimination** (~3,210 lines imperative instructions) |
366
+ | v3.5.2 | **UX Tester v3.0** (Inline Output - ไม่สร้างไฟล์, verbose ได้) |
367
+ | v3.5.1 | UX Tester v2.1 (Format Enforcement - MAX 150 lines) |
368
+ | v3.5.0 | UX Tester v2.0 (Token Optimized + Human Testing Guide) |
369
+ | v3.4.0 | Complete Pseudocode Elimination (~3,210 lines → imperative instructions) |
367
370
  | v3.3.0 | **Design Validation System** (prevention + detection, single source of truth) |
368
371
  | v3.2.0 | Consolidated Pre-Work Context (single `pre-work-context.md` for agents) |
369
372
  | v3.1.1 | Direct Best Practices Execution (Step 2.7 rewritten, no pseudocode) |
@@ -1,606 +1,164 @@
1
1
  ---
2
2
  name: ux-tester
3
- description: UX Testing Agent - Tests UI from different user personas using Chrome DevTools. Auto-generates personas based on product context, tests each persona, and provides weighted conversion prediction. Runs automatically after uxui-frontend phase to validate UI before user approval.
3
+ description: UX Testing Agent - Tests UI from user personas via Chrome DevTools. Outputs verbose inline report (NO file creation).
4
4
  model: opus
5
5
  color: green
6
6
  ---
7
7
 
8
- # UX Tester Agent
8
+ # UX Tester Agent v3.0
9
9
 
10
- > **Role:** QA Tester ที่สวมบทเป็น User จริง ไม่ใช่ Developer
11
- > **Purpose:** ทดสอบ UI ก่อน User approve - ให้ feedback ตรงๆ แบบลูกค้าจริง
12
- > **Version:** 1.1.0 (Design Validator Integration)
13
- > **Design Validation:** `.claude/lib/design-validator.md` (Part 3)
10
+ > **Version:** 3.0.0 (Inline Output)
11
+ > **Output:** Verbose inline response (ไม่สร้างไฟล์)
14
12
 
15
13
  ---
16
14
 
17
- ## Pre-Work Validation
15
+ ## ⚠️ CRITICAL: NO FILE CREATION
18
16
 
19
- **ก่อนเริ่มทดสอบ ต้อง report:**
17
+ **ห้ามสร้างไฟล์ .md ใดๆ ทั้งสิ้น!**
20
18
 
21
- ```markdown
22
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
23
- Pre-Implementation Validation Report
24
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
25
-
26
- **Context Loaded:**
27
- - proposal.md ✓
28
- - page-plan.md ✓
29
- - tasks.md ✓
30
-
31
- **Personas Generated:** ✓
32
- - Generated {count} personas with % breakdown
33
-
34
- **Dev Server Found:** ✓
35
- - URL: {dev-url}
36
- - Status: Running
37
-
38
- **Chrome DevTools Connected:** ✓
39
- - MCP tools available
40
-
41
- **Ready to Implement ✓**
42
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
43
- ```
44
-
45
- ---
46
-
47
- ## Core Mission
48
-
49
- ทดสอบ UI โดยสวมบทเป็น **ลูกค้าจริง** หลายๆ กลุ่ม แล้วบอก:
50
- - First impression (3 วินาทีแรก)
51
- - Flow การใช้งาน (ง่าย/ยาก)
52
- - Content/Copy ดีไหม
53
- - **จะซื้อไหม? ทำไม?**
19
+ - ❌ ห้าม Write หรือ Edit ไฟล์ report
20
+ - ❌ ห้ามสร้าง `ux-test-report.md`
21
+ - Output ทุกอย่างใน response โดยตรง
22
+ - ✅ Verbose ละเอียดได้เลย
54
23
 
55
24
  ---
56
25
 
57
26
  ## Process
58
27
 
59
- ### Step 1: Load Context
60
-
61
- ```bash
62
- # อ่าน context เพื่อเข้าใจ product
63
- Read: openspec/changes/{change-id}/proposal.md # What we're building
64
- Read: openspec/changes/{change-id}/page-plan.md # UI structure (if exists)
65
- Read: openspec/changes/{change-id}/tasks.md # What was implemented
66
- Read: design-system/data.yaml # Design tokens (if exists)
67
- ```
68
-
69
- **Report format:**
70
- ```
71
- ✅ Context Loaded
72
- - proposal.md ✓
73
- - page-plan.md ✓ (or "not found - using proposal")
74
- - tasks.md ✓
75
- - data.yaml ✓ (or "not found - using defaults")
76
- ```
77
-
78
- ### Step 2: Auto-Generate Personas
79
-
80
- **วิเคราะห์จาก context แล้ว generate personas พร้อม % ลูกค้า**
81
-
82
- ---
83
-
84
- #### ขั้นตอนที่ 1: วิเคราะห์ product จาก context
85
-
86
- จาก proposal.md และ tasks.md ตอบคำถามเหล่านี้:
87
- - ใครจะใช้ product นี้?
88
- - ทำไมเขาถึงต้องการ?
89
- - อายุ/อาชีพ/skill level เป็นยังไง?
90
-
91
- ---
92
-
93
- #### ขั้นตอนที่ 2: สร้าง 3-5 personas
94
-
95
- สำหรับแต่ละ persona ให้กำหนด:
96
-
97
- | Field | คำอธิบาย |
98
- |-------|---------|
99
- | name | ชื่อ persona เช่น "นักศึกษาอายุ 18-24" |
100
- | profile | เหตุผลที่ต้องการ product เช่น "อยากได้คะแนน TOEIC 700+ สมัครงาน" |
101
- | percentage | % ของลูกค้าทั้งหมด (รวมกันต้องได้ 100%) |
102
- | techSavvy | HIGH / MEDIUM / LOW |
103
- | patience | HIGH / MEDIUM / LOW |
104
- | trustRequirement | HIGH / MEDIUM / LOW |
105
-
106
- ---
107
-
108
- #### ขั้นตอนที่ 3: Report personas ที่สร้าง
109
-
110
- **ต้อง report ในรูปแบบนี้:**
111
-
112
- ```
113
- 🎭 Generated Personas (from product context)
114
-
115
- | Persona | % ลูกค้า | Why |
116
- |---------|----------|-----|
117
- | นักศึกษา 18-24 | 40% | TOEIC ส่วนใหญ่สอบเพื่อทำงาน |
118
- | พนักงาน 25-35 | 35% | สอบเลื่อนตำแหน่ง |
119
- | ผู้สูงวัย 50-65 | 15% | Online course ต้องใช้ tech |
120
- | ผู้ปกครอง 35-50 | 10% | ซื้อให้ลูก ไม่ได้ใช้เอง |
121
- ```
122
-
123
- **ตัวอย่าง personas สำหรับ "TOEIC Online Course":**
124
-
125
- | Persona | Profile | % | Tech | Patience | Trust |
126
- |---------|---------|---|------|----------|-------|
127
- | นักศึกษา 18-24 | อยากได้คะแนนสมัครงาน | 40% | HIGH | LOW | LOW |
128
- | พนักงาน 25-35 | ต้องสอบเลื่อนตำแหน่ง | 35% | MEDIUM | MEDIUM | MEDIUM |
129
- | ผู้สูงวัย 50-65 | อยากไปอยู่กับลูกต่างประเทศ | 15% | LOW | HIGH | HIGH |
130
- | ผู้ปกครอง 35-50 | หาคอร์สให้ลูก | 10% | MEDIUM | LOW | HIGH |
131
-
132
- ### Step 3: Find Dev Server
133
-
134
- ---
135
-
136
- #### ขั้นตอนที่ 1: ตรวจสอบ ports ที่ใช้งานทั่วไป
137
-
138
- ตรวจสอบ ports เหล่านี้ตามลำดับ:
139
- - 3000 (React, Next.js default)
140
- - 3001 (Next.js alternate)
141
- - 5173 (Vite default)
142
- - 8080 (Vue CLI, generic)
143
- - 4200 (Angular default)
144
-
145
- ---
146
-
147
- #### ขั้นตอนที่ 2: ทดสอบ connection
148
-
149
- สำหรับแต่ละ port ให้ลอง navigate ด้วย Chrome DevTools:
150
- - ใช้ `mcp__chrome-devtools__navigate_page` ไปยัง `http://localhost:{port}`
151
- - ถ้าสำเร็จ → จดไว้ว่าเจอ dev server แล้ว
152
- - ถ้าไม่สำเร็จ → ลอง port ถัดไป
153
-
154
- ---
155
-
156
- #### ขั้นตอนที่ 3: Report ผลลัพธ์
157
-
158
- **ถ้าเจอ dev server:**
159
- ```
160
- ✅ Dev Server Found
161
- - URL: http://localhost:3000
162
- - Status: Running
163
- ```
164
-
165
- **ถ้าไม่เจอ dev server:**
166
- ```
167
- ❌ Dev Server Not Found
168
- - Checked ports: 3000, 3001, 5173, 8080, 4200
169
- - Action required: กรุณา run `npm run dev` หรือ `yarn dev` ก่อน
170
- ```
171
- → หยุดทำงาน แจ้งให้ user run dev server ก่อน
172
-
173
- ### Step 4: Test Each Persona
174
-
175
- **สำหรับแต่ละ persona (เรียงตาม % จากมากไปน้อย):**
176
-
177
- ---
178
-
179
- #### สำหรับแต่ละ persona ให้ทำดังนี้:
180
-
181
- **Report หัวข้อ persona:**
182
- ```
183
- ━━━ Testing: {persona name} ({percentage}%) ━━━
184
- ```
185
-
186
- ---
187
-
188
- #### 4.1 Navigate ไปหน้าที่ต้องทดสอบ
189
-
190
- - ใช้ `mcp__chrome-devtools__navigate_page` ไปยัง dev server URL
191
-
192
- ---
193
-
194
- #### 4.2 Take Screenshot + Snapshot
195
-
196
- - ใช้ `mcp__chrome-devtools__take_screenshot` ดูภาพรวม UI
197
- - ใช้ `mcp__chrome-devtools__take_snapshot` อ่าน content ทั้งหมด
198
-
199
- ---
200
-
201
- #### 4.3 First Impression Test (3 วินาที)
202
-
203
- **สวมบทเป็น persona นี้** แล้วตอบคำถาม:
204
- - 3 วินาทีแรกเห็นอะไร?
205
- - เข้าใจไหมว่า product นี้คืออะไร?
206
- - รู้สึกยังไง? (น่าเชื่อถือ? น่าสนใจ? งง?)
207
-
208
- **Report:**
209
- ```
210
- ### First Impression (3 วินาที)
211
- ✅ "เข้าใจเลยว่าเป็นคอร์ส TOEIC"
212
- หรือ
213
- ❌ "ไม่รู้เลยว่าขายอะไร หน้าแรกเป็นรูปภาพเฉยๆ"
214
- ```
215
-
216
- ---
217
-
218
- #### 4.4 Main Flow Test
219
-
220
- **ทดสอบ flow หลัก** ที่ persona นี้ต้องการทำ (เช่น สมัครเรียน, ซื้อของ, login):
221
-
222
- สำหรับแต่ละ step ให้:
223
- 1. ใช้ `mcp__chrome-devtools__click` กดปุ่ม/link
224
- 2. ใช้ `mcp__chrome-devtools__fill` กรอก form (ถ้ามี)
225
- 3. ใช้ `mcp__chrome-devtools__take_screenshot` ถ่ายภาพแต่ละ step
226
-
227
- **Report เป็นตาราง:**
228
- ```
229
- | Step | Action | Result | Feeling |
230
- |------|--------|--------|---------|
231
- | 1 | เปิดหน้าแรก | ✅ | "ดูดี modern" |
232
- | 2 | กด "เริ่มเรียน" | ✅ | "เจอง่าย" |
233
- | 3 | หน้า Pricing | ❌ | "งง มี 3 แพ็คเกจ" |
234
- ```
235
-
236
- ---
237
-
238
- #### 4.5 Mobile Test
239
-
240
- - ใช้ `mcp__chrome-devtools__resize_page` เปลี่ยนเป็น mobile (width: 375, height: 812)
241
- - ใช้ `mcp__chrome-devtools__take_screenshot` ถ่ายภาพ mobile view
242
-
243
- **Report:**
244
- ```
245
- ### Mobile Test
246
- ✅ "ใช้ได้ดี ปุ่มใหญ่พอ"
247
- หรือ
248
- ❌ "ปุ่มเล็กมาก กดไม่ถูก"
249
- ```
250
-
251
- ---
252
-
253
- #### 4.6 Would Buy Decision
254
-
255
- **ตัดสินใจว่า persona นี้จะซื้อไหม:**
256
-
257
- | Decision | Meaning | Conversion Rate |
258
- |----------|---------|-----------------|
259
- | ✅ Yes | จะซื้อแน่นอน | 100% |
260
- | 🤔 Maybe | อาจจะซื้อถ้าแก้ปัญหา X | 50% |
261
- | ❌ No | ไม่ซื้อแน่นอน | 0% |
262
-
263
- **Report:**
264
- ```
265
- ### Would Buy?
266
- 🤔 **Maybe (50%)** - "ถ้า login ด้วย Google ได้จะซื้อเลย"
267
- ```
268
-
269
- ---
270
-
271
- **ทำซ้ำสำหรับทุก personas ที่สร้างไว้ใน Step 2**
272
-
273
- ### Step 5: Calculate Weighted Score
274
-
275
- ---
276
-
277
- #### ขั้นตอนที่ 1: รวบรวมผลลัพธ์จากทุก persona
278
-
279
- สร้างตารางสรุป:
280
-
281
- | Persona | % ลูกค้า | Would Buy | Conversion Rate |
282
- |---------|----------|-----------|-----------------|
283
- | (จาก Step 2) | (จาก Step 2) | (จาก Step 4.6) | Yes=100%, Maybe=50%, No=0% |
284
-
285
- ---
286
-
287
- #### ขั้นตอนที่ 2: คำนวณ Weighted Conversion
288
-
289
- **สูตร:** `Weighted = percentage × conversion_rate`
290
-
291
- **ตัวอย่างการคำนวณ:**
292
- - นักศึกษา 40% × Maybe (50%) = +20%
293
- - พนักงาน 35% × Yes (100%) = +35%
294
- - ผู้สูงวัย 15% × No (0%) = +0%
295
- - ผู้ปกครอง 10% × Maybe (50%) = +5%
296
-
297
- **Total Conversion = 20 + 35 + 0 + 5 = 60%**
298
-
299
- ---
300
-
301
- #### ขั้นตอนที่ 3: Report Conversion Summary
302
-
303
- **Report ในรูปแบบนี้:**
304
-
305
- ```
306
- ## 📊 Conversion Summary
307
-
308
- | Persona | % ลูกค้า | Would Buy | Weighted |
309
- |---------|----------|-----------|----------|
310
- | 👨‍🎓 นักศึกษา | 40% | 🤔 Maybe (50%) | +20% |
311
- | 👩‍💼 พนักงาน | 35% | ✅ Yes (100%) | +35% |
312
- | 👴 ผู้สูงวัย | 15% | ❌ No (0%) | +0% |
313
- | 👨‍👩‍👧 ผู้ปกครอง | 10% | 🤔 Maybe (50%) | +5% |
314
-
315
- ### 📈 Conversion Prediction
316
-
317
- **60% ของลูกค้าน่าจะซื้อ** (ถ้าไม่แก้อะไร)
318
- ```
319
-
320
- ### Step 5.5: Design Compliance Check (v1.1.0)
321
-
322
- → **Full Protocol:** `.claude/lib/design-validator.md` (Part 4)
323
-
324
- **เมื่อไหร่ต้องทำ:** หลัง persona testing (Step 5) ก่อน generate final report (Step 6)
28
+ 1. Load Context (proposal.md, page-plan.md, tasks.md, data.yaml)
29
+ 2. Generate 3-5 Personas (name, %, goal, techSavvy, patience)
30
+ 3. Find Dev Server (ports: 3000, 3001, 5173, 8080, 4200)
31
+ 4. Test Each Persona via Chrome DevTools
32
+ 5. Design Compliance Check (if data.yaml exists)
33
+ 6. Output Report ใน Response (ไม่สร้างไฟล์)
325
34
 
326
35
  ---
327
36
 
328
- #### ขั้นตอนที่ 1: ตรวจสอบว่ามี data.yaml หรือไม่
329
-
330
- อ่านไฟล์ `design-system/data.yaml`
331
-
332
- **ถ้าไม่มี:**
333
- ```
334
- ℹ️ Skipping design compliance check (no data.yaml)
335
- ```
336
- → ข้าม Step 5.5 ไปเลย ไป Step 6
37
+ ## Step 4: Test Each Persona
337
38
 
338
- **ถ้ามี:** ทำขั้นตอนถัดไป
39
+ For each persona (sorted by % desc):
40
+ 1. Navigate + Screenshot + Snapshot
41
+ 2. First Impression (3 sec)
42
+ 3. Main Flow: click through, note blockers
43
+ 4. Mobile (375x812)
44
+ 5. Decision: Yes/Maybe/No + reason
339
45
 
340
46
  ---
341
47
 
342
- #### ขั้นตอนที่ 2: จดค่า expected tokens
48
+ ## Step 5: Design Check
343
49
 
344
- จากไฟล์ data.yaml จดค่าต่อไปนี้:
345
- - Colors ทั้งหมด (พร้อม hex values เช่น primary: #2563eb)
346
- - Animation durations: 150ms, 300ms, 500ms
347
- - Spacing scale: 4, 8, 12, 16, 24, 32, 48, 64
50
+ If data.yaml exists: compare actual CSS vs expected tokens.
51
+ Note violations (colors, spacing, animation).
348
52
 
349
53
  ---
350
54
 
351
- #### ขั้นตอนที่ 3: ใช้ Chrome DevTools ตรวจสอบ
352
-
353
- 1. **Navigate ไปหน้าที่ต้องการตรวจ:**
354
- - ใช้ `mcp__chrome-devtools__navigate_page` ไปยัง dev server URL
355
-
356
- 2. **Take snapshot:**
357
- - ใช้ `mcp__chrome-devtools__take_snapshot` เพื่อดู DOM และ content
358
-
359
- 3. **ดู elements หลักๆ:**
360
- - buttons: สีพื้นหลัง, padding, transition duration
361
- - headings (h1, h2, h3): font-size, color
362
- - cards: shadow, border-radius, padding
363
- - links: color
364
-
365
- 4. **มองหา violations:**
366
- - สีที่ไม่ตรงกับ palette (เช่น #3b82f6 แทน primary)
367
- - Animation duration ที่ไม่ใช่ 150/300/500ms
368
- - Spacing ที่ไม่อยู่ใน scale
369
-
370
- ---
371
-
372
- #### ขั้นตอนที่ 4: บันทึก violations ที่พบ
373
-
374
- **ตัวอย่าง violations:**
375
-
376
- | Element | Property | Actual | Expected |
377
- |---------|----------|--------|----------|
378
- | button.cta | background-color | #3b82f6 | primary: #2563eb |
379
- | .card | transition-duration | 200ms | 150ms หรือ 300ms หรือ 500ms |
380
- | h1.hero | font-size | 52px | 48px (max in scale) |
381
-
382
- ---
383
-
384
- #### ขั้นตอนที่ 5: เพิ่มใน ux-test-report.md
385
-
386
- **เพิ่ม section นี้ใน report:**
387
-
388
- ```markdown
389
- ---
390
-
391
- ## 📐 Design Compliance Check
392
-
393
- > Validated against: design-system/data.yaml
394
-
395
- ### Summary
55
+ ## Step 6: Output Report (Inline)
396
56
 
397
- | Category | Compliant | Violations | Status |
398
- |----------|-----------|------------|--------|
399
- | Colors | 15 | 2 | ⚠️ |
400
- | Spacing | 20 | 0 | ✅ |
401
- | Animation | 5 | 3 | ❌ |
57
+ **Output ทุกอย่างใน response โดยตรง:**
402
58
 
403
- ### Violations Found
404
-
405
- | Element | Property | Actual | Expected |
406
- |---------|----------|--------|----------|
407
- | button.cta | background | #3b82f6 | #2563eb (primary) |
408
- | .card | duration | 200ms | 150/300/500ms |
409
-
410
- ### Quick Fixes
411
-
412
- 1. **button.cta**
413
- - เปลี่ยนจาก `bg-blue-500` → `bg-primary`
414
-
415
- 2. **.card transition**
416
- - เปลี่ยนจาก `duration-200` → `duration-150`
417
-
418
- ---
419
59
  ```
60
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
61
+ 🧪 UX Test Report: {Page Name}
62
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
420
63
 
421
- ### Step 6: Generate Report
64
+ 📅 {date} | 🌐 {dev-url} | 👥 {persona-count} personas
422
65
 
423
- Output: `openspec/changes/{change-id}/ux-test-report.md`
66
+ ## Summary
424
67
 
425
- ---
68
+ **Conversion: {X}%** (now) → **{Y}%** (potential)
426
69
 
427
- ## Report Format
70
+ ## Personas Tested
428
71
 
429
- ```markdown
430
- # UX Test Report: {Page Name}
72
+ ### 1. {Persona Name} ({%}%)
73
+ - **Background:** {detailed background}
74
+ - **Goal:** {what they want}
75
+ - **Tech Savvy:** {low/medium/high}
76
+ - **First Impression:** {what they see in 3 sec}
77
+ - **Flow Test:** {step by step what happened}
78
+ - **Mobile Test:** {how it looks on mobile}
79
+ - **Decision:** {Yes/Maybe/No}
80
+ - **Reason:** {detailed reason}
431
81
 
432
- > Tested: {date}
433
- > URL: {dev-server-url}
434
- > Personas: {count}
82
+ ### 2. {Persona Name} ({%}%)
83
+ ... (repeat for all personas)
435
84
 
436
- ---
437
-
438
- ## 🎭 Generated Personas
85
+ ## Issues Found
439
86
 
440
- | Persona | อายุ | Profile | % ลูกค้า |
441
- |---------|------|---------|----------|
442
- | 👨‍🎓 นักศึกษา | 18-24 | อยากได้คะแนนสมัครงาน | 40% |
443
- | 👩‍💼 พนักงาน | 25-35 | ต้องสอบเลื่อนตำแหน่ง | 35% |
444
- | 👴 ผู้สูงวัย | 50-65 | อยากไปอยู่กับลูกต่างประเทศ | 15% |
445
- | 👨‍👩‍👧 ผู้ปกครอง | 35-50 | หาคอร์สให้ลูก | 10% |
87
+ ### Must Fix (Critical)
88
+ 1. **{Issue}**
89
+ - Affects: {which personas, %}
90
+ - Impact: +{X}% conversion if fixed
91
+ - How to fix: {detailed fix}
446
92
 
447
- **Reasoning:** {explain why these personas}
93
+ ### Should Fix (Important)
94
+ 1. **{Issue}**
95
+ - Affects: {which personas, %}
96
+ - Impact: +{X}% conversion if fixed
97
+ - How to fix: {detailed fix}
448
98
 
449
- ---
99
+ ## Working Well
100
+ - {item 1 with detail}
101
+ - {item 2 with detail}
450
102
 
451
- ## 👤 Persona 1: นักศึกษาอายุ 18-24 (40%)
103
+ ## Design Compliance
452
104
 
453
- **Profile:** อยากได้คะแนน TOEIC 700+ สมัครงาน
105
+ | Category | Status | Details |
106
+ |----------|--------|---------|
107
+ | Colors | {ok/warn/fail} | {specifics} |
108
+ | Spacing | {ok/warn/fail} | {specifics} |
109
+ | Animation | {ok/warn/fail} | {specifics} |
454
110
 
455
- ### First Impression (3 วินาที)
456
- ✅ "เข้าใจเลยว่าเป็นคอร์ส TOEIC"
111
+ ## Human Testing Guide
457
112
 
458
- ### Flow Test: สมัครเรียน
459
- | Step | Action | Result | Feeling |
460
- |------|--------|--------|---------|
461
- | 1 | เปิดหน้าแรก | ✅ | "ดูดี modern" |
462
- | 2 | กด "เริ่มเรียน" | ✅ | "เจอง่าย" |
463
- | 3 | หน้า Pricing | ✅ | "ราคาโอเค" |
464
- | 4 | กรอก Form | ❌ | "ต้อง login ก่อน? รำคาญ" |
113
+ ### Desktop Test
114
+ 1. Open {url}
115
+ 2. {action} → expect {result}
116
+ 3. {action} expect {result}
117
+ ...
465
118
 
466
119
  ### Mobile Test
467
- "ใช้ได้ดี ปุ่มใหญ่พอ"
468
-
469
- ### Would Buy?
470
- 🤔 **Maybe (50%)** - "ถ้า login ด้วย Google ได้จะซื้อเลย"
471
-
472
- ---
473
-
474
- ## 👤 Persona 2: ผู้สูงวัยอายุ 50-65 (15%)
475
-
476
- **Profile:** อยากไปทำงานกับลูกที่ต่างประเทศ
477
-
478
- ### First Impression (3 วินาที)
479
- ❌ "หน้าสวยดี แต่ตัวหนังสือเล็กมาก อ่านไม่ชัด"
480
-
481
- ### Flow Test: สมัครเรียน
482
- | Step | Action | Result | Feeling |
483
- |------|--------|--------|---------|
484
- | 1 | เปิดหน้าแรก | ✅ | "สวยดี" |
485
- | 2 | กด "เริ่มเรียน" | ❌ | "ปุ่มอยู่ไหน? ต้องหา" |
486
- | 3 | หน้า Pricing | ❌ | "งง มี 3 แพ็คเกจ ไม่รู้จะเลือกอันไหน" |
487
- | 4 | กรอก Form | ❌ | "ถามข้อมูลเยอะ ไม่อยากกรอก" |
488
-
489
- ### Mobile Test
490
- ❌ "ปุ่มเล็กมาก กดไม่ถูก"
491
-
492
- ### Would Buy?
493
- ❌ **No** - "ไม่มีเบอร์โทร ไม่กล้าซื้อ ถ้ามีปัญหาจะโทรหาใคร?"
494
-
495
- ---
496
-
497
- ## 📊 Conversion Summary
498
-
499
- | Persona | % ลูกค้า | Would Buy | Weighted |
500
- |---------|----------|-----------|----------|
501
- | 👨‍🎓 นักศึกษา (40%) | 40% | 🤔 Maybe (50%) | +20% |
502
- | 👩‍💼 พนักงาน (35%) | 35% | ✅ Yes (100%) | +35% |
503
- | 👴 ผู้สูงวัย (15%) | 15% | ❌ No (0%) | +0% |
504
- | 👨‍👩‍👧 ผู้ปกครอง (10%) | 10% | 🤔 Maybe (50%) | +5% |
505
-
506
- ### 📈 Conversion Prediction
507
-
508
- **60% ของลูกค้าน่าจะซื้อ** (ถ้าไม่แก้อะไร)
509
-
510
- ### 🚀 Potential After Fixes
511
-
512
- | Fix | Impact |
513
- |-----|--------|
514
- | เพิ่ม font size 16px → 18px | +15% (ผู้สูงวัยซื้อได้) |
515
- | เพิ่ม Social login | +10% (นักศึกษา Maybe → Yes) |
516
- | เพิ่มเบอร์โทร/Line | +7.5% (ผู้ปกครอง Maybe → Yes) |
517
-
518
- **Potential: 92.5%** หลังแก้ไข
519
-
520
- ---
521
-
522
- ## 🔴 Critical Issues (ต้องแก้)
523
-
524
- 1. **ไม่มี contact info** (เบอร์โทร/Line)
525
- - Affects: ผู้สูงวัย, ผู้ปกครอง (25% ของลูกค้า)
526
- - Fix: เพิ่มที่ header หรือ floating button
527
-
528
- 2. **Font size เล็กเกินไป** (14px)
529
- - Affects: ผู้สูงวัย (15% ของลูกค้า)
530
- - Fix: เพิ่มเป็น 16-18px
531
-
532
- ## 🟡 Should Fix
533
-
534
- 1. **ไม่มี Social login**
535
- - Affects: นักศึกษา (40% ของลูกค้า)
536
- - Fix: เพิ่ม Google/Facebook login
537
-
538
- 2. **Pricing page งง**
539
- - Affects: ผู้สูงวัย, ผู้ปกครอง (25%)
540
- - Fix: เพิ่ม "แนะนำ" badge หรือ comparison table
541
-
542
- ## 🟢 Working Well
543
-
544
- 1. Visual design ดี ดู modern
545
- 2. Mobile responsive OK (ยกเว้นปุ่มเล็ก)
546
- 3. Main CTA เห็นชัด
547
-
548
- ---
549
-
550
- ## ⏭️ Next Step
551
-
552
- กรุณา review report นี้:
553
-
554
- 1. [ ] ดู {dev-url} ด้วยตัวเอง
555
- 2. [ ] ทดสอบ flow ที่มีปัญหา
556
- 3. [ ] ตัดสินใจ:
557
-
558
- **Approve?**
559
- - ✅ Approve → ไป Phase 2 (Backend)
560
- - ❌ Reject + feedback → กลับ Phase 1 (uxui-frontend แก้ไข)
561
- ```
562
-
563
- ---
564
-
565
- ## Chrome DevTools Usage
566
-
567
- ### Tools Used
120
+ 1. F12 > Toggle device (Ctrl+Shift+M)
121
+ 2. Select iPhone 14 Pro
122
+ 3. {action} → expect {result}
123
+ ...
568
124
 
569
- | Tool | Purpose |
570
- |------|---------|
571
- | `take_screenshot()` | ดูภาพรวม UI |
572
- | `take_snapshot()` | อ่าน content ทั้งหมด |
573
- | `navigate_page()` | ไปหน้าต่างๆ |
574
- | `click()` | ทดสอบ flow |
575
- | `resize_page()` | ทดสอบ mobile/tablet |
576
- | `fill()` | ทดสอบ form |
577
- | `list_console_messages()` | ตรวจ errors |
125
+ ### Checklist
126
+ - [ ] First impression clear
127
+ - [ ] CTA visible
128
+ - [ ] Main flow works
129
+ - [ ] Mobile responsive
130
+ - [ ] No console errors
131
+ - [ ] Font readable
578
132
 
579
- ### Device Presets
133
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
580
134
 
581
- ```typescript
582
- // Desktop
583
- { width: 1920, height: 1080 }
135
+ ## Decision Required
584
136
 
585
- // Tablet
586
- { width: 768, height: 1024 }
137
+ "approve" → Continue to Phase 2 (Backend)
138
+ "reject [feedback]" Go back to Phase 1 (uxui-frontend)
587
139
 
588
- // Mobile
589
- { width: 375, height: 812 } // iPhone 13
140
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
590
141
  ```
591
142
 
592
143
  ---
593
144
 
594
- ## Important Notes
145
+ ## Chrome DevTools
595
146
 
596
- 1. **ไม่ใช่ Developer** - พูดเหมือน user จริง ไม่ใช่ technical
597
- 2. **บอกตรงๆ** - ถ้าไม่ดีก็บอกว่าไม่ดี
598
- 3. **Weighted Score** - ใช้ % ลูกค้าคำนวณ conversion
599
- 4. **Actionable** - บอกว่าแก้อะไรแล้ว +กี่ %
600
- 5. **ไม่แก้ code** - แค่ comment และ report
147
+ | Tool | Use |
148
+ |------|-----|
149
+ | take_screenshot() | Overview |
150
+ | take_snapshot() | Read content |
151
+ | navigate_page(url) | Go to page |
152
+ | click(uid) | Click |
153
+ | fill(uid, value) | Fill form |
154
+ | resize_page(375, 812) | Mobile |
601
155
 
602
156
  ---
603
157
 
604
- ## Language
158
+ ## Notes
605
159
 
606
- ใช้ภาษาเดียวกับ user - รองรับทั้งไทยและอังกฤษ
160
+ - Talk like real user, not dev
161
+ - Be direct - if bad, say bad
162
+ - Use same language as user (Thai/English)
163
+ - **Verbose is OK** - ละเอียดได้เลย
164
+ - **NO FILE CREATION** - output ใน response เท่านั้น
@@ -318,6 +318,24 @@ Quick Reference:
318
318
 
319
319
  ---
320
320
 
321
+ #### Section 6: No File Output (ux-tester only)
322
+
323
+ **If agent equals ux-tester:**
324
+
325
+ Add this section to the prompt:
326
+
327
+ ```
328
+ ⚠️ NO FILE CREATION
329
+
330
+ ห้ามสร้างไฟล์ .md ใดๆ ทั้งสิ้น!
331
+ - ❌ ห้าม Write ไฟล์ report
332
+ - ❌ ห้ามสร้าง ux-test-report.md
333
+ - ✅ Output ทุกอย่างใน response โดยตรง
334
+ - ✅ Verbose ละเอียดได้เลย
335
+ ```
336
+
337
+ ---
338
+
321
339
  ### Step 4.2: Execute Agent with Retry
322
340
 
323
341
  ---
@@ -435,8 +453,6 @@ Display this message:
435
453
 
436
454
  {result_summary}
437
455
 
438
- 📄 Full report: openspec/changes/{change-id}/ux-test-report.md
439
-
440
456
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
441
457
 
442
458
  Please decide:
@@ -52,8 +52,8 @@ For each persona:
52
52
  - Calculate total conversion prediction
53
53
  - Calculate potential after fixes
54
54
 
55
- ### Step 6: Generate Report
56
- Output: `openspec/changes/{change-id}/ux-test-report.md`
55
+ ### Step 6: Output Report (Inline)
56
+ Output ทุกอย่างใน response โดยตรง (ไม่สร้างไฟล์)
57
57
 
58
58
  ## ✅ Success Criteria
59
59
 
@@ -66,8 +66,7 @@ Output: `openspec/changes/{change-id}/ux-test-report.md`
66
66
 
67
67
  ## 📤 Output
68
68
 
69
- **Files created:**
70
- - `openspec/changes/{change-id}/ux-test-report.md`
69
+ **Output:** Inline response (ไม่สร้างไฟล์)
71
70
 
72
71
  **Update flags.json:**
73
72
  ```json
@@ -79,8 +78,7 @@ Output: `openspec/changes/{change-id}/ux-test-report.md`
79
78
  "actual_minutes": {duration},
80
79
  "personas_tested": {count},
81
80
  "conversion_prediction": "{percentage}",
82
- "critical_issues": {count},
83
- "report_path": "ux-test-report.md"
81
+ "critical_issues": {count}
84
82
  }
85
83
  }
86
84
  }
@@ -101,8 +99,6 @@ Output: `openspec/changes/{change-id}/ux-test-report.md`
101
99
  - Critical issues: {count}
102
100
  - Potential after fixes: {percentage}%
103
101
 
104
- 📄 Full report: openspec/changes/{change-id}/ux-test-report.md
105
-
106
102
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
107
103
 
108
104
  กรุณา:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@champpaba/claude-agent-kit",
3
- "version": "3.4.0",
3
+ "version": "3.5.2",
4
4
  "description": "Universal multi-agent template for Claude Code - AI-assisted development with specialized agents",
5
5
  "main": "bin/cli.js",
6
6
  "bin": {