Metadata-Version: 2.4
Name: universal-skills
Version: 1.3.0
Summary: A collection of universal skills for AI agents
Author: Repository Maintainers
License-Expression: MIT
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: test
Requires-Dist: build>=1.5.0; extra == "test"
Requires-Dist: setuptools<83.0.0,>=80.9.0; extra == "test"
Requires-Dist: wheel>=0.47.0; extra == "test"
Requires-Dist: pytest-xdist>=3.8.0; extra == "test"
Requires-Dist: pytest>=9.1.1; extra == "test"
Requires-Dist: pytest-asyncio>=1.4.0; extra == "test"
Requires-Dist: pytest-cov>=7.1.0; extra == "test"
Requires-Dist: pytest-timeout>=2.4.0; extra == "test"
Requires-Dist: PyYAML>=6.0.3; extra == "test"
Requires-Dist: httpx>=0.28.1; extra == "test"
Provides-Extra: agent-browser
Provides-Extra: agent-builder
Requires-Dist: PyYAML>=6.0.3; extra == "agent-builder"
Provides-Extra: agent-package-builder
Provides-Extra: agent-spawner
Provides-Extra: mcp-client
Requires-Dist: fastmcp>=3.4.4; extra == "mcp-client"
Requires-Dist: python-dotenv>=1.2.2; extra == "mcp-client"
Provides-Extra: agent-workflows
Requires-Dist: httpx>=0.28.1; extra == "agent-workflows"
Requires-Dist: PyYAML>=6.0.3; extra == "agent-workflows"
Provides-Extra: automated-credential-rotation
Provides-Extra: algorithmic-art
Provides-Extra: api-wrapper-builder
Requires-Dist: requests>=2.34.2; extra == "api-wrapper-builder"
Requires-Dist: pydantic>=2.13.4; extra == "api-wrapper-builder"
Provides-Extra: brainstorming
Provides-Extra: brand-guidelines
Provides-Extra: browser-tools
Requires-Dist: playwright>=1.61.0; extra == "browser-tools"
Requires-Dist: Pillow>=12.3.0; extra == "browser-tools"
Provides-Extra: c4-architecture
Provides-Extra: canvas-design
Provides-Extra: cloudflare-deploy
Requires-Dist: requests>=2.34.2; extra == "cloudflare-deploy"
Requires-Dist: python-dotenv>=1.2.2; extra == "cloudflare-deploy"
Provides-Extra: creative-media
Requires-Dist: Pillow>=12.3.0; extra == "creative-media"
Provides-Extra: database-tools
Requires-Dist: mysql-connector-python>=9.7.0; extra == "database-tools"
Requires-Dist: psycopg2-binary>=2.9.12; extra == "database-tools"
Requires-Dist: pymssql>=2.3.13; extra == "database-tools"
Provides-Extra: document-converter
Requires-Dist: mammoth>=1.12.0; extra == "document-converter"
Requires-Dist: markdownify>=1.2.3; extra == "document-converter"
Requires-Dist: pymupdf4llm>=1.28.0; extra == "document-converter"
Provides-Extra: developer-utilities
Requires-Dist: bcrypt>=5.0.0; extra == "developer-utilities"
Requires-Dist: cryptography>=49.0.0; extra == "developer-utilities"
Requires-Dist: sqlparse>=0.5.5; extra == "developer-utilities"
Requires-Dist: toml>=0.10.2; extra == "developer-utilities"
Requires-Dist: user-agents>=2.2.0; extra == "developer-utilities"
Requires-Dist: PyYAML>=6.0.3; extra == "developer-utilities"
Provides-Extra: document-tools
Requires-Dist: Pillow>=12.3.0; extra == "document-tools"
Requires-Dist: defusedxml>=0.7.1; extra == "document-tools"
Requires-Dist: python-docx>=1.2.0; extra == "document-tools"
Requires-Dist: EbookLib>=0.20; extra == "document-tools"
Requires-Dist: lxml>=6.1.1; extra == "document-tools"
Requires-Dist: openpyxl>=3.1.5; extra == "document-tools"
Requires-Dist: pdf2image>=1.17.0; extra == "document-tools"
Requires-Dist: pdfplumber>=0.11.10; extra == "document-tools"
Requires-Dist: python-pptx>=1.0.2; extra == "document-tools"
Requires-Dist: Pygments>=2.20.0; extra == "document-tools"
Requires-Dist: pypdf>=6.14.2; extra == "document-tools"
Requires-Dist: validators>=0.35.0; extra == "document-tools"
Provides-Extra: github-backlog-planner
Provides-Extra: github-ci-failure-sweep
Provides-Extra: github-tools
Requires-Dist: requests>=2.34.2; extra == "github-tools"
Requires-Dist: python-dotenv>=1.2.2; extra == "github-tools"
Provides-Extra: google-workspace
Requires-Dist: keyring>=25.7.0; extra == "google-workspace"
Requires-Dist: requests>=2.34.2; extra == "google-workspace"
Provides-Extra: internal-comms
Provides-Extra: jupyter-notebook
Requires-Dist: nbformat>=5.10.4; extra == "jupyter-notebook"
Requires-Dist: nbconvert>=7.17.1; extra == "jupyter-notebook"
Provides-Extra: marp-presentations
Provides-Extra: mcp-builder
Requires-Dist: defusedxml>=0.7.1; extra == "mcp-builder"
Requires-Dist: fastmcp>=3.4.4; extra == "mcp-builder"
Provides-Extra: mermaid-diagrams
Provides-Extra: product-strategy
Provides-Extra: pre-mortem
Provides-Extra: react-development
Provides-Extra: react-native-skills
Provides-Extra: security-tools
Requires-Dist: networkx>=3.6.1; extra == "security-tools"
Requires-Dist: requests>=2.34.2; extra == "security-tools"
Provides-Extra: session-handoff
Provides-Extra: skill-builder
Requires-Dist: PyYAML>=6.0.3; extra == "skill-builder"
Provides-Extra: skill-catalog-auditor
Requires-Dist: PyYAML>=6.0.3; extra == "skill-catalog-auditor"
Provides-Extra: universal-installer
Provides-Extra: skill-graph-builder
Requires-Dist: crawl4ai>=0.9.2; extra == "skill-graph-builder"
Requires-Dist: playwright>=1.61.0; extra == "skill-graph-builder"
Requires-Dist: psutil>=7.2.2; extra == "skill-graph-builder"
Requires-Dist: requests>=2.34.2; extra == "skill-graph-builder"
Requires-Dist: pymupdf4llm>=1.28.0; extra == "skill-graph-builder"
Requires-Dist: pyyaml>=6.0.3; extra == "skill-graph-builder"
Provides-Extra: skill-workflow-builder
Requires-Dist: PyYAML>=6.0.3; extra == "skill-workflow-builder"
Provides-Extra: system-tools
Requires-Dist: psutil>=7.2.2; extra == "system-tools"
Provides-Extra: tdd-methodology
Provides-Extra: theme-factory
Provides-Extra: user-research
Provides-Extra: web-artifacts
Requires-Dist: requests>=2.34.2; extra == "web-artifacts"
Provides-Extra: web-crawler
Requires-Dist: crawl4ai>=0.9.2; extra == "web-crawler"
Requires-Dist: playwright>=1.61.0; extra == "web-crawler"
Requires-Dist: psutil>=7.2.2; extra == "web-crawler"
Requires-Dist: requests>=2.34.2; extra == "web-crawler"
Provides-Extra: web-design-guidelines
Provides-Extra: web-search
Requires-Dist: ddgs>=9.14.4; extra == "web-search"
Requires-Dist: requests>=2.34.2; extra == "web-search"
Provides-Extra: web-fetch
Provides-Extra: website-builder
Provides-Extra: website-cloner
Provides-Extra: code-enhancer
Requires-Dist: requests>=2.34.2; extra == "code-enhancer"
Requires-Dist: packaging>=26.2; extra == "code-enhancer"
Requires-Dist: keepachangelog>=2.0.0; extra == "code-enhancer"
Requires-Dist: psutil>=7.2.2; extra == "code-enhancer"
Provides-Extra: all
Requires-Dist: universal-skills[agent-browser]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[agent-builder]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[agent-package-builder]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[agent-spawner]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[mcp-client]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[agent-workflows]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[algorithmic-art]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[api-wrapper-builder]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[brainstorming]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[brand-guidelines]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[browser-tools]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[c4-architecture]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[canvas-design]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[cloudflare-deploy]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[creative-media]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[database-tools]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[developer-utilities]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[document-converter]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[document-tools]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[github-tools]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[google-workspace]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[internal-comms]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[product-strategy]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[pre-mortem]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[react-development]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[react-native-skills]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[security-tools]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[session-handoff]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[skill-builder]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[skill-catalog-auditor]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[skill-graph-builder]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[skill-workflow-builder]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[universal-installer]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[system-tools]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[tdd-methodology]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[theme-factory]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[user-research]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[web-artifacts]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[web-crawler]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[web-design-guidelines]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[web-search]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[web-fetch]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[website-builder]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[website-cloner]>=1.0.0; extra == "all"
Requires-Dist: universal-skills[code-enhancer]>=1.0.0; extra == "all"
Dynamic: license-file

