* fix(skills): preserve non-ASCII chars in skill frontmatter
Skill SKILL.md frontmatter descriptions containing non-ASCII
characters were escaped to \uXXXX / \xXX sequences because
yaml.safe_dump() was called without allow_unicode=True.
- Add allow_unicode=True to the 7 skill/command frontmatter
safe_dump sites (extensions, presets, claude integration)
- Add regression tests for the render and extension-install paths
Follows the approach of #1936; encoding="utf-8" is already set on
the affected write paths, so no encoding change is needed here.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* refactor(_utils): add dump_frontmatter helper
Centralize skill/command frontmatter YAML serialization into a single
_utils.dump_frontmatter helper so no call site can drop allow_unicode or
diverge on formatting. Route the 7 existing sites through it and drop a
now-unused local yaml import.
Switch the extension test fixtures to yaml.safe_dump for parity with the
production safe-dump/safe-load codepaths.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>