Skip to main content

dais-skills

A Python package for programmatically discovering, downloading, and parsing Agent Skills.

Currently supports GitHub as a skill source. GitLab, arbitrary Git repositories, and custom sources (e.g. S3) are planned.

This project is in early development. The API may change at any time and backward compatibility is not guaranteed yet.

中文文档

Features

  • Scan a repository: given a GitHub repo URL, list every skill in it along with its path, name, and description
  • Download a skill: given a repo URL and a skill path, package that skill directory as a zip byte stream
  • Parse a skill archive: extract SKILL.md metadata (with frontmatter) and every resource file (auto-classified as text or binary) from a zip

Installation

Requires Python 3.14+.

uv add dais-skills
# or
pip install dais-skills

Quick Start

Scan a repository for skills

import asyncio
from dais_skills import scan_repo

async def main():
    skills = await scan_repo("https://github.com/<owner>/<repo>")
    for s in skills:
        print(s.path, "-", s.name)
        print(" ", s.description)

asyncio.run(main())

scan_repo returns list[ScannedSkill], where each item has:

  • path: the skill directory path inside the repo
  • name: the name field from the SKILL.md frontmatter
  • description: the description field from the SKILL.md frontmatter

The scanner walks the priority directories defined by the Agent Skills specification (such as skills/, .claude/skills/, .github/skills/, and so on) and skips irrelevant directories like node_modules, .git, dist, build, and __pycache__.

Download a single skill as a zip

import asyncio
from dais_skills import download_skill_zip

async def main():
    data: bytes = await download_skill_zip(
        "https://github.com/<owner>/<repo>",
        "skills/my-skill",
    )
    with open("my-skill.zip", "wb") as f:
        f.write(data)

asyncio.run(main())

skill_path may point at either the skill directory or the SKILL.md inside it. Both forms are treated as equivalent.

Parse a downloaded skill archive

import zipfile
from dais_skills import Skill

with zipfile.ZipFile("my-skill.zip") as zf:
    skill = Skill.from_zip(zf)

print(skill.name, skill.description)
print("license:", skill.license)
print("compatibility:", skill.compatibility)
print("allowed-tools:", skill.allowed_tools)

for res in skill.resources:
    if res.type == "text":
        print("[text]", res.relative, len(res.content))
    else:
        print("[bin] ", res.relative, len(res.content))

Skill.from_zip will:

  1. Locate the skill root inside the zip (the first-level directory containing SKILL.md, or the archive root)
  2. Parse the frontmatter and body of SKILL.md
  3. Collect every remaining file as a SkillResource, splitting them into TextResource and BinaryResource via binaryornot

Public API

Exported from the top-level package:

Name Description
scan_repo(repo_url) -> list[ScannedSkill] Scan a repository and return a summary of every skill found
download_skill_zip(repo_url, skill_path) -> bytes Download the given skill directory and pack it into a zip
Skill.from_zip(zip_file) -> Skill Parse a full skill object from a zip file
ScannedSkill Scan-result dataclass
Skill Fully parsed skill dataclass
SkillResource TextResource | BinaryResource
SkillException Base exception for this package

Submodule-specific exceptions (ScannerError, DownloaderError, InvalidSkillArchiveError, GitHubError) can be imported from their respective submodules.

Development

uv sync
uv run pytest              # run unit tests
uv run pytest -m smoke     # run end-to-end smoke tests that hit real network services

Roadmap

  • Scan skills in a GitHub repository
  • Download and package a single skill from GitHub
  • Parse a skill archive
  • GitLab repository support
  • Arbitrary remote Git repository support
  • S3 and other custom sources

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dais_skills-0.1.4.tar.gz (7.8 kB view details)

Uploaded Source

Built Distribution

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

dais_skills-0.1.4-py3-none-any.whl (13.1 kB view details)

Uploaded Python 3

File details

Details for the file dais_skills-0.1.4.tar.gz.

File metadata

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

File hashes

Hashes for dais_skills-0.1.4.tar.gz
Algorithm Hash digest
SHA256 f4ef6da8786a20fff7906ad0ff47a5a10582e1c012b61f7e28f8c9fdaae7b12f
MD5 3a80dae5db00bd3811a46eb04f4647a9
BLAKE2b-256 50b72931479bb751caf90c65c4efb6443610f98512ab1a9488fcfff82f3a7d8b

See more details on using hashes here.

Provenance

The following attestation bundles were made for dais_skills-0.1.4.tar.gz:

Publisher: publish.yaml on Dais-Project/Dais-Skills

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

File details

Details for the file dais_skills-0.1.4-py3-none-any.whl.

File metadata

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

File hashes

Hashes for dais_skills-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 2ec6d4f4fb9d1dd4360540deb42af2dcabeb30cccee50ea39875c58e56009906
MD5 bcc459513eae86ef36cf67680ee408f3
BLAKE2b-256 6e0d61a17df0caedcd1b12bb6e7bde8456579e32454206595c9c1619e4903f59

See more details on using hashes here.

Provenance

The following attestation bundles were made for dais_skills-0.1.4-py3-none-any.whl:

Publisher: publish.yaml on Dais-Project/Dais-Skills

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

Release history Release notifications | RSS feed

0.1.5

2 files

This release

0.1.4 This release

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

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