agentleFS
Sophon-KrSophon-Kr/thai-native/skills/thai-writing/SKILL.md

thai-writing

Skill0 starsChanged 22 days agoMITView on GitHub

Writes and edits natural Thai for work, study and everyday life, and translates English to Thai. Strongest for Thai tech teams (Jira comments and tickets, PR reviews, Slack/LINE/Teams, email, slides, docs, UX copy, incident reports); also office documents (reports, proposals, HR and finance), academic writing (reports, theses, abstracts), public content (social posts, ad copy, articles, press releases) and personal writing (messages to family or elders, invitations, condolences, speeches, job applications). Use whenever the reply or deliverable is in Thai, the user writes in Thai and wants something written, including explanations or summaries meant for someone else (a manager, a client), or asks to fix stiff, translated or AI-sounding Thai (เขียนไทย, แปลไทย, ขัดภาษา, ภาษาแข็ง, คอมเมนต์ Jira, อีเมล, รายงาน, โพสต์, การ์ดเชิญ).

1 other project uses a version of this.

Adopted by

Most recently taken up by

  • Other versions1 project uses a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 1

    1. toontm/claude-skills★ 0same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • In this repository6 other files it gives its agents.

The file

We split this skill into the rules it gives an agent

1 rule. About 0 are common, 0 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈0

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Check: Run the checklist at the end.

    line 29

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

thai-writing

!python3 "${CLAUDE_SKILL_DIR}/scripts/thai_native.py" context --project-dir "${CLAUDE_PROJECT_DIR}" --plugin-option 'register=${user_config.register}' --plugin-option 'particle=${user_config.particle}' --plugin-option 'term_policy=${user_config.term_policy}' || true

No [thai-native …] line above: run python3 scripts/thai_native.py context in this skill's folder (${CLAUDE_SKILL_DIR}; thai_native.py below means that script), or use defaults (register and particle auto). The user's explicit instructions override these settings.

เสียงที่ต้องการ

เขียนเหมือนคนไทยที่เขียนงานแบบนั้นเป็นประจำเขียนถึงผู้อ่านตรงหน้า (งานทีมเทค: คนในทีมที่ทำงานมาหลายปี) เข้าเรื่องเลย บอกสิ่งที่ผู้อ่านต้องรู้หรือต้องทำก่อน ประโยคสั้นยาวสลับกัน ใช้คำที่คนกลุ่มนั้นพูดกันจริง ศัพท์เรียกตามที่ผู้อ่านเรียก แล้วจบที่ขั้นต่อไป

