TL;DR
- Must use Taiwan terminology: 元件、非同步、資料、伺服器、資料庫、快取; frameworks and code stay in English.
- Absolutely forbidden: 組件/组件、異步/异步、數據/数据、服務器/服务器、函數/函数、數組/数组、加載、依賴。
- Delete on sight: 值得注意的是、事實上、總的來說、賦能、深入探討、打造、至關重要、進行 + verb.
Required Pre-Check
The four tables in this file are always in effect; references are not read by default.
- prose-style.md: Read only when writing continuous prose (project documents, README narrative paragraphs, ADRs, release notes, specifications, presentations, or when the user says "too AI-like" or "polish"). If you read it, read it before you start writing, not after you finish and go back to proofread: once the paragraph structure of a draft takes shape, it is very hard to break apart, and proofreading afterward can only change word choice. In practice, when the model is left to arrange the order itself, it puts this one last, and by then the skeleton of three drafts has long been set. Do not read it for commit messages, code comments, test case descriptions, tables, or API parameter descriptions: forcing prose rhythm onto fixed formats breaks them, and the "AI-flavor quick check" layer in this file is already enough.
- Do not copy the appearance of this file. This file uses a lot of bold and tables for ease of reference; that is the format of a quick-reference table, not the format you should produce. Prose should be written as prose: pseudo-subheadings (a standalone line of
**……**) are explicitly forbidden, see item 4 of "AI-flavor quick check" below. - guidelines.md: Read only when the quality check fails or the user requests an audit.
- terms.csv:Every time you produce Chinese, you must check; this is a required step, for the method see step 2 of "Quality check and rewrite process" below. Always
grep, do not read the whole thing: 2,122 terms, reading the whole thing takes over forty thousand tokens, grep returns only a few lines.
Core Rules
- Use Traditional Chinese (zh-Hant-TW/zh-TW/zh_TW), and use locally customary terms.
- When the user says "use Chinese / answer in Chinese / output in Chinese," always treat it as Traditional Chinese unless Simplified is explicitly specified (簡體/简体/zh-Hans/简中).
- Use Taiwan conventions for terminology (資料、元件、應用程式、資料庫、伺服器).
- Keep framework names, APIs, code symbols, and file paths in English.
- Do not make file paths into links; wrap them directly in backticks.
- Use full-width punctuation for Chinese sentences, and half-width punctuation for code and paths.
Key terminology quick-reference table (must be followed)
Absolutely forbidden: 代碼/代码、组件、異步/异步、回退、變量/变量、映射、對象/对象、數組/数组、函數/函数、返回值、導入/导入、導出/导出、依賴/依赖、數據/数据、應用程序/应用程序、數據庫/数据库、服務器/服务器、緩存/缓存、網絡/网络、加載、模塊、線程
Must use Taiwan terminology: component 元件、array 陣列、object 物件、function 函式、data 資料、variable 變數、parameter 參數、return value 回傳值、import 匯入、export 匯出、async 非同步、cache 快取、load 載入、server 伺服器、database 資料庫、network 網路、thread 執行緒、module 模組、package 套件、dependency 相依性
Chinese software-circle jargon forbidden list (applies to all tasks)
These words are both Chinese usage and empty talk; replacing them with concrete verbs forces the sentence to make clear what was actually done. They are most easily slipped in when writing project documents, PR descriptions, and meeting notes.
| Forbidden | Replacement |
|---|---|
| Landing | Implement, realize, launch |
| Retrospective | Review, look back |
| Sedimentation (abstract entity) | Accumulate, organize and retain |
| Closed loop | Complete process; "form a closed loop" → see the process through to the end |
| Lever | Point of focus, point of entry |
| Break through | Integrate, interconnect |
| Granularity | Level of detail (granularity in technical documents is acceptable) |
| Track | Field, market |
| Head (= leader) | Leading player, top-tier |
| Pain point | Already common in Taiwan business contexts; in formal documents, change to "where the problem lies" or "crux" |
One word, multiple meanings: judge by sense, not a blanket ban
These words are used in Taiwan too, just with different senses, so judge by sense. The table below covers the most commonly mistaken ones; for the rest, check terms.csv,clues/avoid_clues/note the three columns record exactly the criteria for judgment.
| Word | Sense retained in Taiwan | This sense needs changing |
|---|---|---|
| Quality | Physics mass | quality → Quality |
| Level | horizontal | Standard, degree → Level |
| Pass | pass (pass an exam, pass a review) | By means of → Through / by means of |
| Item | item (list item) | project → Project |
| Align | Layout, data structure alignment | "Align" in a meeting → Sync, reach consensus |
| Data | Numerical statistics | Generic term data → Data |
| Document | document | file → File |
| Concurrent | concurrency | parallelism → Parallel(In China, "concurrent" means parallel; copying it directly would reverse the meaning) |
| Progress | Progress, advancement | OS process → Process |
| Render | Exaggerate; traditional Chinese painting shading technique | rendering → Rendering |
| Traverse | Ergodic theory | traverse → Traverse |
Glyph form does not affect judgment: "數據", "組件", "落地" are still Chinese mainland usage even when written in traditional characters. Traditional vs. simplified is a glyph issue; word choice is a regional issue. Both glyph forms in the three tables above need changing. (For grep terms.csv details, see guidelines.md)
AI-flavor quick reference (applies to all tasks)
Even with the right word choice, the text can still read at a glance as AI-written. Wrong terminology gets caught by colleagues; AI flavor gets caught by no one, it just makes the document unreadable.
Delete on sight(Deleting loses no meaning, no need to hesitate): It is worth noting that, it should be noted that, it is worth mentioning that, more importantly, in fact, without a doubt, it can be said, simply put, overall, in summary; heading-style set phrases "In one sentence:" "Core idea:" "Key:" "The following are".
Replace on sight:
| Disable | Replace |
|---|---|
| Empower | enable ... to, give ... the tools to |
| Delve into | discuss, analyze, examine |
| reveals | shows, explains, points out |
| build | do, create, write |
| aims to | in order to, the purpose is |
| crucial / indispensable | important, key, necessary (pick one, don't stack them) |
| conduct + verb | use the verb directly ("conduct an analysis" → "analyze") |
| in the process of ... / in terms of ... | strip the frame, keep the core ("in the process of refactoring" → "when refactoring") |
Four quantitative limits:
- Em dashes (——): at most one pair per thousand characters. If the meaning doesn't change after switching to a comma or period, change it.
- "Not X, but Y": at most once per thousand characters, and it must pass the strawman test: would anyone really believe X? If not, just state Y directly.
- Tricolon (more A, more B, more C): if the three items can be derived from one another, cut it down to one.
- At most one bolded spot per paragraph; bolding an entire sentence is forbidden.
Openings and closings: Don't restate the question ("That's a great question"), don't use eager-response enthusiasm ("Of course!"), don't use outlook-style closings ("I hope this information helps you"). Stop when the content is done.
Filler word "one": a remnant of the English article; "a kind of", "one [person]", "one [item]" are the same. If the sentence still works after deleting it, delete it.
The complete rules, example sentences, and item-by-item self-check process are in prose-style.md; you only need to read it when writing continuous prose.
Quality check and rewriting process
The quick reference table is for getting it right the first time, not for checking against afterward.
-
Before producing output, scan the four blocks above (absolute prohibitions, software-circle jargon, words with multiple meanings, AI-flavor quick reference) and write accordingly.
-
Check the table. This step is executed unconditionally, regardless of the result of step 3, and the candidate words are not for you to judge.
The paths below are relative to this skill directory, not to the project root directory.
When you can execute commands, feed the draft to the script. Use stdin, don't save a separate temp file—if you save it you'll forget to delete it, and debris like
draft_check.txtwill end up in the skill directory:cat <<'EOF' | python3 scripts/lint_zhtw.py --terms - (草稿全文) EOFIf it's already a file, just give the path:
python3 scripts/lint_zhtw.py --terms draft.md。It compares the entire terms.csv row by row, regardless of which word you think is suspicious. The output format is
行號: [用詞] 原詞 → 建議; a mark of "(context unconfirmed)" means that row hasclues, and you need to confirm whether the context is right before changing it.When you can only grep, the pattern must be drawn from the draftmechanically: extract every consecutive Chinese character string in segments of 2 to 6 characters and put them all in, not just the few you find suspicious.
grep -nE "候選1|候選2|候選3|…" references/terms.csvcnThe column contains both simplified and traditional character forms at the same time; try both. If there's a hit, change it according to thetwcolumn.Why you can't pick the candidate words yourself: intuition can only pick out words you already know are problematic. In tests, when the model was left to "pick out suspicious words" on its own, it picked the few it already recognized, and words it would only know after actually looking them up never made it into the pattern at all—equivalent to not checking. The words you think are fine are exactly the ones that most need checking.
Feed the entire piece in one go; do not check section by section, and do not rerun it every time a single word is changed. The script reads the whole draft at once and lists all matching lines in one pass; once you have reviewed the hit list, fix everything in one go, and after fixing you only need to run it once more per Step 5 to confirm—there is no need to recheck after each individual fix. In practice, this drags on to a dozen-plus tool calls, is slow, and every step is a place where things can break.
-
After producing output, self-check once; if any of the following holds, it fails:
- A word from the "absolutely forbidden" or "Chinese software-circle jargon" lists appears
- A polysemous word is used with the wrong sense
- A word from the "AI-flavor quick check" deletion list or replacement table appears
- Em dashes, false contrasts, triadic parallelism, bolding exceeding the quantified limit (including bolding an entire sentence)
- The opening restates the question, or the closing includes "hope this information is helpful to you"
- A Chinese sentence uses half-width punctuation, or code and filenames are not wrapped in backticks
- English proper nouns have been translated away (React, useState, API must be kept)
-
Pass: output directly; do not open guidelines.md.
-
Fail: read guidelines.md, rewrite, then check again.
-
Output only the passing version; do not mention the checking or table-lookup process.
Minimal Example
使用 React,在 `useEffect()` 中載入資料。
檔案位於 `src/components/Button.tsx`。
References
- prose-style.md: complete style guidelines for removing AI flavor (read when writing continuous prose)
- guidelines.md: complete guide (read when auditing)
- terms.csv: terminology mapping table, generated by scripts/fetch_terms.py generated
- External sources (Wikibooks, zhtw-mcp, Ministry of Education Dictionary) are listed in guidelines.md
- allenloves/de-ai-tone:CC BY-SA 4.0,
prose-style.md, software-circle jargon table, polysemous-word table sources
Last Updated: 2026-08-09