Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.
Coding
simplified-to-traditional
Try itConvert a Simplified-Chinese article in ai-thoughts/docs/ into its Traditional-Chinese twin, and keep the two in sync. The Simplified article is the source of truth and lives as <YYMMDD-slug>-zh-hans.md; the Traditional twin is generated to <YYMMDD-slug>-zh-hant.md with OpenCC (s2twp) plus a permanent cross-link. Use when the user asks to make, sync, or update the Traditional (繁體) version of a Chinese article — "convert to traditional", "做繁體版", "同步繁简", "zh-hant", "繁體". Never runs automatically; acts only on an explicitly named article. Future articles only — do NOT backfill existing files unless the user explicitly orders it.
What it does
Simplified → Traditional (zh-hans → zh-hant)
The skill document
Simplified → Traditional (zh-hans → zh-hant)
Convert one Simplified-Chinese article into Traditional Chinese, and keep the pair in sync.
Approval gate — read before anything else
- Never convert or write without explicit user approval. This skill converts on demand only; it does not run automatically and does not pick articles on its own.
- Wait for the user to name the article. If they don't, do nothing but ask which one.
- Before writing, confirm the plan: the source file, the exact output path, and whether an existing
-zh-hant.mdshould be overwritten. Never overwrite silently. - Scope: future articles only. In this repo a bare
docs/.mdis the English article and the legacy-chn.mdfiles are the existing Simplified-Chinese articles — neither is a source here unless the user explicitly orders it.
Conventions
- Filenames. Simplified article =
docs/-zh-hans.md; Traditional twin =docs/-zh-hant.md. (In ai-thoughts a bare.mdis English and the legacy-chn.mdfiles are out of scope.) - Source of truth = the Simplified file. The Traditional file is derived from it.
- Traditional variant. OpenCC
s2twp(Taiwan, phrase-aware) — the best default for these literary articles. - Cross-link. Exactly one line, directly under the H1 and above the infographic; Chinese label; a permanent absolute URL on the
j3ffyangaccount:- In the Simplified file:
> 繁体版:[](https://github.com/j3ffyang/ai-thoughts/blob/main/docs/-zh-hant.md) - In the Traditional file:
> 簡體版:[](https://github.com/j3ffyang/ai-thoughts/blob/main/docs/-zh-hans.md) - The label is written in the file's own script (Simplified file →
繁体版; Traditional file →簡體版) so neither file mixes scripts.
- In the Simplified file:
- Infographic stays Simplified and is shared by both files (same
../imgs/...path). The README lists the Simplified article only.
Procedure
- Wait for the user to name the article, then locate
docs/-zh-hans.md(in this repo the source must be-zh-hans.md— a bare.mdis English). - Confirm the plan: source path, output path (
-zh-hant.md), and overwrite permission if the output already exists. - If an existing
-zh-hant.mdis present, stop and ask before overwriting — unless the user asked to update it. - Run the sync script:
It (a) injects/updates the Simplified file'spython3 .opencode/skills/simplified-to-traditional/scripts/sync_tra.py docs/-zh-hans.md繁體版cross-link, (b) converts the body withopencc -c s2twp, (c) injects the Traditional file's简体版cross-link, and (d) writesdocs/-zh-hant.md. - Review the generated Traditional against the Simplified. OpenCC can miss proper nouns, rare characters, or archaic terms. Surface anything suspicious to the user; do not silently hand-fix — a hand-edit is drift and will fail the next
--check. - Verify the pair is in sync:
Exit 0 = in sync; exit 1 lists what is stale.python3 .opencode/skills/simplified-to-traditional/scripts/sync_tra.py docs/-zh-hans.md --check - Report: source, output, and any review notes.
Keeping the two in sync
- After editing the Simplified article, re-run the sync to refresh its Traditional twin.
--checkregenerates the Traditional in memory and diffs it against the file (ignoring the cross-link lines); non-zero exit means out of sync.- Do not treat the Traditional file as an editable primary. Edit the Simplified and re-sync. If a term is genuinely mis-converted by OpenCC, tell the user and decide together, then pin it as a
(from, to)pair inscripts/sync_tra.py→OVERRIDES— it is applied after OpenCC on every re-sync, so it survives (a hand-edit would not).
Verification checklist
- Traditional file exists at
docs/-zh-hant.md. - Both files carry the correct cross-link line directly under the H1 (Chinese label,
j3ffyangURL, pointing at the other file). -
sync_tra.py --checkexits 0. - The infographic reference points at the shared (Simplified) image; no broken
../imgs/. - The Simplified file's body is otherwise unchanged (only the cross-link line added).
- Nothing committed (commit only on explicit approval).
Error handling
- Source not found: list
docs/*-zh-hans.mdand ask which to use; do not substitute a bare (English) or-chn.mdfile. - Output already exists: stop and ask before overwriting.
openccmissing or wrong dict: report and stop; do not guess a conversion.- Ambiguous source name (neither
-zh-hans.mdnor an explicitly ordered-chn.md): ask.
Related skills
Stores durable facts in a categorized, plain-markdown vault on disk, alongside your agent's built-in memory.
Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.
Find why your productivity system keeps failing, then apply the smallest fix — capacity math, bottleneck routing, durable local notes.
Fetch raw ad creative, app, ranking, and revenue data from AdMapix as structured JSON.
Site audit, content writing, and competitor analysis for organic search rankings.
More from j3ffyang
Browse all skillsPolish a technical blog draft into an 800–1000 word, 3–4 section zh-CN article, preserve technical terms/code, and generate consistent hero + per-section image prompts when the user asks to polish and translate a blog with images.
Generate video from supplied image using Veo-3.0 async API. Gemini vision analyzes image, Veo creates video via predictLongRunning. All outputs in ~/.openclaw/workspace/tibetanProc/ with yymmddHHMM prefix.
Read a plain Markdown file (e.g. 260321_openclawConfig.md), generate header and section images using the default OpenClaw image model and API key from ~/openclaw/.env, create a new *_img.md copy with embedded PNGs, and move all generated images into an img/ folder next to the original file.
Polish a technical blog draft into a 1000–1200 word, 4–5 section en-US article, preserve technical terms/code, and generate one consistent hero image prompt.
Help the user draft, review, and polish blog posts in Markdown, keeping the original languages and informal tone.
Generate a daily AI news newsletter from fresh web sources. Use when the user asks for a current AI digest, AI news roundup, curated newsletter, or daily AI...