Summary
Two YAML-editing bugs in internal/config/skill_install_edit.go.
Items
- Select-list comment/order loss.
mergeSkillSelect (:180-185) does selectNode.Content = selectNode.Content[:0] then rebuilds sorted scalar nodes — dropping per-item comments (- alpha # pinned) and user ordering. This is the one real comment-loss path in the otherwise round-trip-safe YAML editor.
global: yes duplicate. boolValue (:270-277) uses strconv.ParseBool, which fails on yes, while yaml.v3 decodes global: yes to true. So skillNodeIdentityMatches (:143) never matches a hand-written global: yes entry against a Global: true install → gaal skill install appends a duplicate entry each run.
Suggested fix
Merge into the existing select list in place (preserve comments/order); accept YAML boolean spellings in boolValue.
Surfaced by an automated full-repository review. Filed for triage — not yet verified against product intent. Line numbers reference main at review time.
Summary
Two YAML-editing bugs in
internal/config/skill_install_edit.go.Items
mergeSkillSelect(:180-185) doesselectNode.Content = selectNode.Content[:0]then rebuilds sorted scalar nodes — dropping per-item comments (- alpha # pinned) and user ordering. This is the one real comment-loss path in the otherwise round-trip-safe YAML editor.global: yesduplicate.boolValue(:270-277) usesstrconv.ParseBool, which fails onyes, while yaml.v3 decodesglobal: yestotrue. SoskillNodeIdentityMatches(:143) never matches a hand-writtenglobal: yesentry against aGlobal: trueinstall →gaal skill installappends a duplicate entry each run.Suggested fix
Merge into the existing select list in place (preserve comments/order); accept YAML boolean spellings in
boolValue.Surfaced by an automated full-repository review. Filed for triage — not yet verified against product intent. Line numbers reference
mainat review time.