/skill-tester
Validates all interactive skills in this repo against the Agent Skills spec, project conventions, and structural requirements. Runs quick_validate.py, checks line limits, verifies cross-references, and tests hook scripts. Use when skills have been added or modified and you want
$ npx -y skills add pskoett/pskoett-ai-skills --skill skill-tester --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/skill-tester
Context preview
The summary Claude sees to decide when to auto-load this skill.
Validates all interactive skills in this repo against the Agent Skills spec, project conventions, and structural requirements. Runs quick_validate.py, checks line limits, verifies cross-references, and tests hook scripts. Use when skills have been added or modified and you want
SKILL.md
skill-tester.SKILL.mdname: skill-tester
description: "Validates all interactive skills in this repo against the Agent Skills spec, project conventions, and structural requirements. Runs quick_validate.py, checks line limits, verifies cross-references, and tests hook scripts. Use when skills have been added or modified and you want to verify everything passes before committing or submitting."
Skill Tester
Validates all interactive (non-CI) skills in this repo. Runs the Anthropic skill-creator's `quick_validate.py` plus project-specific checks.
When to Use
- After adding or modifying a skill
- Before committing changes
- Before submitting the plugin for Anthropic review
- As part of the outer loop when eval-creator needs to verify skill quality
Checks
1. Anthropic Spec Validation
Run `quick_validate.py` on every skill in `skills/` (excluding `-ci` variants):
for d in skills/*/; do
skill=$(basename "$d")
[[ "$skill" == *-ci ]] && continue
python3 .claude/skills/skill-creator/scripts/quick_validate.py "$d"
done
**Pass criteria:** Exit code 0 for every skill. Frontmatter has only allowed keys (`name`, `description`, `license`, `allowed-tools`, `metadata`, `compatibility`). Name is kebab-case, max 64 chars. Description max 1024 chars, no angle brackets.
2. Project Convention Checks
For each skill directory:
| Check | Rule | Severity | |-------|------|----------| | Name matches folder | Frontmatter `name` == directory name | Error | | Line limit | SKILL.md at or under 600 lines | Error | | No README.md | Skill folders must not contain README.md | Error | | Scripts executable | All `.sh` files in `scripts/` must have execute permission | Error | | References exist | Files referenced in SKILL.md body actually exist in `references/` (agent-performed — not covered by run-tests.sh) | Warning | | Description non-empty | Description field is present and non-empty | Error |
3. Cross-Reference Validation (agent-performed — not covered by run-tests.sh)
Verify that all skills listed in these files actually exist as directories:
- `CLAUDE.md` — Skill References section
- `AGENTS.md` — Skill References section
- `.github/copilot-instructions.md` — Skill References section
- `README.md` — Skills table
Also verify reverse: every skill directory is listed in all four files.
4. Hook Script Testing
For each skill with a `scripts/` directory:
# Syntax check
bash -n scripts/*.sh
# Verify bash shebang (either form used in this repo)
head -1 scripts/*.sh | grep -qE "^#!(/bin/bash|/usr/bin/env bash)"
# Verify executable
test -x scripts/*.sh
5. Plugin Skill Validation (agent-performed — not covered by run-tests.sh)
For skills that exist in both `skills/` and `plugin/skills/`:
| Check | Rule | |-------|------| | Plugin frontmatter keys | Only Claude Code-specific keys (`hooks`, `user-invocable`, `argument-hint`) added beyond spec | | Content alignment | Body content matches or plugin has extracted references | | Beta markers consistent | If `skills/` copy has `[Beta]`, plugin copy should too |
Output Format
## Skill Test Results
**Date:** YYYY-MM-DD
**Skills tested:** N
**Passed:** N
**Warnings:** N
**Failed:** N
### Failures
- [skill-name]: [check]: [error message]
### Warnings
- [skill-name]: [check]: [warning message]
### All Passed
- [list of clean skills]
Running
Invoke manually:
/skill-tester
Or run the script directly:
bash skills/skill-tester/scripts/run-tests.sh
Coverage note: `run-tests.sh` automates Checks 1, 2, and 4 (minus the references-exist check). Checks 3 and 5 and the references-exist check are performed by the agent when `/skill-tester` is invoked — a green script run alone does not mean they passed.
What This Skill Does NOT Do
- Does not test CI skills (use `skill-tester-ci` for those)
- Does not modify skills — reports findings only
- Does not run behavioral evals (trigger testing) — use skill-creator's `run_eval.py` for that
- Does not replace the eval-creator regression framework — this tests skill structure, not promoted rules
Read more
name: skill-tester description: "Validates all interactive skills in this repo against the Agent Skills spec, project conventions, and structural requirements. Runs quick_validate.py, checks line limits, verifies cross-references, and tests hook scripts. Use when skills have been added or modified and you want to verify everything passes before committing or submitting."
Skill Tester
Validates all interactive (non-CI) skills in this repo. Runs the Anthropic skill-creator's `quick_validate.py` plus project-specific checks.
When to Use
- After adding or modifying a skill
- Before committing changes
- Before submitting the plugin for Anthropic review
- As part of the outer loop when eval-creator needs to verify skill quality
Checks
1. Anthropic Spec Validation
Run `quick_validate.py` on every skill in `skills/` (excluding `-ci` variants):
for d in skills/*/; do skill=$(basename "$d") [[ "$skill" == *-ci ]] && continue python3 .claude/skills/skill-creator/scripts/quick_validate.py "$d" done
**Pass criteria:** Exit code 0 for every skill. Frontmatter has only allowed keys (`name`, `description`, `license`, `allowed-tools`, `metadata`, `compatibility`). Name is kebab-case, max 64 chars. Description max 1024 chars, no angle brackets.
2. Project Convention Checks
For each skill directory:
| Check | Rule | Severity | |-------|------|----------| | Name matches folder | Frontmatter `name` == directory name | Error | | Line limit | SKILL.md at or under 600 lines | Error | | No README.md | Skill folders must not contain README.md | Error | | Scripts executable | All `.sh` files in `scripts/` must have execute permission | Error | | References exist | Files referenced in SKILL.md body actually exist in `references/` (agent-performed — not covered by run-tests.sh) | Warning | | Description non-empty | Description field is present and non-empty | Error |
3. Cross-Reference Validation (agent-performed — not covered by run-tests.sh)
Verify that all skills listed in these files actually exist as directories:
- `CLAUDE.md` — Skill References section
- `AGENTS.md` — Skill References section
- `.github/copilot-instructions.md` — Skill References section
- `README.md` — Skills table
Also verify reverse: every skill directory is listed in all four files.
4. Hook Script Testing
For each skill with a `scripts/` directory:
# Syntax check bash -n scripts/*.sh # Verify bash shebang (either form used in this repo) head -1 scripts/*.sh | grep -qE "^#!(/bin/bash|/usr/bin/env bash)" # Verify executable test -x scripts/*.sh
5. Plugin Skill Validation (agent-performed — not covered by run-tests.sh)
For skills that exist in both `skills/` and `plugin/skills/`:
| Check | Rule | |-------|------| | Plugin frontmatter keys | Only Claude Code-specific keys (`hooks`, `user-invocable`, `argument-hint`) added beyond spec | | Content alignment | Body content matches or plugin has extracted references | | Beta markers consistent | If `skills/` copy has `[Beta]`, plugin copy should too |
Output Format
## Skill Test Results **Date:** YYYY-MM-DD **Skills tested:** N **Passed:** N **Warnings:** N **Failed:** N ### Failures - [skill-name]: [check]: [error message] ### Warnings - [skill-name]: [check]: [warning message] ### All Passed - [list of clean skills]
Running
Invoke manually:
/skill-tester
Or run the script directly:
bash skills/skill-tester/scripts/run-tests.sh
Coverage note: `run-tests.sh` automates Checks 1, 2, and 4 (minus the references-exist check). Checks 3 and 5 and the references-exist check are performed by the agent when `/skill-tester` is invoked — a green script run alone does not mean they passed.
What This Skill Does NOT Do
- Does not test CI skills (use `skill-tester-ci` for those)
- Does not modify skills — reports findings only
- Does not run behavioral evals (trigger testing) — use skill-creator's `run_eval.py` for that
- Does not replace the eval-creator regression framework — this tests skill structure, not promoted rules
A collection of skills for AI agents. Follows the Agent Skills specification. This repository is my personal skill testing ground.
Other skills on pskoett-ai-skills.
- /agent-teams-simplify-and-harden
Implementation + audit loop using parallel agent teams with structured simplify, harden, and document passes. Spawns implementation agents to do the work, then audit agents to find complexity, security gaps, and spec deviations, then loops until code compiles cleanly, all tests
Open skill - /context-surfing
Monitors context window health throughout a session and rides peak context quality for maximum output fidelity. Activates automatically after plan-interview and intent-framed-agent. Stays active through execution and hands off cleanly to simplify-and-harden and self-improvement
Open skill - /control-session-orchestrator
Control-plane workflow for coordinating multi-agent, multi-session project work from a single Codex, GitHub Copilot, or agent-app control session. Use this skill whenever the user asks to orchestrate agents, create or steer worker sessions, run a workflow-like effort, fan out
Open skill - /eval-creator-ci
[Beta] CI-only eval regression runner using gh-aw (GitHub Agentic Workflows). Runs all eval cases in .evals/ on a schedule or per-PR, reports pass/fail results, and can block merges on regressions. Also creates new eval cases from promoted patterns flagged by
Open skill - /eval-creator
[Beta] Creates permanent eval cases from promoted learnings and runs regression checks against them. Turns failures into test cases that prevent silent regression. This is the outer loop''s regress-test step. Use when a learning is promoted and has a clear pass/fail condition,
Open skill - /intent-framed-agent
Frames coding-agent work sessions with explicit intent capture and drift monitoring. Use when a session transitions from planning/Q&A to implementation for coding tasks, refactors, feature builds, bug fixes, or other multi-step execution where scope drift is a risk.
Open skill

