Skip to main content
Agent Skills is an open standard for extending AI agent capabilities with specialized knowledge and workflows. PraisonAI Agents fully supports the Agent Skills specification, enabling agents to load and use modular capabilities through SKILL.md files.

Overview

Skills provide a way to give agents specialized knowledge and instructions without bloating the main system prompt. They use progressive disclosure to efficiently manage context:
  1. Level 1 - Metadata (~100 tokens): Name and description loaded at startup
  2. Level 2 - Instructions (<5000 tokens): Full SKILL.md body loaded when activated
  3. Level 3 - Resources (as needed): Scripts, references, and assets loaded on demand

CLI Commands

List Available Skills

List all discovered skills in the configured directories.
# List all available skills
praisonai skills list

# List skills from specific directories
praisonai skills list --dirs ./my-skills ./other-skills

# List skills with verbose output
praisonai skills list --verbose
Output:
Available Skills:
├── pdf-processing
│   ├── Description: Process and extract information from PDF documents
│   ├── Path: /Users/user/.praison/skills/pdf-processing
│   └── Metadata: author=your-org, version=1.0
├── data-analysis
│   ├── Description: Analyze data using pandas and visualization
│   ├── Path: /Users/user/.praison/skills/data-analysis
│   └── Metadata: author=data-team, version=2.1
└── web-scraping
    ├── Description: Extract data from websites using various techniques
    ├── Path: ./skills/web-scraping
    └── Metadata: author=scraping-team, version=1.5

Validate a Skill

Validate that a skill directory conforms to the Agent Skills specification.
# Validate a skill directory
praisonai skills validate --path ./my-skill

# Validate with detailed output
praisonai skills validate --path ./my-skill --verbose

# Validate multiple skills
praisonai skills validate --path ./skill1 --path ./skill2
Output:
✓ Skill validation passed for: ./my-skill
├── ✓ SKILL.md exists
├── ✓ Frontmatter valid
├── ✓ Name format correct (lowercase, hyphens only)
├── ✓ Description within limits (1-1024 chars)
├── ✓ Optional fields valid
└── ✓ Directory structure valid
Error Output:
✗ Skill validation failed for: ./my-skill
├── ✗ SKILL.md not found
├── ✗ Name contains invalid characters (use lowercase and hyphens only)
└── ✗ Description too long (1024 chars max, found 1500)

Create a New Skill

Create a new skill directory from a template with proper structure.
# Create a new skill with interactive prompts
praisonai skills create --name my-new-skill

# Create with description
praisonai skills create --name my-skill --description "A custom skill for data processing"

# Create with optional metadata
praisonai skills create --name my-skill \
  --description "Process CSV files" \
  --author "my-team" \
  --license "MIT" \
  --compatibility "Works with PraisonAI Agents"

# Create in specific directory
praisonai skills create --name my-skill --output-dir ./custom-skills
Generated Structure:
my-skill/
├── SKILL.md
├── scripts/
├── references/
└── assets/
Generated SKILL.md:
---
name: my-skill
description: A custom skill for data processing
license: MIT
compatibility: Works with PraisonAI Agents
metadata:
  author: my-team
  version: "1.0"
allowed-tools: Read Write
---

# My Skill

## Overview

This skill enables agents to...

## Instructions

1. First step...
2. Second step...
3. Final step...

## Usage

Use this skill when the user asks to...

Generate Prompt XML

Generate the XML prompt block for skills, useful for system prompt injection.
# Generate prompt XML for all discovered skills
praisonai skills prompt

# Generate for specific directories
praisonai skills prompt --dirs ./skills ./other-skills

# Generate for specific skill names
praisonai skills prompt --skills pdf-processing data-analysis

# Output to file
praisonai skills prompt --output skills-prompt.xml
Output:
<available_skills>
  <skill name="pdf-processing" path="/Users/user/.praison/skills/pdf-processing">
    <description>Process and extract information from PDF documents. Use this skill when the user asks to read, analyze, or extract data from PDF files.</description>
  </skill>
  <skill name="data-analysis" path="/Users/user/.praison/skills/data-analysis">
    <description>Analyze data using pandas, create visualizations, and generate insights from datasets. Use this skill when the user needs data analysis or visualization.</description>
  </skill>
</available_skills>

Skill Discovery Locations

PraisonAI searches for skills in these locations (in order of precedence):
  1. Project: ./.praison/skills/ or ./.claude/skills/
  2. User: ~/.praison/skills/
  3. System: /etc/praison/skills/ (admin-managed)

Using Skills with Agents

Direct Skill Paths

from praisonaiagents import Agent

