skilo
A CLI tool for Agent Skills development.
Installation
From source
# Clone the repository
# Install using make
# Or directly with cargo
Requirements
- Rust 1.92.0 (pinned in
rust-toolchain.toml)
Usage
Create a new skill
# Create a skill with the default template (hello-world)
# Use a specific template
# Specify the script language
# Add a description and license
Available templates:
hello-world(default) - A minimal working skill with a greeting scriptminimal- Bare-bones skill with only SKILL.mdfull- Complete skill with all optional directoriesscript-based- Skill focused on script execution
Supported languages: python, bash, javascript, typescript
Validate skills
# Lint a skill directory
# Lint all skills in current directory
# Strict mode (treat warnings as errors)
# Auto-fix simple issues
Format skills
# Format SKILL.md files (includes table alignment)
# Check formatting without modifying
# Show diff of changes
Formatting includes:
- YAML frontmatter normalization
- Markdown table column alignment
Run all checks
# Run lint + format check (ideal for CI)
Output formats
All commands support multiple output formats:
Skill Structure
A valid skill follows this structure:
my-skill/
├── SKILL.md # Required: manifest with YAML frontmatter
├── scripts/ # Optional: executable scripts
├── references/ # Optional: additional documentation
└── assets/ # Optional: static resources
SKILL.md Format
name: my-skill
description: A brief description of what the skill does.
license: MIT
Detailed documentation goes here.
Configuration
Create a .skilorc.toml file for project-specific settings:
[]
= true
= 500
[]
= true
= 2
= true
[]
= "MIT"
= "hello-world"
= "python"
CI Integration
Add skilo validation to your GitHub Actions workflow:
# .github/workflows/skills.yml
name: Validate Skills
on:
push:
branches:
pull_request:
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Install skilo
run: cargo install skilo@0.2.0
- name: Lint skills
run: skilo lint . --strict
- name: Check formatting
run: skilo fmt . --check
To upload results to GitHub's Security tab, use SARIF output:
- name: Run skilo check
run: skilo lint . --format sarif > results.sarif
continue-on-error: true
- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif
Exit Codes
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | Validation errors found |
| 2 | Invalid arguments or configuration |
| 3 | I/O error |
License
MIT OR Apache-2.0