From 7968290752872aa6787d01c1582fcb550c4a591a Mon Sep 17 00:00:00 2001 From: Garry Tan Date: Mon, 11 May 2026 18:59:02 -0700 Subject: [PATCH] test: refresh codex+factory ship golden fixtures MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Follow-up to 513c9660 — the codex and factory host outputs needed regeneration too, missed in the initial commit because gen:skill-docs was only run for the claude host. Now matches gen:skill-docs --host all. Co-Authored-By: Claude Opus 4.7 --- test/fixtures/golden/codex-ship-SKILL.md | 21 +++++++++++++++++++++ test/fixtures/golden/factory-ship-SKILL.md | 21 +++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/test/fixtures/golden/codex-ship-SKILL.md b/test/fixtures/golden/codex-ship-SKILL.md index 7d1ca1852..7770a8906 100644 --- a/test/fixtures/golden/codex-ship-SKILL.md +++ b/test/fixtures/golden/codex-ship-SKILL.md @@ -310,6 +310,26 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +12. **Non-ASCII characters — write directly, never \u-escape.** When any + string field (question, option label, option description) contains + Chinese (繁體/簡體), Japanese, Korean, or other non-ASCII text, emit + the literal UTF-8 characters in the JSON string. **Never escape them + as `\uXXXX`.** Claude Code's tool parameter pipe is UTF-8 native + and passes characters through unchanged. Manually escaping requires + recalling each codepoint from training, which is unreliable for long + CJK strings — the model regularly emits the wrong codepoint (e.g. + writes `\u3103` thinking it is 管 U+7BA1, but `\u3103` is + actually ㄃, so the user sees `管理工具` rendered as `㄃3用箱`). + The trigger is long, multi-line questions with hundreds of CJK + characters: that is exactly when reflexive escaping kicks in and + exactly when miscoding is most damaging. Long ≠ escape. Keep + characters literal. + + Wrong: `"question": "請選擇\uXXXX\uXXXX\uXXXX\uXXXX"` + Right: `"question": "請選擇管理工具"` + + Only JSON-mandatory escapes remain allowed: `\n`, `\t`, `\"`, `\\`. + ### Self-check before emitting Before calling AskUserQuestion, verify: @@ -322,6 +342,7 @@ Before calling AskUserQuestion, verify: - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision - [ ] You are calling the tool, not writing prose +- [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped ## Artifacts Sync (skill start) diff --git a/test/fixtures/golden/factory-ship-SKILL.md b/test/fixtures/golden/factory-ship-SKILL.md index 903c16810..baae7421d 100644 --- a/test/fixtures/golden/factory-ship-SKILL.md +++ b/test/fixtures/golden/factory-ship-SKILL.md @@ -312,6 +312,26 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +12. **Non-ASCII characters — write directly, never \u-escape.** When any + string field (question, option label, option description) contains + Chinese (繁體/簡體), Japanese, Korean, or other non-ASCII text, emit + the literal UTF-8 characters in the JSON string. **Never escape them + as `\uXXXX`.** Claude Code's tool parameter pipe is UTF-8 native + and passes characters through unchanged. Manually escaping requires + recalling each codepoint from training, which is unreliable for long + CJK strings — the model regularly emits the wrong codepoint (e.g. + writes `\u3103` thinking it is 管 U+7BA1, but `\u3103` is + actually ㄃, so the user sees `管理工具` rendered as `㄃3用箱`). + The trigger is long, multi-line questions with hundreds of CJK + characters: that is exactly when reflexive escaping kicks in and + exactly when miscoding is most damaging. Long ≠ escape. Keep + characters literal. + + Wrong: `"question": "請選擇\uXXXX\uXXXX\uXXXX\uXXXX"` + Right: `"question": "請選擇管理工具"` + + Only JSON-mandatory escapes remain allowed: `\n`, `\t`, `\"`, `\\`. + ### Self-check before emitting Before calling AskUserQuestion, verify: @@ -324,6 +344,7 @@ Before calling AskUserQuestion, verify: - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision - [ ] You are calling the tool, not writing prose +- [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped ## Artifacts Sync (skill start)