$npx -y skills add Soul-Brews-Studio/arra-oracle-skills-cli --skill kien-thaiWrite 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-tri
| 1 | # kien-thai |
| 2 | |
| 3 | ## Why this skill exists |
| 4 | |
| 5 | AI-produced Thai imports English's discourse mechanics whole-cloth and adds |
| 6 | politeness/connective padding by default. Native readers feel the friction — |
| 7 | re-reading, skimming, abandoning. Surface-level rules ("don't use ทั้งนี้") |
| 8 | treat symptoms; the seven frames below are the structural cause. Granular |
| 9 | rules in `references/ai-tells.md` (mechanical), `references/grammar.md` |
| 10 | (surface), and `references/craft.md` (taste) become applications of the |
| 11 | frames — many auto-resolve once the frames are right. |
| 12 | |
| 13 | ### `f1` *(frame · all-registers · structural)* |
| 14 | |
| 15 | **Frame 1 — Topic-comment over subject-verb-object.** English defaults to SVO. |
| 16 | Thai often fronts the topic (whatever the sentence is *about*) |
| 17 | and then comments on it. When the English source has a heavy subject ("the fact that |
| 18 | X is..."), calquing it into Thai produces `การที่...นั้น...` chains that no Thai |
| 19 | reader produces unprompted. |
| 20 | |
| 21 | - English (SVO): `The system processes this data every five minutes.` |
| 22 | - Calqued: `ระบบประมวลผลข้อมูลพวกนี้ทุก ๆ 5 นาที` |
| 23 | - Topicalized: `ข้อมูลพวกนี้ ระบบจะ process ทุก 5 นาที` |
| 24 | |
| 25 | Heuristic: if the English subject is heavy, abstract, or really the patient of the |
| 26 | verb, front it as topic in Thai. |
| 27 | |
| 28 | Covers `non-adversative-thuk` (ถูก-passive) and `garn-thi-tham-hai` (การที่...ทำให้). |
| 29 | |
| 30 | ### `f2` *(frame · all-registers · structural)* |
| 31 | |
| 32 | **Frame 2 — Condition, time, and frame go first.** English puts conditions and |
| 33 | time-frames after the main clause: "X happens when Y" / |
| 34 | "X if Y". Thai prefers the inverse: condition first, main clause after. |
| 35 | |
| 36 | - English: `The DB starts timing out when traffic spikes.` |
| 37 | - Calqued: `DB จะเริ่ม timeout เมื่อ traffic พุ่งสูง` |
| 38 | - Native: `พอ traffic พุ่งสูง DB ก็เริ่ม timeout` |
| 39 | |
| 40 | Common Thai openers for fronted conditions/times: `พอ...ก็...`, `ถ้า...จะ...`, |
| 41 | `เมื่อ...`, `ตอน...`, `หาก...`. |
| 42 | |
| 43 | Covers `tirai-frame-closure`, `frame-scoped-ko`, and `whenever-calque` — |
| 44 | conditional frames require paired closure/linker (see `references/grammar.md`, |
| 45 | `references/ai-tells.md`). |
| 46 | |
| 47 | ### `f3` *(frame · all-registers · structural)* |
| 48 | |
| 49 | **Frame 3 — Sentence boundaries via space and paragraph, not period.** |
| 50 | English uses a period after every sentence. Modern Thai web writing |
| 51 | (blog, marketing, explainer, news) uses periods sparingly. Sentence boundaries are |
| 52 | carried by spaces and paragraph breaks; periods are reserved for end-of-paragraph |
| 53 | snap or genuinely terminal statements. |
| 54 | |
| 55 | - AI density: `ระบบทำงานเร็วขึ้น. ใช้ memory น้อยลง. ทีมพอใจมาก.` |
| 56 | - Native: `ระบบทำงานเร็วขึ้น ใช้ memory น้อยลง ทีมพอใจมาก` |
| 57 | |
| 58 | Heuristic: drop mid-paragraph periods; let space carry the boundary. Keep periods |
| 59 | only where a snap or finality is genuinely intended. |
| 60 | |
| 61 | The Royal Institute's *หลักเกณฑ์การเว้นวรรค* formalizes a two-tier space system — |
| 62 | clause-internal vs sentence boundary. Modern keyboards emit a single ASCII space |
| 63 | either way, so the distinction surfaces as visual rhythm. Treat: short single |
| 64 | space within a clause; paragraph break at sentence boundaries. |
| 65 | |
| 66 | Covers `mid-paragraph-period` (period spam — see `references/ai-tells.md`). |
| 67 | |
| 68 | ### `f4` *(frame · all-registers · structural)* |
| 69 | |
| 70 | **Frame 4 — Closure via sentence-final particles.** English doesn't need |
| 71 | closure particles. Thai uses a small inventory of them to wrap |
| 72 | clauses cleanly: `ด้วย` (also/too — closes additive thoughts), `แล้ว` (completion, |
| 73 | transition), `ไป` (movement away/done), `อยู่` (ongoing state), `เลย` (intensification |
| 74 | or "right then"), `ก็แล้วกัน` (let's just leave it / decision), `อยู่ดี` |
| 75 | (still / nonetheless), `ต่างหาก` (contrastive correction — "actually X, not Y"). |
| 76 | |
| 77 | Note on `แล้ว` variants (per Olsson 2013 on Thai iamitive): bare `แล้ว` |
| 78 | (`f4/laeo-completion`) alone marks completion / "by now". `X แล้ว ก็ Y` adds |
| 79 | sequence + pacing (see Frame 6). `เสร็จแล้ว` (`f4/set-laeo-perfective`) is the |
| 80 | perfective-completion variant — action finished, with finality beyond just temporal |
| 81 | completion. Pick the form that matches whether the close needs pure completion, |
| 82 | sequenced flow, or finished-action force. |
| 83 | |
| 84 | When AI omits these because the English source has no equivalent token, Thai |
| 85 | sentences feel dangling — like the writer trailed off. |
| 86 | |
| 87 | - Dangling: `repo นี้ไม่ได้มากับกฎอย่างเดียว มี ev |