chakrit/kien-thai/kien-thai
Claude Code and agent skill by chakrit/kien-thai
- community
Checking that the SKILL.md file is still in the repository.
Write Thai-language prose (technical documentation, marketing copy, explainers, blog posts, translations) that reads like a real Thai writer — not generic AI output. Counters training-data skew toward over-formal, over-polite, calqued Thai. TRIGGER when: user asks for any non-trivial Thai prose output (paragraph or longer — blog post, landing page, doc page, README in Thai, email, announcement, section); user asks to translate English into Thai; user asks to edit, rewrite, or review existing Thai prose; conversation is in Thai and user asks for a prose deliverable. DO NOT TRIGGER for: single-word or single-phrase translations, button labels, code identifiers, short UI strings, code comments, or conversational chat replies in Thai that aren't deliverable prose.
Install
npx vskill@latest install chakrit/kien-thai/kien-thaiSKILL.md
kien-thai
Why this skill exists
AI-produced Thai imports English's discourse mechanics whole-cloth and adds politeness/connective padding by default. Native readers feel the friction — re-reading, skimming, abandoning. Surface-level rules ("don't use ทั้งนี้") treat symptoms; the seven frames below are the structural cause. Granular rules in references/ai-tells.md (mechanical), references/grammar.md (surface), and references/craft.md (taste) become applications of the frames — many auto-resolve once the frames are right.
Best output: draft with a Thai-native model when one is reachable
Honest admission up front: base-model choice may be a larger lever on Thai naturalness than this skill. The machine-sounding Thai the frames below fight is mostly an artifact of English-centric models (Claude, Codex) writing Thai. A Thai-pretrained model — Typhoon-2, SEA-LION, OpenThaiGPT — carries the native distribution in its weights rather than translating into it.
How strong is that claim? Not very, yet. In one native-ear reading, bare unconditioned Typhoon-2 8B drafted Thai with no grammatical fault and no calque — the failure modes most of these rules exist to catch. That result is a single register, a single draft, and has not been replicated. Mechanical comparison since then is mixed: on some registers the native draft carries more formal connectives than this skill's output, and it has shown instruction-following lapses (emitting outline labels instead of prose) that the frames never address.
Treat the route as promising and unsettled, not as a known win.
So when a Thai-native model is reachable, the best result comes from drafting with it and then auditing with this skill, not from drafting with the skill alone. The frames don't go away — they become the audit layer (the kode-thai loop) over a native-drafted base. When no such model is reachable, kien-thai drafts and audits directly, exactly as the rest of this file describes. The skill stands alone; the model makes it better.
This route is a script, not an instruction to follow by hand:
scripts/thai-route.sh decides the route by exit code: a native draft on stdout (exit 0 → run kode-thai on it), or exit 3 → no model, draft with kien-thai directly. The ollama capture caveat and few-shot conditioning from corpus/ are baked into scripts/thai-native-draft.py. Full rationale, status, and the open eval step: scripts/README.md.
f1 (frame · all-registers · structural)
Frame 1 — Topic-comment over subject-verb-object. English defaults to SVO. Thai often fronts the topic (whatever the sentence is about) and then comments on it. When the English source has a heavy subject ("the fact that X is..."), calquing it into Thai produces การที่...นั้น... chains that no Thai reader produces unprompted.
- English (SVO):
The system processes this data every five minutes. - Calqued:
ระบบประมวลผลข้อมูลพวกนี้ทุก ๆ 5 นาที - Topicalized:
ข้อมูลพวกนี้ ระบบจะ process ทุก 5 นาที
Heuristic: if the English subject is heavy, abstract, or really the patient of the verb, front it as topic in Thai.
Covers non-adversative-thuk (ถูก-passive) and garn-thi-tham-hai (การที่...ทำให้).
f2 (frame · all-registers · structural)
Frame 2 — Condition, time, and frame go first. English puts conditions and time-frames after the main clause: "X happens when Y" / "X if Y". Thai prefers the inverse: condition first, main clause after.
- English:
The DB starts timing out when traffic spikes. - Calqued:
DB จะเริ่ม timeout เมื่อ traffic พุ่งสูง - Native:
พอ traffic พุ่งสูง DB ก็เริ่ม timeout
Common Thai openers for fronted conditions/times: พอ...ก็..., ถ้า...จะ..., เมื่อ..., ตอน..., หาก....
Covers tirai-frame-closure, frame-scoped-ko, and whenever-calque — conditional frames require paired closure/linker (see references/grammar.md, references/ai-tells.md).
f3 (frame · all-registers · structural)
Frame 3 — Sentence boundaries via space and paragraph, not period. English uses a period after every sentence. Modern Thai web writing (blog, marketing, explainer, news) uses periods sparingly. Sentence boundaries are carried by spaces and paragraph breaks; periods are reserved for end-of-paragraph snap or genuinely terminal statements.
- AI density:
ระบบทำงานเร็วขึ้น. ใช้ memory น้อยลง. ทีมพอใจมาก. - Native:
ระบบทำงานเร็วขึ้น ใช้ memory น้อยลง ทีมพอใจมาก
Heuristic: drop mid-paragraph periods; let space carry the boundary. Keep periods only where a snap or finality is genuinely intended.
The Royal Institute's หลักเกณฑ์การเว้นวรรค formalizes a two-tier space system — clause-internal vs sentence boundary. Modern keyboards emit a single ASCII space either way, so the distinction surfaces as visual rhythm. Treat: short single space within a clause; paragraph break at sentence boundaries.
Covers mid-paragraph-period (period spam — see references/ai-tells.md).
f4 (frame · all-registers · structural)
Frame 4 — Closure via sentence-final particles. English doesn't need closure particles. Thai uses a small inventory of them to wrap clauses cleanly: ด้วย (also/too — closes additive thoughts), แล้ว (completion, transition), ไป (movement away/done), อยู่ (ongoing state), เลย (intensification or "right then"), ก็แล้วกัน (let's just leave it / decision), อยู่ดี (still / nonetheless), ต่างหาก (contrastive correction — "actually X, not Y").
Note on แล้ว variants (per Olsson 2013 on Thai iamitive): bare แล้ว (f4/laeo-completion) alone marks completion / "by now". X แล้ว ก็ Y adds sequence + pacing (see Frame 6). เสร็จแล้ว (f4/set-laeo-perfective) is the perfective-completion variant — action finished, with finality beyond just temporal completion. Pick the form that matches whether the close needs pure completion, sequenced flow, or finished-action force.
When AI omits these because the English source has no equivalent token, Thai sentences feel dangling — like the writer trailed off.
- Dangling:
repo นี้ไม่ได้มากับกฎอย่างเดียว มี eval harness ผูกกับ claude และ codex - Closed:
repo นี้ไม่ได้มากับกฎอย่างเดียว มี eval harness ผูกกับ claude และ codex ด้วย
ด้วย additive closure (f4/duai-additive): especially watch for ไม่ได้...อย่างเดียว, ไม่ใช่แค่..., ไม่เพียงแต่... frames — they almost always need a closure particle to finish the implicit "also Y".
ต่างหาก closure (f4/targhak-closure): contrastive correction frames (ไม่ได้ X อยู่ที่/เป็น/คือ Y) take ต่างหาก — Thai's emphatic-correction particle that closes the "actually it's Y, not X" thought.
- Dangling:
ปัญหาส่วนใหญ่ไม่ได้อยู่ที่ยอดขาย อยู่ที่ต้นทุน - Closed:
ปัญหาส่วนใหญ่ไม่ได้อยู่ที่ยอดขาย อยู่ที่ต้นทุนต่างหาก
Covers dangling-additive-frame and seam-connective-missing (audit-mode catches for the missing-between-clause-beat family).
f5 (frame · all-registers · structural)
Frame 5 — Cohesion via zero anaphora and demonstratives. English needs explicit pronouns: it / they / he / she / this / that. Thai has three main strategies that AI underuses:
- Zero anaphora (
f5/zero-anaphora) — once the topic is established, drop the subject entirely.
Re-state only when control changes. A paragraph beginning เราเรียนรู้จากความผิดพลาด... can run several sentences before เรา needs to reappear.
- Demonstratives over pronouns —
นี่ / นั่น / โน่นfor "this / that / yonder";
reference the noun by demonstrative + classifier when needed (คนนี้, เคสนั้น, ปัญหานั้น). AI overuses มัน, เขา, พวกเขา because they map to English it / he / they.
- Demonstrative as inter-clause bridge (
f5/demo-bridge) — between clauses where English would
repeat the subject, Thai uses a demonstrative referring back to the just-stated fact: ตรงนี้แหละที่..., นี่คือเหตุผลที่..., ส่วนนี้.... Especially valuable for problem→solution pivots (see also Frame 7).
- Dangling:
ของค้างก็กลายเป็นต้นทุนเงียบ ระบบนี้ช่วย... - Bridged:
ของค้างก็กลายเป็นต้นทุนเงียบ ตรงนี้แหละที่ระบบช่วยได้
<!-- Native side lifted from corpus/curated/tech-writing/somkiat-bun-testing.md; Calqued side manufactured by re-inserting มัน at each VP head. -->
- Calqued:
bun ได้ปล่อย feature ต่าง ๆ ออกมามากมาย มันปรับปรุงเรื่องของ performance จากการ build มันลดการใช้งาน memory ในขณะ runtime และมันยังปรับปรุงแนวทางการทดสอบอีกด้วย - Native:
bun ได้ปล่อย feature ต่าง ๆ ออกมามากมาย ทั้งการปรับปรุงเรื่องของ performance จากการ build และลดการใช้งาน memory ในขณะ runtime รวมทั้งยังได้ปรับปรุงแนวทางการทดสอบอีกด้วย
Caveat — zero anaphora has limits. Aggressive subject-drop creates subjectless robot-prose when the referent isn't recoverable from context. If a clause starts with a connective (เพราะ..., ดังนั้น..., ส่วน...) and immediately presents a verb without a topic, restore reference via a demonstrative bridge or a topic-comment restructure rather than reaching for มัน (banned by dummy-man).
- Robot:
เพราะรับประกัน output rate - Native (bridge):
เพราะแบบนี้ output rate จะคงที่ - Native (restored topic):
algorithm นี้รับประกัน output rate
f6 (frame · all-registers · structural)
Frame 6 — Pacing via ก็. ก็ is a uniquely Thai pacing particle. It marks expectation, sequence, mild concession, and "as expected" causation. English has no direct equivalent, so AI drops it, and Thai prose without ก็ reads choppy or robotic.
- Without ก็:
พอ traffic ขึ้น DB เริ่มอืด - With ก็:
พอ traffic ขึ้น DB ก็เริ่มอืด
ก็ as pacing particle (f6/ko-pacing). Common patterns: พอ X ก็ Y, X แล้ว ก็ Y, ถ้า X ก็ Y, เลย...ก็..., X ไม่ทัน ก็เลย Y. Standalone แล้ว (without ก็) also bridges sequenced action clauses where English would use no connective:
- Choppy:
ถ่ายรูปบิลจากตลาด ระบบอ่านรายการให้เอง - Bridged:
ถ่ายรูปบิลแล้วระบบจะอ่านรายการให้เอง
Sub-pattern: ก็ as topic-resumptive bridge (f6/ko-resumptive; formalized in Takahashi 2023 on ก็ as a pragmatic particle). When a sentence states a topic and then offers a comment that would otherwise feel clipped, ก็ at the start of the comment gives the natural "as expected / belongs together" beat. AI tends to write the comment without ก็ and produce a snap that lands wrong.
- Clipped:
ในรายการนี้ ไม่มีคอลัมนิสต์ดังคนไหน เป็นความตั้งใจ - Bridged:
ในรายการนี้ ไม่มีคอลัมนิสต์ดังคนไหน ก็เป็นความตั้งใจ
Use ก็ as breath/rhythm, not as a connective replacement. Don't force it where it doesn't fit; do allow it where Thai naturally wants the beat.
f7 (frame · all-registers · structural)
Frame 7 — Pivots via question, demonstrative, or simple แต่. English pivots between ideas using formal connectives: however, moreover, on the other hand, furthermore. Thai prose pivots more often via:
- Rhetorical question (
f7/question-pivot) —แล้วถ้า X ล่ะ?,นั่นแปลว่ายังไง?,ทำไมถึงเป็นแบบนั้น?. - Demonstrative bridge (
f7/demo-pivot) —ตรงนี้แหละ...,นี่คือเหตุผลที่...(see also Frame 5). - Simple `แต่` (
f7/tae-pivot) — replacesอย่างไรก็ตามin roughly half of its English occurrences.
- AI pivot:
อย่างไรก็ตาม การใช้งานในระดับ production มีข้อจำกัด - Native pivot:
แต่พอเอาขึ้น production จริง ก็มีอะไรให้ปวดหัวอีก - Native (question pivot):
แล้วถ้าโหลดเพิ่มอีกสิบเท่าล่ะ? ตรงนี้แหละที่เริ่มน่าสนใจ
Special case — problem-list to solution pivot (f7/problem-solution-pivot). After listing 2–3 reader pain-points, AI tends to dive straight into the product/solution clause without a pivot, producing bullet-list cadence. Insert a question pivot, demonstrative bridge, or contrastive แต่ to mark the shift.
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/kien-thai/SKILL.md
Popularity
- Repository stars
- 45
- Repository forks
- 3
- 7-day trend score
- 19
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/chakrit/kien-thai/kien-thai)