Skip to main content
skill-test is a skill from the Summer skill library: a guide your AI agent reads when the task matches, so it builds the good version on the first try. Lint a Summer skill before commit, audit the whole library, or check a behavioral spec assertion — static structural rules plus behavioral specs.

When your agent uses it

  • A contributor wants to lint a Summer skill before commit, audit the whole library, or check a behavioral spec assertion
  • Running the structural lint and behavioral spec assertions for one skill or the whole library

Install

summer setup installs every skill for your agent. To add only this one:
Swap claude-code for your agent, such as codex or cursor. See Skills for every option.

The skill

Three modes. Pick by the user’s intent.

Mode: static — Structural lint (default for “test this skill”)

For a single skill at library/skills/<slug>/, run these checks:
  1. Frontmatter completeness. name, description, license, compatibility, category present. name matches the directory name.
  2. SKILL.md length. ≤ 500 lines (progressive disclosure: push detail into references).
  3. MCP-preferred + file-edit-fallback. If the skill mutates scenes or resources, body must show both:
    • At least one summer_* MCP tool example.
    • At least one file-edit fallback block (e.g., raw .tscn snippet) OR an explicit “no fallback for this — Summer MCP required” note.
  4. Collaborative protocol. If the skill triggers user-visible writes, body must contain at least one of: May I, I'm about to, Continue?, OK?, Proceed?. Skills that only inspect/read are exempt.
  5. Template-id resolved. If the skill’s frontmatter declares template-id: <id>, that id must exist in the template registry: library/templates/<id>/resource.yaml (see library/templates/README.md).
  6. Behavioral spec. If the skill has a spec (evals/skills/specs/<slug>.md or tests/spec.md in the skill folder), it has at least one ## Case heading. A missing spec is a WARN, not a FAIL.
  7. Links stay inside the skill folder. Every relative link (](./references/...), ](./examples/...)) must point at an existing file in the skill’s own folder (FAIL if broken). summer setup copies each skill folder alone, so a path that climbs out of it (../) breaks after install: name a shared reference by its library id (summer_docs_read id reference/<slug>) and another skill by its bare slug (design-mechanic).
Output:

Mode: spec — Behavioral spec runner

For a single skill, read both library/skills/<slug>/SKILL.md and evals/skills/specs/<slug>.md. For each ## Case in the spec:
  1. Lay out the Fixture (starting state, available tools).
  2. Read the Input (user prompt).
  3. Reason: given the skill’s instructions and this fixture, would the agent follow the Expected MCP tool sequence?
  4. For each assertion under **Assertions:**, mark [x] if the skill’s instructions would satisfy it, [ ] if not, with a one-line reason.
Output: an annotated copy of the spec with assertions filled in, plus a pass-rate. No code execution; this mode reasons over text only.

Mode: audit — Whole library report

List library/skills/*/SKILL.md. For each skill:
  1. Run static mode on the skill.
  2. Note any last-tested: field in the SKILL.md frontmatter (optional).
  3. Flag skills failing static checks.
Output: a table with PASS / FAIL counts and a punch list of skills needing attention.

When to use which mode

Collaborative protocol

This skill is read-only. It never writes. No “May I” needed.

See also

  • summer_docs_read id reference/collaborative-protocol
  • the template registry: library/templates/<id>/resource.yaml (see library/templates/README.md)
  • tests/runner.md
  • evals/skills/specs/ — per-skill behavioral specs

From a shell

No Summer MCP tools in this session? Run each one as a command; when summer --version is missing or below 4.0, use npx -y summer-engine@latest in place of summer. Fields are flags in kebab-case (--scene-path res://main.tscn) or one --input '<json>', and summer ops describe <op> prints the exact input. The summer-cli skill has the rest.
  • skill-create: Bootstrap a new Summer library skill (library/skills/<slug>/ with resource.yaml and SKILL.md), frontmatter, and stub sections.
  • skill-improve: Upgrade an underperforming Summer skill — run it against a behavioral spec with and without changes via a parallel-eval harness; ship the winner.

Source: library/skills/skill-test/SKILL.md, rendered from summer-engine@4.3.0 on npm.