Compliance checklist for the agentskills.org open standard and Anthropic Skill Authoring best practices. Based on Frappe v3.2.0 MIGRATION-AGENT-SKILLS-STANDARD pattern.
Every SKILL.md MUST contain :
---
name: rust-{{CATEGORY}}-{{TOPIC}}
description: >
Use when [trigger scenario].
Prevents [anti-pattern].
Covers [scope].
Keywords: [technical terms + symptom-based + plain-language synonyms].
license: MIT
compatibility: "Designed for Claude Code. Requires rust 1.85+,edition-2024."
metadata:
author: OpenAEC-Foundation
version: "1.0"
---| Field | Rule | Validator |
|---|---|---|
name |
kebab-case, max 64 chars, matches dir name | validate-frontmatter.js |
description |
folded scalar >, starts "Use when...", contains Keywords: line, max 1024 chars |
validate-frontmatter.js |
license |
matches LICENSE file in repo root | validate-frontmatter.js |
compatibility |
quoted string, mentions Tech + Versions | validate-frontmatter.js |
metadata.author |
"OpenAEC-Foundation" | validate-frontmatter.js |
metadata.version |
semver string "1.0" or "1.0.1" etc. | validate-frontmatter.js |
Per Frappe v3.1.1 expansion : Keywords: line MUST mix three types :
- Technical : exact API names, function names, error class names
- Symptom-based : plain-language descriptions of what user sees
- Examples : "blank screen", "nothing shows", "app is slow", "can't login"
- Plain-language : beginner phrasings + synonyms
- Examples : "how do I", "what is", "getting started", "set up X"
Good Keywords (Frappe frappe-syntax-serverscripts) :
Keywords: Server Script, frappe, sandbox, import, doc event, validate, on_submit, server script example, import not allowed, sandbox rules, which script type to use.
Bad Keywords (too thin) :
Keywords: serverscript, frappe.
| Rule | Why | Validator |
|---|---|---|
| SKILL.md < 500 lines | Overflow content goes to references/ |
validate-line-count.js |
3 reference files required : methods.md, examples.md, anti-patterns.md |
Progressive disclosure | validate-structure.js |
NO README.md inside skill folder |
All docs in SKILL.md / references | validate-structure.js |
Section headings use : not em-dash |
Typographic standard | validate-emdash.js |
| English-only content | Skills are LLM instructions, not user docs | validate-language.js |
| Deterministic language (ALWAYS / NEVER) | No "you might consider", no hedging | validate-language.js |
After skill creation, root must contain :
- package.json with
agents.skills[]array (npm-agentskills standard) - agents/openai.yaml with
skills_directory: ./skills/source - GitHub topic
agentskillsset viagh repo edit --add-topic agentskills
Generated by scripts/generate-manifest.js against the actual skill tree.
- agentskills.org : https://agentskills.org
- Anthropic Skill Authoring : https://docs.anthropic.com/en/docs/build-with-claude/skills
- Claude Code skills : https://docs.claude.com/en/docs/claude-code/skills
node /path/to/Skill-Package-Workflow-Template/scripts/validate-frontmatter.js .
node /path/to/Skill-Package-Workflow-Template/scripts/validate-line-count.js .
node /path/to/Skill-Package-Workflow-Template/scripts/validate-structure.js .
node /path/to/Skill-Package-Workflow-Template/scripts/validate-language.js .
node /path/to/Skill-Package-Workflow-Template/scripts/validate-emdash.js .All must exit 0. Failure : root-cause-fix in skill, not workaround.