| name | writing-shape |
| description | งานเขียน โหมด exploit — ปั้นวัตถุดิบดิบให้เป็นบทความ ทีละย่อหน้า |
| disable-model-invocation | true |
user ได้ส่ง (หรือกำลังจะส่ง) ไฟล์ markdown ของวัตถุดิบดิบมาให้ ให้มองมันเป็นกอง input — จะเป็น list ของ fragment ที่เรียบเรียงมาแล้ว กำแพง prose ไร้โครงสร้าง หรือ transcript ก็ได้ format ไม่สำคัญ อ่านให้จบตั้งแต่ต้นจนท้ายก่อนทำอย่างอื่น
จากนั้นรัน session ปั้นรูปทรง (shaping) ที่ผลิตเอกสารบทความแยกออกมาอีกไฟล์ นี่คือโหมด exploit: ช่วงสำรวจจบไปแล้ว กองวัตถุดิบนิ่งแล้ว — ให้ commit กับโครงสร้างหนึ่งโครง แล้วขุดจากกองมาเติมให้เต็ม ห้ามแก้ไฟล์วัตถุดิบ — สำหรับ skill นี้ไฟล์นั้นเป็น read-only
ถ้า user ไม่ได้บอกว่าให้เซฟบทความไว้ที่ไหน ถามครั้งเดียวแล้วจำ path นั้นไว้
ลูปการทำงาน
- อ่านกองวัตถุดิบ อ่านไฟล์ input ให้ครบทั้งไฟล์ จับภาพรวมว่าข้างในมีอะไรบ้าง
- ตั้ง prerequisite ตกลงกับ user ว่าผู้อ่านรู้อะไรมาก่อนแล้วตอนเปิดบทความ — นั่นคือ concept ที่ grounded ตั้งแต่ต้น ที่เหลือทั้งหมดต้องถูก ground โดย block หนึ่งเสียก่อน block ถัด ๆ ไปถึงจะพิงมันได้ ดู Grounding
- ร่าง opening 2–3 แบบ แต่ละ opening ควรสื่อ thesis หรือมุมของบทความคนละแบบ โชว์ให้ดูทั้งหมด บังคับให้ user เลือกหรือผสมเป็น hybrid opening ที่เลือกจะกำหนดว่าบทความส่วนที่เหลือต้องทำอะไร
- โตทีละย่อหน้า หลัง opening ลงตัวแล้ว ถามว่า "ด้วย opening แบบนี้ ผู้อ่านต้องได้ยินอะไรเป็นอย่างต่อไป?" ดึงวัตถุดิบจากกองมาตอบ block ถัดไปพิงได้เฉพาะ concept ที่ grounded แล้ว และพอมันลงจอด มันก็ ground concept ใหม่ให้บทความต่อ ถกกันเรื่องรูปแบบของ block ถัดไปด้วย — จะเป็นย่อหน้า, list, ตาราง, callout, quote หรือ code block ทุกการเลือก format ต้องตั้งใจและอธิบายเหตุผลได้
- เขียนต่อท้ายไฟล์บทความไปเรื่อย ๆ อย่ารอสะสมแล้วเขียนทีเดียว เขียนย่อหน้าหรือ block ที่ตกลงกันได้แล้วลงไฟล์ทันที เพื่อให้ user เห็นบทความค่อย ๆ เป็นรูปเป็นร่าง
- วนข้อ 4 จนบทความเสร็จ user เป็นคนตัดสินว่าเสร็จเมื่อไหร่
Grounding
ทุก concept ต้องถูก ground ก่อนที่ block ไหนจะพิงมันได้: ผู้อ่านต้องรู้มันมาก่อนตอนเปิดอ่าน หรือได้เจอมันใน block ก่อนหน้าแล้ว block ที่เอื้อมไปหา concept ที่ยังไม่ grounded จะทำผู้อ่านหลุด หน่วยของเรื่องนี้คือตัว concept ไม่ใช่คำที่ใช้เรียกมัน — block อาจพิง idea ที่ผู้อ่านไม่มีได้ทั้งที่ไม่มี jargon สักคำ ส่วน concept ที่มีชื่อเรียก — มี term — การ ground มันหมายถึงส่งทั้ง idea และ term ลงจอดพร้อมกัน
concept ถูก ground ได้สองทาง:
- Prerequisite — grounded ก่อน opening ผู้อ่านพกมาเอง ตกลงกันตายตัวตั้งแต่ต้น
- Introduced — มี block หนึ่งตั้งมันขึ้นมา จากนั้นมันก็ grounded ไปตลอดทั้งบทความ
เก็บ list ของสิ่งที่ grounded แล้วไว้ตลอด เวลาถามว่า "ผู้อ่านต้องได้ยินอะไรต่อ?" ถ้า move ถัดไปต้องใช้ concept ที่ยังไม่ grounded คำตอบก็คือตัว concept นั้นเอง: ต้อง ground มันก่อน — ตรงนี้เลยหรือใน block ก่อนหน้า — ไม่งั้นเดิน move นั้นไม่ได้ นี่คือการชี้ช่องว่างแบบเดียวกับ Pulling from the pile แต่ยกขึ้นมาอีกชั้น: ที่นั่นกองวัตถุดิบขาดเนื้อหา ที่นี่บทความขาดฐานราก
คานงัดอยู่ที่การเลือกว่าอะไรเป็น prerequisite และอะไรถูก ground ในตัวบทความ เรียกร้องจากผู้อ่านมากไปตั้งแต่ต้นก็เท่ากับปิดประตูใส่คนอ่าน แต่ถ้า ground ในบทความมากไป opening ก็จมอยู่กับนิยาม ตกลงเรื่องนี้กับ user ตอนตั้ง prerequisite
ฟีลของบทสนทนา
นี่คือ grilling session แบบกลับด้าน ตอน ideation คำถามคือ "จริง ๆ แล้วคุณกำลังสังเกตเห็นอะไร?" ที่นี่คำถามคือ "บทความนี้กำลัง argue อะไรกันแน่ และผู้อ่านต้องได้ยินมันเรียงลำดับแบบไหน?" ดันกลับด้วย อย่าปล่อย transition อ่อน ๆ ผ่านไปเฉย ๆ ถ้าย่อหน้าไหนไม่คู่ควรกับที่ของมัน ตัดทิ้ง
moves ที่ควรใช้ซ้ำ ๆ:
- "ย่อหน้านี้ให้อะไรผู้อ่านที่ย่อหน้าก่อนหน้ายังไม่ได้ให้?"
- "ถ้าตัดตรงนี้ทิ้ง อะไรพังบ้าง?"
- "นี่ควรเป็น prose หรือควรเป็น list กันแน่? ทำไมถึงเลือก prose?"
- "ประโยคนี้ทำสองงานพร้อมกัน — แยกมัน หรือเลือกงานเดียว"
- "opening สัญญาไว้ว่า X แต่ตอนนี้เราลอยไป Y แล้ว จะร้อยเรื่องกลับ หรือจะเปลี่ยน opening"
Pulling from the pile
มองวัตถุดิบดิบเป็นเหมืองหิน ไม่ใช่ script ดึง fragment ออกมา ปรับให้เข้ากับย่อหน้ารอบ ๆ แล้ววางลงไป fragment ชิ้นหนึ่งอาจถูกหั่นกระจายไปหลายย่อหน้า ถูกควบรวมกับอีกชิ้น หรือถูก paraphrase ก็ได้ หน้าที่ของกองคือถูกขุด หน้าที่ของบทความคืออ่านแล้วเป็นเสียงเดียวกันทั้งเรื่อง
ถ้ากองวัตถุดิบขาดสิ่งที่บทความต้องการ ให้ชี้ช่องว่างออกมาตรง ๆ: "ตรงนี้ต้องมีตัวอย่าง แต่ในกองไม่มี — ให้มาเดี๋ยวนี้ หรือไม่ก็ตัด section นี้ทิ้ง"
ประเด็นเรื่อง format ที่ควรถกกันจริง ๆ
เวลาเลือกว่าจะ render block ออกมาแบบไหน ให้ชั่ง tradeoff เหล่านี้ออกมาดัง ๆ กับ user อย่าตัดสินใจเงียบ ๆ:
- Prose vs. list prose พาเหตุผลเดินไปข้างหน้า list เหมาะกับ item ที่ขนานกัน ถ้า item ไม่ได้ขนานกันจริง prose ดีกว่า ถ้าขนานกันจริง list สแกนเร็วกว่า
- Inline vs. callout tip, warning และเรื่องแทรกไปอยู่ใน callout (
> [!TIP], > [!NOTE]) — แต่เฉพาะกรณีที่ถ้าปล่อยไว้ inline แล้วมันจะลากประเด็นหลักออกนอกเรื่องจริง ๆ ไม่งั้นปล่อยไว้ inline
- ตาราง vs. โครงสร้างซ้ำ ถ้ารูปทรงเดิมซ้ำ 3+ ครั้งด้วย field ชุดเดิม ใช้ตาราง ไม่งั้นใช้ prose ที่ขึ้นต้นแต่ละท่อนด้วยตัวหนา
- Quote vs. paraphrase quote เมื่อถ้อยคำต้นฉบับคือประเด็น paraphrase เมื่อสนใจแค่ตัว idea
- Code block vs. inline code หลายบรรทัด รันได้ หรือใช้ประกอบคำอธิบาย → block ส่วน token หรือ identifier เดี่ยว ๆ → inline
จังหวะการเขียน
เขียนต่อท้ายไฟล์บทความทุกครั้งที่ block ตกลงกันได้ อ่านไฟล์จาก disk ใหม่ก่อนเขียนทุกครั้ง — user อาจแก้ไฟล์ระหว่างเทิร์น ห้ามเขียนทับสุ่มสี่สุ่มห้า ถ้า user อยากให้ rewrite ย่อหน้าไหน แก้เฉพาะย่อหน้านั้นตรงที่เดิม ที่เหลืออย่าไปแตะ
นอกขอบเขต
- ขุดหา fragment ใหม่ที่ไม่อยู่ในกอง (จัดการช่องว่างตามวิธีใน "Pulling from the pile")
- แก้ไฟล์วัตถุดิบดิบ
- publish, จัด format ให้ platform ใดเป็นการเฉพาะ หรือเพิ่ม frontmatter ที่ user ไม่ได้ขอ