# Universal Skills

[![PyPI version](https://img.shields.io/pypi/v/universal-skills)](https://pypi.org/project/universal-skills/)
[![Python](https://img.shields.io/pypi/pyversions/universal-skills)](https://pypi.org/project/universal-skills/)
[![License](https://img.shields.io/github/license/Knuckles-Team/universal-skills)](LICENSE)

*Version: 1.3.0*

Universal Skills is a portable catalog of agent capabilities and dependency-ordered
skill workflows. It supports Claude-compatible `SKILL.md` discovery and the
agent-utilities provider ecosystem.

## Catalog model

- `universal_skills/<domain>/<name>/` contains one atomic skill with one capability.
- `universal_skills/<domain>-workflows/<name>/` contains a pure DAG over atomic
  skills or exact MCP tools; workflows do not embed business logic.
- Platform and package operations belong under
  `agent-packages/agents/<package>/<module>/skills/` and are exposed through
  `agent_utilities.skill_providers`.
- `assets/` may contain nested templates, but those are package resources rather
  than canonical catalog entries.

The catalog includes development, infrastructure, finance, research, product,
creative, documentation, web, system, operations, content, and data capabilities.
The content and data domains include evidence-aware drafting, publication preflight,
dataset profiling, deterministic data-quality validation, and data-dictionary
authoring.

## Catalog quality and roadmap

- [Per-skill structural audit](docs/skill-catalog-audit.md)
- [Category improvement roadmap and workflow designs](docs/skill-catalog-improvement-roadmap.md)
- [Skill and workflow architecture](docs/overview.md)
- [Published documentation](https://knuckles-team.github.io/universal-skills/)

Reproduce the catalog audit locally:

```bash
python universal_skills/agent-tools/skill-catalog-auditor/scripts/audit_catalog.py \
  universal_skills --format markdown
```

The audit reports trigger quality, atomicity signals, workflow dependency problems,
unbound components, placeholder content, team-configuration drift, broken local
links, and taxonomy consistency. It is a structural lint, so safety and domain
correctness still require human review.

## Install

Install the package, then deploy discovered skills to supported agent tools:

```bash
pip install universal-skills
install-skills --all-detected --symlink
```

For local development:

```bash
git clone https://github.com/Knuckles-Team/universal-skills.git
cd universal-skills
pip install -e '.[test]'
install-skills --all-detected --symlink
```

The repository also provides `install.sh` and `install.ps1` for package installation
and skill deployment. Review targets and configuration changes before using broad
installation options.

## Use from Python

```python
from pydantic_ai_skills import SkillsToolset

from universal_skills.skill_utilities import (
    get_skill_graph_path,
    get_universal_skills_path,
)

skills = SkillsToolset(
    directories=[get_universal_skills_path(), get_skill_graph_path()]
)
```

Discovery respects each skill's enable/disable environment flag. Package-owned
skills are discovered from installed provider entry points by the universal
installer.

## Author a skill or workflow

Use the bundled builders rather than copying a legacy entry:

```bash
# Atomic skill: creates only explicitly requested resource directories
python universal_skills/core/skill-builder/scripts/init_skill.py --help

# Pure DAG workflow: resolves atomic skills or explicit MCP tools
python universal_skills/agent-tools/skill-workflow-builder/scripts/build_workflow.py --help
```

Before opening a change:

```bash
python scripts/gen_bumpversion.py
python scripts/check_atomicity.py --strict
pytest -q
pre-commit run --all-files
```

## Security boundaries

Audit and discovery are read-only. Skills that publish, send, delete, rotate,
restart, deploy, trade, persist data, or otherwise change external state must make
that side effect explicit and obtain the authorization appropriate to the target.
Network scripts must verify TLS by default, bound requests, redact secrets, and
treat retrieved content as untrusted input.

## License

MIT. See [LICENSE](LICENSE).