Workflow

  1. Context card (silent). Decide reader, channel, genre, purpose, stakes, persona. Start from the genre's default register (table below), then +1 for an external reader or first contact (bad news: same or +1; Jira/wiki: never below team); a senior insider keeps the genre register, plus พี่ + ชื่อ, รบกวน and an end particle; −1 only when the user says the reader is close. Unsure: internal → the lower register, external → the higher. Read references/context-register.md for a senior or external reader, a refusal/apology/escalation/pushback, or an unclear register. Client, exec and announcement text: business, no casual endings or spoken words (นะ/จ้า, ล่ม, จะได้…); brand posts follow social.md.
  2. Persona and particles. Use the configured particle (krap = ครับ, ka = ค่ะ/คะ, none); if the user's message uses the other one, follow the message without comment, in the draft and in your own lines. If auto, use the particle the user writes with. If none is shown and the text needs one (chat or email, especially to a senior or client): ask once (ครับ / ค่ะ / ไม่ใช้; AskUserQuestion if available) and save it: python3 "${CLAUDE_SKILL_DIR}/scripts/thai_native.py" config set particle krap|ka|none. If you cannot ask, write without a gendered particle and carry the politeness in other words (chat: พี่ + ชื่อ, รบกวน…หน่อยนะ · email: เรียน…, close ขอแสดงความนับถือ · more in context-register.md §6). Only for chat or email to a senior or a client, one line before the draft: (ร่างนี้ยังไม่ใส่ ครับ หรือ ค่ะ บอกได้ว่าใช้คำไหน); docs, tickets, slides, group chat: no line. Never write ครับ/ค่ะ with a slash, never mix them, never infer gender from a name. Chat: one at the end (a long message: one more after the opening or request), never every sentence or bullet. Slides, docs, ticket descriptions, UI: none.
  3. Plan meaning, then draft Thai directly. Note the points (who does what, why, what next) and write Thai from them, not from English sentences. Do not invent facts about the user's situation (times, names, numbers, decisions, what was already done) or firm up what they left open (คาดว่า, ยังไม่ยืนยัน stays so); a [placeholder] only for a detail the reader needs that the user did not give, ≤3 per draft. A given fact that looks wrong (date on the wrong weekday) stays as given; flag it in the line before the draft, never fix or blank it. Proposals and explainers fill gaps with general knowledge, not blanks. Templates are menus: fill only the sections the notes support, add nothing unasked (sections, labels, deadlines) but keep what the text needs to work (poll options for a vote), and short wins when asked for short. For an English source text, read references/translation.md first.
  4. Terms. Follow the term policies in the context line and in the thai-native glossary, terms in this message note when one arrives with the message. Other terms: thai_native.py terms "<text>" (prep --file <source> before translating), or the default: keep jargon Thai devs say in English (deploy, merge, PR), use the Thai word when an everyday one exists (ประชุม, ฐานข้อมูล), transliterate with Royal Institute spelling (อีเมล, แอป, อัปเดต). Readers outside tech (app users, sales, marketing, a client's business side; an executive only when the user says so): say what it means for them in everyday Thai, no English in brackets; a term the user asks to explain is named once as the team says it, then explained. Everyone else, including heads and directors of a tech company and a client's IT team, gets the team's English terms in every genre; Thai (English) only in formal letters and, on first mention, academic writing. Details: references/vocabulary.md.
  5. Genre file. Short chat with colleagues or friends, Jira and review comments: the table line is enough. Anything else (documents, decks, email, letters, academic, public writing, translation): read the table's file the first time in a session.
  6. Check. Run the checklist at the end. Deliverables over ~300 Thai characters: thai_native.py lint --genre <genre> on the text, fix only real problems. EN→TH: check modality (อาจ/ควร/ต้อง), negation and numbers against the source. Short chat replies: checklist only.

Give a draft to paste cleanly. Before it, at most one short line, only for what the user must check or fill in that the draft cannot show (a date that looks wrong, a file you could not open); never explain the particle, register, placeholders, term choices or notes the system attached. No ผม/ดิฉัน, nothing after the draft, no second version, no tool footer or session link.

งาน → ระดับภาษา → หลักสั้น ๆ → ไฟล์

งานregisterหลักสั้น ๆไฟล์
Jira comment, ticket, ACteamสถานะ → สาเหตุ → ขั้นต่อไป · @ชื่อ · ไม่มีหัวข้อตัวหนาreferences/genres/jira.md
PR, code review, committeamพูดถึงโค้ด ไม่พูดถึงคน · เสนอ ไม่สั่ง · ป้าย nit: / suggestion: / blocking:references/genres/code-review.md
Slack, LINE, Teamsteam (ลูกค้า LINE OA = social)เรื่องหลักบรรทัดแรก จบในข้อความเดียว · ไม่มี headerreferences/genres/chat.md
อีเมลbusinessหัวเรื่องชัด · ข้อสรุปหรือคำขอก่อน · ปิดสั้นreferences/genres/email.md
สไลด์businessหัวข้อสั้นมีตัวเลข · bullet ขนานกัน · ไม่มีคำลงท้ายreferences/genres/slides.md
README, MoM, ประกาศ (ทางการ = formal), incident, release notesbusinessขั้นตอนขึ้นด้วยกริยา · action item มีเจ้าของและวันที่ · ไม่ใช้ ผม/ฉันreferences/genres/docs.md
ข้อความในแอป (UX)businessปุ่มขึ้นด้วยกริยา · error บอกว่าทำอะไรต่อ · ไม่ใช้ คุณreferences/genres/ux.md
หนังสือทางการ, บันทึกขออนุมัติformalเรียน… · เหตุ → ความประสงค์ → จึงเรียนมาเพื่อ…references/genres/official.md
รายงาน ข้อเสนอ HR การเงิน (นอกสายเทค)businessข้อสรุปก่อน · ตัวเลขมีตัวเทียบ · คำที่ฝ่ายนั้นพูดreferences/genres/business.md
งานวิจัย รายงาน บทคัดย่อ งานครูformal (งานครู business)ภาษาเขียน · ผู้วิจัย แทน ผมreferences/genres/academic.md
โพสต์ โฆษณา หน้าสินค้าsocialบรรทัดแรกบอกของ ราคา วันที่ · อ้างเท่าที่พิสูจน์ได้references/genres/social.md
บทความ ข่าวประชาสัมพันธ์businessพาดหัวมีผู้ทำ กริยา ตัวเลข · ความนำ 5W1Hreferences/genres/article.md
ครอบครัว เพื่อน ผู้ใหญ่ การ์ดเชิญ ไว้อาลัย คำกล่าวตามผู้รับเรียกตามความสัมพันธ์ · ไว้อาลัยไม่มีอีโมจิreferences/genres/personal.md
สมัครงาน เรซูเม่ ลาออก ขอทุนbusinessbullet ขึ้นด้วยกริยา · ไม่แต่งผลงานreferences/genres/application.md
แปลอังกฤษเป็นไทยตามผู้อ่านปลายทางวางแผนความหมายก่อน · ตรวจกับต้นฉบับreferences/translation.md
ตอบผู้ใช้ในแชตนี้team แบบสุภาพตอบตรงคำถามไม่ต้องอ่านเพิ่ม

More: references/grammar-cohesion.md (connectors, ที่/ซึ่ง, การ/ความ, classifiers) · references/mechanics.md (spacing, punctuation, numbers, dates, spelling) · references/ai-isms.md (when polishing or lint flags many issues). Slang only in casual/social with slang on: assets/slang.csv, never rows marked dated/blocked. Rules in full: thai_native.py card <ID>, search "<words>".

กฎหลัก

  1. ให้ผู้ทำขึ้นก่อน ใช้ ถูก/โดน กับเรื่องไม่ดีเท่านั้น เพราะ passive กลาง ๆ คือสำเนียงแปล ✅ ทีม backend แก้ API แล้ว · แอปถูก reject จาก App Store ❌ API ได้ถูกแก้ไขโดยทีม backend แล้ว
  2. ใช้กริยาตรง ๆ ตัด ทำการ / มีการ / ดำเนินการ / การ…ของ… ที่ตัดแล้วความหมายเท่าเดิม ✅ deploy ขึ้น staging แล้ว · ทีมเปลี่ยน flow login ใหม่ ❌ ได้ทำการ deploy เรียบร้อยแล้ว · มีการเปลี่ยนแปลงของ flow การ login
  3. ละประธานที่ภาษาไทยไม่ต้องใช้ ไม่แปล you เป็น คุณ อัตโนมัติ เรียกคนตามความสัมพันธ์ (พี่ต้น, น้องมายด์, ทุกคน) หรือไม่ต้องเรียกเลย ✅ ว่างแล้วฝาก review PR #231 หน่อยครับ ❌ คุณช่วยตรวจสอบ Pull Request ของผมได้หรือไม่ครับ
  4. ใส่คำเชื่อมเฉพาะตรงที่ตรรกะเปลี่ยน ในงานทีมใช้ แต่ / เลย / ก็ / พอ…ก็ ไม่ขึ้นทุกประโยคด้วย อย่างไรก็ตาม / นอกจากนี้ / ดังนั้น และไม่ต่อ ซึ่ง หลายชั้น ✅ test ยังไม่ผ่าน 2 เคส เลยขอเลื่อน deploy เป็นพรุ่งนี้ ❌ เนื่องจากการทดสอบยังไม่ผ่าน ดังนั้นจึงมีความจำเป็นต้องเลื่อนการ deploy ซึ่งจะส่งผลให้…
  5. ใช้คำที่คนไทยพูดจริงแทนคำแปลตรงตัว ✅ เช็กว่า… (ทีม: เช็กให้ชัวร์ว่า…) · ติดอะไรทักมาได้เลย · ขอบคุณที่ช่วยดูนะคะ ❌ ตรวจสอบให้แน่ใจว่า… · อย่าลังเลที่จะติดต่อ · ขอบคุณสำหรับความช่วยเหลือของคุณ
  6. คุมระดับภาษาให้คงที่ และขอโทษให้พอดีกับเรื่อง เรื่องเล็กขอโทษสั้น ๆ แล้วบอกว่าแก้อะไร เรื่องที่กระทบลูกค้า ขอโทษหนึ่งประโยคแล้วบอกทางแก้ ✅ ขอโทษครับ รายงานเมื่อวานหน้า 3 ตัวเลขผิด แก้แล้ว ไฟล์ใหม่อยู่ในลิงก์นี้ ❌ ผมต้องกราบขออภัยเป็นอย่างสูงสำหรับความผิดพลาดที่เกิดขึ้น
  7. เปิดด้วยเรื่องหลัก ปิดด้วยสิ่งที่ต้องทำต่อ ไม่เปิดด้วย ในยุคปัจจุบัน… และไม่ปิดด้วย หวังว่าจะเป็นประโยชน์ หรือสรุปซ้ำ
  8. บอกผลจริงแทน buzzword (ยกระดับ, ขับเคลื่อน, ตอบโจทย์, อย่างมีประสิทธิภาพ, ไร้รอยต่อ) ใส่ตัวเลขหรือสิ่งที่เปลี่ยนจริง ✅ หน้า checkout โหลดเร็วขึ้นจาก 3 วินาทีเหลือ 1.2 วินาที ❌ ยกระดับประสบการณ์การชำระเงินให้มีประสิทธิภาพยิ่งขึ้น
  9. format ตาม genre แชตไม่มี header และป้ายตัวหนา, Jira และเอกสารใช้ bullet ได้, สไลด์ไม่มีคำลงท้าย, ไม่ใช้ขีดยาว (—) และไม่ใส่จุดท้ายประโยคไทย
  10. ตัวเลขและการเว้นวรรค เลขอารบิก เว้นวรรครอบคำอังกฤษและตัวเลขกลางข้อความไทย วันที่ 23 ต.ค. 2569 (พ.ศ. = ค.ศ. + 543) เวลา 14.00 น. หรือ 14:00

ตัวอย่าง

<example> งาน: Slack แจ้งทีมว่าเลื่อน deploy (persona ครับ) <bad> สวัสดีครับทุกคน! 👋 ผมอยากจะแจ้งให้ทราบว่าการ deploy ในวันนี้ได้ถูกเลื่อนออกไป เนื่องจากมีความจำเป็นต้องทำการแก้ไข bug หากมีคำถาม อย่าลังเลที่จะสอบถามนะครับ </bad> ✅ แจ้งเลื่อน deploy นะครับ จากวันนี้เป็นพรุ่งนี้ 10 โมง เจอบั๊กหน้า checkout ที่ต้องแก้ก่อน ติดอะไรทักผมได้เลยครับ </example><example> งาน: review comment ถึงน้องในทีม (persona ค่ะ) <bad> โค้ดนี้ดูดีมากค่ะ! อย่างไรก็ตาม มีข้อเสนอแนะบางประการที่อาจช่วยยกระดับคุณภาพของโค้ด ฟังก์ชันนี้ควรได้รับการ refactor… </bad> ✅ logic โอเคแล้วค่ะ ติดจุดเดียว `retryCount` ไม่ได้ reset หลัง success รอบถัดไปเลย retry น้อยกว่าที่ตั้งไว้ ลอง reset ใน `onSuccess` ดูนะคะ </example><example> งาน: LINE ขอบคุณคุณป้าที่มางานบวชน้องชาย (persona ค่ะ) <bad> เรียนคุณป้า ดิฉันขอขอบพระคุณเป็นอย่างสูงสำหรับการเข้าร่วมพิธีอุปสมบท การมาร่วมงานของท่านมีความหมายต่อครอบครัวเราเป็นอย่างมากค่ะ 🙏✨ </bad> ✅ คุณป้าคะ ขอบคุณมากนะคะที่มางานบวชน้องเมื่อวาน แม่ดีใจมากเลยค่ะ ไว้ว่าง ๆ หนูพาแม่ไปเยี่ยมนะคะ </example>

ก่อนส่ง เช็ก 6 ข้อ

  1. ประโยคแรกบอกเรื่องหลักหรือสิ่งที่ขอแล้วหรือยัง และไม่มีข้อมูลที่ผู้ใช้ไม่ได้ให้
  2. มี คุณ / มัน / เรา ที่ตัดได้ไหม และเรียกผู้อ่านถูกระดับไหม
  3. มี ถูก…โดย / ได้รับการ / ทำการ / มีการ / การ…ของ… ที่เขียนเป็นกริยาตรง ๆ ได้ไหม
  4. คำเชื่อมหัวประโยคและ ซึ่ง เหลือเฉพาะที่จำเป็นไหม
  5. คำลงท้าย ระดับภาษา ศัพท์ และ format ตรงกับ genre และผู้อ่านไหม
  6. ตอนจบเป็นสิ่งที่ต้องทำต่อหรือคำถามเดียว ไม่ใช่สรุปซ้ำหรือคำอวยพร

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.