skr is a tool designed to manage Agent Skills—a lightweight, open format for extending AI agent capabilities with specialized knowledge and workflows.
📘 Documentation: https://andrewhowdencom.github.io/skr/
The primary goal of skr is to enable the pushing, pulling, and maintenance of Agent Skills using OCI (Open Container Initiative) Image registries, similar to the workflow used for container images on platforms like GitHub or Docker Hub.
This allows for a standardized, versioned, and distributed ecosystem for sharing AI capabilities.
This allows for a standardized, versioned, and distributed ecosystem for sharing AI capabilities.
by default, skr uses the Agent Skill standard to extend its capabilities.
This repository includes two core skills that also serve as the canonical examples for how to build and maintain skills:
- builder: Instructions on how to build, test, and maintain Agent Skills.
- skr: Instructions on how to use the
skrCLI tool.
Since skr is self-hosting, the best examples are the files in this repository:
- Skill Structure: See
skills/builder/SKILL.md - Workflow: See
.github/workflows/publish-skills.yamlfor a production-ready GitHub Actions workflow to publish skills. - Configuration: See
.skr.yamlfor an extensively documented configuration example.
You can install skr by downloading the pre-compiled binary from the Releases page.
- Download the archive for your platform.
- Extract the binary.
- Move it to a directory in your
PATH.
# Example for macOS ARM64 (replace version and platform as needed)
VERSION=v0.0.3
wget https://github.com/andrewhowdencom/skr/releases/download/${VERSION}/skr_Darwin_arm64.tar.gz
tar xvf skr_Darwin_arm64.tar.gz
sudo mv skr /usr/local/bin/Detailed documentation: Monorepo Workflow Tutorial
Use skr in your CI/CD pipelines to automatically build and publish skills:
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Required for change detection
- name: Publish Skills
uses: andrewhowdencom/skr@main
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
namespace: ${{ github.repository_owner }}
# Optional: path to skills directory (default: .)
path: ./skills
# Optional: git ref for change detection (default: none)
base: ${{ github.event.before }}# Validate a skill (checks structure and syntax)
skr validate .
# Build a skill from the current directory
skr build . -t my-registry.com/my-skill:v1.0.0
# Push a skill to a registry
skr push my-registry.com/my-skill:v1.0.0
# Install a skill
skr install my-registry.com/my-skill:v1.0.0
# Remove an installed skill
skr rm my-registry.com/my-skill
# Inspect a remote skill
skr inspect my-registry.com/my-skill:v1.0.0# Log in to a registry
skr registry login my-registry.com --username <user> --password <token>
# Log out
skr registry logout my-registry.com