100-point rubric · public · CI-enforced

How we grade SKILL.md

Every plugin in this marketplace is scored against the Intent Solutions 100-point rubric. The rubric lives in scripts/validate-skills-schema.py and is grounded in the Claude Code skills reference + AgentSkills.io spec. This page is the public-facing translation. If you ship a PR, this is exactly how it gets graded.

Grade bands

Grade Range Label What it means
A 90–100 Production-ready Merges through the marketplace gate.
B 80–89 Good, minor improvements needed Acceptable for hand-authored contributions; forge output aims for A.
C 70–79 Adequate, has gaps Below the marketplace merge floor — PR will fail the prescreen.
D 60–69 Needs significant work Hard reject. Use the rubric breakdown to target deltas.
F <60 Major revision required Probably missing required frontmatter or has structural gaps.

C-grade is the marketplace merge floor — the new-track prescreen rejects sub-A PRs by default. A 30-day informational-only grace window is in effect during the prescreen rollout; afterwards the prescreen-grade check is required at branch-protection.

The five rubric categories

Total possible: 100 points across five categories + a ±15 modifier band (bonuses for gerund-style names, grep-friendly structure, exemplary examples, Resources section with external links; penalties for first/second person in description, unnecessary TOCs).

Progressive Disclosure Architecture

30 pts max

Skills should load the smallest possible amount of context up front, with deeper detail layered into separate reference files. The Anthropic Claude Code reference is explicit about this — short SKILL.md, references one level deep, navigation cues that let the model skip what it does not need.

Subcategory Max Rule
Token Economy 10 ≤150 lines → 10 / ≤300 → 7 / ≤500 → 4 / >500 → 0
Layered Structure 10 references/ or resources/ exists with .md files. Empty dir = 3. Missing penalty scales with body length.
Reference Depth 5 References live one level deep. Nested subdirectories under references/ cost points (Anthropic explicitly warns against this).
Navigation Signals 5 7+ ## section headers for a substantial skill. Short skills (≤100 lines) get full credit automatically.

Ease of Use

25 pts max

A skill that the model cannot find or cannot follow is unused. Discoverability via the description, complete frontmatter, and a clean step-by-step structure drive activation rates.

Subcategory Max Rule
Metadata Quality 10 All required fields present (name / description ≥50 chars / version / allowed-tools / author email / tags / compatibility).
Discoverability 6 Description contains "Use when …" + "Trigger with …" + action verbs + length in the 50–300 char trigger-match sweet spot.
Terminology Consistency 4 name matches folder; no mixed-case acronyms in description.
Workflow Clarity 5 Numbered steps + 5+ section headers. 3–4 sections is partial credit.

Utility

20 pts max

Skills earn their slot in the catalog by solving real problems. Overview that explains the use case, prerequisites, output contract, error handling, examples, and enough body text to be useful.

Subcategory Max Rule
Problem Solving Power 8 Substantial ## Overview (≥50 chars after heading) + ## Prerequisites + ## Output sections.
Degrees of Freedom 2 Shows configuration options + extensibility cues ("alternatively", "you can also", "customize", etc.).
Feedback Loops 4 ## Error Handling section + validation/verify/check language + troubleshooting cues.
Examples & Templates 3 ## Examples section or **Example:** labels + 2+ code blocks.
Content Density 3 500+ words → 3 / 300+ → 2 / 150+ → 1 / <150 → 0.

Spec Compliance

15 pts max

The Anthropic Claude Code skill spec and AgentSkills.io open standard set hard constraints on frontmatter shape. This category enforces them.

Subcategory Max Rule
Frontmatter Validity 5 All ALWAYS_REQUIRED fields present (the 8-field marketplace set). 1 point off per missing required field, capped at 4.
Name Conventions 4 kebab-case; ≤64 chars; matches folder name.
Description Quality 4 50–1024 chars; no first-person ("I can") or second-person ("you can / you should").
Optional Fields 2 If model field is set, it is one of inherit / sonnet / haiku / opus or a claude-* string.
Field Coverage 3 80%+ of applicable SKILL_FIELDS present → 3 / 60%+ → 2 / 40%+ → 1.

Writing Style

10 pts max

Skills are instructions for a model. They read like SOP documents, not blog posts. Imperative voice, third person, concise.

Subcategory Max Rule
Voice & Tense 4 Numbered steps start with imperative verbs (create / use / run / configure / set / add / remove / check / verify).
Objectivity 3 No "you should / you can / you will" and no first-person ("I", "I'll", "I can") in the body.
Conciseness 3 ≤2000 words & ≤400 body lines.

