D4: Specification Compliance (15 points)
Purpose: Ensure proper frontmatter, single-task focus, activation keywords, and cross-harness portability.
Scoring:
| Points | Signal |
|---|---|
| 13–15 | Perfect spec compliance |
| 10–12 | Minor issues |
| 7–9 | Missing key elements |
| 0–6 | Non-compliant |
Components
1. Task Focus Declaration (4 points) — CRITICAL
- Skill indicates ONE type of task it helps complete
- Description clearly scopes to a single purpose
- No ambiguity about what the skill does
- Example: “Write BDD tests” (good) vs “Testing and development” (bad — two tasks)
2. Description Field Quality (6 points)
- Primary agents: Exactly 3 words
- Other agents: Comprehensive with trigger examples
- Must include activation keywords
- Determines whether the skill activates at all
3. Cross-Harness Portability (3 points) — CRITICAL
- No harness-specific paths (1 point): Avoid
.opencode/,.claude/,.cursor/,.aider/,.continue/ - No agent-specific references (1 point): Do not mention “Claude Code”, “Cursor Agent”, “GitHub Copilot”, etc. in instructions
- Relative path usage (1 point): Reference files relative to the skill directory (
scripts/,references/,templates/) - WHY: Skills must work across 40+ agentic harnesses without modification
- IMPACT: Harness-specific paths break skill discovery when synced to other agents
4. Self-Containment (penalties: up to −12 points) — CRITICAL
SKILL.md penalties (checked outside fenced code blocks):
- No parent-escaping paths (−2 points): Must not use
../references outside code fences - No absolute repo paths (−1 point): Must not reference
skills/X/Y/Zor other hardcoded repo paths outside code fences - No repo-root directory references (−1 point): Must not reference
.context/,.agents/, or other repo-root directories outside code fences
scripts/ penalties (−1 per file with violation, cap −2 per category):
- No absolute repo paths in scripts (capped at −2 total)
- No repo-root directory references in scripts (capped at −2 total)
references/ penalties (−1 per file with violation, cap −2 per category):
- No absolute repo paths in references (capped at −2 total)
- No repo-root directory references in references (capped at −2 total)
WHY: Skills must be fully self-contained. When installed via a package manager or tile system, they land in arbitrary directories — any reference to files outside the skill’s own directory tree will break.
5. Script Language Portability (bonus: +1 point)
- Skills with
scripts/containing Python (.py), TypeScript (.ts), or JavaScript (.js) files earn a portability bonus - Shell scripts (
.sh) remain the accepted default and receive no penalty - Accepted shebangs:
#!/usr/bin/env python3,#!/usr/bin/env bun,#!/usr/bin/env node
6. Proper Frontmatter (1 point)
nameanddescriptionfields present- Correct YAML syntax
7. Activation Keywords (1 point)
- Domain terms that trigger the skill
- Example: “BDD, Gherkin, Given-When-Then, Cucumber”
8. References Section Format (bonus: +1 point)
- Heading is exactly
## References - Last H2 in SKILL.md
- Content is a Markdown table with
Topic \| Reference \| When to Usecolumns - Every
Referencecell is a markdown link - See D5 for the References Section Standard
Examples
Excellent Specification Compliance (15/15):
---
name: bdd-testing
description: Behavior-Driven Development with Given-When-Then scenarios, Cucumber.js,
Three Amigos collaboration, Example Mapping, living documentation, and acceptance
criteria. Use when writing BDD tests, feature files, or planning discovery workshops.
---
Comprehensive description, portable paths, no agent-specific mentions.
Poor Specification Compliance (7/15):
---
name: bdd-testing
description: BDD testing patterns
---
Instructions reference .opencode/scripts/run-tests.sh and .claude/docs/file.md.
Problems: weak description, harness-specific paths, agent-specific references.
Academic References
@article{rehan2026tdad,
title = {Test-Driven AI Agent Definition (TDAD): Compiling Tool-Using Agents from Behavioral Specifications},
author = {T. Rehan},
year = {2026},
journal = {arXiv preprint arXiv:2603.08806},
eprint = {2603.08806},
archivePrefix = {arXiv},
url = {<https://arxiv.org/abs/2603.08806}>
}
@article{zhang2025reasoning,
title = {Reasoning over Boundaries: Enhancing Specification Alignment via Test-time Deliberation},
author = {H. Zhang and Y. Li and X. Hu and D. Liu and Z. Wang and B. Li and Y. Cheng},
year = {2025},
journal = {arXiv preprint arXiv:2509.14760},
eprint = {2509.14760},
archivePrefix = {arXiv},
url = {<https://arxiv.org/abs/2509.14760>}
}
@article{tao2025orchestration,
title = {LLM-Skill Orchestration: Achieving 202/202 Subtask Completion via Rule-Augmented Multi-Model Collaboration},
author = {R. Tao},
year = {2025},
journal = {Research Square},
url = {<https://www.researchsquare.com/article/rs-9323974/latest>}
}
@article{paduraruagenticbdd,
title = {Agentic AI for Behaviour-Driven Development Testing Using Large Language Models},
author = {C. Paduraru and M. Zavelca and A. Stefanescu},
journal = {ResearchGate},
url = {<https://www.researchgate.net/publication/390835646>}
}
@article{kohlautomatedtesting,
title = {Automated Structural Testing of LLM-Based Agents},
author = {J. Kohl and O. Kruse and Y. Mostafa and A. Luckow and others},
journal = {IEEE Access},
publisher = {IEEE},
url = {<https://ieeexplore.ieee.org/abstract/document/11401679/>}
}