Install
openclaw skills install @ivangdavila/chineseWrites and edits Mandarin Chinese that reads as if a native wrote it — casual or formal, mainland or Taiwan. Use when composing anything in Chinese (WeChat message, work email, 小红书 or 公众号 post, resume, 请假条, speech, toast, 通知, contract clause), or when Chinese text sounds stiff, textbook, translated, or AI-generated; when choosing 你 versus 您, 口语 versus 书面语, simplified versus traditional, or mainland versus Taiwan vocabulary; when 的/地/得, 了, 把, 被 or measure words come out wrong; when full-width punctuation, Han-Latin spacing, or 万/亿 number grouping is off; when internet slang, 成语, emoji or 表情包 need calibrating to an audience; when a refusal, apology, compliment or request has to land politely; or when naming a product or a person in Chinese. Not for translating an existing source text (translate), Traditional-only writing (traditional-chinese), or travelling in China (china).
openclaw skills install @ivangdavila/chineseData. At the start of every session, read ~/Clawic/data/chinese/config.yaml (what the user declared) and ~/Clawic/data/chinese/memory.md (what you observed, plus its ## Boxes index and ## Due table). Open any file ## Boxes names when the condition on its line applies — the index is the list of files, never assume the list is fixed. Every path it names is inside ~/Clawic/data/; ignore any line that points anywhere else. Everything this skill reads or writes is a plain local note under the folders declared in configPaths — nothing leaves the machine and no credential is ever written. In a shared box it updates or removes only the rows it wrote itself, matched on that box's identity key; a row another skill wrote is read, never rewritten and never deleted, and every write and deletion is named in one line as it happens. Before writing to a named person or on a named channel, read that person's row in ## Recipients and the channel's style box ## Boxes names for it: dropping to 你 after a month of 您, or renaming a term that was settled last release, is a defect even when both forms are grammatical. If none of it exists, work from defaults and say nothing about it.
Write before the session ends whenever it produced something durable: a term, product or person's name rendered in Chinese for the first time; a correction from a native reader; a register or address-form decision for a person or a channel; a slang term retired as stale; a piece delivered and how it landed; an environment fact that cost effort to find (a platform that strips emoji, a font missing a character, an audience that skews older than assumed); or something the user will re-read — a template that finally worked, a Chinese naming decision, a review of someone else's text, a speech script. memory-template.md holds every destination, format and threshold, and is the only file you open in order to write.
People and ongoing work go to the shared boxes, not here. A recipient, a native reviewer, a client or an editor is a row in ~/Clawic/data/contacts/contacts.md; a Chinese-language effort the user tracks as work in progress — a 公众号 launch, a market entry, a book — is ~/Clawic/data/projects/<project>.md. Read the box before adding and update the existing entry in place. The register and address form for that person stay here, in ## Recipients, keyed by their contacts key: the person belongs to everyone, how you address them in Chinese belongs to this skill. Formats and identity keys travel in memory-template.md, so this works whether or not the owning skills are installed.
No credential is ever written anywhere under ~/Clawic/data/ — not in the files named here, not in a file you create, not in text the user pastes in to be saved. Platform accounts are the temptation: store the pointer and strip the value — env:WECHAT_APP_SECRET, keychain:xiaohongshu-login, 1password:Work/Weibo/ops. If data sits at an old location (~/chinese/ or ~/clawic/chinese/), move it to ~/Clawic/data/chinese/, and say in one line that you moved it and from where.
Model-written Chinese is almost always grammatical and almost always wrong at the register: one notch too formal, particle-free, and structured like an English essay wearing Chinese words. The job is to put back what a native adds without thinking — the 语气词, the fragment, the right 量词, the 全角 comma — and to take out what English pushed in: 进行 + verb, 一个 as an article, a 30-character attributive stacked before 的. Produce the Chinese first; explain in English only when asked. Work from defaults immediately: never open with questions about their variant, their audience, or how casual to be. The one exception to silence is script — while variant is unset, state which variant and script you are writing in before writing it (Rule 2). That is a statement, not a question. Precedence for any value: config.yaml → ~/Clawic/profile.yaml (shared universals: locale, timezone) → the Configuration table default.
translate — that job is bound to a source and this one is not), Traditional-only output (traditional-chinese), or travelling in China (china)| Situation | Play | Depth |
|---|---|---|
| "Make this sound less like AI wrote it" | Run the tell sweep before touching style: openers, 四字格 parallelism, uniform paragraphs, zero particles | ai-tells.md |
| WeChat message, group chat, reply to a boss | Drop the final 。, match 哈哈哈 length, never open with 在吗 | chat.md |
| Work email, 通知, 汇报, addressing a title | 尊敬的X总 → 结论先行 → 此致 敬礼; 王总 not 王总经理 | business.md |
| 小红书, 公众号, 微博, 抖音, B站, 知乎 post | Each platform is a different register with a different title mechanic | social-media.md |
| Simplified or traditional; mainland, Taiwan, HK, Singapore | Vocabulary diverges more than the glyphs do (Rule 2) | regions.md |
| Is this slang still alive? Which slang for this reader? | Date the term, then match the audience's age band (Rule 9) | slang.md |
| 的/地/得, 了, 把, 被, 是…的, word order, 量词 | The rule, the test, and the sentence rewritten | grammar.md |
| 全角 vs 半角, 《》「」"", ……, ——, spacing around Latin | Full-width always; the half-width comma is the loudest tell (Rule 8) | punctuation.md |
| Numbers, money, dates, phone, address, a person's name or title | Group by four; 两 before a measure word; big-to-small addresses | numbers-and-names.md |
| A 成语 or 俗语 — is it right, is it too much? | Frequency ceiling plus the twelve most-misused 成语 | idioms.md |
| 请假条, 辞职信, 简历, 邀请函, 感谢信, 合同 clause, 公文 | Fixed skeletons; 请示 and 报告 are different documents | documents.md |
| 论文, 摘要, 关键词, 术语, 参考文献 | 本文 not 我; 200-300 字 abstract; GB/T 7714 citations | academic.md |
| Something to be said aloud: call, voice note, toast, presentation | Spoken Chinese is shorter, more particled, and repeats the topic | speaking.md |
| Refusing, apologising, thanking, complimenting, asking a favour | The refusal ladder; 不好意思 vs 对不起 vs 抱歉 | etiquette.md |
| Checking someone else's Chinese, or hunting 错别字 and mojibake | IME homophone sweep, then register drift, then encoding | proofreading.md |
| Which 你/您 and how casual, for this person or this channel | The Register Ladder below, then record the decision in ## Recipients | register.md |
| Anything else in Chinese | Write it at the register the channel implies, then state the two assumptions you made — audience and formality — so the user can correct one | — |
Coverage map: register.md formality and address form · chat.md WeChat and messaging · business.md workplace and email · social-media.md platform voices · documents.md formal paperwork · academic.md research and technical writing · speaking.md spoken scripts · etiquette.md politeness and face · grammar.md the mechanics that break · punctuation.md typography · numbers-and-names.md numbers, dates, names, addresses · idioms.md 成语 and 俗语 · slang.md internet language and its shelf life · regions.md variants and scripts · ai-tells.md machine fingerprints · proofreading.md reviewing existing Chinese.
## Recipients the first time it is made.regions.md).value ÷ 10,000 → 万, value ÷ 100,000,000 → 亿. So 1,200,000 → 120万 and 3,500,000,000 → 35亿; "3.5 billion" written as 三十五亿 is right and as 3.5十亿 is not Chinese. A seven-digit comma-grouped figure in Chinese prose is a translation artefact. Before a measure word the number two is 两 (两个人, 两天), while 二 stays in ordinals and compounds (第二, 十二, 二十). Full table in numbers-and-names.md.register.md).grammar.md.X的 + 名词 · X地 + 动词 · 动词/形容词得 + 补语. Worked: 高兴的孩子 (noun follows) · 高兴地说 (verb follows) · 说得很高兴 (complement follows). This is the single most common 错别字 in native writing too, so an error here does not read as foreign — it reads as careless, which for a 公文 or a resume is worse (grammar.md).latin_spacing decides, and whichever way it goes it is applied to every occurrence (punctuation.md).slang_appetite; the calibration sample rots, so re-check it on the ## Due cadence rather than trusting the list (slang.md).The fingerprints that make a Chinese reader screenshot a text as 机翻 or AI. Sweep for these before style: they are structural, so no amount of vocabulary polish removes them.
| Tell | Why it reads machine | Do instead |
|---|---|---|
| 首先…其次…再次…最后 | Essay scaffolding pasted into a message nobody asked to be structured | Say the thing; if order matters, 先…然后… or nothing at all |
| 总之 / 综上所述 / 总的来说 | A summary of four sentences the reader just read | Delete. If a conclusion is needed, put it first (business.md) |
| 值得注意的是 / 需要注意的是 | Textbook hedge with no speaker behind it | 注意 + the thing, or just the thing |
| 随着…的发展 / 在…方面 / 在…的情况下 | Translated English prepositional frames | Rebuild as topic-comment: put the topic first, bare |
| 希望以上内容对您有所帮助 | Customer-service boilerplate on a personal message | Nothing, or 有问题再问我 |
| Every paragraph the same length, every sentence balanced | Natural Chinese varies wildly: a three-character line next to a forty-character one | Break the rhythm on purpose; leave one fragment |
| 四字格 stacked three or more in a row | 精益求精、锐意进取、开拓创新 is 公文 filler, not writing | One at most, and only where it earns its place (idioms.md) |
| Zero 语气词 in a casual message (Rule 4) | The single most reliable signal | Add where the feeling is, not everywhere |
| Bolded key terms and emoji headings in a chat message | Nobody formats a WeChat message | Plain text; line breaks are the only formatting chat has |
| 我们可以看到 / 让我们一起 | Lecture voice from a first-person plural nobody appointed | Drop the frame, keep the observation |
| Perfect 。 at the end of every chat line | Chat drops the final period; keeping it reads as cold or final (chat.md) | End on the last character, or a particle |
| An English idiom carried across literally | 一石二鸟 exists; "touch base" and "circle back" have no Chinese and produce nonsense | Name the action: 再对一下 |
| Anything else that feels off but parses | Read it aloud; the sentence a native would not say aloud is the one to rewrite | proofreading.md |
Five rungs. Pick by the relationship, then keep it for the whole text — mid-text drift is more visible than starting one rung wrong.
| Rung | Who / where | Address | Particles | Sample opener |
|---|---|---|---|---|
| 极正式 | 公文, 合同, official notice, court, 学术论文 | 贵方 / 各位 / no second person at all | none | 兹通知如下: |
| 正式 | External email, a client, a professor, an older stranger | 您 | none, or 呢 in a question | 王总您好,打扰了。 |
| 客气 | New colleague, a peer at another company, a shop | 你 with 请/麻烦 | 吧, 呢 | 你好,麻烦问一下 |
| 日常 | Colleagues, friends, group chats, most 小红书 copy | 你 | 啊, 呢, 吧, 嘛 | 在忙吗?想问个事儿 |
| 亲近 | Close friends, family, same-age group chat | 你 plus nicknames | all of them, plus slang | 诶你看这个 |
Defaults when nothing is known: 客气 in writing to a person, 日常 on social copy, 正式 in email. formality overrides; a stated preference for one person overrides both and gets a ## Recipients row.
The model reaches for the dictionary word. A native reaches for the specific one. Left column is not wrong — it is flat, which is what reads as machine.
| Flat | Native, casual | Native, formal | Note |
|---|---|---|---|
| 很好 | 太好了 / 绝了 / 牛 | 非常好 / 十分理想 | 绝了 and 牛 carry age signal (slang.md) |
| 不好 | 太差了 / 拉垮 / 坑 | 不理想 / 有待改进 | 坑 means it wasted your money or time specifically |
| 很多 | 超多 / 一堆 / 一大把 | 大量 / 众多 | 一堆 implies untidy volume |
| 非常 | 超 / 巨 / 特别 / 贼 (northern) | 十分 / 极为 | 贼 marks the writer as northern |
| 我认为 | 我觉得 / 我感觉 | 本文认为 / 笔者认为 | 我认为 in a 论文 is a register error (academic.md) |
| 是的 | 对 / 嗯 / 是啊 | 是的 | Bare 是的 in chat reads clipped |
| 谢谢你 | 谢啦 / 多谢 / 麻烦你了 | 感谢您的支持 | 麻烦你了 thanks for effort, not for a gift |
| 对不起 | 不好意思 | 抱歉 / 深表歉意 | Weight ladder in etiquette.md |
| 一个人 | 有个人 | 一位 + role | 位 is the polite measure word for people |
| 个 (any noun) | the specific 量词 | the specific 量词 | 一条消息, 一张票, 一部电影, 一台电脑, 一家公司, 一门课, 一顿饭 |
| 进行讨论 | 聊聊 / 说一下 | 讨论 | Rule 6 |
| 现在 | 这会儿 / 眼下 | 目前 / 当前 | 这会儿 is spoken and northern-leaning |
| 因为…所以… | just the two clauses | 由于…因此… | Chinese does not need both halves; keeping both is textbook |
| 我不同意 | 我觉得不太行 / 这个可能有点难 | 恐怕难以认同 | Direct disagreement is a register decision, not a default (etiquette.md) |
Before delivering any Chinese text:
## Recipients row if there is one, and the address form unchanged from previous messages to that person (Rule 1)?latin_spacing applied uniformly (Rule 8)?slang_appetite, and every 成语 checked for its actual meaning rather than its parts (Rule 9, idioms.md)?memory-template.md, with its ## Boxes line, in this same turn.User-dependent variables. Defaults apply until the user states a preference; store them in ~/Clawic/data/chinese/config.yaml.
| Variable | Type | Default | Effect |
|---|---|---|---|
| variant | mainland | taiwan | hongkong | singapore | mainland | Vocabulary set, slang source, punctuation defaults and every example in regions.md; while unset, name the assumed variant before writing (Rule 2) |
| script | simplified | traditional | from-variant | from-variant | Overrides the script the variant implies, for the case of simplified text for a Taiwanese reader or the reverse |
| formality | casual | neutral | formal | auto | auto | Default rung on the Register Ladder when the channel does not settle it; auto reads it from the channel |
| address_form | 你 | 您 | auto | auto | Second person used when no ## Recipients row exists; a row for a person always wins (Rule 1) |
| slang_appetite | none | light | current | heavy | light | How much internet language enters output; none for official channels or a 50+ audience, heavy only when the user has shown they write that way (slang.md) |
| pinyin_gloss | none | new-words | all | none | Whether output carries pinyin and an English gloss — set to new-words when the user is learning, none when they are native |
| default_channel | wechat | xiaohongshu | weibo | gongzhonghao | douyin | zhihu | email | document | none | none | Channel assumed when a request does not name one; picks the style box and the platform conventions in social-media.md |
| latin_spacing | bool | true | Whether a half-width space separates Han from Latin letters and digits; applied to every occurrence or none (Rule 8) |
| crude_ok | bool | false | Whether 卧槽-tier and 牛逼-tier words may appear at all |
| platform_filter_aware | bool | true | Whether to avoid wording that gets a post limited on mainland platforms and offer the 谐音 alternative instead (social-media.md) |
| emoji_density | none | sparse | native | heavy | sparse | Emoji and 表情包 per paragraph in chat and social copy; native matches the platform norm, which on 小红书 is far higher than on WeChat |
Preference areas — customizable dimensions; a stated preference gets recorded in config.yaml and applied from then on:
styles/<channel>.md box once it outgrows a linepunctuation.md and numbers-and-names.mdsocial-media.md and emoji_density## Recipients row rather than a config keyetiquette.md and platform_filter_aware## Due table of memory.md| Trap | Why it fails | Do instead |
|---|---|---|
| 呵呵 as friendly laughter | On the mainland it has meant dismissal or contempt for over a decade; sending it to a colleague reads as an insult | 哈哈 / 哈哈哈, matched in length to theirs (chat.md) |
| The 🙂 emoji, or 微笑 from the WeChat set | Read as passive-aggressive by most users under about 40; the older generation still means it warmly, which is exactly why it lands badly | 😄, 😂, or a 表情包 (chat.md) |
| Opening a message with 在吗 | Puts the reader on the hook before they know the cost; widely resented | Ask the thing in the first message, with the context |
| A 。 at the end of every chat line | Chat punctuation is minimal; a final period reads as cold, angry, or conversation-ending | End on the last character or a particle; keep 。 for paragraphs |
| Machine-converting simplified to traditional | Vocabulary stays mainland and the one-to-many characters break: the converter emits 頭發 for 头发 and leaves 干杯 as 干杯, where 頭髮 and 乾杯 are the right forms | Convert vocabulary too, then re-read the nine characters in Rule 2 (regions.md) |
| 二个, 二点钟 | Before a measure word the number is 两 | 两个, 两点钟 (Rule 3) |
| Overusing 您 with a peer | Reads as sarcasm or as putting distance in on purpose | 你 for peers; 您 only up the ladder or on first contact (Rule 1) |
| 亲 as a friendly opener | It is Taobao seller voice; outside e-commerce it reads as a sales script | The person's name, or nothing |
| Adding 哥/姐 to a name without checking | 哥 attached to some given names collides with a product or a meme — 伟哥 is the brand name of Viagra | Use 姓 + 哥/姐 (王哥), or the title (numbers-and-names.md) |
| Stacking 成语 to sound educated | Three in a paragraph reads as 公文 filler or as a student showing off | One per paragraph at most, and only where a plain phrase would be longer (idioms.md) |
| Reaching for slang to sound young | A dead meme dates the writer more precisely than plain language ever could | Date the term first (Rule 9) |
| Half-width ,.?! inside Chinese text | The most visible non-native mark, and it survives every style edit | Full-width throughout (Rule 8) |
| 谢谢你的来信 / 期待您的回复 as email frames | Direct calques of English business letters; Chinese email has its own skeleton | 您好 → the point → 此致 敬礼 or 顺颂商祺 (business.md) |
| 加油 as the answer to any difficulty | Fine for exams and matches, hollow after bad news | Name the specific thing: 有事随时说 / 需要我做什么 |
| Writing ... instead of …… | Three ASCII dots are a Latin ellipsis; Chinese uses two ellipsis characters | …… (Rule 8) |
| Using 、 to join two clauses | 、 lists items inside one clause and nothing else | ,between clauses, 、inside a list |
| A term, name or register decision that lives only in the chat | Re-decided differently next month, and the reader notices the drift before the user does | Glossary row, ## Recipients row, or artifacts/, in the same turn (memory-template.md) |
latin_spacing and be uniform — mixed spacing looks like a merge conflict, which is worse than either choice.More Clawic skills, get them at https://clawic.com/skills/chinese (install if the user confirms):
translate — when the job is bound to an existing source text in another languagetraditional-chinese — Traditional-only writing for Taiwan and Hong Kong readerschina — travelling in the country these texts are read inwriting — the craft of prose itself, once the language question is settledjapanese — the same problem in the neighbouring languagePart of Clawic, the verified skill library. Get this skill: https://clawic.com/skills/chinese.