Skip to main content

broskill

yo. broskill is a lightweight, quick-loading skill loader for agentic projects — a "skill" being a folder with instructions (SKILL.md) plus optional reference docs, python scripts as tools, and static assets. broskill's whole job is finding those folders, loading them, and turning their scripts into callable tools. That's it. That's the lib.

part of the bro lib family — small, opinionated, do-one-thing tools built to stop us from writing the same glue code every time we spin up a new agentic project.

why this exists

every time you start a new agent project you end up rebuilding the same boring plumbing: some way to discover "skills," some way to load their instructions, some way to turn a script into a tool the model can call. broskill is that plumbing, ripped out of real projects where we got tired of writing it again and again.

heads up: this is an opinionated lib. it works one way — SKILL.md + references/ + scripts/ + assets/, discovered off a skills/ folder. if that convention fits your project, great, you just saved yourself a bunch of setup. if it doesn't, this probably isn't your lib, and that's fine — go build your own, that's basically how broskill got made in the first place. inspired by real work and real struggle. voilà, here it is.

install

uv pip install -e .

the shape of a skill

skills/
  read-file/
    SKILL.md              # frontmatter (name, description, version, ...) + instructions
    references/
      script.md            # optional deep-dive docs, loaded on demand
    scripts/
      read_file.py          # a get_args()-based python script -> becomes a callable tool
    assets/
      template.md            # optional static files a skill hands out

SKILL.md's frontmatter has to match the Skill dataclass field-for-field (name, description, version required; tags, keywords, default, status optional). Want to build one from scratch? There's a skill for that: skills/create-skill.

quick start

load skills — SkillControl

from broskill.processing.path import find_root
from broskill.processing.skill import SkillControl

root = find_root()  # walks up 'til it finds a skills/ folder
sc = SkillControl(root=root / "skills")

for skill in sc.list_skills():
    print(skill.name, "-", skill.description)

body = sc.load_skill("read-file")          # -> SKILL.md's instructions, as a str
ref = sc.load_skill_extension("read-file", "references/script.md")

Full runnable version: examples/case1.py.

turn a script into a tool — ToolControl

from broskill.processing.skill import SkillControl
from broskill.processing.tool import ToolControl, to_args
import subprocess, sys

sc = SkillControl(root=root / "skills")
sc.load_skill("read-file")

tc = ToolControl(sc)
tool = tc.load_tool("read-file", "scripts/list_files.py")
# tool.name, tool.description, tool.args -> ready to hand to an LLM's tool schema

result = subprocess.run(
    [sys.executable, str(tool.path), *to_args({"path": "skills/**/*.md"})],
    capture_output=True, text=True,
)

A script only needs one thing to become a tool: a module-level get_args() returning an argparse.ArgumentParser. broskill reads that parser and builds the schema for you — no separate tool-definition file to keep in sync. See skills/create-skill/references/script.md for the full contract.

Full runnable version: examples/case2.py.

running the tests

uv run pytest
uv run ruff check

more

stay chill, ship skills. 🤙

Release files for broskill 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for broskill 0.1.0
File Size Uploaded
broskill-0.1.0.tar.gz 50.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for broskill 0.1.0
File Interpreter ABI Platform
broskill-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 60.5 kB

Release files / broskill-0.1.0.tar.gz

Download URL broskill-0.1.0.tar.gz
Size 50.2 kB
Tags Source
SHA-256 checksum
How to use checksums
86d06dd35ab189f3c27fc9a61f5a556240e067500eb2fb7a8d2d4169bca9a19b
BLAKE2b-256 checksum
How to use checksums
f67f6bf8eb5a7573a04dda342adddd639f34548f5f8ff13f9ee7b71e77f6c97c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release files / broskill-0.1.0-py3-none-any.whl

Download URL broskill-0.1.0-py3-none-any.whl
Size 10.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
97742f15eee420333a6765075efba81d37fbea9770b8b3d0443b344844b6673b
BLAKE2b-256 checksum
How to use checksums
7bae637a5f47969fdc7d23a058e724c9878747e18c4305f2518560c7c4be527a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release history Release notifications | RSS feed

0.1.1

2 release files

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page