# Create agent with specific skills
agent = Agent(
    name="PDF Assistant",
    instructions="You are a helpful assistant.",
    skills=["./skills/pdf-processing", "./skills/data-analysis"]
)

Skill Discovery

# Create agent that discovers skills from directories
agent = Agent(
    name="Multi-Skill Agent",
    instructions="You are a versatile assistant.",
    skills_dirs=["./skills", "~/.praison/skills"]
)

CLI with Skills

# Use skills with direct prompt
praisonai "Analyze this PDF" --skills ./skills/pdf-processing

# Use skills with discovery
praisonai "Process the data" --skills-dirs ./skills

# Combine with other features
praisonai "Extract and analyze" \
  --skills ./skills/pdf-processing \
  --skills-dirs ./skills \
  --verbose \
  --metrics

SKILL.md Format

Required Fields

FieldDescriptionConstraints
nameSkill identifier1-64 chars, lowercase, hyphens only
descriptionWhat the skill does and when to use it1-1024 chars

Optional Fields

FieldDescription
licenseLicense for the skill (e.g., Apache-2.0, MIT)
compatibilityCompatibility information (max 500 chars)
metadataKey-value pairs for custom properties
allowed-toolsSpace-delimited list of tools the skill requires

Example SKILL.md

---
name: pdf-processing
description: Process and extract information from PDF documents. Use this skill when the user asks to read, analyze, or extract data from PDF files.
license: Apache-2.0
compatibility: Works with PraisonAI Agents
metadata:
  author: your-org
  version: "1.0"
allowed-tools: Read Write
---

# PDF Processing Skill

## Overview

This skill enables agents to process PDF documents, extract text, tables, and metadata from PDF files.

## Instructions

1. First, verify the PDF file exists and is accessible
2. Use appropriate tools to read the PDF content
3. Extract text while preserving structure and formatting
4. Identify and extract tables if present
5. Extract metadata like author, creation date, etc.
6. Provide a structured summary of the PDF content

## When to Use

- User asks to read or analyze PDF files
- Need to extract specific information from PDFs
- Converting PDF content to other formats
- Summarizing PDF documents

## Tools Required

- Read: To access PDF files
- Write: To save extracted content or summaries

Directory Structure

skill-name/
├── SKILL.md          # Required: Skill definition
├── scripts/          # Optional: Executable code
│   ├── extract.py    # Python scripts for the skill
│   └── process.sh    # Shell scripts
├── references/       # Optional: Additional documentation
│   ├── api.md        # API documentation
│   └── examples.md   # Usage examples
└── assets/           # Optional: Templates, data files
    ├── template.txt   # Text templates
    └── sample.json   # Sample data

Best Practices

  1. Clear Descriptions: Be specific about when to use the skill
  2. Structured Instructions: Use numbered steps for clarity
  3. Tool Requirements: List all required tools in allowed-tools
  4. Version Management: Use semantic versioning in metadata
  5. Documentation: Include examples in references/
  6. Testing: Validate skills before deployment

Compatibility

PraisonAI’s Agent Skills implementation follows the open standard, ensuring compatibility with:
  • Claude Code (.claude/skills/)
  • GitHub Copilot (.github/skills/)
  • Cursor (Agent Skills support)
  • OpenAI Codex CLI
PraisonAI supports both .praison/skills/ and .claude/skills/ for maximum compatibility.

Performance

Agent Skills are designed for zero performance impact when not in use:
  • Lazy Loading: Skills are only loaded when explicitly accessed
  • No Auto-discovery: Discovery runs only when requested
  • Minimal Memory: Skills not in use consume no memory
  • Progressive Disclosure: Only load what’s needed

Troubleshooting

Common Issues

  1. Skill not found
    • Check if skill directory is in discovery path
    • Verify SKILL.md exists in the skill directory
    • Use praisonai skills list --verbose to debug
  2. Validation errors
    • Ensure name uses only lowercase and hyphens
    • Check description length (1-1024 chars)
    • Verify YAML frontmatter is valid
  3. Skills not loading
    • Check file permissions on skill directories
    • Verify skill directory structure
    • Use praisonai skills validate to check compliance

Debug Commands

# List with verbose output
praisonai skills list --verbose

# Validate with details
praisonai skills validate --path ./skill --verbose

# Check discovery paths
praisonai skills list --dirs ./test-skills --verbose

Examples

See the examples/skills/ directory for complete examples:
  • basic_skill_usage.py - Basic skill discovery and usage
  • custom_skill_example.py - Creating custom skills programmatically
  • pdf-processing/ - Example skill directory