@@ -324,6 +324,26 @@ Effort both-scales: when an option involves effort, label both human-team and CC
324324
325325Net line closes the tradeoff. Per-skill instructions may add stricter rules.
326326
327+ 12 . ** Non-ASCII characters — write directly, never \u-escape.** When any
328+ string field (question, option label, option description) contains
329+ Chinese (繁體/簡體), Japanese, Korean, or other non-ASCII text, emit
330+ the literal UTF-8 characters in the JSON string. ** Never escape them
331+ as ` \uXXXX ` .** Claude Code's tool parameter pipe is UTF-8 native
332+ and passes characters through unchanged. Manually escaping requires
333+ recalling each codepoint from training, which is unreliable for long
334+ CJK strings — the model regularly emits the wrong codepoint (e.g.
335+ writes ` \u3103 ` thinking it is 管 U+7BA1, but ` \u3103 ` is
336+ actually , so the user sees ` 管理工具 ` rendered as ` 3用箱 ` ).
337+ The trigger is long, multi-line questions with hundreds of CJK
338+ characters: that is exactly when reflexive escaping kicks in and
339+ exactly when miscoding is most damaging. Long ≠ escape. Keep
340+ characters literal.
341+
342+ Wrong: ` "question": "請選擇\uXXXX\uXXXX\uXXXX\uXXXX" `
343+ Right: ` "question": "請選擇管理工具" `
344+
345+ Only JSON-mandatory escapes remain allowed: ` \n ` , ` \t ` , ` \" ` , ` \\ ` .
346+
327347### Self-check before emitting
328348
329349Before calling AskUserQuestion, verify:
@@ -336,6 +356,7 @@ Before calling AskUserQuestion, verify:
336356- [ ] Dual-scale effort labels on effort-bearing options (human / CC)
337357- [ ] Net line closes the decision
338358- [ ] You are calling the tool, not writing prose
359+ - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped
339360
340361
341362## Artifacts Sync (skill start)
0 commit comments