Skip to content

fix(skills): preserve YAML strings and metadata keys - #2266

Open
kyboi wants to merge 1 commit into
JetBrains:developfrom
Kreoh:contribute/skills-yaml-escaping
Open

kyboi wants to merge 1 commit into
JetBrains:developfrom
Kreoh:contribute/skills-yaml-escaping

Conversation

@kyboi

@kyboi kyboi commented Sep 29, 2026 •

Copy link
Copy Markdown

generateSkillsPrompt(YML) currently changes multiline strings through YAML folding and emits metadata keys that can parse as booleans, nulls or YAML syntax. Escape string values and quote unsafe keys so parsing preserves the original content. Ordinary identifier keys retain their existing layout.

The underlying string-preservation fix is already included and working in production applications through Kroog. Original implementation. This patch adapts the key-quoting rules to the existing helpers, without importing the catalogue refactor or a runtime dependency. It also escapes YAML control characters that Kroog's JSON-based helper leaves raw; that additional coverage was validated locally.

Adds org.snakeyaml:snakeyaml-engine:3.0.1 to jvmTest dependencies in skills/build.gradle.kts. The regression tests use it to parse generated YAML and verify that every field and metadata key retains its original string value. This adds no production runtime dependency.

Validation: 102 YAML parser round-trip cases using an explicit Core schema. The develop baseline fails 48; the same baseline with Kroog's extracted helpers fails four; this patch passes all 102. All 120 skills JVM tests, the JVM JAR build and module ktlint checks pass. No non-JVM tests were run.

Closes #2265.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Skills YAML prompt changes multiline values and metadata keys

1 participant