🧰 ของที่ใช้ตรวจในบทนี้
Next.js 16.3.5 # npx next build (บรรทัดแรกของ output)
react 19.2.8
typescript 5.9.3
eslint 9.39.5
node v24.14.0
prompt ทุกก้อนที่ติดป้าย “สไลด์หน้า N” ถอดจากภาพสไลด์ตรงตัวอักษร รวมเครื่องหมายวรรคตอน
(บางก้อนในสไลด์ไม่มีจุดท้ายประโยค ผมก็ไม่ได้เติมให้)
บทนี้ไม่มี “คำตอบของ AI” สักก้อน — คำตอบของ AI ไม่เหมือนกันทุกครั้งที่ถาม
ถ้าผมก็อปมาหนึ่งครั้งแล้วโชว์ว่า “AI ตอบแบบนี้” ก็เท่ากับหลอกคุณ
ของที่รันจริงมีสามอย่าง: การคำนวณเลขในสไลด์ (รันด้วย node) ·
ผลของ tsc / eslint / next build / git diff
ในส่วน “เอามาใช้จริง” (รันในโปรเจกต์ Next.js + shadcn ที่ตั้งค่าเหมือนแอปบท 79–85) ·
และลิงก์อ้างอิงทุกลิงก์ที่เปิดยืนยันแล้วว่าใช้ได้
ส่วนโค้ดที่ “แก้แล้ว” ในส่วนนั้น ผมแก้เองด้วยมือ
เพื่อให้เห็นว่าคำสั่งตรวจที่เราใส่ไว้ใน prompt คืนผลอะไรออกมาจริง ๆ ไม่ใช่โค้ดที่ AI เขียน
6 หลักของ prompt ที่ดี — แผนที่ของสองบท
สไลด์หน้า 20 ชื่อ Become a good prompt วางไว้ 6 ภาพ:
| # | หลัก (ชื่อตามสไลด์) | พูดง่าย ๆ | อยู่บทไหน |
|---|---|---|---|
| 1 | Be Clear and Specific | บอกให้ครบว่าจะเอาอะไร ไม่ให้ต้องเดา | 88 (บทนี้) |
| 2 | Give Example | โชว์ตัวอย่างว่า “แบบนี้แหละที่ต้องการ” | 88 (บทนี้) |
| 3 | Step-by-step Reasoning | ให้คิดเป็นขั้น ๆ ก่อนตอบ หรือบอกขั้นให้เลย | 88 (บทนี้) |
| 4 | Roles and Sections | บอกบทบาท แล้วแบ่ง prompt เป็นหมวด | 89 |
| 5 | Specify Output Format | บอกหน้าตาของผลลัพธ์ที่ต้องการ | 89 |
| 6 | Iterate and Refine | ผลแรกคือร่าง แก้ต่อเป็นรอบ ๆ | 89 |
สามข้อแรกมีจุดร่วมกันข้อเดียว: ลดจำนวนสิ่งที่ AI ต้องเดา
ข้อ 1 ลดด้วยคำอธิบาย · ข้อ 2 ลดด้วยตัวอย่าง · ข้อ 3 ลดด้วยการบังคับลำดับความคิด
หลักที่ 1 · Be Clear and Specific
สไลด์หน้า 22 (Why clear?) มีสองประโยค — ถอดตามจริง:
ภาพข้างขวาของหน้าเดียวกันเทียบกระดาษสองแผ่น
แผ่นซ้าย UNCLEAR REQUEST เขียนแค่ “Need something about our project update”
แล้วรอบ ๆ เต็มไปด้วยคำถามที่คนรับงานต้องเดาเอง:
For stakeholders? · Who is the audience? · What tone? · What to include?? (not sure) · How long? · Format?? · What’s the goal?
แผ่นขวา CLEAR & SPECIFIC REQUEST ตอบคำถามพวกนั้นครบเป็นหกช่อง:
GOAL · AUDIENCE · TONE ·
KEY POINTS · CONSTRAINTS (Max 200 words · Use plain language · No technical jargon) ·
EXPECTED OUTCOME
พูดภาษาคน: ทุกคำถามที่คุณไม่ได้ตอบใน prompt ไม่ได้หายไปไหน — AI ตอบแทนคุณ
และมันจะตอบด้วย “ค่าที่พบบ่อยที่สุด” ซึ่งแทบไม่เคยตรงกับงานของคุณพอดี
นี่คือเรื่องเดียวกับบท 78 ที่โจทย์ Customer Search บรรทัดครึ่งซ่อนคำถามไว้ 5 ข้อ —
แค่คราวนี้คนที่ต้องตัดสินใจแทนคุณคือ AI ไม่ใช่ตัวคุณเอง
คู่ Bad/Good ของสไลด์หน้า 23
❌ Bad Prompt
Write something about our new feature.
👍 Good Prompt
Write a 150-word announcement for our new dark-mode
feature, aimed at existing users, highlighting that
it reduces eye strain and syncs across devices.
Tone: friendly and concise.
(ในสไลด์ Good Prompt เป็นบรรทัดเดียว (เลขบรรทัด 1) ที่ตัดขึ้นบรรทัดใหม่ตามความกว้างกล่อง · ผมตัดบรรทัดตรงจุดเดียวกับสไลด์)
แยก Good Prompt ออกเป็นห้าชิ้น — สามชิ้นแรก (task · scope · constraints) คือคำในบรรทัดของสไลด์หน้า 22 ตรง ๆ · อีกสองชิ้น (audience · tone) มาจากช่อง AUDIENCE กับ TONE ในภาพฝั่งขวาของหน้าเดียวกัน ซึ่งเป็น “details that matter” ของงานเขียน — แล้วดูว่า Bad Prompt มีชิ้นไหนบ้าง:
| ชิ้นส่วน | Bad มีไหม | Good เติมอะไร | ถ้าไม่เติม AI ต้องเดาอะไร |
|---|---|---|---|
| task (ทำอะไร) | ครึ่งเดียว — Write something |
announcement — ชนิดของงานชัด |
บทความ? โพสต์โซเชียล? release note? อีเมล? |
| scope (เรื่องไหน แค่ไหน) | ไม่มี — our new feature ไม่รู้ว่าฟีเจอร์อะไร |
dark-mode feature · highlighting that it reduces eye strain and syncs across devices |
ฟีเจอร์คืออะไร และจะเน้นจุดไหน — AI ไม่มีทางรู้เลย จึงต้องแต่งขึ้นมาเอง |
| constraints (ข้อจำกัด) | ไม่มี | 150-word |
ยาวสามบรรทัดหรือสามหน้า |
| audience (ใครอ่าน) | ไม่มี | aimed at existing users |
คนที่ยังไม่เคยใช้ (ต้องขาย) หรือคนที่ใช้อยู่แล้ว (ต้องบอกว่ามีอะไรใหม่) |
| format / tone (หน้าตา · น้ำเสียง) | ไม่มี | Tone: friendly and concise. |
ทางการ? ตลก? ขายของ? |
สังเกตว่า Good Prompt ยาวขึ้นจาก 6 คำเป็น 27 คำ (นับด้วย wc -w) ไม่ได้ยาวเป็นหน้า ·
มันไม่ได้ “สุภาพขึ้น” หรือ “ใช้คำสวยขึ้น” เลย — มันแค่ตอบคำถามที่ต้องตอบอยู่ดีไว้ล่วงหน้า
สั่งเค้กวันเกิดทางไลน์ว่า “ขอเค้กหนึ่งก้อน” — ร้านทำได้แน่ แต่ต้องเดาเองว่า
กี่ปอนด์ · รสอะไร · เขียนชื่อใคร · มารับกี่โมง
พอส่งว่า “ช็อกโกแลต 1 ปอนด์ เขียนว่า HBD แม่ ไม่ใส่ถั่วเพราะแพ้ มารับเสาร์บ่ายสอง”
ร้านไม่ต้องเดาอะไรเลย · ห้าท่อนนี้คือ task · scope · constraints · audience · format ของงานเค้กพอดี
ที่ไม่เหมือนกัน: ร้านเค้กที่ไม่แน่ใจจะทักกลับมาถาม ·
ส่วน AI ส่วนใหญ่ไม่ถามกลับ ลงมือทำเลย เว้นแต่คุณสั่งให้ถาม
— ช่องว่างใน prompt จึงกลายเป็นงานที่ผิดทาง แทนที่จะกลายเป็นคำถาม
และต่างอีกข้อ: Claude Code เปิดไฟล์ในโปรเจกต์อ่านเองได้
ส่วนที่หาได้จากโค้ด (เช่นโปรเจกต์ใช้ Tailwind) ไม่ต้องบอกก็ได้ ·
ที่ต้องบอกคือส่วนที่อยู่ในหัวคุณคนเดียว — อยากได้แบบไหน · ห้ามแตะอะไร · เสร็จแล้วตรวจยังไง
Add a loading state to the recipes page.
prompt นี้สั่ง Claude Code ในแอป Wongnok · ลองนับดูว่าขาดชิ้นไหนในห้าชิ้น (task · scope · constraints · audience · format) และ Claude ต้องเดาอะไรเอง?
task มีแค่ชิ้นเดียว (Add a loading state) ที่เหลือขาดเกือบหมด:
- scope — “recipes page” คือไฟล์ไหน?
app/recipes/page.tsxหรือ container ที่ map การ์ด? แก้ที่หน้า หรือแก้ที่ตัวการ์ด? - format — loading หน้าตาแบบไหน? ข้อความ “กำลังโหลด…” · spinner ·
หรือ
Skeletonของ shadcn ที่มีอยู่แล้วในโปรเจกต์? กี่กล่อง? - constraints — ติดตั้ง library ใหม่ได้ไหม · แก้ไฟล์ใน
components/ui/ได้ไหม - วิธีตรวจ — แบบไหนถึงเรียกว่าเสร็จ? build ผ่านพอ หรือต้องเห็นบนจอ?
(audience ในงานแก้โค้ดหมายถึง “ใครจะใช้หน้านี้” ซึ่งสำคัญน้อยกว่างานเขียน ·
ในงานโค้ด ชิ้นที่ห้าที่สำคัญกว่าคือวิธีตรวจ — ส่วน “เอามาใช้จริง” ท้ายบทจะอธิบายว่าทำไม)
ไม่มีคำตอบเดียวที่ถูก — แต่ถ้าคุณมีคำตอบในใจอยู่แล้วแล้วไม่เขียนลงไป
โอกาสที่ Claude จะเดาตรงกับในใจคุณทุกข้อต่ำมาก
- task · scope · constraints
- task = ต้องทำอะไร · scope = ขอบเขต (ไฟล์ไหน เรื่องไหน แค่ไหน) · constraints = ข้อห้ามและข้อจำกัด (ความยาว · ห้ามเพิ่ม dependency · ห้ามแตะไฟล์นี้) · สามคำนี้คือคำเดียวกับที่สไลด์หน้า 22 ใช้ · ถาม senior ได้ว่า “งานนี้ scope แค่ไฟล์นี้ใช่ไหมครับ มี constraint อะไรที่ผมควรรู้ไหม”
- audience · tone
- ใครเป็นคนอ่านผลงาน และน้ำเสียงแบบไหน · สำคัญมากกับงานเขียน (ประกาศ · อีเมล · README) · พิมพ์บอก AI ได้ว่า “Audience: new developers joining the team. Tone: friendly, no jargon.”
- ambiguity (ความกำกวม)
- ประโยคที่ตีความได้มากกว่าหนึ่งแบบ · ใน prompt ทุกจุดที่กำกวมคือจุดที่ AI จะเลือกแทนคุณ · ถ้าไม่แน่ใจว่าตัวเองเขียนกำกวมไหม พิมพ์บอก AI ได้ว่า “Before you start, list anything in my request that is ambiguous and ask me.”
หลักที่ 2 · Give Examples (Few-shot prompting)
สไลด์หน้า 25 (How Write Example) — ถอดตามจริง:
ภาพข้างขวาของหน้านี้แบ่งเป็นสามคอลัมน์:
NO EXAMPLES PROVIDED (ผลลัพธ์ที่ได้ปนกันมั่ว — สั้นไป · ยาวไป · น้ำเสียงไม่คงที่ · I’m not sure what you want?) →
EXAMPLE PIPELINE (ตัวอย่าง 1–3 ค่อย ๆ เติม structure · tone · format · style) →
PATTERN LEARNED (โมเดลจับแพตเทิร์นร่วมได้ แล้วผลลัพธ์สุดท้ายออกมาเป็นแนวเดียวกัน)
แถบล่างสุดสรุปว่า Without examples ผลไม่คงที่ · With examples โมเดลเรียนรู้แพตเทิร์น ·
With learned patterns ผลคงที่และตรงเป้า
พูดภาษาคน: บางอย่างอธิบายด้วยคำยากกว่าโชว์ให้ดู
ลองอธิบายว่า “ticket แบบไหนเรียกว่าด่วน” เป็นคำพูด — คุณจะเขียนได้เป็นย่อหน้าแล้วก็ยังไม่ครบ
แต่โชว์สองตัวอย่างว่า “อันนี้ด่วน อันนี้ไม่ด่วน” AI เห็นเกณฑ์ที่คุณใช้ทันที
คู่ Bad/Good ของสไลด์หน้า 26
❌ Bad Prompt
Classify these support tickets by urgency
👍 Good Prompt
Classify these tickets by urgency.
**Examples:**
- "App won't open, demo in 10 min" -> High.
- "Typo on the About page" -> Low.
Now classify: [tickets]
| ส่วนของ Good Prompt | ทำหน้าที่อะไร |
|---|---|
Classify these tickets by urgency. |
task — เหมือนฝั่ง Bad เกือบทุกคำ · แปลว่าความต่างทั้งหมดอยู่ที่ตัวอย่าง ไม่ได้อยู่ที่คำสั่ง |
**Examples:** |
หัวข้อ Markdown แยกให้เห็นว่า “ตรงนี้คือตัวอย่าง ไม่ใช่งานที่ต้องทำ” (เรื่องการแบ่งหมวดอยู่ในบท 89) |
"App won't open, demo in 10 min" -> High. |
ตัวอย่างขั้วบน — สอนเกณฑ์สองอย่างพร้อมกัน: ใช้งานไม่ได้เลย + มีเส้นตายใกล้มาก |
"Typo on the About page" -> Low. |
ตัวอย่างขั้วล่าง — ผิดจริงแต่ไม่กระทบการใช้งาน |
-> High. / -> Low. |
format — ไม่ได้เขียนสักคำว่า “ให้ตอบเป็นคำเดียว” แต่ตัวอย่างโชว์รูปแบบ ข้อความ -> ระดับ ให้เห็นแล้ว |
Now classify: [tickets] |
จุดที่ของจริงเริ่ม · [tickets] คือช่องให้วาง ticket จริงลงไป (ไม่ใช่ให้พิมพ์คำว่า [tickets]) |
ตัวอย่างในสไลด์มีแค่ High กับ Low ไม่มี Medium เลย
prompt นี้จึงไม่ได้บอกว่า มีระดับ Medium อยู่ไหม —
ticket อย่าง “ปุ่ม export ช้า 5 วินาที” จะถูกบีบให้เป็น High หรือ Low หรือได้ Medium ขึ้นมาเอง
prompt ไม่ได้กำหนดไว้ (ผมไม่ได้รันให้ดู เพราะคำตอบของ AI ไม่คงที่ — ข้อนี้เป็นเรื่องที่ prompt ไม่ได้บอก ไม่ใช่ผลรัน)
เอกสารทางการของ Anthropic แนะนำให้ตัวอย่าง ตรงกับงานจริง (Relevant) ·
หลากหลาย ครอบคลุม edge case (Diverse) · และแนะนำ 3–5 ตัวอย่าง
— ถ้าเอาไปใช้จริง ให้เติมตัวอย่าง Medium อย่างน้อยหนึ่งอัน
หรือเขียนบอกตรง ๆ ว่า “ระดับมีแค่ High / Medium / Low”
ไปร้านตัดผมแล้วพูดว่า “ตัดสั้นแบบดูสะอาด ๆ ด้านข้างไม่ต้องเกรียนมาก” —
ช่างสิบคนตัดออกมาสิบทรง
แต่ยื่นรูปในมือถือให้ดูหนึ่งรูป “แบบนี้” — ช่างสิบคนตัดออกมาใกล้กันมาก
และถ้ายื่นอีกรูปว่า “แบบนี้ไม่เอา” ก็คือ negative example ในสไลด์หน้า 25
ที่ไม่เหมือนกัน: ช่างตัดผมรู้ว่าอะไรในรูปคือ “ทรงผม” และอะไรคือ “ฉากหลัง” —
ส่วน AI ไม่รู้ว่าส่วนไหนของตัวอย่างสำคัญ มันอาจลอกทุกอย่าง
รวมถึงของที่คุณไม่ได้ตั้งใจ เช่น ความยาว · คำขึ้นต้น · หรือการมีแค่สองระดับ
เพราะงั้นตัวอย่างที่ดีต้องต่างกันในจุดที่ไม่สำคัญ
และเหมือนกันในจุดที่สำคัญ AI ถึงจะแยกออกว่าอะไรคือแพตเทิร์นจริง
- zero-shot · one-shot · few-shot (multishot)
- สั่งโดยไม่มีตัวอย่าง · มีหนึ่งตัวอย่าง · มีหลายตัวอย่าง · Bad Prompt หน้า 26 คือ zero-shot · Good Prompt คือ few-shot (สองตัวอย่าง) · เอกสารของ Anthropic เรียกอีกชื่อว่า multishot prompting · พิมพ์บอก AI ได้ว่า “Here are 3 examples of the commit message style I want:”
- positive / negative example
- ตัวอย่าง “ทำแบบนี้” กับ “อย่าทำแบบนี้” (สไลด์หน้า 25) ·
negative example ได้ผลดีที่สุดเมื่อวางคู่กับ positive ของเรื่องเดียวกัน ให้เห็นความต่างชัด ๆ ·
ในงานโค้ดใช้ได้เลย: “Follow the pattern in
RecipeCard.tsx. Do NOT copy the inline styles inOldCard.tsx.” - edge case (ในตัวอย่าง)
- กรณีที่อยู่ตรงขอบของเกณฑ์ (เช่น ticket ที่กึ่ง ๆ ระหว่าง High กับ Low) · ตัวอย่างที่มีแต่ขั้วบนกับขั้วล่างสอนเกณฑ์ตรงกลางไม่ได้ · ถาม senior ได้ว่า “มีเคสไหนที่คนในทีมเคยจัดระดับไม่ตรงกันบ้างครับ ผมจะเอาไปใส่เป็นตัวอย่าง”
หลักที่ 3 · Step-by-step Reasoning
สไลด์หน้า 28 (Involved Logic) — ถอดตามจริง:
ภาพข้างขวาเทียบสองทาง: ฝั่ง DIRECT GUESS เจอโจทย์ซับซ้อนแล้วคิดว่า “This looks complicated… I’ll just guess.” → SKIP ANALYSIS → ได้คำตอบสามรอบไม่ตรงกันเลย · ฝั่ง STEP-BY-STEP REASONING ไล่ 7 ขั้น: Understand the Problem → Gather Information → Identify Key Requirements → Break into Smaller Steps → Analyze and Reason → Verify Logic → Form Final Conclusion
พูดภาษาคน: ถ้าสั่งให้ “ตอบเลย” AI จะกระโดดจากโจทย์ไปคำตอบในก้าวเดียว
— เร็ว แต่ถ้าก้าวนั้นพลาดก็ไม่มีจุดให้คุณจับได้
ถ้าสั่งให้ “แสดงวิธีคิดก่อน แล้วค่อยสรุป” ทุกขั้นกลางทางถูกเขียนออกมาให้เห็น
ทั้ง AI และคุณจึงตรวจได้ทีละขั้น
กล่อง FINAL ANSWER (MAXIMUM PROFIT) ในภาพเขียนว่า
P1 = 6 units · P2 = 4 units · P3 = 8 units → Maximum Profit = $1,520
พร้อมข้อความ “All constraints satisfied. Solution verified.”
แต่กำไรต่อชิ้นที่โจทย์ในภาพเดียวกันให้มาคือ $40 · $60 · $80 — ลองคูณดู:
$ node -e 'console.log("6*40 + 4*60 + 8*80 =", 6*40 + 4*60 + 8*80)'
6*40 + 4*60 + 8*80 = 1120
ได้ $1,120 ไม่ใช่ $1,520 · และโจทย์ในภาพบอกแค่ว่า
“Each unit requires different hours and cost” โดยไม่ให้ตัวเลขชั่วโมงกับต้นทุนต่อชิ้นเลย
— แปลว่าคำว่า “All constraints satisfied” ตรวจไม่ได้ตั้งแต่แรก
ภาพนี้น่าจะสร้างด้วย AI สร้างภาพ ซึ่งมักเขียนตัวเลขไม่ถูก · ไม่กระทบใจความของสไลด์
แต่เป็นตัวอย่างที่ดีมากของประเด็นในหัวข้อนี้เอง: ข้อความ “verified” ไม่ใช่การ verify
— ถ้าไม่เห็นวิธีคิดทีละขั้น ก็ไม่มีทางรู้ว่าตัวเลขสุดท้ายมาจากไหน
สไลด์แยกการใช้หลักนี้เป็นสองกรณี ซึ่งเขียน prompt ต่างกันคนละแบบ:
กรณีที่ 1 — ไม่รู้ขั้นตอน (สไลด์หน้า 29 · When doesn’t know working steps)
❌ Bad Prompt
A shirt costs $40 after a 20% discount. What was
the original price?
👍 Good Prompt
A shirt costs $40 after a 20% discount. Work
through it step by step, then give the original
price.
A shirt costs $40 after a 20% discount. What was
the original price?
ลองตอบเองให้เร็วที่สุด ภายใน 3 วินาที อย่าหยิบเครื่องคิดเลข — ราคาเดิมคือเท่าไหร่?
ผลรันจริง:
$ node -e '
console.log("40 / (1 - 0.20) =", 40 / (1 - 0.20));
console.log("40 * (1 + 0.20) =", 40 * (1 + 0.20));
console.log("50 * 0.80 =", 50 * 0.80);
console.log("48 * 0.80 =", 48 * 0.80);'
40 / (1 - 0.20) = 50
40 * (1 + 0.20) = 48
50 * 0.80 = 40
48 * 0.80 = 38.400000000000006
คำตอบที่ถูกคือ $50 · ถ้าคุณตอบ $48 คุณตกหลุมเดียวกับที่โจทย์นี้ตั้งใจวางไว้:
“ลด 20% แล้วเหลือ 40 → บวก 20% กลับก็ได้ของเดิม”
สองบรรทัดล่างพิสูจน์ว่าทางไหนถูก: $50 ลด 20% ได้ $40 พอดี ·
ส่วน $48 ลด 20% ได้ $38.40 (38.400000000000006 คือเศษของเลขทศนิยมในคอมพิวเตอร์ ไม่ใช่ประเด็นตรงนี้)
ทางลัด “บวกกลับ 20%” ผิดเพราะ 20% ของราคาเดิม (50) ไม่เท่ากับ 20% ของราคาใหม่ (40) —
ก้าวเดียวที่ข้ามไปคือก้าวที่ผิด
นี่คือเหตุผลที่ Good Prompt เติม Work through it step by step, then give the original price. —
มันบังคับให้เขียนขั้น “40 คือ 80% ของราคาเดิม” ออกมาก่อนสรุป
ซึ่งเป็นขั้นที่ทำให้หลุมนี้หายไป · และถ้าขั้นไหนผิด คุณเห็นทันทีว่าผิดตรงไหน
สังเกตโครงของ Good Prompt หน้า 29: ไม่ได้บอกว่าขั้นตอนคืออะไร บอกแค่ว่า ให้มีขั้นตอน และลำดับ — “step by step” ก่อน “then give the original price” · ใช้เมื่อคุณเองก็ไม่รู้ว่าต้องคิดกี่ขั้น ปล่อยให้ AI แตกขั้นเอง (ตรงกับบรรทัด Reasoning first, conclusion second ของหน้า 28)
กรณีที่ 2 — รู้ขั้นตอนอยู่แล้ว (สไลด์หน้า 30 · When know working steps)
❌ Bad Prompt
Review this code, please.
👍 Good Prompt
Review this code and check each item. Mark ✅ or ❌
with a short note:
- [ ] No hardcoded secrets
- [ ] All functions have error handling
- [ ] Variable names are descriptive
- [ ] Tests cover edge cases
คราวนี้คุณรู้ขั้นอยู่แล้ว — ทีมมีเกณฑ์รีวิวสี่ข้อ · ไม่ต้องให้ AI คิดขั้นเอง ให้ขั้นไปเลย
Bad Prompt Review this code, please. ปล่อยให้ AI เลือกเองว่าจะรีวิวเรื่องอะไร —
อาจได้ความเห็นเรื่องการตั้งชื่อยาวสิบข้อ แต่ไม่พูดถึง secret ที่ hardcode ไว้เลยสักคำ
Good Prompt ทำสามอย่าง:
- ให้ขั้นตอนตายตัว — 4 ข้อ เรียงไว้ ข้ามไม่ได้
- บังคับให้ตอบทุกข้อ —
check each item· ข้อที่ไม่มีปัญหาก็ต้องติ๊ก ✅ ทำให้คุณแยกได้ว่า “ตรวจแล้วผ่าน” กับ “ลืมตรวจ” - กำหนดหน้าตาคำตอบ —
Mark ✅ or ❌ with a short note(คาบเกี่ยวกับหลักที่ 5 ในบท 89)
| ไม่รู้ขั้นตอน (หน้า 29) | รู้ขั้นตอน (หน้า 30) | |
|---|---|---|
| ใครเป็นคนแตกขั้น | AI | คุณ |
| คำที่ใส่ใน prompt | Work through it step by step, then … | รายการ checklist ที่เขียนเอง |
| ได้อะไร | เห็นวิธีคิดทุกขั้น ตรวจได้ว่าผิดตรงไหน | ได้ผลตรวจครบทุกเกณฑ์ ไม่มีข้อไหนหลุด |
| ใช้กับงานแบบไหน | คำนวณ · ไล่หาสาเหตุบั๊กที่ยังไม่รู้ต้นตอ · วิเคราะห์หลายชั้น | code review · เช็คก่อน commit · ตรวจตาม acceptance criteria |
หน้า 29 คือครูคณิตที่สั่งว่า “แสดงวิธีทำ” — ครูไม่ได้บอกว่าต้องใช้สูตรไหน
แต่พอเขียนออกมาทีละบรรทัด ครูชี้ได้ทันทีว่าบรรทัดที่สามผิด
หน้า 30 คือนักบินที่ไล่ checklist ก่อนขึ้นบิน — ไม่มีใครให้นักบิน “คิดเองว่าควรเช็คอะไร”
เพราะรายการถูกเขียนไว้แล้ว และทุกข้อต้องติ๊ก
ที่ไม่เหมือนกัน: นักเรียนที่แสดงวิธีทำ คิดจริง ตามที่เขียน ·
ส่วนข้อความ “วิธีคิด” ที่ AI เขียนออกมาไม่ได้รับประกันว่าถูก —
มันเขียนขั้นที่ดูสมเหตุสมผลแต่ผิดได้ (ดูกล่อง $1,520 ข้างบน)
ประโยชน์ของมันคือทำให้คุณตรวจได้ ไม่ใช่ทำให้คุณไม่ต้องตรวจ
และอีกข้อ: เอกสารของ Anthropic บอกว่าโมเดล Claude รุ่นใหม่ ๆ มี thinking ในตัว
(คิดก่อนตอบเองโดยปรับตามความยากของงาน) ·
คำว่า “step by step” จึงไม่ใช่สวิตช์วิเศษ — ส่วนที่ยังได้ผลเสมอคือขั้นที่คุณเขียนให้เองแบบหน้า 30
เพราะมันคือเกณฑ์ของทีมคุณ ที่ไม่มีโมเดลไหนรู้ได้เอง
- chain-of-thought (CoT)
- เทคนิคให้โมเดลเขียนวิธีคิดทีละขั้นก่อนสรุปคำตอบ — คือสิ่งที่สไลด์หน้า 28–29 เรียกว่า step-by-step reasoning · พิมพ์บอก AI ได้ว่า “Think through the root cause step by step first. Don't change any code until you've explained it.”
- thinking / extended thinking
- ความสามารถในตัวโมเดลที่คิดก่อนตอบได้เองโดยไม่ต้องสั่ง · Claude รุ่นใหม่ใช้แบบ adaptive คือคิดมากหรือน้อยตามความยากของงาน · ถาม senior ได้ว่า “งานแบบไหนในทีมที่ควรสั่งให้ Claude อธิบายแผนและเหตุผลก่อนแก้โค้ดครับ”
- checklist prompt
- prompt ที่แนบรายการเกณฑ์ให้ตรวจทีละข้อ (สไลด์หน้า 30) · ใช้ได้ดีกับทุกงานที่ทีมมีมาตรฐานเขียนไว้แล้ว · พิมพ์บอก AI ได้ว่า “Check this diff against each item below. Mark ✅ or ❌ with a one-line reason.”
เอามาใช้จริง — สั่ง Claude Code แก้ RecipeCard ในแอป Wongnok
ตัวอย่างในสไลด์เป็นงานเขียนประกาศ · จัดระดับ ticket · คิดเลข · แต่งานที่คุณจะใช้ Claude Code จริง ๆ คือแก้โค้ด — ลองเอาสามหลักมาใช้กับแอปที่เพิ่งสร้างในบท 79–85
สถานการณ์: การ์ดสูตรอาหารตอนนี้แสดงระดับความยากเป็นคำดิบ ๆ จาก type
"EASY" | "MEDIUM" | "HARD" อยากให้เป็นป้าย Badge ภาษาไทยแทน
(ชื่อไฟล์ในตัวอย่างนี้คือ components/recipe/RecipeCard.tsx —
ถ้าโปรเจกต์ของคุณวางไฟล์ไว้ที่อื่น ให้เปลี่ยนเป็น path จริงของคุณ)
❌ prompt ที่มักพิมพ์กันจริง
ทำให้ level บนการ์ดสูตรอาหารดูดีขึ้นหน่อย
“ดูดีขึ้น” คือแบบไหน? การ์ดไหน (หน้า list หรือหน้ารายละเอียด)? แก้ Badge กลางของ shadcn ได้ไหม? เสร็จแล้วรู้ได้ยังไงว่าเสร็จ? — Claude ต้องเดาทั้งหมด
👍 prompt ที่ระบุครบ
งาน: ใน components/recipe/RecipeCard.tsx
ตอนนี้ level แสดงเป็นคำดิบ เช่น "EASY"
ให้เปลี่ยนเป็น <Badge variant="secondary">
จาก @/components/ui/badge ที่มีอยู่แล้ว
ข้อความบนป้าย (ตัวอย่างครบทุกค่า):
- "EASY" -> ง่าย
- "MEDIUM" -> ปานกลาง
- "HARD" -> ยาก
ข้อห้าม:
- ห้ามแก้ไฟล์ใน components/ui/
- ห้ามติดตั้ง package ใหม่
- ห้ามเปลี่ยน type RecipeLevel
ตรวจก่อนบอกว่าเสร็จ ทำทีละข้อ:
1. npx tsc --noEmit ต้องไม่มี error
2. npx eslint . ต้องไม่มี error
3. npx next build ต้องผ่าน
4. git diff --stat ต้องมีแค่ RecipeCard.tsx
แปะ output จริงของทั้ง 4 ข้อมาให้ดู
ชำแหละ prompt ฝั่งขวาทีละส่วน — แต่ละส่วนมาจากหลักไหน:
| ส่วน | ในตัวอย่าง | มาจากหลัก | ถ้าไม่ใส่ |
|---|---|---|---|
| ไฟล์ (scope) | components/recipe/RecipeCard.tsx · @/components/ui/badge |
1 · Clear | Claude ต้องค้นหาเองว่า “การ์ดสูตรอาหาร” คือไฟล์ไหน และอาจเขียนป้ายใหม่เองแทนที่จะใช้ของเดิม |
| พฤติกรรมที่ต้องการ (task + format) | เปลี่ยนคำดิบเป็น Badge variant="secondary" |
1 · Clear | “ดูดีขึ้น” อาจกลายเป็นเปลี่ยนสี · เพิ่มไอคอน · หรือจัด layout ทั้งการ์ดใหม่ |
| ตัวอย่างครบทุกค่า | "EASY" -> ง่าย ฯลฯ |
2 · Examples | ต้องเดาคำแปล (ง่าย? เริ่มต้น? มือใหม่?) · และให้ครบทุกค่า ไม่ใช่แค่สองขั้วแบบหน้า 26 |
| ข้อห้าม (constraints) | ห้ามแตะ components/ui/ · ห้ามลง package · ห้ามเปลี่ยน type |
1 · Clear | ทางลัดที่ “ได้ผลเหมือนกัน” เช่นแก้ Badge กลาง ซึ่งจะเปลี่ยนป้ายทุกที่ในแอปไปด้วย |
| วิธีตรวจ (checklist) | 4 ข้อ ทำทีละข้อ แปะ output จริง | 3 · Step-by-step (แบบรู้ขั้นตอน หน้า 30) | Claude หยุดเมื่องาน “ดูเสร็จ” · คุณต้องรันตรวจเองทุกครั้ง · และไม่มีหลักฐานว่ามันรันจริง |
ข้อ “วิธีตรวจ” คือส่วนที่คนมักลืมที่สุด และเป็นส่วนที่เอกสาร Claude Code ยกเป็นหัวข้อแรกของ best practices
(Give Claude a way to verify its work) · เอกสารบอกว่าถ้าไม่มีสิ่งที่รันแล้วได้ผ่าน/ไม่ผ่าน
คุณจะกลายเป็นคนตรวจเองทุกรอบ และแนะนำให้ขอหลักฐาน (output ของคำสั่ง) แทนคำยืนยันว่า “เสร็จแล้ว”
ตรงกับขั้น Evaluate ในบท 87 พอดี — prompt ที่ดีคือ prompt ที่ใส่ขั้น Evaluate ไว้ในตัว
เช็คลิสต์ 4 ข้อนั้นคืนผลอะไรจริง ๆ
เพื่อให้เห็นว่าคำสั่งตรวจในเช็คลิสต์ไม่ใช่พิธีกรรม ผมแก้โค้ดตามโจทย์นี้เองด้วยมือ
ในโปรเจกต์ Next.js + shadcn แล้วรันทั้งสี่ข้อ
รอบแรกผมจงใจลืม HARD ไว้หนึ่งค่า — เป็นความผิดพลาดแบบที่ทั้งคนและ AI ทำได้:
const LEVEL_LABEL: Record<RecipeLevel, string> = {
EASY: "ง่าย",
MEDIUM: "ปานกลาง",
};
$ npx tsc --noEmit; echo "rc=$?"
components/recipe/RecipeCard.tsx(11,7): error TS2741: Property 'HARD' is missing in type '{ EASY: string; MEDIUM: string; }' but required in type 'Record<RecipeLevel, string>'.
rc=2
$ npx eslint .; echo "rc=$?"
rc=0
ข้อ 1 จับได้ · ข้อ 2 ปล่อยผ่าน — eslint ไม่ได้ตรวจ type · นี่คือเหตุผลที่เช็คลิสต์ต้องมีหลายข้อ
และ tsc จับได้เพราะใช้ Record<RecipeLevel, string>
ซึ่งบังคับให้มีครบทุกค่าของ union · ถ้าเขียนเป็น object ธรรมดาไม่ใส่ type จะไม่มีอะไรฟ้องเลย
(ประโยชน์ของการใช้ union แทน string อิสระ)
เติม HARD: "ยาก", แล้วรันทั้งสี่ข้ออีกรอบ:
$ npx tsc --noEmit; echo "rc=$?"
rc=0
$ npx eslint .; echo "rc=$?"
rc=0
$ npx next build
▲ Next.js 16.3.5 (Turbopack)
…
✓ Compiled successfully in 3.5s
Running TypeScript ...
Finished TypeScript in 641ms ...
…
Route (app)
┌ ○ /
├ ○ /_not-found
└ ○ /recipes
$ git diff --stat
components/recipe/RecipeCard.tsx | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
(ตัวเลขใน git diff --stat ขึ้นกับหน้าตาไฟล์ก่อนแก้ — ของผมก่อนแก้เป็น
<CardContent>{level}</CardContent> บรรทัดเดียว ของคุณจะได้เลขไม่ตรงกันก็ไม่แปลก
ที่ต้องดูคือรายชื่อไฟล์)
ข้อ 4 คือตัวที่ตรวจข้อห้าม — ถ้ามีไฟล์ใน components/ui/ โผล่ในรายการ
แปลว่ามีการแตะของที่สั่งห้ามไว้ ไม่ต้องไปไล่อ่าน diff ทีละบรรทัดก็รู้
(tsc กับ eslint ที่ผ่านจะไม่พิมพ์อะไรเลย จึงต้องต่อ echo "rc=$?"
ให้เห็น exit code — 0 คือผ่าน)
ตอนผมรัน npx tsc --noEmit ครั้งแรกในโปรเจกต์ที่ยังไม่เคย build หรือเปิด dev server เลย
ได้ error เกินมาหนึ่งบรรทัด:
app/layout.tsx(20,50): error TS2304: Cannot find name 'LayoutProps'.
LayoutProps เป็น type ที่ Next.js สร้างให้ตอน build/dev (อยู่ในโฟลเดอร์ .next) —
โปรเจกต์ใหม่ยังไม่มี · แก้ด้วย npx next typegen (ขึ้นว่า ✓ Types generated successfully)
แล้ว error บรรทัดนี้หายไป
ที่ต้องรู้เพราะ: ถ้าเจอแบบนี้แล้ว Claude พยายาม “แก้” layout.tsx ให้ tsc ผ่าน
แปลว่ามันแก้ผิดที่ · ใส่ข้อห้าม “แก้เฉพาะไฟล์ที่ระบุ” ไว้ใน prompt ช่วยกันเรื่องนี้ได้ด้วย
🎯 ภารกิจ — เขียน prompt ให้ Claude Code เพิ่ม Empty state
หน้า /recipes ตอนนี้ถ้าไม่มีสูตรอาหารสักอัน จะเป็นพื้นที่ว่างเปล่า (เหมือนโจทย์ค้นไม่เจอในบท 78)
เขียน prompt หนึ่งก้อน สั่ง Claude Code ให้เพิ่มหน้าจอ Empty state โดยต้องมีครบ:
- ไฟล์ — ระบุ path ที่จะแก้ (ใช้ path จริงในโปรเจกต์ของคุณ)
- พฤติกรรมที่ต้องการ — เงื่อนไขที่แสดง · ข้อความที่แสดง · มีปุ่มหรือไม่
- ตัวอย่าง อย่างน้อยหนึ่งคู่แบบ input → output (หลักที่ 2)
- ข้อห้าม อย่างน้อยสองข้อ
- เช็คลิสต์ตรวจ ที่รันได้จริงและได้ผ่าน/ไม่ผ่าน (หลักที่ 3 แบบรู้ขั้นตอน) รวมถึงข้อที่พิสูจน์ว่า มีรายการแล้วยังแสดงการ์ดเหมือนเดิม
เขียนเสร็จแล้วตรวจ prompt ของตัวเองด้วยคำถามเดียว: “ถ้ายื่นให้เพื่อนร่วมคอร์สที่ไม่เคยเห็นโค้ดของผม เขาจะต้องถามกลับไหม — ถามอะไร?” (นี่คือ golden rule ในเอกสารของ Anthropic)
ตัวอย่างหนึ่งแบบ (ไม่ใช่คำตอบเดียวที่ถูก — ใช้เทียบว่าคุณมีครบห้าส่วนไหม):
งาน: เพิ่ม Empty state ในหน้า /recipes
ไฟล์: components/recipe/RecipeList.tsx
(ตัวที่ map รายการสูตรอาหารเป็น RecipeCard)
พฤติกรรมที่ต้องการ:
- ถ้า array สูตรอาหารว่าง ให้แสดงกล่องตรงกลางแทนตาราง
- ข้อความ "ยังไม่มีสูตรอาหาร" และข้อความรอง
"เริ่มแชร์สูตรแรกของคุณได้เลย"
- ปุ่ม <Button> จาก @/components/ui/button ข้อความ "เพิ่มสูตรอาหาร"
(ยังไม่ต้องทำให้กดแล้วไปไหน)
ตัวอย่าง:
- recipes = [] -> เห็นกล่อง Empty state, ไม่มี RecipeCard
- recipes มี 3 รายการ -> เห็น RecipeCard 3 ใบ, ไม่มีกล่อง Empty state
ข้อห้าม:
- แก้เฉพาะ RecipeList.tsx (ถ้าจำเป็นต้องแก้ไฟล์อื่น ให้ถามก่อน)
- ห้ามแก้ไฟล์ใน components/ui/
- ห้ามติดตั้ง package ใหม่
ตรวจก่อนบอกว่าเสร็จ ทำทีละข้อ แล้วแปะ output จริง:
1. npx tsc --noEmit ไม่มี error
2. npx eslint . ไม่มี error
3. npx next build ผ่าน
4. git diff --stat มีแค่ RecipeList.tsx
5. บอกวิธีที่คุณใช้ตรวจว่าทั้งสองกรณีในหัวข้อ "ตัวอย่าง" แสดงผลถูกจริง
เทียบกับของคุณ:
- ตัวอย่างมีทั้งสองทาง — กรณีว่างและกรณีมีข้อมูล · ถ้ามีแค่กรณีว่าง Claude อาจทำ Empty state ถูก แต่เผลอทำการ์ดปกติพังโดยไม่มีข้อไหนในเช็คลิสต์จับได้
- ข้อห้าม “ถ้าจำเป็นต้องแก้ไฟล์อื่น ให้ถามก่อน” — ดีกว่าห้ามเด็ดขาด
เพราะบางครั้งต้องแก้จริง (เช่นต้องส่ง prop ใหม่จาก
page.tsx) · แบบนี้ Claude จะหยุดถามแทนที่จะทำเงียบ ๆ - ข้อ 5 ของเช็คลิสต์ — สามข้อแรกพิสูจน์แค่ว่าโค้ดไม่พัง ไม่ได้พิสูจน์ว่าทำงานตามที่ต้องการ · build ผ่านได้ทั้งที่ Empty state ไม่เคยโผล่ (บทเรียนเดียวกับบท 78: “build ผ่าน” ไม่ได้แปลว่า “ถูก”)
- ถ้าคุณไม่ได้ใส่ข้อความที่จะแสดง ลองถามตัวเองว่ายอมให้ Claude เลือกคำให้ได้ไหม — ถ้ายอมได้ ก็ไม่ผิด · ถ้าไม่ยอม ต้องเขียน
ขั้นสุดท้ายที่พิสูจน์ว่า prompt คุณใช้ได้จริง: เอาไปสั่ง Claude Code ในโปรเจกต์ของคุณ แล้วรันเช็คลิสต์ทั้ง 5 ข้อด้วยตัวเองซ้ำอีกรอบ · ถ้าข้อไหนไม่ผ่าน ให้ย้อนดูว่า prompt ขาดอะไร — นั่นคือหลักที่ 6 (Iterate and Refine) ในบท 89
ลองตอบดู
prompt Write something about our new feature. (สไลด์หน้า 23) ขาดชิ้นไหนมากที่สุด จนต่อให้ AI เก่งแค่ไหนก็เขียนออกมาถูกไม่ได้?
ตัวเลือกที่ 2 ถูก · tone · ความยาว · audience ถ้า AI เดาผิด ผลที่ได้ยัง “ใช้ได้แต่ไม่ตรงใจ” และแก้ต่อได้
แต่ “ฟีเจอร์ใหม่คืออะไร” เป็นข้อมูลที่มีอยู่ในหัวคุณคนเดียว — AI ไม่มีทางรู้ว่าเป็น dark mode
และไม่มีทางรู้ว่าจุดขายคือลดอาการล้าตากับ sync ข้ามอุปกรณ์ จึงต้องแต่งขึ้นเอง
ผลคือประกาศที่พูดถึงฟีเจอร์ที่ไม่มีอยู่จริง
ตัวเลือกที่ 1, 3, 4 ขาดจริงทั้งหมด (Good Prompt เติมให้ครบ) แต่เป็นชิ้นที่เดาผิดแล้วเสียหายน้อยกว่า
จุดที่ต้องจำ: ข้อมูลที่ AI หาเองไม่ได้ (อยู่ในหัวคุณ ไม่อยู่ในโค้ด ไม่อยู่บนเน็ต) คือสิ่งแรกที่ต้องเขียนลงไป
Good Prompt ของสไลด์หน้า 26 มีตัวอย่างแค่ -> High. กับ -> Low. — ถ้าจะเอาไปใช้จริงควรปรับอะไรเป็นอย่างแรก?
ตัวเลือกที่ 4 ถูก · ตัวอย่างสอนขอบเขตของคำตอบไปด้วย · มีแค่สองขั้วคือไม่ได้บอกว่ามี Medium ไหม
และ ticket ส่วนใหญ่ในชีวิตจริงอยู่ตรงกลาง · เอกสารของ Anthropic แนะนำให้ตัวอย่าง Diverse ครอบคลุม edge case
ตัวเลือกที่ 1 ย้อนกลับไปทางที่สไลด์หน้า 25 บอกว่าแย่กว่า (quality far better than only describing) ·
ตัวเลือกที่ 2 ทำให้ตัวอย่างเอียงไปทาง High มากขึ้นอีก ไม่ได้แก้ช่องว่างตรงกลาง ·
ตัวเลือกที่ 3 เปลี่ยนแค่หน้าตา -> สื่อความหมายชัดอยู่แล้ว
จุดที่ต้องจำ: ตัวอย่างที่ดีต้องครอบคลุมทุกคำตอบที่เป็นไปได้ โดยเฉพาะกรณีก้ำกึ่ง ไม่ใช่แค่ขั้วที่เห็นชัด
คุณจะให้ Claude Code รีวิว pull request ตามกฎ 5 ข้อที่ทีมเขียนไว้ใน wiki — ควรใช้ prompt แบบไหน?
ตัวเลือกที่ 1 ถูก · นี่คือกรณี รู้ขั้นตอนอยู่แล้ว ตามสไลด์หน้า 30 — ทีมมีกฎเขียนไว้ชัด ก็ให้กฎไปเลย
และการบังคับให้ตอบทุกข้อทำให้แยก “ผ่าน” ออกจาก “ลืมตรวจ” ได้
ตัวเลือกที่ 2 คือเทคนิคของหน้า 29 ซึ่งใช้ตอนไม่รู้ขั้นตอน — AI จะแตกขั้นเองตามหลักทั่วไป
ไม่ใช่ตามกฎของทีมคุณ ·
ตัวเลือกที่ 3 คือ Bad Prompt ของหน้า 30 ตรง ๆ — AI ไม่รู้กฎใน wiki ของทีม ·
ตัวเลือกที่ 4 ใช้ few-shot ผิดงาน — PR สองอันไม่ได้บอกว่ากฎคืออะไร AI ต้องเดาเกณฑ์จากตัวอย่างอีกที
จุดที่ต้องจำ: ไม่รู้ขั้น → สั่งให้คิดทีละขั้น · รู้ขั้นอยู่แล้ว → เขียนขั้นให้เองเป็น checklist
prompt แก้ RecipeCard มีเช็คลิสต์ tsc · eslint · next build · git diff --stat — ข้อไหนจับได้ว่ามีการแอบแก้ไฟล์ใน components/ui/?
ตัวเลือกที่ 3 ถูก · ในผลรันจริง git diff --stat แสดง components/recipe/RecipeCard.tsx | 11 ++++++++++-
และ 1 file changed — ถ้ามีไฟล์ใน components/ui/ เปลี่ยน มันจะโผล่ในรายการนี้ทันที
ผมลองจริงแล้ว: แก้สีของ variant secondary ใน components/ui/badge.tsx หนึ่งบรรทัด
ผลคือ tsc rc=0 · eslint rc=0 · next build ผ่าน (rc=0) ·
มีแค่ git diff --stat ที่ขึ้น components/ui/badge.tsx | 2 +- และ 2 files changed
ตัวเลือกที่ 1 และ 2 ผิดเพราะสองตัวนี้ตรวจว่า “โค้ดพังไหม” ไม่ได้ตรวจว่า “แตะไฟล์ที่ห้ามไหม” ·
ตัวเลือกที่ 4 ผิดเพราะ eslint ของ create-next-app ไม่มีกฎแบบนั้น — ในผลรันจริงมันคืน rc=0 ทั้งตอนแก้ badge
และตอนที่ลืมใส่ HARD ซึ่ง tsc จับได้
จุดที่ต้องจำ: เช็คลิสต์แต่ละข้อจับความผิดคนละแบบ — ข้อห้ามใน prompt ต้องมีคำสั่งตรวจที่จับข้อห้ามนั้นได้จริงคู่กันเสมอ
ถามกลับได้เลย
ถ้าคุณมี prompt ที่เคยใช้กับ Claude Code แล้วได้ผลไม่ตรงใจ เอามาวางได้เลย —
เราจะไล่ดูด้วยกันว่าขาดชิ้นไหนในตาราง ไฟล์ · พฤติกรรม · ตัวอย่าง · ข้อห้าม · วิธีตรวจ
หรือถ้าไม่แน่ใจว่างานของคุณเป็นแบบ “ไม่รู้ขั้นตอน” (หน้า 29) หรือ “รู้ขั้นตอน” (หน้า 30)
เล่างานมาได้ ส่วนใหญ่เป็นแบบผสม — ขั้นหาสาเหตุไม่รู้ขั้น แต่ขั้นตรวจก่อน commit รู้ขั้นเสมอ
อ้างอิง
- Claude Docs — Prompting best practices —
อ่านหัวข้อ Be clear and direct (มี Golden rule เรื่องยื่น prompt ให้เพื่อนร่วมงานอ่าน)
กับ Use examples effectively (เกณฑ์ Relevant · Diverse · Structured และคำแนะนำ 3–5 ตัวอย่าง)
· ลิงก์เดิม
docs.claude.com/…/be-clear-and-directและ…/multishot-promptingredirect มาที่หน้านี้ - Claude Docs — Leverage thinking & interleaved thinking capabilities —
อ่านสองย่อหน้าแรก ที่อธิบายว่า Claude รุ่นใหม่ใช้ adaptive thinking คิดเองตามความยากของงาน ·
ใช้ประกอบกล่อง “ที่ไม่เหมือนกัน” ของหลักที่ 3 (ลิงก์เดิม
…/chain-of-thoughtredirect มาที่หัวข้อนี้) - Claude Code Docs — Best practices for Claude Code — อ่านหัวข้อ Give Claude a way to verify its work (ที่มาของ “วิธีตรวจ” ใน prompt แก้ RecipeCard และเรื่องขอหลักฐานแทนคำยืนยัน) กับ Provide specific context in your prompts ซึ่งมีตาราง Before/After ของงานโค้ดโดยตรง (ระบุไฟล์ · ชี้ pattern ที่มีอยู่ · บอกอาการและนิยามของคำว่า “แก้แล้ว”)
- Claude Docs — Prompt engineering overview — อ่านหัวข้อ Before prompt engineering ที่บอกให้มีเกณฑ์ความสำเร็จและวิธีทดสอบก่อนลงมือปรับ prompt (แนวคิดเดียวกับเช็คลิสต์ตรวจในบทนี้) · เป็นทางต่อไปยังหลัก 4–6 ในบท 89