Skillware is an open-source framework and registry for modular, actionable Agent capabilities. It treats Skills as installable content, decoupling capability from intelligence. Just as apt-get installs software and pip installs libraries, skillware installs know-how for AI agents.
"I know Kung Fu." - Neo
The AI ecosystem is fragmented. Developers often re-invent tool definitions, system prompts, and safety rules for every project. Skillware supplies a standard to package capabilities into self-contained units that work across Gemini, Claude, Ollama, GPT, and Llama.
A Skill in this framework provides everything an Agent needs to master a domain:
- Logic: Executable Python code.
- Cognition: System instructions and "cognitive maps".
- Governance: Constitution and safety boundaries.
- Interface: Standardized schemas for LLM tool calling.
Browse capabilities by category in the Skill library.
This repository is organized into a core framework, a registry of skills, and documentation.
Skillware/
├── docs/ # Introduction, testing, skill catalog, usage guides (docs/usage/)
├── examples/ # Provider reference scripts (Gemini, Claude, OpenAI, Ollama, ...)
├── skills/ # Skill Registry
│ └── category/ # Domain boundaries (e.g., finance)
│ └── skill_name/ # The Skill bundle
│ ├── manifest.yaml # Definition, schema, and constitution
│ ├── skill.py # Executable Python logic
│ ├── instructions.md # Cognitive map for the LLM
│ ├── card.json # Optional UI presentation metadata
│ └── test_skill.py # Unit tests and schema validation
├── skillware/ # Core Framework Package
│ ├── cli.py # Command-line interface
│ └── core/
│ ├── base_skill.py # Abstract Base Class for skills
│ ├── env.py # Environment Management
│ └── loader.py # Universal Skill Loader and Model Adapter
├── templates/ # Boilerplate templates for new skills
│ └── python_skill/ # Standard template with required files
└── tests/ # Automated test suite
You can install Skillware directly from PyPI:
pip install skillwareOr for development, clone the repository and install in editable mode:
git clone https://github.com/arpahls/skillware.git
cd skillware
pip install -e .Note: Individual skills may have their own dependencies. The
SkillLoadervalidatesmanifest.yamland warns of missing packages (e.g.,requests,pandas) upon loading a skill.
pip install "skillware[cli]"
skillware listThis prints a table of all locally available skills and confirms the install and path resolution are working.
Create a .env file with your API keys (e.g., Google Gemini API Key):
GOOGLE_API_KEY="your_key"This example requires the Google SDK optional extra: pip install "skillware[gemini]" (local dev: pip install -e ".[gemini]"). See the Gemini usage guide for setup details.
import os
import google.genai as genai
from google.genai import types
from skillware.core.loader import SkillLoader
from skillware.core.env import load_env_file
# Load Environment
load_env_file()
# 1. Load the Skill from the Registry
# The loader reads the code, manifest, and instructions automatically
skill_bundle = SkillLoader.load_skill("finance/wallet_screening")
skill = skill_bundle["module"].WalletScreeningSkill(
config={"ETHERSCAN_API_KEY": os.environ.get("ETHERSCAN_API_KEY")}
)
# 2. Client & Tool Setup
client = genai.Client()
tool = SkillLoader.to_gemini_tool(skill_bundle) # The "Adapter"
system_instruction = skill_bundle['instructions'] # The "Mind"
# 3. Agent Loop
response = client.models.generate_content(
model="gemini-2.5-flash",
contents="Screen wallet 0xd8dA... for risks.",
config=types.GenerateContentConfig(
tools=[tool],
system_instruction=system_instruction,
),
)
for part in response.candidates[0].content.parts:
if part.function_call:
result = skill.execute(dict(part.function_call.args))
follow_up = client.models.generate_content(
model="gemini-2.5-flash",
contents=[
"Use this tool result to answer the original request.",
{
"function_response": {
"name": part.function_call.name,
"response": {"result": result},
}
},
],
config=types.GenerateContentConfig(
tools=[tool],
system_instruction=system_instruction,
),
)
print(follow_up.text)
else:
print(part.text)For other providers and shared integration patterns, see the usage guides index, agent loops, Gemini, Claude, OpenAI, DeepSeek, Ollama, API keys for skills, and the skill usage template for contributors.
| Topic | Link |
|---|---|
| Introduction | docs/introduction.md |
| Testing | docs/TESTING.md |
| Skill library | docs/skills/README.md |
| Usage guides | index — Gemini · Claude · OpenAI · DeepSeek · Ollama; agent loops; API keys |
| CLI | docs/usage/cli.md |
| Contributing | CONTRIBUTING.md · agent workflow |
We are building the "App Store" for Agents and require professional, robust, and safe skills. We welcome contributions to the skill registry, documentation, tests, and core framework.
- CONTRIBUTING.md — Contribution types, skill standard, pull request process, and navigation to all contributor docs.
- Agent Contribution Workflow — Workflow for AI agents contributing to the repository (operators supervise).
- Agent Code of Conduct — Deterministic outputs, safety boundaries, and acceptable use of skills.
- TESTING.md — Local linting and pytest before you open a PR.
- Pull request template — Checklists for skills, docs, and framework changes (complete only the sections that apply).
Skillware differs from the Model Context Protocol (MCP) or Anthropic's Skills repository in the following ways:
- Model Agnostic: Native adapters for Gemini, Claude, Ollama, and OpenAI.
- Code-First: Skills are executable Python packages, not just server specs.
- Runtime-Focused: Provides tools for the application, not just recipes for an IDE.
Read the full comparison here.
For questions, suggestions, or contributions, please open an issue or reach out to us:
- Email: skillware-os@arpacorp.net
- Issues: GitHub Issues

