PM Skill Validate¶
Quick facts
Classification: Utility | Version: 1.0.0 | Category: coordination | License: Apache-2.0
This skill audits an existing pm-skills skill against the repo's structural
conventions and quality criteria. It produces a validation report that a
human can scan and that /pm-skill-iterate can consume as input.
The validator checks two tiers: - Tier 1 (Structural) — deterministic checks that mirror CI: frontmatter, naming, file presence, description word count. - Tier 2 (Quality) — LLM-assessed coherence checks: does the output contract reference the template? Is the example complete? Are checklist items testable?
When to Use¶
- After creating a skill with
/pm-skill-builder, before shipping - After manually editing a skill, to confirm it still passes conventions
- Before running
/pm-skill-iterate, to identify what needs improvement - When a convention changes, to audit which skills need updating (batch mode)
- When reviewing a contributed skill for quality and completeness
When NOT to Use¶
- To create a new skill from scratch -> use
/pm-skill-builder - To fix or improve a skill -> use
/pm-skill-iterate(feed it this report) - To run CI checks in a pipeline -> use
scripts/lint-skills-frontmatter.sh(this skill is for interactive, deeper-than-CI validation)
How to Use¶
Use the /pm-skill-validate slash command:
Or reference the skill file directly: skills/utility-pm-skill-validate/SKILL.md
Instructions¶
When asked to validate a skill, follow these steps:
Step 1: Identify the Target¶
Accept the skill name in any form:
- Directory name: deliver-prd
- Full path: skills/deliver-prd/SKILL.md
- Slash command: /prd
Resolve to the canonical directory path: skills/{name}/.
If the skill directory does not exist, report immediately:
Batch mode: If the input is --all, run Tier 1 structural checks
across all skills and produce a summary table (see Step 5). Do not run
Tier 2 in batch mode.
Step 2: Read Skill Files¶
Read all files in the skill directory:
| File | Required | Purpose |
|---|---|---|
SKILL.md |
yes | Frontmatter + instructions |
references/TEMPLATE.md |
yes | Output template |
references/EXAMPLE.md |
yes | Worked example |
HISTORY.md |
no | Version history (if present) |
Also read:
- The corresponding command file: commands/{command-name}.md
- The AGENTS.md entry for this skill
If reading files is not possible (MCP/embedded environment), ask the user to paste the content of each file before proceeding (see Degraded Mode).
Step 3: Run Tier 1 — Structural Checks¶
Run these deterministic checks. Each produces a PASS or FAIL line.
| Check ID | What to check | Pass condition |
|---|---|---|
name-match |
Frontmatter name matches directory name |
Exact string match |
description-present |
Frontmatter description exists |
Non-empty value |
description-length |
Description word count | 20-100 words |
version-present |
Frontmatter version exists |
Non-empty, valid SemVer |
updated-present |
Frontmatter updated exists |
Non-empty, ISO date |
license-present |
Frontmatter license exists |
Non-empty value |
phase-classification |
Phase/classification consistency | Domain has phase:, foundation/utility has classification:, not both |
template-exists |
references/TEMPLATE.md exists |
File present |
template-sections |
TEMPLATE.md has sufficient structure | ≥3 ## level-2 headers |
example-exists |
references/EXAMPLE.md exists |
File present |
command-exists |
Command file exists in commands/ |
File present and references correct skill path |
agents-entry |
AGENTS.md has an entry for this skill | Entry exists with matching **Path:** |
Step 4: Run Tier 2 — Quality Checks¶
Run these LLM-assessed checks. Each produces a PASS, WARN, or INFO
line. Tier 2 findings are capped at WARN unless objectively grounded
(placeholder leakage is the exception — it can FAIL).
| Check ID | What to assess | How to assess | Max severity |
|---|---|---|---|
output-contract-coverage |
SKILL.md references the template | Check for explicit reference to references/TEMPLATE.md or "use the template" in an Output section. Accept either pattern as valid. WARN only if template is not referenced at all. |
WARN |
checklist-verifiability |
Quality checklist items are testable | Read each checklist item. Flag items that are vague ("is good quality") vs. specific ("metrics are measurable"). WARN if ≥2 items are vague. | WARN |
example-completeness |
EXAMPLE.md fills all template sections | Compare ## headers in TEMPLATE.md against ## headers in EXAMPLE.md. WARN if EXAMPLE.md is missing sections that appear in the template. Also check for unresolved placeholders. Line count is informational only — report it but do not gate on it. |
WARN |
template-example-alignment |
EXAMPLE.md follows TEMPLATE.md structure | Compare section header ordering. WARN if EXAMPLE.md has sections in a different order or uses different header names than TEMPLATE.md. | WARN |
description-actionability |
Description tells when to use the skill | Check for a trigger phrase like "Use when..." or "Use for..." in the frontmatter description. WARN if the description only says what the skill does without indicating when to use it. | WARN |
instruction-clarity |
Instructions are numbered and imperative | Check for ### Step headings or a numbered list pattern in the Instructions section. WARN if instructions are prose paragraphs without clear step structure. |
WARN |
placeholder-leakage |
No leftover scaffolding in any shipped file | Scan SKILL.md, TEMPLATE.md, and EXAMPLE.md for: [Placeholder] or [Feature Name] patterns, <!-- ... --> HTML comments (except the license header), template guidance blockquotes that should have been removed, and authoring notes like "TODO" or "FIXME". FAIL if any are found — this is objectively grounded. |
FAIL |
when-not-to-use |
"When NOT to Use" section present in SKILL.md | Check for a section with "When NOT to Use" or similar heading. INFO only — this is present in 1/27 shipped skills and is not yet a convention. | INFO |
Quality standard framing: These checks validate against current library
conventions — what the shipped library actually does today. Findings graded
WARN or INFO represent the v2.8 quality standard that newer skills (built
with /pm-skill-builder) meet. Older skills may legitimately receive these
findings until iterated through the lifecycle.
Step 5: Produce the Validation Report¶
Assemble the report using this exact structure. F-11 (/pm-skill-iterate)
parses this report by section headings and pipe-delimited fields.
```
Validation Report:¶
Date: {YYYY-MM-DD} Skill version: {version from frontmatter} Validator version: 1.0.0 Report schema: v1 Result: {PASS | WARN | FAIL}
Output Template¶
Validation Report:¶
Date: {YYYY-MM-DD} Skill version: {version from frontmatter} Validator version: 1.0.0 Report schema: v1 Result: {PASS | WARN | FAIL}
Summary¶
{1-2 sentence overall assessment of the skill's compliance with structural conventions and quality criteria.}
Errors: {n} | Warnings: {n} | Info: {n}
Tier 2 findings are heuristic quality assessments and may require human review.
Structural Checks¶
{One line per Tier 1 check. Use pipe-delimited format:}
- {STATUS} | structural | {check-id} | {message}
{Include all checks from the Tier 1 table in SKILL.md Step 3. STATUS is PASS or FAIL.}
Quality Checks¶
{One line per Tier 2 check. Use pipe-delimited format:}
- {STATUS} | quality | {check-id} | {message}
{Include all checks from the Tier 2 table in SKILL.md Step 4. STATUS is PASS, WARN, or INFO. Tier 2 findings capped at WARN unless objectively grounded (placeholder-leakage can FAIL).}
Recommendations¶
{Only include checks that did NOT pass. Each recommendation includes the check ID, target file path, and a specific action.}
- {STATUS} | {check-id} | Target: {file-path} Action: {what to do to resolve this finding}
{If all checks pass, write: "No issues found."}
Example Output¶
Validation Report: deliver-prd
Validation Report: deliver-prd¶
Date: 2026-04-03 Skill version: 2.0.0 Validator version: 1.0.0 Report schema: v1 Result: WARN
Summary¶
deliver-prd passes all structural checks. Two quality findings: the output
contract uses a generic template reference (acceptable but below v2.8
standard), and the skill lacks a "When NOT to Use" section (informational).
Errors: 0 | Warnings: 1 | Info: 1
Tier 2 findings are heuristic quality assessments and may require human review.
Structural Checks¶
- PASS | structural | name-match | frontmatter
namematches directory - PASS | structural | description-present | description exists
- PASS | structural | description-length | 31 words (20-100 range)
- PASS | structural | version-present | version "2.0.0"
- PASS | structural | updated-present | updated 2026-01-26
- PASS | structural | license-present | Apache-2.0
- PASS | structural | phase-classification | phase: deliver (domain skill, no classification field)
- PASS | structural | template-exists | references/TEMPLATE.md present
- PASS | structural | template-sections | 10 level-2 headers (≥3 required)
- PASS | structural | example-exists | references/EXAMPLE.md present
- PASS | structural | command-exists | commands/prd.md exists and references correct path
- PASS | structural | agents-entry | AGENTS.md entry found with matching path
Quality Checks¶
- WARN | quality | output-contract-coverage | Output Format section says "Use the template in
references/TEMPLATE.mdto structure the output" but does not enumerate template sections explicitly. Accepted as valid — this is the current library convention. - PASS | quality | checklist-verifiability | all 7 checklist items are specific and testable (e.g., "Success metrics are specific and measurable", "Document is readable in under 15 minutes")
- PASS | quality | example-completeness | EXAMPLE.md fills all 10 template sections with concrete content. No placeholder scaffolding detected. Line count: 212 (informational).
- PASS | quality | template-example-alignment | EXAMPLE.md section headers match TEMPLATE.md in order and naming
- PASS | quality | description-actionability | description includes trigger phrase: "Use when specifying features, epics, or product initiatives for engineering handoff"
- PASS | quality | instruction-clarity | 8 numbered steps with imperative verbs (Summarize, Define, Outline, Detail, Define, Address, Identify, Propose)
- PASS | quality | placeholder-leakage | no unresolved placeholders, HTML comments (except license header), or authoring notes found
- INFO | quality | when-not-to-use | no "When NOT to Use" section present (optional — present in 1/27 shipped skills)
Recommendations¶
- WARN | output-contract-coverage | Target: skills/deliver-prd/SKILL.md Action: Consider enumerating the template sections explicitly in the Output Format section (e.g., "The output MUST include: Problem Summary, Goals, Solution Overview..."). Current generic reference is valid but below v2.8 standard.
- INFO | when-not-to-use | Target: skills/deliver-prd/SKILL.md Action: Consider adding a "When NOT to Use" section to help users pick the right skill. Example: "Not for lightweight feature briefs -> use solution-brief instead."
Example Notes¶
This report demonstrates:
- All 12 Tier 1 structural checks passing (common for shipped skills)
- Tier 2 quality checks surfacing one WARN and one INFO against a well-established skill
- The WARN for output-contract-coverage illustrates the "current conventions vs. v2.8 standard" framing — the skill is valid by current standards, but the validator surfaces the higher standard as a suggestion
- The INFO for when-not-to-use illustrates a finding that is purely optional guidance
- Recommendations include target file paths and specific actions for each finding
- The overall Result is WARN (worst severity found), not FAIL
Quality Checklist¶
Before delivering the report, verify:
- All Tier 1 structural checks were run (not skipped)
- All Tier 2 quality checks were run (not skipped) — single skill mode only
- Report follows the exact section and line format from Step 5
- Every non-passing check appears in Recommendations with a target file path
- Result field reflects the worst severity found
- Tier 2 findings are capped at WARN (except placeholder-leakage which can FAIL)
- No Tier 2 check was marked FAIL unless objectively grounded
Output Contract¶
The validator MUST produce a validation report following the format in Step 5.
The report:
- Uses the exact section headings: ## Summary, ## Structural Checks,
## Quality Checks, ## Recommendations
- Uses pipe-delimited check lines: STATUS | TIER | CHECK-ID | message
- Uses pipe-delimited recommendations: STATUS | CHECK-ID | Target: path
followed by Action: description on the next line
- Includes Report schema: v1 in the header for F-11 compatibility
- Includes the Tier 2 caveat line in the Summary section