fix(skills): quote argument-hint as string (Copilot CLI 1.0.65+ compatibility)#9
Open
thejesh23 wants to merge 1 commit into
Open
Conversation
Five SKILL.md files declare argument-hint using the flow-sequence form `argument-hint: ["<hint>"]`. YAML parses a bare `[` as the start of a flow sequence, so the resulting value is a one-element array of strings, not a string. That worked as long as consumers were permissive, but GitHub Copilot CLI 1.0.65 tightened its skill loader to require argument-hint to be a plain string. Under 1.0.65+ these skills silently fail to load — the CLI drops the manifest without surfacing an error. Fix: strip the outer brackets so the value is a plain double-quoted scalar. Semantics inside the string (Copilot / VS Code Agent Skills argument-hint syntax) are unchanged. Files fixed: - .windsurf/skills/sprang-analyze/SKILL.md - .windsurf/skills/sprang-chat/SKILL.md - .windsurf/skills/sprang-explain/SKILL.md - .windsurf/skills/sprang-knowledge/SKILL.md - skills/sprang-analyze/SKILL.md The other six SKILL.md files in each tree (sprang, sprang-why, sprang-team, sprang-onboard, sprang-health, sprang-diff, sprang-domain) have no argument-hint field and are unaffected. .claude-plugin/ and .copilot-plugin/ do not vendor per-skill SKILL.md files in this repo, so no other trees are impacted. Refs: - GitHub Copilot CLI 1.0.65 release notes (skill loader tightening) - VS Code Agent Skills docs — argument-hint must be a string - copilot-cli-for-beginners/05-skills tutorial — canonical shape - Egonex-AI/Understand-Anything#540 — diagnostic write-up of the same YAML parsing issue (root cause reference; not merged prior art) - Same latent bug affects Claude Code: anthropics/claude-code#22161
Author
|
Tracking issue: #10 — captures the bug diagnosis and reproducer separately for anyone searching the repo who lands there before this PR. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Five
SKILL.mdfiles declareargument-hintusing the flow-sequence form:In YAML, a bare
[opens a flow sequence, so this parses to a one-element array of strings, not a string. That worked as long as skill loaders were permissive.GitHub Copilot CLI 1.0.65 tightened its skill loader to require
argument-hintto be a plain string. Under 1.0.65+ these five sprang skills silently fail to load — the manifest is dropped without a user-visible error.The fix strips the outer brackets so the value is a plain double-quoted scalar. The semantics inside the string (Copilot / VS Code Agent Skills
argument-hintsyntax) are unchanged.Files changed
.windsurf/skills/sprang-analyze/SKILL.md.windsurf/skills/sprang-chat/SKILL.md.windsurf/skills/sprang-explain/SKILL.md.windsurf/skills/sprang-knowledge/SKILL.mdskills/sprang-analyze/SKILL.mdI checked the other six
SKILL.mdfiles in each tree (sprang,sprang-why,sprang-team,sprang-onboard,sprang-health,sprang-diff,sprang-domain) — none declareargument-hint, so they are unaffected..claude-plugin/and.copilot-plugin/do not vendor per-skillSKILL.mdfiles in this repo (they carryplugin.json/ marketplace manifests only), so no other trees are impacted.Grep verification after the fix:
Why this shape
Per the VS Code Agent Skills docs and the copilot-cli-for-beginners
05-skillstutorial, the canonical frontmatter shape is:argument-hintis a single string. It's not a list of alternatives, and it's not structured — it's the hint text that Copilot renders next to the argument prompt.Test plan
pnpm install --frozen-lockfile && pnpm lint && pnpm typecheck && pnpm test— nothing in this diff touches code paths those exercise, but running them confirms the CI matrix in.github/workflows/ci.ymlstill passes.grep -rEn 'argument-hint\s*:\s*\[' --include=SKILL.md .returns no results.head -6showsargument-hint: "..."(plain scalar, no[).copilotin a project with sprang skills installed and confirmsprang-analyze,sprang-chat,sprang-explain,sprang-knowledgenow show up in the skill list. (Before this fix, they are silently missing on 1.0.65+.)I did not run the local pnpm build here (fork-side, no side effects on skill definitions), but the CI job on this PR will exercise
pnpm build,pnpm typecheck,pnpm lint,pnpm test, and theValidate plugin manifestsstep from.github/workflows/ci.yml.Refs
argument-hintmust be a string)argument-hintfield specmicrosoft/copilot-cli-for-beginners/05-skills— canonicalSKILL.mdshapeYAML rule (for reviewers)
A bare
[at the start of a value in YAML opens a flow sequence — see the YAML 1.2 spec §7.4.1. So:Strict consumers reject the array form when the schema expects a string. That's what Copilot CLI 1.0.65 now does.