ทำไม AI ถึงสร้าง UI ออกมาไม่สวย?
ปัญหาที่ AI สร้าง UI ออกมาดูไม่สวย จัดวางแปลกตา หรืออ่านยาก เกิดจากการที่ AI ไม่มีเกณฑ์ประเมินว่างานระดับไหนถึงเรียกว่า "สวยงาม" เมื่อไม่มีเกณฑ์มาบังคับ มันจึงถอยกลับไปหาค่าเฉลี่ยกลางๆ ที่พบได้บ่อยที่สุดในฐานข้อมูลที่ใช้เทรน
ผลลัพธ์คือ UI หน้าตาเหมือนกันไปหมด ซึ่งในวงการเรียกว่า AI Slop
Hallmark Skill คืออะไร
Hallmark เป็น Skill สำหรับ AI Coding Agent (รองรับ Claude Code, Cursor และ Codex) เขียนโดย Nutlope ปล่อยภายใต้ลิขสิทธิ์ MIT
สิ่งสำคัญที่ต้องเข้าใจก่อนใช้งาน: Hallmark ไม่ใช่ Component Library และไม่มีโค้ดสำเร็จรูป แต่มันคือไฟล์คำสั่งชุดมาตรฐานที่ Agent ต้องอ่านและปฏิบัติตาม ตัวสกิลจะรันกระบวนการตั้งแต่ขั้นที่ 0 ถึงขั้นที่ 7 ตั้งแต่การอ่านบริบทโปรเจกต์, เลือกโครงหน้า, เลือกธีม, โหลดกฎที่จำเป็น, ประกาศสิ่งที่จะทำ, เขียนโค้ด และปิดท้ายด้วยการตรวจทาน 58 ข้อ
ทำไม Hallmark จึงแก้ปัญหา AI Slop ได้
สิ่งที่ Hallmark Skill ทำต่างจากการสั่ง Prompt แบบธรรมดา คือการกำหนดข้อห้ามและมาตรฐานไว้อย่างชัดเจน แล้วบังคับให้ AI Agent ตรวจงานตัวเองผ่าน รายการเช็กลิสต์ 58 ข้อ ก่อนส่งงาน โดยจะมีตัวอย่างกฎระบุไว้ในไฟล์ SKILL.md
ตัวอย่างกฏของ Hallmark:
- ห้ามใช้ Nav/Footer ยอดฮิตของ AI: เช่น แถบนำทางแบบ
N1aหรือ Footer แบบFt3ซึ่งเป็นการใช้งานยอดฮิตของ AI ที่คนจเห็นแล้วจำได้ทันที - ห้ามวาง Title Tag ฝั่งตรงข้าม: ป้ายกำกับหัวข้อแบบ
01 · THE TOURที่วางป้ายไว้ซ้ายแล้วให้หัวข้ออยู่ขวาจะตกข้อตรวจทันที ต้องวางซ้อนบนหัวข้อเท่านั้น - ห้ามใช้ตัวเลขแต่งขึ้นเอง: ห้ามเขียนตัวเลขการตลาดลอยๆ เช่น "เพิ่มยอดขาย 47%" ให้ใช้ตัวเลขจริงหรือเว้นเป็น Placeholder ไว้
- หัวข้อต้องเป็นตัวตรงเสมอ: ตัวเอียงอนุญาตให้ใช้ได้เฉพาะในย่อหน้าเนื้อความเท่านั้น
- ห้ามใช้ Hardcoded Hex Colors: ทุกค่าสีและฟอนต์ต้องอ้างอิงผ่าน Design Tokens เช่น var(--color-accent) เท่านั้น
ทุกกฎถูกออกแบบมาให้ตอบได้ชัดเจนว่า "ผ่าน" หรือ "ไม่ผ่าน" ตัดปัญหาเรื่องรสนิยมส่วนตัวออกไปได้ทันที
เทียบให้เห็นภาพ
เพื่อไม่ให้เป็นการเข้าข้างตัวเอง บทความนี้ทดสอบกับโมเดล 4 ตัว ผ่าน OpenRouter โดยให้ โจทย์คนละอย่าง เพื่อไม่ให้เป็นการวัดจาก Prompt เดียวที่บังเอิญเข้าทาง
สิ่งที่คุมให้เหมือนกันทั้งสองรอบ เพื่อให้เหลือ Hallmark เป็นตัวแปรเดียวจริงๆ:
| ตัวแปร | ค่าที่ใช้ |
|---|---|
| ข้อความ Prompt | เหมือนกันทุกไบต์ ตรวจด้วยค่า Hash ของข้อความ |
| Design Tokens ของ GEIST | ใส่ให้ทั้งสองรอบ เท่ากัน |
temperature | 0.3 เท่ากัน |
max_tokens | 32000 เท่ากัน |
| ผู้ให้บริการ (Provider) | ล็อกไว้ตายตัว ปิด Fallback |
ผู้ให้บริการที่ล็อกไว้: deepseek และ glm ใช้ CoreWeave, minimax ใช้ Together, gpt-5.6-luna ใช้ OpenAI และอ่านค่ากลับจากคำตอบทุกครั้งเพื่อยืนยันว่าไม่ถูกสลับไปเครื่องอื่น
ต่างกันแค่จุดเดียว: รอบที่สองใส่ไฟล์ SKILL.md ของ Hallmark เป็น System Prompt ส่วนรอบแรกไม่มี System Prompt เลย ไม่มีการบอกโมเดลว่ากำลังถูกนำไปเทียบ และไม่มีการเลือกผลลัพธ์ที่ถูกใจ ทุกภาพคือผลที่ได้มาจริง
deepseek-v4-flash · โจทย์: Landing Page ของ AI Podcast
deepseek-v4-flash ไม่ได้โหลด Skill
deepseek-v4-flash โหลด Hallmark
minimax-m3 · โจทย์: หน้า Pricing ของ API แปลงเอกสาร
minimax-m3 ไม่ได้โหลด Skill
minimax-m3 โหลด Hallmark
glm-5.2 · โจทย์: Landing Page ของโรงคั่วกาแฟอิสระ
glm-5.2 ไม่ได้โหลด Skill
glm-5.2 โหลด Hallmark
gpt-5.6-luna · โจทย์: Landing Page ของแอปจัดการเงินส่วนบุคคล
gpt-5.6-luna ไม่ได้โหลด Skill
gpt-5.6-luna โหลด Hallmark
ผลที่วัดได้
ไม่ใช่ "หน้าน่าเกลียด" เทียบกับ "หน้าสวย" ต้องพูดตรงๆ ว่าโมเดลรุ่นใหม่ไม่ได้สร้างงานหยาบอย่างที่หลายบทความชอบยกมาขู่แล้ว ทั้งแปดหน้าอยู่ในระดับที่ใช้งานได้จริง
และผลที่ได้ก็ไม่ตรงกับที่ตั้งใจจะพิสูจน์ตอนแรกด้วย นี่คือตัวเลขที่นับจากไฟล์ HTML จริงทั้ง 8 ไฟล์ โดยนับเฉพาะค่าสีที่ฝังอยู่ นอก บล็อก Token ที่เราใส่ให้:
| โมเดล | ค่าสีฝังตรงนอก Token | Stamp ของ Hallmark |
|---|---|---|
deepseek-v4-flash | 0 → 0 | ไม่มี |
minimax-m3 | 0 → 0 | มี (Pricing-Led) |
glm-5.2 | 39 → 1 | ไม่มี |
gpt-5.6-luna | 0 → 0 | มี (Workbench) |
สามในสี่โมเดลไม่ต่างกันเลย เมื่อได้ Design Tokens ไปตั้งแต่แรก ทุกตัวก็ใช้ตามนั้นอยู่แล้ว ไม่ว่าจะโหลด Skill หรือไม่ มีแค่ glm-5.2 ตัวเดียวที่แอบสร้างสีนอกระบบ 39 จุดตอนไม่ได้โหลด แล้วเหลือ 1 จุดตอนโหลด
เรื่องโครงสร้างหน้าก็เช่นกัน จำนวน Section ออกมา 5 ต่อ 5, 8 ต่อ 6, 7 ต่อ 7 และ 5 ต่อ 5 คือแทบไม่ขยับ และมีแค่ 2 ใน 4 ตัวที่เขียน Stamp กำกับตามที่กฎบังคับ แปลว่าโมเดลขนาดเล็กไม่ได้ทำตามขั้นตอนของ Skill ครบทุกข้อ
ข้อสรุปที่ซื่อสัตย์กว่าคือ: ถ้าโปรเจกต์ของคุณมี Design System อยู่แล้ว อย่าคาดหวังผลต่างที่วัดเป็นตัวเลขได้จาก Hallmark เพราะสิ่งที่มันบังคับเรื่องสีและ Token คุณทำไปแล้ว ประโยชน์ของมันจะไปอยู่ที่งาน Greenfield ที่ยังไม่มีระบบให้ยึด ซึ่งตรงกับที่เขียนไว้ใน TL;DR ด้านบนพอดี
Hallmark ทำอะไรได้บ้าง ใช้งานยังไง?
Hallmark แบ่งการทำงานออกเป็น 4 โหมด ซึ่งจุดต่างที่สำคัญที่สุดไม่ใช่แค่ชื่อคำสั่ง แต่คือ "โหมดไหนยอมให้แก้ไฟล์โค้ดของคุณบ้าง"
build (โหมดเริ่มต้น)
เป็นโหมดเริ่มต้นเมื่อคุณสั่งงานสร้าง UI ทั่วไป เช่น:
build a new landing page for an AI community podcast
ก่อนเขียนโค้ด Agent จะบอกก่อนว่าเลือกใช้โครงหน้าแบบไหน, ธีมอะไร, Nav/Footer แบบไหน เพื่อให้คุณทักท้วงได้ก่อนที่มันจะเริ่มเขียนไฟล์จริง
audit (ตรวจทานอย่างเดียว ไม่แก้ไฟล์ให้)
hallmark audit src/app/page.tsx
อ่านไฟล์เป้าหมาย ประเมินคะแนนเทียบกับ Anti-pattern แล้วคืนรายการสิ่งที่ต้องแก้ไขเรียงตามลำดับความสำคัญ โดยไม่มีการแก้ไขไฟล์ใดๆ ทั้งสิ้น
redesign (รื้อหน้าตา แต่รักษาโครงสร้างข้อมูล)
hallmark redesign src/app/pricing --mood editorial
โหมดที่เหมาะที่สุดสำหรับโปรเจกต์ที่มีอยู่อยู่แล้ว มันจะรื้อเฉพาะชั้นการแสดงผล (Visual Layer) และ Interaction แต่สัญญาว่าจะ ไม่แตะ Route, ขอบเขตของ Component, เจตนาของข้อความ และ Data Structure เด็ดขาด
study (ถอดแบบ Design DNA จากเว็บหรือภาพ)
hallmark study https://example.com
hallmark study ./screenshot.png
- โหมด URL: อ่าน HTML/CSS จริง จึงได้ชื่อฟอนต์และค่าสีเป๊ะ แต่มีจุดบอดคือมองไม่เห็นจังหวะและช่องไฟ (Spacing Rhythm)
- โหมด Screenshot: มองเห็นจังหวะและช่องไฟอย่างแม่นยำ แต่ทำได้แค่เดาบทบาทของฟอนต์
วิธีติดตั้ง Hallmark ทำอย่างไร?
คำสั่งเดียว
npx skills add nutlope/hallmark
Hallmark ไม่เหมาะกับงานแบบไหน?
Hallmark ถูกออกแบบมาเพื่อจัดการ Visual & Interaction Layer เท่านั้น
สิ่งที่ไม่เหมาะ: การแก้ปัญหาประเภท UX Flow, เมนูหาไม่เจอ, ฟอร์มยาวเกินไป หรือ Dashboard อัดแน่นจนอ่านไม่ออก เนื่องจาก Hallmark จะไม่แตะโครงสร้างข้อมูล (Data Structure) หรือการจัดระเบียบของแอปพลิเคชัน
สิ่งที่ทำได้ดีมาก: ในระดับ Component เดี่ยว สกิลนี้เข้มงวดมาก โดยบังคับให้ออกแบบครอบคลุม 8 สถานะ (default, hover, focus, active, disabled, loading, error, success) และบังคับตรวจทานบนหน้าจอมือถือ 4 ขนาดมาตรฐาน (320px, 375px, 414px, 768px)
เทคนิค: เติม Motion ด้วย animate-skill
เมื่อโครงสร้างหน้าสวยงามแล้ว การเติมจังหวะเคลื่อนไหวจะช่วยให้ UI ดูมีชีวิตชีวาขึ้น คุณสามารถใช้ animate เข้ามาช่วยได้
npx skills add emilkowalski/skill --skill animate
animate จะให้แนวทางเรื่อง Easing, Timing และกฎการทำ Motion เช่น บังคับขยับเฉพาะ transform และ opacity, ห้ามใช้ค่า Default Ease ของเบราว์เซอร์ และรองรับ prefers-reduced-motion ซึ่งทำงานสอดคล้องกับกฎของ Hallmark ได้อย่างสมบูรณ์แบบ
สรุปคำแนะนำสำหรับการเริ่มต้นใช้งาน
- สำหรับโปรเจกต์ที่มีอยู่แล้ว: ให้เริ่มด้วยสั่ง
hallmark auditเพื่อให้ AI ช่วยสแกนหาจุดอับสายตาโดยไม่ต้องกลัวว่าโค้ดจะถูกแก้ไข - หากต้องการปรับปรุง Visual: ใช้สั่ง
hallmark redesignแล้วอ่านรายการไฟล์ที่ Agent ประกาศก่อนกดยืนยัน - หากมี Design System แล้ว: ให้คาดหวังผลลัพธ์ในเรื่อง โครงสร้างการจัดวางหน้า Layout แทนเรื่องการเลือกธีมสี

