- SimpleEnglish เป็น Agent Skill ที่ทำให้ LLM เขียนเอกสารเชิงเทคนิคที่สั้นและไม่กำกวม โดยให้สอดคล้องกับภาษาควบคุม ASD-STE100 ซึ่งใช้ในวงการอวกาศและการบินมาตั้งแต่ปี 1983
- ใช้ กฎ 53 ข้อ เช่น จำกัดความยาวประโยค ใช้ active voice ใช้ tense แบบง่าย วางเงื่อนไขไว้ก่อน คำสั่งหนึ่งรายการต่อหนึ่งประโยค และรองรับเอกสาร ข้อความข้อผิดพลาด runbook รายงานเหตุการณ์ release note prompt และการเตรียมเอกสารก่อนแปล
- ในการประเมิน 96 ครั้งที่เปรียบเทียบ Claude 6 โมเดลกับงาน 8 แบบ ภายใต้ 2 เงื่อนไข พบว่า การละเมิด STE ต่อ 100 คำลดลงเฉลี่ย 72.9% และทุกโมเดลใช้ output token น้อยลง
- ติดตั้งได้โดยไม่ต้องมี dependency ใน Claude Code, Cursor, VS Code Copilot, OpenAI Codex, Gemini CLI และเครื่องมืออื่นที่รองรับมาตรฐาน Agent Skills ส่วนสภาพแวดล้อมที่ไม่รองรับสามารถใช้เป็น system prompt หรือคำสั่งผู้ใช้ได้
- ผลลัพธ์ไม่ใช่การรับรองอย่างเป็นทางการจาก ASD และไม่ใช้กับงานเขียนการตลาด บล็อก หรือสำนวนแบรนด์ โหมดพื้นฐานผสานกฎโครงสร้างกับคำศัพท์เฉพาะโดเมน ส่วนการตัดสินคำในโหมดเข้มงวดต้องใช้มาตรฐานทางการ
ปัญหาที่โปรเจกต์นี้แก้ไข
- SimpleEnglish เป็น Agent Skill ที่เปลี่ยนประโยคของ LLM ที่มักเกินจริงและกำกวม ให้ใกล้เคียงกับประโยคเชิงเทคนิคแบบ ASD-STE100 Simplified Technical English
- ASD-STE100 เป็นภาษาควบคุมที่ใช้ในวงการอวกาศและการบินมาตั้งแต่ปี 1983 เพื่อไม่ให้ช่างซ่อมบำรุงที่เหนื่อยล้าตีความคำสั่งผิด
- ความแตกต่างระหว่างต้นฉบับที่ Claude สร้างกับผลลัพธ์หลังใช้ Skill อยู่ที่ความเฉพาะเจาะจงและความนำไปปฏิบัติได้
- เปลี่ยนประโยคอย่าง “ซิงก์อย่างไร้รอยต่อโดยใช้สถาปัตยกรรมที่แข็งแกร่ง” ให้เป็นเนื้อหาว่าคัดลอกตาราง Postgres ไปยัง S3 และต้องใช้ไฟล์ตั้งค่า 1 ไฟล์
- เปลี่ยนข้อความการเชื่อมต่อล้มเหลวแบบกว้าง ๆ ให้เป็นข้อผิดพลาดรหัสผ่านของผู้ใช้
app และแนวทางแก้ไข DB_PASSWORD
- เปลี่ยนข้อความเหตุการณ์ที่บอกว่าอาจมีผลต่อผู้ใช้บางราย ให้เป็นเวลาที่ล้มเหลว, คำขอ 12% ล้มเหลว, สาเหตุจากการ deploy และเวลาที่ rollback
- ตัวอย่างเปรียบเทียบเพิ่มเติมสำหรับ README, ข้อความข้อผิดพลาด, รายงานเหตุการณ์ และ release note อยู่ใน
examples/before-after.md
การติดตั้งและสภาพแวดล้อมที่รองรับ
- ทำงานได้ใน harness ประมาณ 25 รายการที่รองรับ มาตรฐาน Agent Skills เช่น Claude Code, Cursor, VS Code Copilot, OpenAI Codex, Gemini CLI, Goose, OpenCode
- โปรเจกต์นี้ประกอบด้วย โฟลเดอร์เดียว ไม่มี dependency ภายนอก และใช้ไลเซนส์ MIT
- คำสั่งติดตั้งมีดังนี้
npx skills add AminBlg/SimpleEnglish
- skills CLI จะตรวจจับ agent ที่ติดตั้งไว้ และติดตั้ง Skill ไปยังเป้าหมายที่ผู้ใช้เลือก
- ก่อนติดตั้งสามารถทดลองด้วยคำสั่งนี้
npx skills use AminBlg/SimpleEnglish@simple-english
- ในสภาพแวดล้อมที่ไม่รองรับ
SKILL.md สามารถนำ prompts/system-prompt.md ไปใส่ใน system prompt, AGENTS.md, .cursorrules ได้
- มีเวอร์ชันประมาณ 60 token สำหรับสภาพแวดล้อมที่มี token budget ต่ำด้วย
- ใช้ได้โดยขอให้เขียนเอกสารเชิงเทคนิค หรือสั่งว่า “rewrite this with simple-english”
การใช้งานในสภาพแวดล้อมที่ไม่มีเทอร์มินัล
- แผนเสียเงินของ Claude.ai รองรับ Skill เป็นค่าเริ่มต้น
- บันทึก
SKILL.md
- เปิดใช้การรันโค้ดที่
Settings → Capabilities
- อัปโหลดไฟล์ที่
Settings → Customize → Skills → Upload
- เมื่อเปิด Skill แล้ว จะนำไปใช้กับคำขอเขียนเอกสารเชิงเทคนิค
- ChatGPT ไม่รองรับ Skill จึงต้องใช้เวอร์ชัน prompt
- นำบล็อกใน
prompts/system-prompt.md ไปใส่ใน Settings → Personalization → Custom Instructions, Project หรือคำสั่งของ Custom GPT
- ใน Gemini ให้สร้าง Gem แล้ววาง prompt เดียวกันลงในคำสั่ง
- สำหรับแชตบอตอื่น ให้แนบไฟล์ prompt หรือวางเนื้อหา แล้วสั่งให้นำไปใช้กับ output ทั้งหมด
กฎการเขียนที่นำมาจาก ASD-STE100
- Skill นำ กฎ 53 ข้อใน 9 หมวด ที่สร้างขึ้นในปี 1983 มาใช้กับเอกสารเชิงเทคนิค
- กฎสำคัญมีดังนี้
- จำกัดคำสั่งไม่เกิน 20 คำ และประโยคอธิบายไม่เกิน 25 คำ
- ใช้คำหนึ่งคำให้มีความหมายเดียวทั่วทั้งเอกสาร เพื่อป้องกันการใช้คำอย่าง
check, verify, confirm, validate ปนกัน
- ใช้ tense แบบง่ายเท่านั้น และเขียนตรง ๆ ว่าใครอัปเดตอะไร แทน “has been updated”
- ไม่ใช้รูปกริยา
-ing และอนุประโยคเสริมที่เชื่อมกับรูปนั้น
- ใช้ active voice เพื่อตัดสำนวนอ้อม ๆ อย่าง “it should be noted that”
- ห้ามใช้
should, would, may, might แต่อนุญาต can, will, must
- วางเงื่อนไขไว้ก่อนคำสั่ง เพื่อป้องกันไม่ให้ผู้ใช้อ่านเงื่อนไขช้าเกินไป
- ใส่คำสั่งหนึ่งรายการต่อหนึ่งประโยค
- คง article และ
that ไว้ และไม่ทำให้ประโยคกลายเป็นสำนวนโทรเลขแม้จะสั้น
- กฎการเขียนใหม่ทั้งหมด รวมถึงตัวอย่างด้านซอฟต์แวร์ อยู่ใน
SKILL.md
- งานการตลาดอยู่นอกขอบเขตของ STE จึงไม่ใช้กฎกับข้อความการตลาดใน README และ Skill นี้ใช้กับการเขียนเอกสารเท่านั้น
ขอบเขตการใช้งานนอกเหนือจากเอกสารเชิงเทคนิค
use-cases.md ให้กฎที่ปรับตามหลายรูปแบบ
- ข้อความข้อผิดพลาด เขียนตามลำดับว่าเกิดอะไรขึ้น สาเหตุคืออะไร และผู้ใช้ต้องทำอะไร
- runbook คล้ายคู่มือซ่อมบำรุง จึงใช้ STE ได้โดยตรง
- รายงานเหตุการณ์ใช้ simple past เพื่อตัดถ้อยคำที่ไม่แน่นอนและเลี่ยงบาลี
- การเปลี่ยนแปลงที่ทำให้เข้ากันไม่ได้ใน release note จัดเป็นคำเตือนที่เขียนคำสั่งก่อน แล้วจึงเขียนความเสี่ยง
AGENTS.md และ system prompt ถือเป็นขั้นตอนสำหรับผู้อ่านที่ถามกลับไม่ได้ และห้ามใช้ should ซึ่งโมเดลอาจตีความว่าเป็นทางเลือก
- จัดเอกสารก่อนแปลให้อ่านง่ายสำหรับผู้ที่ไม่ใช่เจ้าของภาษา และลดต้นทุน localization
- ข้อความการตลาด สำนวนบล็อก และงานเขียนแบรนด์ ไม่อยู่ในขอบเขต และสำนวนที่ราบเรียบเป็นคุณสมบัติที่ตั้งใจไว้
ผล benchmark
- การประเมินรันงานเขียน 8 แบบบน Claude 6 โมเดล ทั้งก่อนและหลังใช้ Skill รวมเป็น ผลลัพธ์ที่สร้างขึ้น 96 รายการ
- การละเมิด STE ต่อ 100 คำลดลงเฉลี่ยรวม 72.9%
claude-opus-4-8: ลดจาก 1.05 เป็น 0.62 ดีขึ้น 41%
claude-opus-4-7: ลดจาก 2.28 เป็น 0.42 ดีขึ้น 82%
claude-opus-4-6: ลดจาก 2.24 เป็น 0.40 ดีขึ้น 82%
claude-opus-4-5: ลดจาก 2.55 เป็น 0.57 ดีขึ้น 78%
claude-sonnet-5: ลดจาก 2.67 เป็น 0.53 ดีขึ้น 80%
claude-sonnet-4-6: ลดจาก 2.06 เป็น 0.52 ดีขึ้น 75%
- ทุกโมเดลมี จำนวน output token ลดลง และความยาวประโยคเฉลี่ยลดจาก 11.2 คำเป็น 9.7 คำ
- ใช้ regex linter แบบ deterministic ที่ใช้กฎเดียวกันกับทั้งสองเงื่อนไข วิธีการและข้อจำกัดทั้งหมดอยู่ใน
evals/results/RESULTS.md
- หากมี Claude Code CLI ที่ล็อกอินแล้ว สามารถทำซ้ำได้ด้วยคำสั่งนี้
python3 evals/run_bench.py
วิธีตรวจสอบกฎ
- Skill นี้ไม่ได้สร้างจากบทสรุปบล็อก แต่พัฒนาด้วยแนวทาง test-driven โดยอ้างอิง ต้นฉบับ Issue 9 ปี 2025
- agent อ้างอิงที่ไม่มี Skill เขียนประโยค 40 คำ และบางครั้งสร้างหมายเลขกฎที่ไม่มีอยู่จริง
- ผลลัพธ์หนึ่งอ้างกฎประโยคสั้นว่า “Rule 3.1” แต่ Rule 3.1 จริงเกี่ยวกับรูปกริยา
- ต่างจากแหล่งข้อมูลรองบางแห่ง PDF ทางการอนุญาตให้ใช้
can และ will
- หลังเขียน Skill เพื่อป้องกันความล้มเหลวของ baseline ที่บันทึกไว้ทีละข้อแล้ว ก็ทดสอบซ้ำจน agent ผ่าน สถานการณ์และผลลัพธ์อยู่ใน
evals/pressure-tests.md
ข้อจำกัดการใช้งานและสถานะของมาตรฐาน
- ผลลัพธ์ ไม่ใช่เอกสารที่ได้รับการรับรอง STE
- ASD ไม่รับรองเครื่องมือใด ๆ
- โหมดพื้นฐานผสานกฎโครงสร้างกับคำศัพท์เฉพาะโดเมนของผู้ใช้
- โหมดเข้มงวดเข้าใกล้มาตรฐานมากขึ้น แต่การตัดสินรายคำต้องใช้ มาตรฐานทางการ
- ผลลัพธ์เขียนให้ราบเรียบเหมือนคู่มือ Airbus และตีความผิดได้ยาก โดยออกแบบให้เก็บสำนวนที่มีเอกลักษณ์ไว้ใช้กับงานอื่น เช่น บล็อก
- ต่างจากคำสั่งเชิงอัตวิสัยอย่าง “เขียนให้ชัดเจน” คำสั่ง “เขียนประโยคไม่เกิน 20 คำ” เป็น สเปกที่ตรวจสอบได้ agent จึงทำตามได้
- ASD-STE100 เป็นมาตรฐานที่มีอายุมากกว่า 40 ปี แต่ยังได้รับการดูแลและอัปเดตจนถึง Issue 9 ในเดือนมกราคม 2025 มีหมายเลขกำกับ และทดสอบได้
ไลเซนส์และสถานะไม่เป็นทางการ
- repository ทั้งหมดเผยแพร่ภายใต้ ไลเซนส์ MIT
- มีการเขียนกฎใหม่เพื่อการศึกษา และไม่คัดลอกถ้อยคำของสเปกทางการหรือเนื้อหาพจนานุกรม
- โปรเจกต์นี้ไม่ได้เป็นพันธมิตรกับหรือได้รับอนุมัติจาก ASD หรือ STEMG และ ASD-STE100 เป็นเครื่องหมายการค้าจดทะเบียนของ ASD
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
แค่เติมประโยค “เขียนใหม่เป็นภาษาอังกฤษเชิงเทคนิคแบบย่อ ASD-STE100” ไว้หน้าตัวอย่างหนึ่ง ก็ได้ผลลัพธ์ที่ดีพอแล้ว น่าจะใช้คำสั่งแค่หนึ่งหรือสองประโยคก็พอ เลยสงสัยว่าทำไมต้องมีสกิลขนาดใหญ่ ทั้งที่ ASD-STE100 น่าจะรวมอยู่ในข้อมูลฝึกอยู่แล้ว
ผมทำสกิลสำหรับใช้ The Economist style guide กับประโยคที่ LLM สร้างไว้: https://github.com/TAJD/economist-style-guide-plugin
มันช่วยสร้างงานเขียนที่มีโครงสร้างค่อนข้างดีและแก้ไขง่าย
เป็นเนื้อหาเกี่ยวกับ การใช้ STE ผิดวิธีและการนำไปใช้ที่จำกัด: https://en.wikipedia.org/wiki/Simplified_Technical_English#M...
ชอบไอเดียนี้ แต่ยังไม่มั่นใจในตัวสกิลเอง อย่างไรก็ตาม ได้พบ https://vale.sh กับลินเตอร์หลายตัว เลยคิดว่าจะลองทดสอบดู
ดูเหมือนว่ามันพยายามทำหลายอย่างเกินไป และแค่ system prompt หนึ่งบรรทัดก็น่าจะทำงานได้ดีพอ: “โทเคนขาออกมีค่า จงตอบให้กระชับ และใช้ ภาษาอังกฤษเชิงเทคนิคแบบย่อ ASD-STE100”
CLAUDE.mdสุดท้ายโมเดลก็ยังหลุดราง แล้วใส่ศัพท์เทคนิคเต็มไปหมดใน docstring และคำอธิบายถ้ามีวิธีใดที่ทำให้คำอธิบายโค้ดง่ายและเรียบขึ้นได้ ก็พร้อมจะลองทั้งหมด ดังนั้นจึงคาดหวังกับสิ่งนี้เหมือนกัน
น่าขันตรงที่ตั้งแต่ README ก็เห็น สำนวนแบบ LLM ชัดเจน เช่น “9 หมวด 53 กฎ ที่เขียนขึ้นในปี 1983 โดยคนซึ่งผู้อ่านของพวกเขาอาจตายได้เพราะประโยคกำกวมเพียงประโยคเดียว” นี่ไม่ใช่สัญญาณที่ดีนักสำหรับสกิลด้านการเขียน
แต่ละประโยคยังมีอีโมจิที่ถูกลบออกจาก HN ติดอยู่ด้วย
ประโยคสั้นลง บทนำที่โอ้อวดและหัวข้อว่างเปล่าเหมือนสไลด์พรีเซนต์ลดลง ทำให้คุณภาพดีขึ้นมาก แต่ก็ยังไม่ถึงขั้นก้าวกระโดด และไม่ได้แก้ปัญหาได้หมด
ตัวอย่างแรกของมาตรฐาน Issue 9 ก็ขัดแย้งในตัวเองแล้ว
Testได้รับอนุมัติให้เป็นคำนาม แต่ไม่ได้รับอนุมัติให้เป็นคำกริยา ทว่าในตัวอย่าง STE กลับเขียนว่า “Test B is an alternative to test A”ถ้าไม่รู้ กฎเฉพาะของ STE ประโยคนี้กำกวมอย่างชัดเจนและห่างไกลจากความชัดเจน เว็บไซต์ทางการซ่อนการดาวน์โหลดไว้หลัง Google Form จึงทิ้งลิงก์ที่ดาวน์โหลดได้โดยตรงไว้ด้วย: https://www.asd-ste100.org/assets/files/ASD-STE100_ISSUE9.pd...
Testตัวแรกเป็นคำกริยา ก็ต้องถือว่าใน “ทดสอบว่า B เป็นทางเลือกแทน A หรือไม่” มีการละthatไว้ แต่ตรงแรกเป็นคำกริยา ส่วนตรงหลังเป็นคำนาม ทำให้ ความขนานทางไวยากรณ์เสียไปอีกทั้งการตีความว่าเป็นการสั่งให้ใครทำเช่นนั้นเองก็มีความเป็นไปได้น้อยมาก
สงสัยว่าเหตุผลที่ ASD-STE100 กลับมาเป็นที่สนใจกะทันหันเพราะทวีตไวรัลหรือเปล่า ได้ยินจากเพื่อนแล้วผมโพสต์สเปกไว้เมื่อไม่กี่วันก่อน: https://asd-web-be-prod.azurewebsites.net/media/wunhmi5y/asd...
PDF ถูกห้ามคัดลอก ทั้งที่หลบเลี่ยงได้ง่าย เลยสงสัยว่าทำไมถึงทำแบบนั้น ถ้าต้องการบล็อกคำที่ไม่อนุญาต ก็ควรมีลินเตอร์คล้าย
ruffสำหรับภาษาอังกฤษ ไม่เช่นนั้นเอเจนต์แทบจะแน่นอนว่าจะลืมคำสั่งบรรทัดเดียวสงสัยว่าคำสั่งแบบนี้ส่งผลอย่างไรต่อ สติปัญญาหรือความสามารถในการคิด ของโมเดล ถ้ามันเปลี่ยนผลลัพธ์หรือกระบวนการคิด ความสามารถของโมเดลก็อาจเปลี่ยนไปด้วย โดยเฉพาะถ้าไม่ได้ถูกฝึกให้ใช้ภาษานี้ระหว่างการฝึก
ใน https://youtu.be/uJblcC4lKYw มีการเปรียบเทียบและประเมินสกิล/พรอมป์หลายแบบ เช่น สกิล STE กับ กฎการเขียน 6 ข้อของ George Orwell และโดยรวม Orwell ให้ผลลัพธ์ดีที่สุด
โทเคนที่เพิ่มเข้าไปใน input context ก็ไม่มาก และเมื่อเทียบพรอมป์สำหรับร้อยแก้วที่ใช้กฎนี้กับแบบที่ไม่ใช้ ผมชอบผลลัพธ์ที่ได้ เนื้อหาคือให้หลีกเลี่ยงอุปมาอุปไมยที่คุ้นเคย ถ้าคำสั้นใช้ได้ก็อย่าใช้คำยาว ตัดคำที่ตัดได้ออก ใช้ประโยคกรรตุวาจาแทนกรรมวาจก ถ้ามีคำทั่วไปให้หลีกเลี่ยงคำต่างประเทศ คำวิทยาศาสตร์ หรือศัพท์เฉพาะ และถ้าจะต้องเขียนประโยคป่าเถื่อน ก็ให้ยอมแหกกฎเหล่านี้เสีย
มีวลีสำเร็จรูปและสำนวนเฉพาะแบบ AI มากเกินไป เช่น “พูดกันตรง ๆ การปรับปรุงด้านการแปลมีจริงแต่เล็กน้อย”, “ตอนนี้คือส่วนที่ต้องพูดตรง ๆ”, “โรคเดียวกัน แต่อาการต่างกัน”, “ตัวเลข 3% อันโหดร้ายนั้นไม่ใช่กฎธรรมชาติ แต่เป็นคุณลักษณะของ Claude”