Worked example — A-grade SKILL.md (96/100)

A short, focused skill with complete frontmatter, a tight Overview, numbered Instructions, an Output contract, and one supporting reference file. Notice how every element maps to a rubric line.

---
name: ansible-playbook-creator
description: |
  Generate production-ready Ansible playbooks. Use when automating server
  configuration or deployments. Trigger with "ansible playbook" or
  "create playbook for [task]".
allowed-tools: Read, Write, Bash(ansible:*), Glob
version: 2.0.0
author: Jeremy Longshore <jeremy@intentsolutions.io>
license: MIT
compatibility: Designed for Claude Code
tags: [devops, ansible, configuration-management]
---

# Ansible Playbook Creator

## Overview
Generates idempotent Ansible playbooks following infrastructure-as-code
best practices. Targets RHEL, Ubuntu, and Amazon Linux 2023.

## Prerequisites
- Target host SSH access
- Ansible 2.14+ installed locally
- ansible-lint for the validation step

## Instructions
1. Gather target host details and the desired state spec from the user
2. Select appropriate Ansible modules from references/module-cheatsheet.md
3. Generate playbook with proper variable templating in vars/
4. Validate syntax with `ansible-lint -p`
5. Output the playbook with a "next steps" block

## Output
- Complete playbook YAML ready for `ansible-playbook` execution
- Inline comments on any non-obvious module choice
- A "next steps" block listing dry-run + production-run commands

## Error Handling
If ansible-lint fails, surface the rule violation verbatim and propose
the smallest fix. Do not silently retry.

## Examples
**Example 1: Web server setup**
Input: "Set up nginx with Let's Encrypt on Ubuntu 24.04"
Output: playbook with system role + nginx role + certbot role.

## Resources
- references/module-cheatsheet.md — top 40 modules by frequency

Why this lands at A: body is ~80 lines (Token Economy 10/10), references/ exists with content (Layered Structure 10/10), 8 H2 sections (Navigation 5/5, Workflow 5/5), description has both "Use when" and "Trigger with" plus action verbs (Discoverability 6/6), all 8 required frontmatter fields present (Metadata 10/10, Frontmatter Validity 5/5), imperative voice, no first/second person, ≤2000 words (Writing 10/10). Modifiers: +1 grep-friendly, +1 Resources section.

Worked example — C-grade SKILL.md (74/100) and the deltas to A

A common shape we see in PRs that fail the prescreen: required fields present but description is weak, no references/, body is mostly prose with few numbered steps. Each delta below is one or more rubric points.

---
name: AnsiblePlaybookGenerator   # ⚠ not kebab-case → Name Conventions -2
description: I can generate Ansible playbooks for you.   # ⚠ first person + no "Use when" / no "Trigger with" → Discoverability -4, Desc Quality -2
allowed-tools: "*"   # ⚠ wildcard, not scoped → ignored by rubric but Tier 2 production gate will flag
version: 1.0.0
author: Anon   # ⚠ no email → Metadata -1
license: MIT
compatibility: Designed for Claude Code
tags: [ansible]
---

# Ansible Playbook Generator

You should use this skill when you want to generate Ansible playbooks.
It works by figuring out what you need and writing the YAML for you.

The skill will create the playbook and you can then run it.

You can configure it with various options.

Deltas to reach A:

  • Rename to ansible-playbook-generator (kebab-case + matches folder) → Name Conventions +2, Terminology +2
  • Rewrite description: Generate production-ready Ansible playbooks. Use when … Trigger with … → Discoverability +4, Description Quality +2, Metadata Quality +3
  • Scope allowed-tools to Read, Write, Bash(ansible:*), Glob — Tier 2 production gate stops flagging
  • Add author email — Metadata +1
  • Add Overview, Prerequisites, numbered Instructions, Output, Error Handling, Examples, Resources sections (≥7 H2s) → Workflow +5, Navigation +1, Problem Solving +8, Feedback Loops +4, Examples +3
  • Add a references/ directory with one supporting file → Layered Structure +10
  • Rewrite body in imperative voice ("Generate playbook with …", not "You can configure it") → Voice +0 (already ok), Objectivity +2

Submit a PR — graded free

Every contributor PR runs the full 100-point rubric before merge. The grade lands as a comment on the PR with per-category breakdown so you can see exactly which lines are costing you points. No paywall, no waiting list.