Agent Skills support for Rustic AI - load, parse, and execute skills from the Agent Skills ecosystem
Project description
Rustic AI Skills
Agent Skills support for the Rustic AI framework. This module provides tools for discovering, installing, parsing, and executing Agent Skills from various sources including GitHub repositories and local directories.
Overview
Agent Skills are a standardized format for packaging reusable capabilities that AI agents can invoke. This module implements:
- SKILL.md Parser: Parse skill definitions in the Agent Skills format
- Skill Marketplace: Discover and install skills from GitHub repositories, Git URLs, or local directories
- Script Executor: Securely execute skill scripts (Python, Shell, JavaScript, etc.)
- SkillToolset: Integrate skills with the ReActAgent as executable tools
Installation
cd skills
poetry install --with dev
Quick Start
Discover and Install Skills
from rustic_ai.skills import SkillMarketplace
# Initialize marketplace
marketplace = SkillMarketplace()
# Add Anthropic's official skills (pre-configured)
# marketplace.add_source("anthropic", "github", "anthropics/skills")
# Add a custom source
marketplace.add_source(
name="my-skills",
source_type="github",
location="myorg/agent-skills",
)
# Discover available skills
skills = marketplace.discover()
for skill in skills:
print(f"{skill.name}: {skill.description}")
# Install a skill
marketplace.install("pdf")
# List installed skills
installed = marketplace.list_installed()
Use Skills with ReActAgent
from pathlib import Path
from rustic_ai.skills import SkillToolset
from rustic_ai.llm_agent.react import ReActAgent, ReActAgentConfig
# Create toolset from installed skill
toolset = SkillToolset.from_path(Path("/tmp/rustic-skills/pdf"))
# Configure ReActAgent with the skill
config = ReActAgentConfig(
model="gpt-4",
toolset=toolset,
system_prompt=toolset.get_system_prompt_addition(),
)
Use Multiple Skills
from rustic_ai.skills import SkillToolset
# Load multiple skills at once
toolset = SkillToolset.from_paths([
Path("/tmp/rustic-skills/pdf"),
Path("/tmp/rustic-skills/csv"),
Path("/tmp/rustic-skills/web-search"),
])
# Get combined system prompt
system_prompt = toolset.get_combined_system_prompt()
Parse Skills Directly
from pathlib import Path
from rustic_ai.skills import SkillParser, parse_skill
# Parse a skill folder
skill = parse_skill(Path("./my-skill"))
print(f"Name: {skill.name}")
print(f"Description: {skill.description}")
print(f"Scripts: {[s.name for s in skill.scripts]}")
print(f"Instructions:\n{skill.instructions}")
# Lazy load metadata only (for efficient discovery)
metadata = SkillParser.parse_metadata_only(Path("./my-skill"))
Execute Scripts Directly
from rustic_ai.skills import ScriptExecutor, ExecutionConfig
# Configure executor
config = ExecutionConfig(
timeout_seconds=60,
env_vars={"API_KEY": "secret"},
)
executor = ScriptExecutor(config)
# Execute inline code
result = executor.execute_inline(
code='print("Hello from skill")',
language="python",
args={"input": "test"},
)
if result.success:
print(result.output)
else:
print(f"Error: {result.error}")
Skill Format
Skills follow the Agent Skills specification:
my-skill/
├── SKILL.md # Required: Skill definition
├── scripts/ # Optional: Executable scripts
│ ├── process.py
│ └── setup.sh
├── references/ # Optional: Reference documents
│ └── api-docs.md
└── assets/ # Optional: Template files, configs
└── template.json
SKILL.md Format
---
name: my-skill
description: What this skill does and when to use it
allowed-tools: Read, Write, Bash
model: gpt-4
---
# My Skill
Instructions for how to use this skill...
## Usage
1. Step one
2. Step two
Components
Models
SkillMetadata: Lightweight metadata from SKILL.md frontmatterSkillDefinition: Full skill definition with scripts, references, assetsSkillScript: Executable script with interpreter infoSkillReference: Reference document with lazy loadingSkillSource: Configuration for a skill source (GitHub, local, Git)SkillRegistry: Registry of discovered skills
Parser
SkillParser: Parse SKILL.md files and discover resourcesparse_skill(): Convenience function for full parsingparse_skill_metadata(): Convenience function for metadata-only parsing
Marketplace
SkillMarketplace: Discover and install skills from various sources- Supports GitHub repositories (via GitPython)
- Supports local directories
- Supports arbitrary Git URLs
Executor
ScriptExecutor: Execute scripts with timeout and sandboxingExecutionConfig: Configuration for script executionExecutionResult: Result of script execution- Supports Python, Shell, JavaScript, TypeScript, Ruby
Toolset
SkillToolset: Convert skills to ReActToolset for use with ReActAgent (supports single or multiple skills)MarketplaceSkillToolset: Auto-install skills from marketplaceScriptToolParams: Parameters for script-based tools
Testing
# Run all tests
poetry run pytest
# Run with coverage
poetry run pytest --cov=rustic_ai.skills
# Run specific test file
poetry run pytest tests/test_parser.py
Development
# Format code
poetry run tox -e format
# Lint code
poetry run tox -e lint
# Run all checks
poetry run tox
License
Apache-2.0
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rusticai_skills-0.3.3.tar.gz.
File metadata
- Download URL: rusticai_skills-0.3.3.tar.gz
- Upload date:
- Size: 18.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.2.1 CPython/3.13.12 Linux/6.17.0-1010-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
270548e73a41bd158a309c587205ed496521303a29988d510207d87604d8ff5c
|
|
| MD5 |
3dc80194f20f3629b9a83ee73cb49f7d
|
|
| BLAKE2b-256 |
f4db86c9d3267af135411fbeab7ad5d0abc9ac8a8acff3907a8dfab418fddc05
|
File details
Details for the file rusticai_skills-0.3.3-py3-none-any.whl.
File metadata
- Download URL: rusticai_skills-0.3.3-py3-none-any.whl
- Upload date:
- Size: 19.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.2.1 CPython/3.13.12 Linux/6.17.0-1010-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
13714853066cd851a662fccbe6f1a7306f7cd193171bf65d62f1a4b98ab902e3
|
|
| MD5 |
6a75f9c65adc8126ee1339158c1fb167
|
|
| BLAKE2b-256 |
ad4264878823850499c2c5ab1d1e0b2c50dc48d4a87880ca8e77bb866085864d
|