Skip to content

fix: bring two skills back under the Agent Skills spec - #1538

Open
bechor25 wants to merge 1 commit into
anthropics:mainfrom
bechor25:fix/spec-conformance
Open

bechor25 wants to merge 1 commit into
anthropics:mainfrom
bechor25:fix/spec-conformance

Conversation

@bechor25

@bechor25 bechor25 commented Aug 9, 2026

Copy link
Copy Markdown

Two skills in this repository fail skills-ref validate against the spec this repository is the reference implementation for.


1. template/SKILL.md — name does not match its directory

name: template-skill     # parent directory is  template/

The required name field: … Must match the parent directory name
— https://agentskills.io/specification#name-field

Which side is wrong: the directory. README.md:65 already advertises it as "the template-skill in this repository", and git grep "template/" returns nothing — no file references the path. So renaming the directory to template-skill/ keeps the name the README promises and breaks no links.


2. skills/claude-api/SKILL.md — description is 1068 characters

The required description field: Must be 1-1024 characters
— https://agentskills.io/specification#description-field

44 characters had to go. Rather than rewrite any trigger, I removed 48 characters of redundancy:

removed why it is redundant
langchain_openai| inside a grep -E alternation, the earlier openai branch already matches every langchain_openai occurrence — the alternative can never fire
Claude, Anthropic, the clause immediately before it already reads "the prompt names Claude/Anthropic"
in any form the parenthetical that follows is the enumeration of the forms

No trigger token, model glob, or provider name was dropped. Fable, Opus, Sonnet, Haiku, `anthropic`, `@anthropic-ai`, `claude-*`, `us.anthropic.*`, `[1m]`, and every entry in both provider lists are untouched.

Result: 1020 characters.

If you would rather spend the 44 characters somewhere else in that description, say so and I will move the cut — the only thing that matters is landing under the cap.


Found with AgentCompass, an offline static analyzer for AI-agent repo readiness. Both findings were verified by hand against the spec before opening.

Both failures are caught by `skills-ref validate`.

1. template/SKILL.md declares `name: template-skill` while its parent
   directory is `template`. The spec requires the name to match the
   parent directory. README.md already calls it "the **template-skill**
   in this repository", and nothing in the tree references the path
   `template/`, so the directory is the side that is wrong — renamed to
   `template-skill/`, which also keeps the README accurate.

2. skills/claude-api/SKILL.md has a 1068-character description; the spec
   caps it at 1024. Removed 48 characters of redundancy rather than
   rewriting any trigger:

   - `langchain_openai|` — in a `grep -E` alternation the earlier
     `openai` branch already matches every `langchain_openai` occurrence.
   - `Claude, Anthropic, ` — the clause immediately before it already
     says "the prompt names Claude/Anthropic".
   - ` in any form` — the parenthetical that follows enumerates the
     forms, which is what the phrase was pointing at.

   No trigger token, model glob, or provider name was dropped. The
   description is now 1020 characters.

Spec: https://agentskills.io/specification#name-field
@bechor25

Copy link
Copy Markdown
Author

Still MERGEABLE against main. Adding a note in case it makes review cheaper:

The two fixes are independent and I'm happy to split them. If only one is wanted, say which and I'll drop the other.

  1. template/SKILL.md declares name: template-skill in a directory named template. I renamed the directory rather than the field, because README.md:65 already advertises it as "the template-skill in this repository" and git grep "template/" returns nothing.

  2. skills/claude-api/SKILL.md has a 1068-character description against the 1024 cap. I removed 48 characters I could argue were redundant rather than rewriting any trigger — langchain_openai| (the earlier openai branch in the same grep -E alternation already matches it), Claude, Anthropic, (the preceding clause names both), and in any form (the parenthetical enumerates them).

That second one is a judgement call about someone else's carefully tuned trigger text, so if you'd rather spend those 44 characters elsewhere, tell me where and I'll move the cut. The only thing that matters is landing under the cap.

Both are reproducible with skills-ref validate.

@zynovex-support

Copy link
Copy Markdown

Additional data point supporting fix #2 (the 1068-char claude-api description): GitHub Copilot CLI hard-fails to load the skill entirely — it's not just a truncation issue.

Because the Agent Skills spec mandates description be 1–1024 characters, GitHub Copilot CLI enforces this as a hard validation error (z.string().max(1024, "Skill description must be at most 1024 characters")). The oversized description doesn't get truncated — the whole skill is rejected and dropped from the registry.

Reproduced on GitHub Copilot CLI 1.0.79 with the current upstream claude-api/SKILL.md (description = 1068 chars, 44 over the limit):

$ copilot skill list
...
✖ The following skills failed to load: • .../anthropic-agent-skills/document-skills/skills/claude-api/SKILL.md: Skill description must be at most 1024 characters

So the impact is broader than the Claude Code truncation noted in #881: on Copilot CLI the claude-api skill is silently unavailable until this PR lands. This +2/−2 change fixes it cleanly. 🙏

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.

2 participants