Agent skills that write Traditional Chinese like a real person — straight from my ~/.skills.
English · 繁體中文 · Live catalog ↗
My personal ~/.skills repo — the SKILL.md skills, scripts, and tooling I use day to day across Claude Code, Cursor, and Codex. It's a personal toolbox, not a single-purpose product: it grows in whatever direction my work needs, and anything here is public because it might be useful to someone else too.
Today the skills lean toward Traditional Chinese writing — de-AI editing, Taiwan localization, business documents — because that's the gap almost nothing on GitHub covers: writing that reads natural to a Taiwan audience, stripped of the AI tells, mainland-China wording, and corporate jargon that give machine text away. Other skills and tools live alongside them, and more get added over time.
Most AI-writing tooling assumes English. For a Taiwan audience it leaves gaps these skills close:
- English-only defaults. De-AI editors, tone checkers, and style tools are tuned for English and miss the tells in Chinese entirely.
- Generic zh, not Taiwan zh. "Chinese" support usually means mainland usage. These write the way people actually write in Taiwan.
- Leaked mainland wording & Simplified. 陸用語, 互聯網黑話, and stray 簡體字 slip into Traditional Chinese; the localizer catches them without over-correcting real terms.
- AI tells & corporate jargon. The uniform rhythm, hedging, and filler that give machine text away — stripped, in both languages.
- Portable by design. Every skill runs on Claude Code and Codex (and any agentskills.io-compatible agent). No external tools or APIs required; tool-specific power is never load-bearing.
- Self-sufficient. Each skill does its own job standalone; sibling skills are optional pointers, never prerequisites.
- Earns its place. A skill ships only if it beats its no-skill baseline on a real eval. No bar-clearing eval, no skill.
- Currently writing-heavy. The catalog below is Taiwan-first Chinese writing — de-AI editing, 陸用語 → 台灣用語 localization, plain-language rewrites, blogs, and 簽呈/RFP/評估報告 docs. Scope is open, not fixed.
- Two that travel further.
infographic-design(design-system-grade explanatory graphics) andknowledge-doc-writing(the Diátaxis documentation discipline) are professional, language-agnostic tools that stand on their own — no Chinese required.
Two paths — a networked one-liner, or offline per-skill symlinks (below).
Install every skill onto a machine with one command:
npx skills add https://github.com/leoluyi/skills -g -a '*' -yUpdate later:
npx skills update --allThen in Claude Code / Cursor / Codex, just describe the task — a skill's trigger fires it automatically. For example: "幫我把這段 README 去掉 AI 味" loads humanizer-zh.
Offline / airgapped fallback
npx skills needs network access, and Claude Code's skill loader has a discovery bug when ~/.claude/skills/ itself is a symlink. The fix is per-skill symlinks:
git clone git@github.com:leoluyi/skills.git ~/.skills
cd ~/.skills
tools/sync-skillsThat script symlinks each skills/<name>/ into both ~/.claude/skills/<name>/ (Claude Code, Cursor) and ~/.agents/skills/<name>/ (Codex, OpenHands), refuses to overwrite real directories, and prunes dangling links.
24 skills across 7 categories. Every skill is labelled model-invoked (the agent fires it automatically on a matching task, and you can also call it by name) or user-invoked (only you can, by name). Browse the interactive catalog ↗ or read any SKILL.md directly.
| Skill | Invocation | What it does |
|---|---|---|
Humanizer (English + zh-TW)humanizer-zh |
model-invoked |
Catches the tells that make English and Traditional Chinese read as machine-written, then rewrites them into human prose |
Cross-Strait Chinese Localizeravoid-china-writing |
model-invoked |
Strips mainland-China wording, jargon, and leaked Simplified from Traditional Chinese and rewrites it into natural Taiwan usage without over-correcting real terms |
Plain Speak: Jargon into Plain Languageplain-speak |
model-invoked |
Turn a technical term, snippet, or dense paragraph into one line your PM, exec, or customer can actually repeat back |
Traditional Chinese Blog Writerblog-writing-zh |
user-invoked |
Turn notes, a talk, or a bare topic into a Taiwan-Chinese blog post that reads like a real person wrote it |
| Skill | Invocation | What it does |
|---|---|---|
Briefing Outlinebriefing-outline |
model-invoked |
Distill one long report or many docs into a high-altitude 說明提綱 a manager can grasp, then drill into |
Formal Internal Doc Structureformal-doc-structure |
user-invoked |
Turns a rough ask into a ready-to-circulate 簽呈, 會議紀錄, or 評估報告 with the structure its reader actually needs |
Technical RFP Writing & Reviewrfp-writing |
user-invoked |
Draft and review technical RFPs from the issuer's side, cutting redundant sections, appendix bloat, and AI filler |
| Skill | Invocation | What it does |
|---|---|---|
Deck Consultingdeck-consulting |
user-invoked |
Advise on a presentation one node at a time — positioning, structure, headlines, storyline, opening, closing, delivery, layout — with current cross-session state and each node's artifact on disk so the next one picks up where it left off |
Deck Writerdeck-writer |
model-invoked |
Turn a topic or source bundle into a complete slide-by-slide Markdown deck with an argument, assertion-style titles, full on-slide copy, evidence notes, and speaker notes |
Language-agnostic professional tools that stand on their own — no Chinese required.
| Skill | Invocation | What it does |
|---|---|---|
Infographic Designinfographic-design |
model-invoked |
Design-system-grade explanatory graphics — timelines, comparisons, process diagrams — as clean, self-contained SVG or a single HTML file. Language-agnostic; built to be saved and reshared |
Diagram Stylediagram-style |
model-invoked |
Generate a new diagram from requirements or restyle an existing one while preserving requested content |
Knowledge Doc Writing (Diátaxis)knowledge-doc-writing |
model-invoked |
Engineering-grade knowledge docs on the Diátaxis model — tutorial, how-to, reference, explanation — writing only what the material supports and flagging the gaps honestly. A discipline that travels across domains |
Fourth-Wall Repairfourth-wall-repair |
user-invoked |
Removes prose about the artifact, reading path, page role, and commissioning context while preserving evidence and real instructions |
Visual Output QAvisual-output-qa |
model-invoked |
Review rendered visual artifacts against one fail-closed delivery standard |
| Skill | Invocation | What it does |
|---|---|---|
Learn Looplearn-loop |
user-invoked |
Get taught and quizzed on a concept, then write the note yourself while it verifies sources and files it into your Obsidian vault |
Obsidian Vault Notesobsidian-vault |
model-invoked |
Search, create, and link notes in an Obsidian vault that stays on PARA / Johnny-Decimal structure and wikilinks |
Discuss With Mediscuss-with-me |
model-invoked |
Think through a question neither of you can answer yet — widen the options, label what's found vs guessed, attack the load-bearing assumptions, and leave a record that says what would overturn it |
Language-agnostic; runs on any agent with shell access.
| Skill | Invocation | What it does |
|---|---|---|
Recover a Deleted Claude Conversationrecover-deleted-claude-conversation |
user-invoked |
Pull a deleted Claude Desktop/claude.ai conversation and its artifacts back out of the Chromium cache before it's evicted |
Language-agnostic; runs on any agent that can execute a plan unattended.
| Skill | Invocation | What it does |
|---|---|---|
Plan → Goalplan-to-goal |
user-invoked |
Turn a rough plan into a bounded goal with machine-checkable done conditions, before an autonomous run burns tokens on a vague target |
Goal Definergoal-definer |
model-invoked |
Interview a fuzzy task into a six-element goal prompt an agent can run for hours without drifting or wrapping up early |
Autopilotautopilot |
user-invoked |
Hand over the whole job: orchestrate subagents, self-repair on a budget, pass a verification gate, then commit, push and open a PR without checking back |
Breakdownbreakdown |
model-invoked |
Lay every case out in full before evaluating any of them, split the problem into decisions only you can make, then wait — recommendation comes last |
Optionsoptions |
user-invoked |
Re-ask whatever is pending as tappable choices, then keep every direction decision clickable for the rest of the session |
Taste Distillertaste-distiller |
model-invoked |
Mine your rejections of AI output and distil the standard behind them into a reusable 1-5 rubric, in Markdown and in JSON for an evaluator agent |
Clone the repo and wire it into Claude Code for local authoring:
git clone git@github.com:leoluyi/skills.git ~/.skills
cd ~/.skills
tools/sync-skills.
├── README.md
├── README.zh-TW.md # Traditional Chinese README
├── CLAUDE.md # hard rules (always loaded) — the forbidden directives
├── engineering-guidelines.md # full authoring guide
├── CONTRIBUTING.md # how to contribute (EN + 繁中)
├── backlog.md # repo-level + tools/ backlog (per-skill items live in skills/<name>/backlog.md)
├── skills/ # active skills — each is a SKILL.md folder
├── docs/ # GitHub Pages site (the live catalog)
└── tools/ # repo scripts
| Script | Purpose |
|---|---|
tools/new-skill <name> |
Scaffold a new skill (SKILL.md + eval stub + next-step hints). |
tools/sync-skills |
Per-skill symlinks into ~/.claude/skills/ (Claude Code, Cursor) and ~/.agents/skills/ (Codex, OpenHands). Offline / airgapped fallback. |
tools/archive-skill <name> |
git mv a skill (and its evals) to _archive/. |
tools/usage-report [days] |
Count skill triggers in ~/.claude/projects/ transcripts. Default 90 days. |
tools/eval validate <name> | --all |
Validate eval fixtures and optional configs without model calls. |
tools/eval trigger <name> |
Check description invocation against evals/trigger-queries.json. |
tools/eval quick <name> [--ids ...] |
Fast single-arm smoke run over representative cases. |
tools/eval gate <name> --baseline REF |
Adaptive blind A/B regression gate with cached baseline outputs. Add --ids for a bounded one-round diagnostic. |
tools/check-labels <name> | --all |
Read-only eval hygiene gate: every rule label in evals.json/corpus resolves to a real rule name, every corpus 引文片段 is an exact substring. Opt-in — needs evals/label-check.json. |
tools/check-invocation <name> | --all |
Read-only invocation gate: every skill ships agents/openai.yaml, and its mode agrees across both harnesses (disable-model-invocation vs policy.allow_implicit_invocation). Repo-wide, no opt-in. |
tools/annotate <name> [--ids 15,18-20] |
Blind adjudication: show a case's span with the expectation and rule name stripped, take an AI 指數 1-4 plus a rationale, and record it in evals/annotations.json. Renders the ledger into evals/judged-cases.md between annotate:begin/end; --check fails if that render is stale. |
tools/build-docs |
Regenerate docs/index.html, docs/skills.json, and both READMEs' catalog tables from skills/*/catalog.md. |
The hard, always-loaded rules are in CLAUDE.md. The full authoring guide — anatomy, frontmatter gotchas, naming, portability, and test discipline — is in engineering-guidelines.md. To contribute, start with CONTRIBUTING.md.
MIT © Lu Yi. Individual skills that build on third-party work carry their own LICENSE/NOTICE and are credited below.
Some skills stand on prior work. Credit and licenses:
- speak-human-tw by Raymond Hou (雷蒙三十) (MIT) —
humanizer-zhadapts its six-step working procedure and its 保護清單 mechanism, and its 翻譯腔 patterns informed Taiwan-usage entries in that skill and inavoid-china-writing(陸用語 term table); those rule entries are our own rewrite, not copied text. Separately,humanizer-zh's eval corpus (evals/evals.jsonids 15-54) adapts 40 of its test cases verbatim, with attribution — seeskills/humanizer-zh/NOTICE. - humanizer by Siqi Chen (MIT) and x-skills'
x-humanizerby Sergey Bulaev (MIT) —humanizer-zh's English layer was distilled from their pattern inventories; the patterns were re-derived, re-classified into that skill's own defect classes, and rewritten, with no prose copied verbatim. - avoid-ai-writing by Conor Bronsdon (MIT) —
humanizer-zhthrough v1.5.0 rebased its English detection layer verbatim from this project. That layer was removed in v2.0.0 and no longer appears in the skill; the credit stands for the record. - Diátaxis by Daniele Procida (CC BY-SA 4.0) —
knowledge-doc-writingis structured on the Diátaxis four-type model (tutorial / how-to / reference / explanation). The framework is Procida's work; the distilled study notes underskills/knowledge-doc-writing/research/are a derivative and are made available under CC BY-SA 4.0. - frontend-design by Anthropic (Apache-2.0) —
infographic-designadapts portions; seeskills/infographic-design/NOTICE.