Agent Skill Anatomy
A comprehensive reference for understanding the structure, components, and standards of agent skills according to the agentskills.io specification.
Table of Contents
- Introduction
- The Three-Layer Model
- File System Anatomy
- SKILL.md Deep Dive
- Progressive Disclosure Model
- Cross-Platform Portability
- Practical Examples
- Authoring Checklist
- Additional Resources
Introduction
Scope note: This guide is the spec-level, cross-platform anatomy reference for agent skills. See PM-Skill Anatomy for the PM-Skills-specific anatomy guide that complements this with repo conventions and authoring workflow.
What is an Agent Skill?
An agent skill is a structured instruction set that teaches an AI assistant how to create a specific type of artifact. In the context of product management, skills enable AI agents to produce professional PM documents like PRDs, user stories, problem statements, and retrospectives with consistent quality and format.
Think of a skill as a recipe card for an AI:
- The instructions tell the AI what questions to ask and what sections to include
- The template shows the exact format to use
- The example demonstrates what a great result looks like
Why the agentskills.io Standard Exists
The agentskills.io specification provides a universal standard for agent skills, enabling:
Portability: Skills written to this standard work across multiple AI platforms (Claude, GitHub Copilot, Cursor, VS Code Copilot, OpenAI Codex) without modification.
Reusability: Skills can be shared, forked, and adapted across teams, organizations, and communities.
Discoverability: Standardized metadata enables AI agents to automatically find and select the right skill for a given task.
Consistency: Following a common structure ensures skills produce predictable, high-quality outputs.
Who Should Read This Guide
Skill Users (Beginners): If you’re using existing skills to generate PM artifacts, read The Three-Layer Model to understand how skills work. This knowledge helps you provide better context and get better results.
Skill Navigators (Intermediate): If you’re exploring skill repositories or choosing which skills to use, read File System Anatomy and Progressive Disclosure to understand organization and discovery.
Skill Authors (Advanced): If you’re creating new skills or contributing to skill repositories, read the entire guide, especially SKILL.md Deep Dive and Authoring Checklist.
The Three-Layer Model
Every skill consists of three essential files that work together to guide the AI from instruction to output.
flowchart TD
Request["User Request\n'Create a PRD for search feature'"] --> Skill["SKILL.md\nWhat & How"]
Skill --> Template["TEMPLATE.md\nStructure"]
Skill --> Example["EXAMPLE.md\nQuality Reference"]
Skill --> Context["User Context"]
Template --> Output["AI-Generated\nPM Artifact"]
Example --> Output
Context --> Output
Layer 1: SKILL.md . The Instructions
Purpose: Provides step-by-step instructions for the AI to follow when creating the artifact.
What it contains:
- Frontmatter (YAML metadata): Machine-readable information about the skill (name, description, category)
- Overview: What the artifact is and why it matters
- When to Use: Specific situations that trigger this skill
- Instructions: Step-by-step process the AI follows
- Quality Checklist: Criteria for validating the output
- References: Links to the template and example
How agents use it: When invoked, the AI reads SKILL.md to understand what artifact to create, what information to gather from the user, and what process to follow.
Annotated example from skills/define-problem-statement/SKILL.md:
---name: define-problem-statement # ← Required: Unique identifierdescription: Creates a clear problem... # ← Required: What it doesphase: define # ← Domain skills require a phaseversion: "2.0.0" # ← Root semantic versionupdated: 2026-01-26 # ← ISO update datelicense: Apache-2.0 # ← Required in pm-skillsmetadata: # ← Optional: Extended metadata category: problem-framing # Category from taxonomy frameworks: [triple-diamond, lean-startup, design-thinking] author: product-on-purpose # Creator/maintainer---
# Problem Statement # ← H1 title
A problem statement is a concise document... # ← Overview paragraph
## When to Use # ← Situational triggers
- Starting a new initiative...- Realigning a drifted project...
## Instructions # ← Step-by-step process
When asked to create a problem statement, follow these steps:
1. **Identify the User Segment** # ← Each step has title Ask who is experiencing this problem... # ← and explanation
2. **Understand the Pain Points** Explore what friction...
## Output Format / Contract # ← Reference to template
Use `references/TEMPLATE.md` as the output format.
## Quality Checklist # ← Validation criteria
- [ ] Problem is specific to a defined user segment- [ ] Impact is quantified with data...
## Examples # ← Reference to example
See `references/EXAMPLE.md` for a completed example.Layer 2: TEMPLATE.md . The Structure
Purpose: Defines the exact output structure and format the AI should produce.
What it contains:
- Frontmatter with artifact metadata
- Section headings defining the document structure
- HTML comments providing guidance on what content goes in each section
- Placeholder text showing format expectations
How agents use it: The AI uses the template as a skeleton, filling in each section with content appropriate to the user’s context while maintaining the prescribed structure.
Example snippet from skills/define-problem-statement/references/TEMPLATE.md:
---artifact: problem-statement # ← Artifact typeversion: "1.0" # ← Template versioncreated: <YYYY-MM-DD> # ← Placeholder for datestatus: draft # ← Initial status---
# Problem Statement: [Problem Title] # ← Title with placeholder
## Problem Summary # ← Section heading<!-- 2-3 sentences that capture the essence... --> # ← Guidance comment
[Describe the problem in clear, jargon-free language...] # ← Content hint
## User Impact # ← Next section
### Who is affected?<!-- Specific user segment, persona, or role -->
[User segment description]
### How are they affected?<!-- Describe the friction, frustration, or unmet need -->
[Pain point description]Key features:
- HTML comments (
<!-- -->) guide the AI without appearing in final output - Placeholders like
[Problem Title]and<YYYY-MM-DD>signal dynamic content - Hierarchical headings show information architecture
- Frontmatter enables artifact tracking and versioning
Layer 3: EXAMPLE.md . The Quality Benchmark
Purpose: Demonstrates what a completed, high-quality output looks like in practice.
What it contains:
- Complete artifact with no placeholders
- Realistic scenario that PMs can relate to
- Appropriate detail level showing depth and breadth expectations
- Professional tone modeling voice and style
How agents use it: The AI references the example to calibrate quality, tone, level of detail, and how to handle ambiguity or edge cases.
Example snippet from skills/define-problem-statement/references/EXAMPLE.md:
---artifact: problem-statementversion: "1.0"created: 2026-01-14 # ← Actual datestatus: complete # ← Finished statuscontext: E-commerce company... # ← Real scenario context---
# Problem Statement: Mobile Checkout Abandonment # ← Specific title
## Problem Summary # ← Fully written sections
Mobile shoppers on our e-commerce platform abandon their carts atcheckout at significantly higher rates than desktop users. Despitehaving items in their cart and reaching the checkout page, 73% ofmobile users leave without completing their purchase, representinga substantial revenue opportunity and a frustrating experience forcustomers who intended to buy. # ← Real content
## User Impact
### Who is affected?
Mobile shoppers who add items to their cart and initiate checkout.This segment represents 62% of our total traffic and skews towardyounger demographics (18-34) who prefer shopping on their phones. # ← Specific numbers### How are they affected?
Users report frustration with:- Small form fields difficult to complete on mobile keyboards- Having to re-enter payment information each session... # ← Realistic detailsQuality indicators:
- Specific numbers (73% abandonment, 62% of traffic) not vague estimates
- Named scenario (e-commerce mobile checkout) not generic placeholders
- Concrete details (form fields, payment re-entry) not abstract concepts
- Professional but accessible language
How the Three Layers Work Together
┌─────────────────────────────────────────────────────────────┐│ Skill Invocation: /problem-statement "checkout issues" │└────────────────────────┬────────────────────────────────────┘ │ ┌────────────────┼────────────────┐ │ │ │ ▼ ▼ ▼ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ SKILL │ │TEMPLATE │ │ EXAMPLE │ │ .md │ │ .md │ │ .md │ └────┬────┘ └────┬────┘ └────┬────┘ │ │ │ │ ①Instructions│ │ ├───────────────>│ │ │ │ │ │ │ ②Structure │ │ ├───────────────>│ │ │ │ │ │ │ ③Quality │ │ ├──────────┐ │ │ │ ▼ │ │ │ ┌──────────┐ │ │ │ │ AI Agent │ │ │ │ │ combines │ │ │ │ │ all 3 │ │ │ │ └────┬─────┘ │ │ │ │ └────────────────┴────────────────┴─────────┘ │ ▼ ┌─────────────────────┐ │ Generated Artifact │ │ - Follows steps │ │ - Matches structure│ │ - Meets quality bar│ └─────────────────────┘The Process:
-
Instructions Guide (SKILL.md): AI reads what to do
- “Identify the user segment”
- “Quantify the business impact”
- “Define success metrics”
-
Structure Constrains (TEMPLATE.md): AI knows where to put it
- User segment goes in “Who is affected?” section
- Business impact goes in “Business Impact” section
- Success metrics get their own section with baseline/target table
-
Example Calibrates (EXAMPLE.md): AI knows how much detail
- User segment: 1-2 sentences with demographic info
- Business impact: Quantified with dollar amounts and percentages
- Success metrics: Specific numbers with timeframes
Result: Consistent, complete, high-quality artifact every time.
File System Anatomy
Directory Structure
Per the agentskills.io specification, skills follow a standardized directory layout:
skills/<skill-name>/├── SKILL.md # Required: Main instruction file└── references/ # Required: Support files directory ├── TEMPLATE.md # Required: Output structure └── EXAMPLE.md # Required: Quality benchmarkPM-Skills specific structure uses a flat directory with two naming patterns:
skills/├── discover-competitive-analysis/│ ├── SKILL.md│ └── references/│ ├── TEMPLATE.md│ └── EXAMPLE.md├── define-problem-statement/├── develop-adr/├── deliver-prd/├── foundation-persona/├── measure-experiment-design/└── iterate-retrospective/Naming model:
- Domain skills use one of the six lifecycle phases in both frontmatter and directory names (
deliver-prd,measure-experiment-design). - Foundation and utility skills use
classificationand omitphase(foundation-persona).
Why flat + typed naming? Keeps paths short while preserving the repo’s two-axis model: lifecycle phase for domain skills, classification for non-phase skills. Categories continue to live in metadata; see categories.md for taxonomy.
Naming Conventions
Per the agentskills.io specification, skill names must follow strict rules:
Pattern: ^[a-z0-9]+(-[a-z0-9]+)*$
Rules:
| Rule | Valid ✓ | Invalid ✗ |
|---|---|---|
| Lowercase only | problem-statement | Problem-Statement |
| Hyphens for word separation | user-stories | user_stories |
| No consecutive hyphens | edge-cases | edge--cases |
| No leading/trailing hyphens | prd | -prd or prd- |
| Length: 1-64 characters | retrospective | (65+ chars) |
| Letters, numbers, hyphens only | v2-roadmap | adr! or v2.roadmap |
| Must match directory name | Dir: prd/, name: prd | Dir: prd/, name: PRD |
Best practices:
- Use the output artifact name when obvious:
prd,adr,retrospective - Prefer concrete nouns over verbs:
user-storiesnotwrite-stories - Keep concise (1-3 words):
problem-statementnotdetailed-problem-analysis-document - Use well-known abbreviations:
prd,adr,jtbdare acceptable
Optional Directories
The agentskills.io specification allows additional directories for skill-specific needs:
skills/<skill-name>/├── SKILL.md├── references/│ ├── TEMPLATE.md│ └── EXAMPLE.md├── scripts/ # ← Optional: Automation scripts│ ├── validate.sh # Validation scripts│ └── transform.py # Output transformers└── assets/ # ← Optional: Supporting files ├── diagram.png # Images └── data.json # Sample dataWhen to use optional directories:
scripts/: For skills that benefit from validation or transformation
- Example: A
prdskill might include a script to validate completeness - Example: A
user-storiesskill might include a Jira import formatter
assets/: For skills requiring reference materials
- Example: A
competitive-analysisskill might include comparison templates - Example: A
dashboard-requirementsskill might include chart type examples
Note: Most skills don’t need these. The three core files are sufficient for 95% of use cases.
SKILL.md Deep Dive
Frontmatter Schema
Frontmatter is YAML metadata enclosed in triple dashes (---) at the very start of SKILL.md. It provides machine-readable information for discovery and invocation.
Complete Frontmatter Structure
---name: deliver-skill-name # ← REQUIREDdescription: What it does and when... # ← REQUIREDphase: deliver # ← Required for domain skills# classification: foundation # ← Use instead of phase for non-domain skillsversion: "1.0.0" # ← REQUIRED root semantic versionupdated: 2026-03-19 # ← REQUIRED root ISO datelicense: Apache-2.0 # ← REQUIRED in pm-skillsmetadata: # ← Optional container category: specification # One of 7 categories frameworks: [triple-diamond] # Array of methodology identifiers author: product-on-purpose # Creator/maintainer---Required Fields
name
Type: string
Pattern: ^[a-z0-9]+(-[a-z0-9]+)*$
Length: 1-64 characters
Purpose: Unique identifier for skill invocation and directory naming
Validation rules:
- Lowercase letters (a-z) and numbers (0-9) only
- Hyphens (-) separate words
- No spaces, underscores, or special characters
- No consecutive hyphens
- Cannot start or end with hyphen
- Must exactly match parent directory name
Examples:
# Valid ✓name: define-problem-statementname: deliver-prdname: deliver-user-storiesname: define-jtbd-canvasname: v2-roadmap
# Invalid ✗name: Problem-Statement # uppercasename: problem_statement # underscorename: problem statement # spacename: problem--statement # consecutive hyphensname: -problem-statement # leading hyphenname: PRD # uppercaseCommon mistake: Name doesn’t match directory
# In file: skills/define-problem-statement/SKILL.mdname: problem-framing # ✗ WRONG - must be "define-problem-statement"name: define-problem-statement # ✓ CORRECTdescription
Type: string
Length: 1-1024 characters (recommended: 150-300)
Purpose: Human and machine-readable summary for discovery and selection
Structure: [Action verb] [artifact] [key details]. Use when [trigger 1], [trigger 2], [trigger 3].
Writing effective descriptions:
✓ DO:
- Start with action verb: Creates, Generates, Documents, Designs, Analyzes
- State primary output artifact
- Include 1-3 “Use when…” triggers with situational keywords
- Use specific terminology users might search for
- Aim for 150-300 characters
✗ DON’T:
- Use vague statements: “Helps with product work”
- Include redundant phrases: “This skill is used for…”
- Use marketing language: “amazing”, “powerful”, “best”
- Make it too short (< 50 chars) or too long (> 500 chars)
Examples:
# Good ✓description: Creates a comprehensive Product Requirements Document that aligns stakeholders on what to build, why, and how success will be measured. Use when specifying features, epics, or product initiatives for engineering handoff.
description: Synthesizes user research interviews into actionable insights, patterns, and recommendations. Use after conducting user interviews, customer calls, or usability sessions to extract and communicate findings.
# Poor ✗description: Helps with PRDs # Too vague, no triggersdescription: This skill creates PRDs # Redundant phrasingdescription: The ultimate PRD generator! # Marketing languagedescription: PRD # Way too shortOptional Fields
license
Type: string
Default: Apache-2.0
Purpose: SPDX license identifier
All pm-skills use Apache-2.0, but third-party skills can specify different licenses.
license: Apache-2.0 # pm-skills standardlicense: MIT # permissive alternativelicense: CC-BY-4.0 # creative commonsReference: SPDX License List
metadata Container
Type: object
Purpose: PM-skills specific extensions and categorization
metadata.category
Type: string
Enum: One of 7 valid categories
Purpose: Framework-agnostic PM activity classification
Valid categories:
| Category | What it represents | Example skills |
|---|---|---|
research | Understanding users, market, context | interview-synthesis, competitive-analysis, stakeholder-summary |
problem-framing | Defining what problem to solve | problem-statement, opportunity-tree, jtbd-canvas |
ideation | Generating and evaluating solutions | hypothesis, solution-brief |
specification | Detailing what to build | prd, user-stories, edge-cases, adr, design-rationale |
validation | Testing assumptions with data | experiment-design, instrumentation-spec, dashboard-requirements |
reflection | Learning and improving | experiment-results, retrospective, lessons-log, pivot-decision |
coordination | Aligning teams and stakeholders | launch-checklist, release-notes, spike-summary, refinement-notes |
See: categories.md for detailed taxonomy
Example:
metadata: category: specification # ✓ Valid category: planning # ✗ Invalid - not in enummetadata.frameworks
Type: array of string
Purpose: List of PM methodologies this skill supports
Standard identifiers:
triple-diamond. 6-phase delivery process (Discover→Iterate)lean-startup. Build-Measure-Learn cycledesign-thinking. Empathize-Define-Ideate-Prototype-Testscrum. Sprint-based agilekanban. Flow-based agilesafe. Scaled Agile Framework
Best practice: Include all applicable frameworks, not just the primary one.
metadata: frameworks: [triple-diamond, lean-startup, design-thinking] # Typical frameworks: [triple-diamond] # Framework-specific frameworks: [scrum, kanban] # Agile-specificmetadata.author
Type: string
Purpose: Skill creator or maintainer identifier
Format options:
- Organization name:
product-on-purpose - GitHub username:
@username - Full name:
Jane Smith
metadata: author: product-on-purpose # Organization author: "@jsmith" # GitHub handle author: "Jane Smith" # Full nameclassification
Type: string
Enum: domain | foundation | utility
Purpose: Distinguish phase-based PM skills from non-phase skill families
Rules:
- Omit for ordinary domain skills if you want default domain behavior
- Use
foundationfor non-phase foundation skills likefoundation-persona - Use
utilityfor non-phase helper skills
phase
Type: string
Enum: discover | define | develop | deliver | measure | iterate
Purpose: Lifecycle grouping for domain skills
Rules:
- Required when
classificationisdomain - Required when
classificationis omitted - Must be omitted when
classificationisfoundationorutility
version
Type: string
Pattern: ^\d+\.\d+\.\d+$ (semantic versioning)
Purpose: Track skill evolution
Critical: Use one quoted root version field. metadata.version is not allowed.
version: "1.0.0" # ✓ CORRECT - quoted root fieldversion: 1.0.0 # ✗ WRONG - YAML interprets as float 1.0updated
Type: string
Pattern: ^\d{4}-\d{2}-\d{2}$
Purpose: Record the last edited date for the skill
updated: 2026-03-19Complete Frontmatter Examples
Minimal (required fields only):
---name: my-skilldescription: Creates a brief artifact for quick documentation needs.---Recommended (all standard fields):
---name: define-problem-statementdescription: Creates a clear problem framing document with user impact, business context, and success criteria. Use when starting a new initiative, realigning a drifted project, or communicating up to leadership.phase: defineversion: "2.0.0"updated: 2026-01-26license: Apache-2.0metadata: category: problem-framing frameworks: [triple-diamond, lean-startup, design-thinking] author: product-on-purpose---Foundation (non-phase):
---name: foundation-personadescription: Generates an evidence-calibrated product or marketing persona using the canonical v2.5 output contract. Use when shaping artifact perspective, stress-testing decisions, or framing product and GTM strategy.classification: foundationversion: "2.5.0"updated: 2026-03-02license: Apache-2.0metadata: category: research frameworks: [triple-diamond, lean-startup, design-thinking] author: product-on-purpose---Reference: See frontmatter-schema.yaml for complete validation rules and examples.
Markdown Content Structure
After the frontmatter, SKILL.md contains structured markdown content following this standard pattern:
Section 1: Skill Title (H1)
# Problem StatementRules:
- One H1 per document
- Appears immediately after frontmatter
- Title case, descriptive
- Should match the artifact type
Section 2: Overview Paragraph
A problem statement is a concise document that frames the problem you'resolving, articulates the impact on users and the business, and defines clearsuccess criteria. It serves as the foundation for all subsequent product workby ensuring alignment on *what* problem to solve before jumping to *how* tosolve it.Purpose: Quick context for humans and AI about what this skill produces and why it matters.
Guidelines:
- 2-4 sentences
- Explain what the artifact is
- State why it’s valuable
- Mention what gap it fills
Section 3: When to Use (H2)
## When to Use
- Starting a new initiative or project to establish shared understanding- Realigning a drifted project back to its original intent- Communicating up to leadership or stakeholders about priorities- Evaluating whether a proposed solution actually addresses the core problem- Onboarding new team members to provide contextPurpose: Trigger keywords for AI discovery and situational guidance for users.
Guidelines:
- 4-6 bullet points
- Specific situations, not vague phrases
- Include action verbs users might say
- Cover different use cases
Section 4: Instructions (H2)
## Instructions
When asked to create a problem statement, follow these steps:
1. **Identify the User Segment** Ask who is experiencing this problem. Get specific about the user persona, role, or segment. Avoid vague descriptions like "users" . instead target "mobile shoppers completing checkout" or "enterprise admins managing 50+ users."
2. **Understand the Pain Points** Explore what friction, frustration, or unmet need the user experiences. Ask probing questions to understand the severity and frequency of the problem.
3. **Establish Business Context** Connect the user problem to business impact. How does this problem affect revenue, retention, growth, or strategic goals?
[... more steps ...]Purpose: Step-by-step process the AI follows to create the artifact.
Guidelines:
- 5-10 steps typical
- Each step has:
- Bold title stating the action
- Explanation of what to do and why
- Guidance on how to do it well
- Sequential order
- Include what information to gather
- Mention what to skip or defer
Side-by-side comparison (Template vs. Actual):
| Template Pattern | Actual Implementation (problem-statement) |
|---|---|
1. **<Step Title>** | 1. **Identify the User Segment** |
<What to do and why> | Ask who is experiencing this problem. Get specific about the user persona, role, or segment. |
2. **<Step Title>** | 2. **Understand the Pain Points** |
<What to do and why> | Explore what friction, frustration, or unmet need the user experiences. |
Section 5: Output Format / Contract (H2)
## Output Contract
Use `references/TEMPLATE.md` as the output format.Purpose: Direct the AI to the template file for structural guidance.
Standard phrasing: Always reference references/TEMPLATE.md exactly. Legacy skills often title this section Output Format; newer builder-aligned skills prefer Output Contract.
Section 6: Quality Checklist (H2)
## Quality Checklist
Before finalizing, verify:
- [ ] Problem is specific to a defined user segment (not "all users")- [ ] Impact is quantified with data or reasonable estimates- [ ] Success metrics have baselines and targets- [ ] Problem describes the "what" without prescribing the "how"- [ ] Business context explains why this matters now- [ ] Open questions are captured for follow-upPurpose: Validation criteria the AI uses to check output quality.
Guidelines:
- 5-8 checkbox items
- Specific and verifiable criteria
- Focus on common failure modes
- Actionable (can be fixed if not met)
Example comparison:
| Poor Checklist Item ✗ | Good Checklist Item ✓ |
|---|---|
| “Problem is clear" | "Problem is specific to a defined user segment (not ‘all users’)" |
| "Good metrics" | "Success metrics have baselines and targets" |
| "Complete document" | "Document is readable in under 15 minutes” |
Section 7: Examples (H2)
## Examples
See `references/EXAMPLE.md` for a completed example.Purpose: Direct the AI to the example file for quality calibration.
Standard phrasing: Always reference references/EXAMPLE.md exactly.
Complete Structure Diagram
┌─────────────────────────────────────────┐│ --- ││ name: skill-name │ ← Frontmatter (YAML)│ description: ... ││ --- │├─────────────────────────────────────────┤│ # Skill Title │ ← H1├─────────────────────────────────────────┤│ Overview paragraph explaining ││ what this skill does... │ ← Overview├─────────────────────────────────────────┤│ ## When to Use ││ - Situation 1 ││ - Situation 2 │ ← Triggers│ - Situation 3 │├─────────────────────────────────────────┤│ ## Instructions ││ ││ 1. **Step Title** ││ What to do and why... ││ │ ← Process│ 2. **Step Title** ││ What to do and why... │├─────────────────────────────────────────┤│ ## Output Format / Contract ││ ││ Use references/TEMPLATE.md as output...│ ← Template ref├─────────────────────────────────────────┤│ ## Quality Checklist ││ ││ - [ ] Criterion 1 ││ - [ ] Criterion 2 │ ← Validation│ - [ ] Criterion 3 │├─────────────────────────────────────────┤│ ## Examples ││ ││ See references/EXAMPLE.md... │ ← Example ref└─────────────────────────────────────────┘Progressive Disclosure Model
The agentskills.io specification uses progressive loading to optimize context window usage and agent response time.
How Progressive Disclosure Works
Discovery Phase Invocation Phase │ │ ▼ ▼┌──────────┐ ┌──────────┐│ AGENTS.md│ │ SKILL.md ││ loaded │ │ loaded │└────┬─────┘ └────┬─────┘ │ │ │ Reads: │ Reads: │ - name │ - Full frontmatter │ - description │ - All instructions │ │ - Template reference │ │ - Example reference ▼ ▼┌──────────────────┐ ┌──────────────────┐│ AI sees 63 skills│ │ AI loads 1 skill ││ (~6KB metadata) │ │ (full content) │└──────────────────┘ └──────────────────┘ │ ▼ ┌────────────────┐ │ TEMPLATE.md │ │ EXAMPLE.md │ │ loaded on │ │ demand │ └────────────────┘Phase 1: Discovery
What loads: Only name and description from frontmatter
Where from: AGENTS.md file at repository root or SKILL.md frontmatter during skill indexing
Current repo note: AGENTS.md registers all 63 skills in skills/, including domain, foundation, and utility classifications.
Purpose: Allow AI to scan all available skills quickly and select the appropriate one
Benefit: Minimal context window usage during skill selection
Example (from AGENTS.md):
#### problem-statement**Path:** `skills/define-problem-statement/SKILL.md`
Creates a clear problem framing document with user impact, business context,and success criteria. Use when starting a new initiative, realigning adrifted project, or communicating up to leadership.AI decision process:
User: "I need to frame the checkout issue we're seeing"
AI scans AGENTS.md: - "problem-statement" description mentions "framing" - Keywords match: "framing", "initiative" → Selects problem-statement skillPhase 2: Invocation
What loads: Full SKILL.md content
When: After skill selection, before artifact generation
Purpose: Provide complete instructions, quality criteria, and references
Benefit: Context-appropriate loading.only the selected skill loads, not all 63 skills
What the AI reads:
---name: define-problem-statementdescription: Creates a clear problem framing document...phase: defineversion: "2.0.0"updated: 2026-01-26license: Apache-2.0metadata: category: problem-framing frameworks: [triple-diamond, lean-startup, design-thinking] author: product-on-purpose---
# Problem Statement
[Full overview paragraph]
## When to Use[Full list]
## Instructions[All 6 steps with details]
## Output ContractUse `references/TEMPLATE.md` as the output format...
## Quality Checklist[All criteria]
## ExamplesSee `references/EXAMPLE.md`...Phase 3: Template & Example Loading
What loads: TEMPLATE.md and EXAMPLE.md (on demand)
When: During artifact generation as needed
Purpose: Provide structure and quality benchmarks
Benefit: Further context optimization.template/example only load if AI needs them
Loading pattern:
AI follows SKILL.md instructions │ ├─> Needs structure? → Load TEMPLATE.md │ └─> Needs quality check? → Load EXAMPLE.mdWhy This Matters
Context window efficiency:
- Discovery: ~7KB (40 skill names + descriptions)
- Invocation: ~15KB (1 full SKILL.md + template + example)
- Without progressive loading: ~500KB (all 63 skills fully loaded)
Faster agent response:
- Skill selection happens instantly (minimal data to parse)
- Only relevant content loads for generation
- Reduces token usage and costs
Scalability:
- Repositories can grow to 100s of skills
- AI only loads what it needs
- Performance remains constant
Platform compatibility:
- Claude Code automatically implements this
- GitHub Copilot uses AGENTS.md for discovery
- Cursor and VS Code support progressive loading
- Manual copy-paste still works (user chooses what to paste)
Cross-Platform Portability
Skills written to the agentskills.io specification work across multiple AI platforms without modification.
Supported Platforms
| Platform | Discovery Method | Invocation Method | Slash Commands |
|---|---|---|---|
| Claude Code | AGENTS.md | Native skill support | Yes (/skill-name) |
| GitHub Copilot | AGENTS.md | @workspace context | Partial |
| VS Code Copilot | AGENTS.md | Agent mode | Via extensions |
| Cursor | AGENTS.md | Agent skills feature | Yes (custom) |
| OpenAI Codex | Manual/API | API integration | Via custom tools |
How Portability Works
The agentskills.io specification defines:
- Standard file structure . All platforms know where to find SKILL.md, TEMPLATE.md, EXAMPLE.md
- Standard metadata . Frontmatter schema is universal across platforms
- Standard discovery . AGENTS.md file format is consistent
- Markdown format . Platform-agnostic, human-readable
Example: The same prd skill works identically on:
Claude Code: /prd "search feature"GitHub Copilot: "Use the prd skill for search feature"Cursor: /prd "search feature"VS Code: Agent: "Use prd skill for search feature"ChatGPT: [Paste SKILL.md] "Create PRD for search feature"Platform-Specific Implementation Guides
VS Code Agent Skills:
- Official VS Code Agent Skills Documentation
- Uses
.github/copilot-skills.mdorAGENTS.mdfor discovery - Skills work in Copilot Chat with
@workspace
Cursor Agent Skills:
- Cursor Agent Skills Documentation
- Auto-discovers AGENTS.md in workspace
- Supports custom slash commands via
.cursorrules
GitHub Copilot:
- Reads AGENTS.md for context-aware suggestions
- Skills invoked via natural language in Copilot Chat
- Works with both workspace and global scope
Claude Code:
- Native support for agentskills.io specification
- Automatic AGENTS.md parsing
- Slash command generation from
commands/directory
Writing Portable Skills
DO:
- ✓ Follow agentskills.io specification exactly
- ✓ Use standard frontmatter fields
- ✓ Keep instructions platform-agnostic
- ✓ Test on multiple platforms if possible
- ✓ Use relative paths for internal references
DON’T:
- ✗ Include platform-specific commands in SKILL.md
- ✗ Assume slash command availability
- ✗ Hard-code file paths
- ✗ Use proprietary extensions or features
Example portable instruction:
<!-- Good ✓ -->## Instructions
1. **Gather User Research** Review available user interview notes, support tickets, or analytics.
<!-- Bad ✗ -->## Instructions
1. **Gather User Research** Use the Claude Code /search command to find interview notes. [Platform-specific - won't work on other platforms]Cross-Platform Testing Checklist
When authoring skills for maximum portability:
- Skill works with basic copy-paste (universal baseline)
- AGENTS.md entry is complete and accurate
- No platform-specific commands in instructions
- Frontmatter validates against schema
- Relative paths work from any starting location
- Instructions are clear without platform context
Practical Examples
Simple Skill: define-problem-statement
Full SKILL.md (annotated):
<!-- PM-Skills | https://github.com/product-on-purpose/pm-skills | Apache 2.0 -->---name: define-problem-statement # ← Matches directory name exactlydescription: Creates a clear problem framing document with user impact, business context, and success criteria. Use when starting a new initiative, realigning a drifted project, or communicating up to leadership. # ← Description includes triggersphase: define # ← Domain skills require a phaseversion: "2.0.0" # ← Root semantic versionupdated: 2026-01-26 # ← Root update datelicense: Apache-2.0 # ← Standard licensemetadata: category: problem-framing # ← Category from taxonomy frameworks: [triple-diamond, lean-startup, design-thinking] # ← Multiple frameworks author: product-on-purpose # ← Consistent authorship---
# Problem Statement # ← H1 title
A problem statement is a concise document that frames the problem you'resolving, articulates the impact on users and the business, and defines clearsuccess criteria. It serves as the foundation for all subsequent product workby ensuring alignment on *what* problem to solve before jumping to *how* tosolve it. # ← Overview explains value
## When to Use # ← Situational triggers
- Starting a new initiative or project to establish shared understanding- Realigning a drifted project back to its original intent- Communicating up to leadership or stakeholders about priorities- Evaluating whether a proposed solution actually addresses the core problem- Onboarding new team members to provide context # ← Specific situations
## Instructions # ← Step-by-step process
When asked to create a problem statement, follow these steps:
1. **Identify the User Segment** # ← Actionable step title Ask who is experiencing this problem. Get specific about the user persona, role, or segment. Avoid vague descriptions like "users" . instead target "mobile shoppers completing checkout" or "enterprise admins managing 50+ users." # ← Detailed guidance
2. **Understand the Pain Points** Explore what friction, frustration, or unmet need the user experiences. Ask probing questions to understand the severity and frequency of the problem. Look for evidence from user research, support tickets, or behavioral data.
3. **Establish Business Context** Connect the user problem to business impact. How does this problem affect revenue, retention, growth, or strategic goals? Why should the organization invest in solving this now versus later?
4. **Define Success Metrics** Identify how you will measure success. What metrics will move if this problem is solved? Establish current baselines and target improvements. Be specific and time-bound.
5. **Surface Constraints and Considerations** Note any technical limitations, resource constraints, regulatory requirements, or dependencies that will shape the solution space.
6. **Capture Open Questions** Document what you don't know yet. What assumptions need validation? What additional research is needed?
## Output Contract # ← Template reference
Use `references/TEMPLATE.md` as the output format.
## Quality Checklist # ← Validation criteria
Before finalizing, verify:
- [ ] Problem is specific to a defined user segment (not "all users")- [ ] Impact is quantified with data or reasonable estimates- [ ] Success metrics have baselines and targets- [ ] Problem describes the "what" without prescribing the "how"- [ ] Business context explains why this matters now- [ ] Open questions are captured for follow-up
## Examples # ← Example reference
See `references/EXAMPLE.md` for a completed example.Link to actual file: skills/define-problem-statement/SKILL.md
Why this is a “simple” skill:
- Straightforward 6-step process
- Single artifact output
- No complex dependencies
- Clear quality criteria
- Relatable use case
Complex Skill: prd
Frontmatter + Key Sections (annotated):
<!-- PM-Skills | https://github.com/product-on-purpose/pm-skills | Apache 2.0 -->---name: deliver-prd # ← Directory-matching identifierdescription: Creates a comprehensive Product Requirements Document that aligns stakeholders on what to build, why, and how success will be measured. Use when specifying features, epics, or product initiatives for engineering handoff. # ← Long description with multiple triggersphase: deliver # ← Domain classification uses phaseversion: "2.0.0" # ← Root semantic versionupdated: 2026-01-26 # ← Root update datelicense: Apache-2.0metadata: category: specification # ← Different category frameworks: [triple-diamond, lean-startup, design-thinking] author: product-on-purpose---
# Product Requirements Document (PRD) # ← Formal title with abbreviation
A Product Requirements Document is the primary specification artifact thatcommunicates what to build and why. It bridges the gap between problemunderstanding and engineering implementation by providing clear requirements,success criteria, and scope boundaries. A good PRD enables engineering tobuild the right thing while maintaining flexibility on implementation details. # ← Sophisticated overview
## When to Use # ← 5 triggers vs. 3-4 typical
- After problem and solution alignment, before engineering work begins- When specifying features, epics, or product initiatives for handoff- When multiple teams need to coordinate on a shared deliverable- When stakeholders need to approve scope before investment- As reference documentation during development and QA
## Instructions # ← More detailed steps
When asked to create a PRD, follow these steps:
1. **Summarize the Problem** # ← Builds on prior artifacts Start with a brief recap of the problem being solved. Link to the problem statement if available. Ensure readers understand *why* this work matters before diving into *what* to build.
2. **Define Goals and Success Metrics** # ← Specific measurement focus Articulate what success looks like. Include specific, measurable metrics with baselines and targets. These metrics should connect directly to the problem being solved.
3. **Outline the Solution** Describe the proposed solution at a high level. Focus on user-facing functionality and key capabilities. Include enough detail for stakeholders to evaluate the approach without over-specifying implementation.
4. **Detail Functional Requirements** # ← Core specification work Break down what the system must do. Use user stories or requirement statements. Each requirement should be testable . someone should be able to verify if it's met.
5. **Define Scope Boundaries** # ← Critical for project management Explicitly state what's in scope, out of scope, and deferred to future iterations. Clear scope prevents scope creep and sets realistic expectations.
6. **Address Technical Considerations** # ← Cross-functional awareness Note any technical constraints, architectural decisions, or integration requirements. Don't design the system, but surface considerations engineering needs to know.
7. **Identify Dependencies and Risks** # ← Risk management List external dependencies, assumptions, and risks that could impact delivery. Include mitigation strategies where applicable.
8. **Propose Timeline and Milestones** # ← Project planning Outline key phases and checkpoints. This helps stakeholders understand the delivery plan without committing to specific dates prematurely.
## Output Contract
Use `references/TEMPLATE.md` as the output format.
## Quality Checklist # ← Comprehensive validation
Before finalizing, verify:
- [ ] Problem and "why now" are clearly articulated- [ ] Success metrics are specific and measurable- [ ] Scope boundaries are explicit (in/out/future)- [ ] Requirements are testable and unambiguous- [ ] Technical considerations are surfaced without over-specifying- [ ] Dependencies and risks are documented with owners- [ ] Document is readable in under 15 minutes # ← Usability criterion
## Examples
See `references/EXAMPLE.md` for a completed example.Link to actual file: skills/deliver-prd/SKILL.md
Why this is a “complex” skill:
- 8-step process (vs. 5-6 typical)
- Multiple concerns (technical, scope, risk, timeline)
- Cross-functional coordination
- Builds on prior artifacts (problem statement)
- More comprehensive quality criteria
- Higher stakes (engineering handoff)
Advanced patterns shown:
- Artifact chaining: References problem statement
- Scope management: Explicit in/out/future boundaries
- Stakeholder alignment: Multiple audiences (engineering, leadership, QA)
- Time constraints: “Readable in under 15 minutes” ensures usability
Template: The Canonical Template
Link: docs/templates/skill-template/SKILL.md
What to customize:
---name: <phase-or-classification-skill-name> # ← Change to your skill namedescription: <1-2 sentences...> # ← Write specific descriptionphase: <discover|define|develop|deliver|measure|iterate># classification: foundation # ← Use this instead of phase for non-domain skillsversion: "1.0.0" # ← One quoted root versionupdated: 2026-03-19 # ← Set current ISO datelicense: Apache-2.0 # ← Keep as-is for pm-skillsmetadata: category: <one of 7 categories> # ← Choose from taxonomy frameworks: [triple-diamond, lean-startup, design-thinking] # ← Update for your skill author: product-on-purpose # ← Keep as-is or use your name---
# <Skill Title> # ← Descriptive title
<One paragraph overview...> # ← Explain value proposition
## When to Use # ← List 4-6 situations
- <Situation 1> # ← Be specific- <Situation 2>- <Situation 3>
## Instructions # ← Define 5-10 steps
When asked to <create artifact>, follow these steps:
1. **<Step 1 Title>** # ← Actionable title <What to do and why> # ← Detailed guidance
2. **<Step 2 Title>** <What to do and why>
[Continue with remaining steps]
## Output Contract
Use `references/TEMPLATE.md` as the output format. # ← Keep the template reference explicit
## Quality Checklist # ← Define 5-8 criteria
Before finalizing, verify:
- [ ] <Quality criterion 1> # ← Specific and testable- [ ] <Quality criterion 2>- [ ] <Quality criterion 3>
## Examples
See `references/EXAMPLE.md` for a completed example. # ← Keep this exact wordingWhat to preserve:
- Overall structure (section order)
- Section headings (H2 names)
- Template and example references (exact wording)
- Frontmatter field names and types
Common customization mistakes:
| Don’t ✗ | Do ✓ |
|---|---|
| Change H2 headings | Keep standard headings |
| Remove quality checklist | Always include validation criteria |
| Add marketing language | Keep professional, instructional tone |
| Skip the overview | Always explain value |
| Use vague descriptions | Include specific triggers and keywords |
Authoring Checklist
Quick reference for skill authors before submission. For complete guidance, see Creating PM Skills.
Directory & Files
- Directory path is
skills/<skill-name>/ - Directory name exactly matches
namefield in frontmatter - Contains
SKILL.mdfile - Contains
references/TEMPLATE.mdfile - Contains
references/EXAMPLE.mdfile - Optional: Slash command at
commands/<skill-name>.md
Frontmatter Validation
-
nameis lowercase with hyphens only -
namematches parent directory name exactly -
descriptionis 50-300 characters with trigger keywords -
descriptionstarts with action verb and includes “Use when…” -
categoryis one of 7 valid values from categories.md -
frameworksarray includes all applicable methodologies -
versionis quoted ("1.0.0"not1.0.0) -
licenseisApache-2.0(for pm-skills contributions)
SKILL.md Content
- Overview paragraph explains artifact and value (2-4 sentences)
- 4-6 “When to Use” situations are specific and actionable
- 5-10 instruction steps with clear titles and guidance
- Each step explains what to do and why
- References
references/TEMPLATE.mdfor output format - References
references/EXAMPLE.mdfor quality example - 5-8 quality checklist items are specific and testable
TEMPLATE.md
- Frontmatter includes
artifact,version,created,status - Section headings match instruction steps
- HTML comments provide guidance for each section
- No placeholder text left unfilled (use
[Description]format) - Structure supports the quality checklist criteria
EXAMPLE.md
- Complete (no
[TBD],TODO, or placeholder text) - Frontmatter includes actual values (date, status: complete, context)
- Realistic scenario relatable to most PMs
- Demonstrates appropriate detail level
- Follows template structure exactly
- Professional tone and language
- Internally consistent (no contradictions)
Quality & Testing
- Tested with 3+ different scenarios
- Output consistently matches template structure
- Output quality comparable to example
- AI doesn’t ask excessive clarifying questions
- Works with natural language invocation
- Slash command works (if created)
Documentation
- Entry added to
AGENTS.mdin the appropriate phase or non-phase section - Command added to
AGENTS.mdCommands table (if applicable) - No references to gitignored or private paths
- All internal links use relative paths
- All external links resolve correctly
Additional Resources
Official Specifications
- agentskills.io Specification . Canonical standard for agent skills
- agentskills/agentskills on GitHub . Reference implementation and examples
PM-Skills Documentation
- Getting Started Guide . Installation and first steps
- Using Skills Guide . From beginner to advanced usage
- Creating PM-Skills . Complete authoring guide
- Frontmatter Schema . Field-by-field validation reference
- Category Taxonomy . All 7 categories explained
- Contributing Guidelines . How to contribute to pm-skills
Community & Ecosystem
- PM-Skills Repository . Main repository
- Skill Template . Starting point for new skills
- Triple Diamond Framework . The organizing methodology
Platform Documentation
- VS Code Agent Skills . Using skills in VS Code Copilot
- Cursor Agent Skills . Using skills in Cursor
Standards & References
- Semantic Versioning . Version numbering standard
- SPDX Licenses . License identifier list
- Markdown Guide . Markdown syntax reference
- YAML Specification . YAML format details
Quick Reference Tables
File Structure Summary
| File | Required | Purpose |
|---|---|---|
SKILL.md | Yes | Instructions for AI |
references/TEMPLATE.md | Yes | Output structure |
references/EXAMPLE.md | Yes | Quality benchmark |
scripts/ | No | Automation tools |
assets/ | No | Supporting files |
Frontmatter Fields
| Field | Required | Type | Example |
|---|---|---|---|
name | Yes | string | problem-statement |
description | Yes | string | Creates a clear problem... |
phase | Conditional | enum | deliver |
classification | Conditional | enum | foundation |
version | Yes | string | "2.0.0" |
updated | Yes | string | 2026-01-26 |
license | Yes | string | Apache-2.0 |
metadata.category | No | enum | problem-framing |
metadata.frameworks | No | array | [triple-diamond] |
metadata.author | No | string | product-on-purpose |
Section Order in SKILL.md
| Order | Section | Required |
|---|---|---|
| 1 | Frontmatter (YAML) | Yes |
| 2 | Title (H1) | Yes |
| 3 | Overview paragraph | Yes |
| 4 | When to Use (H2) | Yes |
| 5 | Instructions (H2) | Yes |
| 6 | Output Format / Contract (H2) | Yes |
| 7 | Quality Checklist (H2) | Yes |
| 8 | Examples (H2) | Yes |
Common Validation Errors
| Error | Fix |
|---|---|
| Name mismatch | Ensure name exactly matches directory name |
| Unquoted version | Change version: 1.0.0 to version: "1.0.0" |
| Invalid category | Use one of 7 valid categories from taxonomy |
| Missing description triggers | Add “Use when…” phrases |
| Template reference broken | Use exact path: references/TEMPLATE.md |
Part of PM-Skills . Open source Product Management skills for AI agents
Built by Product on Purpose for PMs who ship.