fix-jsonl-surrogates
Installation
SKILL.md
Fix JSONL Surrogates
Repairs Claude Code JSONL chat files that contain lone Unicode surrogates (U+D800-U+DFFF), which cause the Anthropic API to reject requests with "invalid high surrogate in string".
Background
Node.js internally uses UTF-16 strings. JSON.stringify() doesn't validate surrogate pairs,
so lone surrogates from file reads, terminal output, or web content can end up serialized
as \uD8xx without a matching low surrogate — producing invalid JSON that the API rejects.
Common triggers on Windows:
- Emoji in code comments or terminal output
- Box-drawing characters from build logs
- Web content with malformed UTF-16 encoding
Upstream issue: anthropics/claude-code#44230