Skip to main content

A framework for modular, self-contained AI skills.

Project description

Skillware Logo

A Python framework for modular, self-contained skill management for machines.


License Python Version PyPI Version


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

Mission

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:

  1. Logic: Executable Python code.
  2. Cognition: System instructions and "cognitive maps".
  3. Governance: Constitution and safety boundaries.
  4. Interface: Standardized schemas for LLM tool calling.

Skill library

Browse capabilities by category in the Skill library.

Architecture

This repository is organized into a core framework, a registry of skills, and documentation. Runnable provider scripts are indexed in examples/README.md.

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

Quick Start

1. Installation

You can install Skillware directly from PyPI:

pip install skillware

Or 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 SkillLoader validates manifest.yaml and warns of missing packages (e.g., requests, pandas) upon loading a skill.

2. Verify your installation

pip install "skillware[cli]"
skillware list

This prints a table of all locally available skills and confirms the install and path resolution are working. Running skillware with no arguments opens the interactive menu.

3. Configuration

Create a .env file with your API keys (e.g., Google Gemini API Key):

GOOGLE_API_KEY="your_key"

4. Usage Example (Gemini)

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.

Documentation

Topic Link
Introduction docs/introduction.md
Changelog CHANGELOG.md
Testing docs/TESTING.md
Skill library docs/skills/README.md
Usage guides indexGemini · Claude · OpenAI · DeepSeek · Ollama; agent loops; API keys
Examples index examples/README.md
CLI docs/usage/cli.md
Contributing CONTRIBUTING.md · agent workflow

Contributing

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).

Comparison

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.

Contact

For questions, suggestions, or contributions, please open an issue or reach out to us:


ARPA Logo
Built & Maintained by ARPA Hellenic Logical Systems & the Community

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

skillware-0.3.2.tar.gz (458.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

skillware-0.3.2-py3-none-any.whl (479.1 kB view details)

Uploaded Python 3

File details

Details for the file skillware-0.3.2.tar.gz.

File metadata

  • Download URL: skillware-0.3.2.tar.gz
  • Upload date:
  • Size: 458.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for skillware-0.3.2.tar.gz
Algorithm Hash digest
SHA256 4e70c7b6cc4529dd5b8637baba8ba84f586976fe51c0e95852b1626b6d4a17cd
MD5 c7e2d1ad8d443890cd9eb03296deca72
BLAKE2b-256 92b68f3aabfdab8aa2a6cc5c7b094cd1ea532b6ed83957b4a6cef3d97f868783

See more details on using hashes here.

Provenance

The following attestation bundles were made for skillware-0.3.2.tar.gz:

Publisher: publish.yml on ARPAHLS/skillware

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file skillware-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: skillware-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 479.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for skillware-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c153109a4f84d957358351aca6a44c5654e8ce6535a677ebf9b310cef4025068
MD5 ad0fac11c82e352f3a2cf5a47883d73b
BLAKE2b-256 322b18522ff8b0077faeacef878909b981876a46c8e7ce7cdffa86efcd6eb5c0

See more details on using hashes here.

Provenance

The following attestation bundles were made for skillware-0.3.2-py3-none-any.whl:

Publisher: publish.yml on ARPAHLS/skillware

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page