Validate skill documents against PMC skill design principles. Checks format ownership, composite skill structure, and internal consistency. CHECKS: 1. FORMAT OWNERSHIP - kb skill owns all format templates (kb/references/) 2. COMPOSITE STRUCTURE - Steps must have associated skills, stage announcements 3. INTERNAL CONSISTENCY - No gaps, broken references, or missing sections Use when: - Creating new skills - Reviewing existing skills - Periodic skill maintenance - User says "lint skills", "check skills", "validate skills"
Validates skill documents against PMC design principles. Checks format ownership, composite skill structure, and internal consistency when creating or reviewing skills.
/plugin marketplace add jayprimer/pmc-marketplace/plugin install jayprimer-pmc-plugins-pmc@jayprimer/pmc-marketplaceThis skill inherits all available tools. When active, it can use any tool Claude has access to.
Validate skill documents against PMC skill design principles.
ALWAYS run /pmc:kb first to understand KB structure and skill organization.
By default, lint-skill checks all skills in the same directory as itself:
.pmc/marketplace/plugins/pmc/skills/
├── lint-skill/ <- this skill
├── dev/ <- checked
├── kb/ <- checked
├── plan/ <- checked
└── ... <- all siblings checked
Override scope:
/pmc:lint-skill skill-name - Check single skill/pmc:lint-skill path/to/skills/ - Check different directoryKB skill owns all format templates.
kb/references/*.mdkb/references/directory-structure.mdCheck:
Composite skills (orchestrators) follow strict patterns.
A composite skill:
Required Elements:
Frontmatter WORKFLOW - Lists all steps with associated skills:
WORKFLOW:
1. STEP_NAME - /pmc:skill-name (brief description)
2. STEP_NAME - /pmc:skill-a + /pmc:skill-b
Stage Announcements - Documents how to announce transitions:
=== ENTERING STEP_NAME ===
[... work ...]
Step-Skill Mapping - Every step must have at least one skill:
## Step N: STEP_NAME
**Skill:** `/pmc:skill-name`
Or for multiple skills:
**Skills:**
- `/pmc:skill-a` → purpose
- `/pmc:skill-b` → purpose
Skill Reference Table - Summary of all step-skill mappings:
| Step | Skill | Purpose |
|------|-------|---------|
| 1. STEP | `/pmc:skill` | What it does |
Check:
Skills must be internally consistent and complete.
Checks:
| Check | Type | Description |
|---|---|---|
| Broken skill references | ERROR | /pmc:nonexistent referenced |
| Broken file references | ERROR | Links to non-existent files |
| Missing Prerequisites section | WARNING | Should reference /pmc:kb |
| Undefined placeholders | ERROR | {placeholder} or TBD in content |
| Inconsistent naming | WARNING | Skill name in frontmatter vs filename |
| Missing "Use when" section | WARNING | Frontmatter should have triggers |
| Empty sections | WARNING | Headers with no content |
Default: All sibling skills in same directory as lint-skill.
# Default scope (sibling skills)
ls .pmc/marketplace/plugins/pmc/skills/*/SKILL.md
# Single skill
ls .pmc/marketplace/plugins/pmc/skills/{skill-name}/SKILL.md
# Recently modified only
git diff --name-only HEAD~5 -- .pmc/marketplace/plugins/pmc/skills/
| Type | Characteristics | Example |
|---|---|---|
| Atomic | Single responsibility, no skill delegation | kb, reflect, complete |
| Composite | Orchestrates other skills, has steps | dev, workflow |
| Validation | Checks/verifies artifacts | lint-kb, plan-validation, ticket-status |
| Reference | Manages templates/formats | kb (format ownership) |
## Basic Checks
- [ ] Frontmatter has `name` and `description`
- [ ] Description has `Use when:` triggers
- [ ] Has Prerequisites section referencing /pmc:kb
- [ ] No TBD/TODO/placeholder markers
- [ ] All `/pmc:skill` references exist
- [ ] All file path references exist
- [ ] Skill name matches directory name
## Composite Skill Checks
- [ ] WORKFLOW in frontmatter lists all steps
- [ ] Each step has associated skill(s)
- [ ] Stage announcement pattern documented
- [ ] Skill Reference Table exists
- [ ] All referenced skills exist
- [ ] No orphan steps (step without skill)
- [ ] No orphan skills (skill without step)
## Format Ownership Checks
- [ ] Format templates in kb/references/ only
- [ ] Other skills reference, not duplicate
- [ ] Directory structure in directory-structure.md
- [ ] No format definitions outside kb/references/
# Skill Lint Report
## Summary
| Skill | Type | Errors | Warnings |
|-------|------|--------|----------|
| dev | composite | 0 | 1 |
| plan | atomic | 1 | 0 |
## Issues
### plan (ERRORS: 1)
| Severity | Check | Issue |
|----------|-------|-------|
| ERROR | broken-reference | `/pmc:nonexistent` not found (line 45) |
### dev (WARNINGS: 1)
| Severity | Check | Issue |
|----------|-------|-------|
| WARNING | empty-section | "## Advanced Usage" has no content |
If a composite skill step has no associated skill:
Option A: Create new skill
mkdir .pmc/marketplace/plugins/pmc/skills/{new-skill}
# Create SKILL.md with atomic skill template
Option B: Assign existing skill
Option C: Merge into adjacent step
If skill defines formats that should be in kb/references/:
kb/references/{format}-format.md**Format:** See [kb/references/{format}-format.md](../kb/references/{format}-format.md)
If /pmc:skill doesn't exist:
---
name: {skill-name}
description: |
{One-line summary of what this skill does.}
{2-3 lines of detail about the skill's purpose.}
Use when:
- {trigger condition 1}
- {trigger condition 2}
---
# {Skill Title}
{Brief description.}
## Prerequisites
**ALWAYS run /pmc:kb first** to understand KB structure.
## When to Use
**Use when:**
- {condition}
**Skip when:**
- {condition}
---
## Procedure
### Step 1: {Name}
{Instructions}
### Step 2: {Name}
{Instructions}
---
## Checklist
- [ ] {Item 1}
- [ ] {Item 2}
---
name: {skill-name}
description: |
{One-line summary - orchestrates X workflow.}
Coordinates skills in sequence: a → b → c.
WORKFLOW:
1. STEP_A - /pmc:skill-a (description)
2. STEP_B - /pmc:skill-b + /pmc:skill-c
3. STEP_C - /pmc:skill-d (description)
Use when:
- {trigger condition 1}
- {trigger condition 2}
---
# {Workflow Title}
{Brief description of the workflow.}
## Prerequisites
**ALWAYS run /pmc:kb first** to understand KB structure.
## State Announcements
**ALWAYS announce stage transitions:**
=== ENTERING STEP_A === [... work ...]
=== ENTERING STEP_B === [... work ...]
## Workflow Overview
{ASCII diagram showing flow}
---
## Step 1: STEP_A
**Skill:** `/pmc:skill-a`
{What this step does and when to proceed.}
---
## Step 2: STEP_B
**Skills:**
- `/pmc:skill-b` → {purpose}
- `/pmc:skill-c` → {purpose}
{Instructions for this step.}
---
## Skill Reference
| Step | Skill | Purpose |
|------|-------|---------|
| 1. STEP_A | `/pmc:skill-a` | {purpose} |
| 2. STEP_B | `/pmc:skill-b` | {purpose} |
| 2. STEP_B | `/pmc:skill-c` | {purpose} |
| 3. STEP_C | `/pmc:skill-d` | {purpose} |
=== LINT SKILL REPORT ===
Checked: 15 skills
Errors: 2
Warnings: 4
## ERRORS
### plan/SKILL.md
- LINE 156: Broken reference `/pmc:nonexistent` - skill does not exist
### workflow/SKILL.md
- LINE 45: Step "3. EXECUTE" has no associated skill
## WARNINGS
### dev/SKILL.md
- Missing Skill Reference Table (composite skill should have one)
### test/SKILL.md
- Empty section "## Advanced Usage"
### reflect/SKILL.md
- No "Use when" in frontmatter description
### validate/SKILL.md
- Placeholder found: "{TBD}" at line 89
=== END REPORT ===
This skill should be used when the user asks to "create a hookify rule", "write a hook rule", "configure hookify", "add a hookify rule", or needs guidance on hookify rule syntax and patterns.
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.