with one click
validate-generated-artifact
"
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
"
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
"
"
"
"
"
"
| name | validate-generated-artifact |
| description | " |
scripts/validate-skill.sh — skill validator (checks frontmatter, file refs, descriptions)scripts/validate-subagent.sh — subagent validatortests/fixtures/skills/valid-skill/SKILL.md — canonical passing skill exampletests/fixtures/subagents/valid-subagent.md — canonical passing subagent example# Skills must be inside a named subdirectory — validator derives name from parent dir
mkdir -p .claude/skills/<skill-name>
cat > .claude/skills/<skill-name>/SKILL.md << 'EOF'
...
EOF
bash scripts/validate-skill.sh .claude/skills/<skill-name>/SKILL.md
bash scripts/validate-subagent.sh .claude/agents/<agent-name>.md
Output lines are prefixed with ERROR:, WARNING:, or informational text. Exit code 1 = at least one ERROR.
ERROR: frontmatter: name field missing
ERROR: body: fewer than 3 codebase-specific file references found (got 1)
WARNING: description: fewer than 3 trigger phrases detected
VERDICT: FAIL
Errors block writing. Warnings count toward the threshold (>3 warnings in skills, >4 in subagents triggers NEEDS REVISION).
The name: in frontmatter must match the parent directory name exactly and be kebab-case:
---
name: my-skill-name # must match: .claude/skills/my-skill-name/SKILL.md
The counter uses grep -c (counts lines, not occurrences). Spread file references across at least 3 separate lines:
# Wrong — all on one line (counts as 1)
See `lib/agent.sh`, `lib/gather.sh`, `lib/synthesize.sh`
# Correct — separate lines (counts as 3)
- `lib/agent.sh` handles agent spawning
- `lib/gather.sh` wires agents into phases
- `lib/synthesize.sh` builds the synthesis context
Recognized formats: backtick-wrapped names (`file.sh`) and directory prefixes (lib/, tests/, schemas/, prompts/, scripts/).
Angle brackets break YAML parsing. Replace:
Use for <adding endpoints> → Use for adding endpoints(e.g., <name>) → (e.g., my-name)Banned phrases: "best practice", "clean code", "SOLID principles", "maintainable", "readable", "scalable", "well-structured", "production-ready", "industry standard". Remove them without replacement — just describe what the skill actually does.
Add a ## Verify section with concrete commands:
## Verify
```bash
make test-unit
bash -n lib/gather.sh
### "description exceeds 1024 characters"
The validator collapses the description to a single space-joined string before counting. Multi-line YAML folded scalars (`>`) are joined. Trim the description to under 1024 characters in the collapsed form.
## Verify
```bash
bash scripts/validate-skill.sh .claude/skills/<name>/SKILL.md
echo "Exit: $?"
Exit 0 with VERDICT: PASS means it will be accepted by lib/validate.sh.