Skip to main content

Add your description here

Project description

skillbot

An agentic bot powered by skills. Skillbot uses an LLM as its brain and Agent Skills as extensible capabilities, communicating via the A2A protocol.

Tech Stack

Category Tool
Language Python >= 3.13
Package Manager uv
Build Backend Hatchling
Linter & Formatter Ruff
Type Checker mypy (strict mode)
Testing pytest
Commit Convention Commitizen (Conventional Commits)
Git Hooks pre-commit
CI/CD GitHub Actions
Package Registry PyPI
Agent Framework LangGraph
LLM Provider LangChain OpenAI
Agent Protocol A2A SDK
Web Framework FastAPI
CLI Click

Architecture

Skillbot follows a structured agent loop:

START -> Find Relevant Skills -> Load Skills -> Load Memories
      -> Plan & Execute -> Reflect -> [Complete?]
          -> Yes: Create Memories -> END
          -> No:  Summarize -> loop back to Find Skills

The loop is implemented as a LangGraph StateGraph with persistent checkpointing via SQLite.

Local Development

Prerequisites

  • Python >= 3.13
  • uv

Setup

Clone the repository and install dependencies:

git clone https://github.com/MadaraUchiha-314/skillbot.git
cd skillbot
uv sync --dev

This creates a .venv virtual environment and installs all runtime and dev dependencies.

Installing Pre-commit Hooks

Pre-commit hooks run linting, type checking, unit tests, and commit message validation automatically on every commit. Install them with:

uv run pre-commit install
uv run pre-commit install --hook-type commit-msg

You can also run all hooks manually against the entire codebase:

uv run pre-commit run --all-files

Common Commands

# Run unit tests
uv run pytest

# Run linter
uv run ruff check .

# Auto-fix lint issues
uv run ruff check . --fix

# Format code
uv run ruff format .

# Run type checker
uv run mypy skillbot

# Run all pre-commit hooks
uv run pre-commit run --all-files

Commit Messages

This project follows Conventional Commits. Commit messages are validated by Commitizen via a commit-msg hook. Use the format:

<type>(<optional scope>): <description>

[optional body]

[optional footer]

Examples:

feat: add user authentication
fix(parser): handle empty input gracefully
docs: update README with setup instructions

Project Structure

skillbot/
├── skillbot/
│   ├── agents/             # Agent implementations
│   │   ├── prompts/        # Prompt templates (.prompt.md)
│   │   └── supervisor.py   # Default supervisor agent
│   ├── cli/
│   │   └── cli.py          # CLI commands (init, start, chat)
│   ├── config/
│   │   └── config.py       # Config loading & dataclasses
│   ├── framework/
│   │   ├── agent.py        # AgentFramework (LangGraph graph)
│   │   └── state.py        # AgentState TypedDict
│   ├── memory/
│   │   └── memory.py       # User memory read/write
│   ├── server/
│   │   └── a2a_server.py   # A2A protocol server (FastAPI)
│   ├── skills/
│   │   └── loader.py       # Skill discovery & loading
│   └── tools/              # Tool infrastructure
├── tests/                  # Test suite
├── docs/                   # Documentation
├── .github/workflows/      # CI/CD pipelines
│   ├── pr.yml
│   └── release.yml
├── pyproject.toml
└── .pre-commit-config.yaml

Running the CLI Locally

During development, use uv run to invoke the CLI. This uses the editable install from .venv so your local code changes are reflected immediately without reinstalling.

# Show available commands
uv run skillbot --help

# Initialize config in a local directory (avoids writing to ~/.skillbot)
uv run skillbot init --root-dir ./local-config

# Edit ./local-config/skillbot.config.json to add your OpenAI API key

# Start the agent server
uv run skillbot start --config ./local-config/skillbot.config.json

# In another terminal, start chatting
uv run skillbot chat --user-id my-user --config ./local-config/skillbot.config.json

If you prefer, you can also activate the virtualenv and run skillbot directly:

source .venv/bin/activate
skillbot --help

Hot-Reload (Development)

Use the --reload flag to automatically restart the server whenever you change code under skillbot/. This is the recommended way to run during development:

uv run skillbot start --config ./local-config/skillbot.config.json --reload

The server watches the skillbot/ directory for file changes and restarts automatically, so you don't need to manually stop and restart after each edit.

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

skillbot-0.3.0.tar.gz (644.1 kB view details)

Uploaded Source

Built Distribution

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

skillbot-0.3.0-py3-none-any.whl (29.9 kB view details)

Uploaded Python 3

File details

Details for the file skillbot-0.3.0.tar.gz.

File metadata

  • Download URL: skillbot-0.3.0.tar.gz
  • Upload date:
  • Size: 644.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for skillbot-0.3.0.tar.gz
Algorithm Hash digest
SHA256 31e1bd6434bcaac76342b61c9f89a24a007e9fa32877b1c356ddb2d6869e61a8
MD5 d791050bb6732ca17ef0f54f441ef4e3
BLAKE2b-256 b7026742ae49bf319c1f7344179e9c32c851835a6def6f5586be9e9dfed63cdf

See more details on using hashes here.

Provenance

The following attestation bundles were made for skillbot-0.3.0.tar.gz:

Publisher: release.yml on MadaraUchiha-314/skillbot

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

File details

Details for the file skillbot-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: skillbot-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 29.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for skillbot-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 681e91919f86249384b96fd15dcc2722426235dc6fb3e2c1778c8725189ff4b2
MD5 e8a5223324b3bb86a09f3e31565a4777
BLAKE2b-256 35f9840e82cacdd8521b88537719339f85613f7ed6d843483d4cf6ca4e086d80

See more details on using hashes here.

Provenance

The following attestation bundles were made for skillbot-0.3.0-py3-none-any.whl:

Publisher: release.yml on MadaraUchiha-314/skillbot

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