Hierarchical skills taxonomy + DSPy workflow prototype
Project description
๐ Skill Fleet
A local-first platform for creating, validating, and curating AI agent skills as standards-compliant artifacts.
Skill Fleet transforms natural language descriptions into production-ready agent skills using an intelligent three-phase workflow: Understanding โ Generation โ Validation. Built on DSPy for reliable, optimizable LLM programs.
# Create a skill in minutes
uv run skill-fleet chat "Create a React hooks mastery skill for intermediate developers"
โจ Why Skill Fleet?
Traditional prompt engineering creates fragile, unversioned prompts that break when models change. Skill Fleet creates structured, validated, reusable artifacts that agentskills.io-compliant agents can consume.
Key Differentiators
| Feature | Traditional Prompts | Skill Fleet |
|---|---|---|
| Creation | Manual, trial-and-error | AI-assisted, structured workflow |
| Validation | Ad-hoc testing | Multi-phase validation with quality gates |
| Format | Plain text | agentskills.io compliant SKILL.md |
| Dependencies | Implicit | Explicitly declared and validated |
| Versioning | None | Git-tracked with promotion workflow |
| Discovery | None | Hierarchical taxonomy with search |
๐ Quick Start
Prerequisites
- Python 3.12+
- uv package manager
- Git
- API Key: Google (Gemini) or LiteLLM proxy
Installation
# Clone and setup
git clone https://github.com/qredence/skill-fleet.git
cd skill-fleet
uv sync --group dev
# Configure environment
cp .env.example .env
# Edit .env and add your GOOGLE_API_KEY or LITELLM credentials
First Skill Creation
# Start the API server
uv run skill-fleet serve
# In another terminal, create a skill interactively
uv run skill-fleet chat "Create a skill for Python decorators"
# Or create non-interactively with auto-approval
uv run skill-fleet create "Build a React testing skill" --auto-approve
# Validate the generated skill
uv run skill-fleet validate skills/_drafts/<job_id>
# Promote to taxonomy when ready
uv run skill-fleet promote <job_id>
๐๏ธ Architecture
Skill Fleet uses a three-phase workflow powered by DSPy:
User Request
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Phase 1: Understanding โ
โ - Extract requirements โ
โ - Analyze intent โ
โ - Build execution plan โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Phase 2: Generation โ
โ - Create SKILL.md with YAML frontmatter โ
โ - Generate code examples โ
โ - Apply category-specific templates โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Phase 3: Validation โ
โ - Structure validation โ
โ - Compliance checking โ
โ - Quality assessment (Best-of-N) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
Draft Ready for Review โ Promote to Taxonomy
Draft-First Workflow
- Draft Phase: Skills are generated into
skills/_drafts/<job_id>/ - Review Phase: Human-in-the-loop (HITL) for feedback and refinement
- Promotion Phase: Validated skills moved to stable taxonomy paths
๐ CLI Reference
Core Commands
| Command | Description | Example |
|---|---|---|
serve |
Start FastAPI server | uv run skill-fleet serve --reload |
dev |
Start server + TUI | uv run skill-fleet dev |
chat |
Interactive skill creation | uv run skill-fleet chat "Create..." |
create |
Non-interactive creation | uv run skill-fleet create "..." --auto-approve |
validate |
Validate skill directory via API | uv run skill-fleet validate skills/_drafts/<job_id>/<skill-name> |
promote |
Promote draft to taxonomy | uv run skill-fleet promote job_123 |
generate-xml |
Export skills as XML via API | uv run skill-fleet generate-xml |
analytics |
Show usage analytics via API | uv run skill-fleet analytics --user-id all |
Server Options
# Development mode with auto-reload
uv run skill-fleet serve --reload
# Skip database initialization
uv run skill-fleet serve --skip-db-init
# Custom port
uv run skill-fleet serve --port 8080
Validation Options
# Validate with JSON output for scripting
uv run skill-fleet validate ./my-skill --json
# Disable LLM-backed validation (rule-based only)
uv run skill-fleet validate ./my-skill --no-llm
# Override API server URL
uv run skill-fleet validate ./my-skill --api-url http://localhost:8000
๐ง Configuration
Environment Variables
Create .env file (copy from .env.example):
| Variable | Required | Description |
|---|---|---|
GOOGLE_API_KEY |
Yes* | Gemini API key (or use LiteLLM) |
LITELLM_API_KEY |
Yes* | LiteLLM proxy API key |
LITELLM_BASE_URL |
With LiteLLM | LiteLLM proxy root (e.g. http://localhost:4000) |
DATABASE_URL |
Production | PostgreSQL connection string |
SKILL_FLEET_ENV |
No | development (default) or production |
SKILL_FLEET_CORS_ORIGINS |
Production | Comma-separated allowed origins |
SKILL_FLEET_API_URL |
CLI | API base URL for API-first CLI commands |
SKILL_FLEET_USER_ID |
CLI | Default user id for CLI context |
* Choose either Google API key OR LiteLLM credentials.
Note: LITELLM_BASE_URL must point to the LiteLLM proxy root (or optional /v1). Provider endpoints like .../generateContent are invalid and will error.
Development vs Production
Development Mode (SKILL_FLEET_ENV=development):
- SQLite fallback (no DATABASE_URL required)
- CORS allows
* - Debug logging
- Auto-reload enabled
Production Mode (SKILL_FLEET_ENV=production):
- PostgreSQL required
- Explicit CORS origins required
- Structured logging
- Security headers enabled
๐ API Reference
When the server is running, access interactive documentation:
- Swagger UI:
http://localhost:8000/docs - ReDoc:
http://localhost:8000/redoc
Key Endpoints
| Endpoint | Method | Description |
|---|---|---|
/health |
GET | Health check |
/api/v1/skills |
POST | Create skill (returns job ID) |
/api/v1/skills/validate |
POST | Validate by taxonomy-relative skill path |
/api/v1/skills/{id} |
GET | Get skill by ID |
/api/v1/skills/{id}/validate |
POST | Validate existing skill |
/api/v1/jobs/{id} |
GET | Get job status and results |
/api/v1/taxonomy |
GET | List taxonomy categories |
/api/v1/taxonomy/xml |
GET | Export <available_skills> XML |
/api/v1/analytics |
GET | Usage analytics |
/api/v1/analytics/recommendations |
GET | Personalized recommendations |
/api/v1/hitl/responses |
POST | Submit HITL response |
Streaming API
For real-time progress updates:
curl -X POST http://localhost:8000/api/v1/skills/stream \
-H "Content-Type: application/json" \
-d '{
"task_description": "Create a Python asyncio skill",
"user_id": "developer-1",
"enable_hitl": true
}'
Returns Server-Sent Events (SSE) with:
- Phase transitions (Understanding โ Generation โ Validation)
- Real-time reasoning and thoughts
- Progress updates
- HITL suspension points
๐งช Development
Setup
# Install dependencies
uv sync --group dev
# Run linting and formatting
uv run ruff check --fix .
uv run ruff format .
# Run type checker
uv run ty check
# Run tests
uv run pytest
# Run specific test
uv run pytest tests/unit/test_async_utils.py -v
Pre-commit Hooks
# Install hooks
uv run pre-commit install
# Run manually
uv run pre-commit run --all-files
Project Structure
src/skill_fleet/
โโโ api/ # FastAPI application
โ โโโ v1/ # API endpoints (skills, jobs, HITL)
โ โโโ services/ # Business logic layer
โโโ cli/ # Typer CLI application
โโโ core/ # Core business logic
โ โโโ modules/ # DSPy modules (generation, validation)
โ โโโ signatures/ # DSPy signatures
โ โโโ workflows/ # Workflow orchestration
โโโ taxonomy/ # Taxonomy management
โโโ infrastructure/ # Database, monitoring, tracing
๐ Documentation
| Document | Description |
|---|---|
docs/README.md |
Documentation index and navigation |
docs/tutorials/getting-started.md |
Step-by-step onboarding |
docs/how-to-guides/create-a-skill.md |
End-to-end creation guide |
docs/how-to-guides/validate-a-skill.md |
Validation details |
docs/reference/api/endpoints.md |
Complete API reference |
AGENTS.md |
Development workflow guide |
SECURITY.md |
Security policy |
๐ค Contributing
We welcome contributions! Please see docs/explanation/development/contributing.md for guidelines.
Quick Contribution Workflow
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run tests and linting (
uv run pre-commit run --all-files) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
๐ License
Apache License 2.0. See LICENSE for details.
๐ Related Projects
- DSPy - The framework powering our LLM programs
- agentskills.io - The skill standard we implement
- LiteLLM - Proxy for multiple LLM providers
Version: 0.3.6 Status: Alpha Last Updated: 2026-02-03
Built with โค๏ธ by the Qredence team
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file skill_fleet-0.3.7.tar.gz.
File metadata
- Download URL: skill_fleet-0.3.7.tar.gz
- Upload date:
- Size: 818.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7ce11a3417642e3825c1308295cbc9783173cd6ecc06f94a9e9a91b7a66567d5
|
|
| MD5 |
cf3c5822213676766a46687dff79d32a
|
|
| BLAKE2b-256 |
6de8e6464d418e69155229f9985d7d3efc9d2ab8a4c74cb2dfb91cb6a63980f7
|
Provenance
The following attestation bundles were made for skill_fleet-0.3.7.tar.gz:
Publisher:
release.yaml on Qredence/skill-fleet
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
skill_fleet-0.3.7.tar.gz -
Subject digest:
7ce11a3417642e3825c1308295cbc9783173cd6ecc06f94a9e9a91b7a66567d5 - Sigstore transparency entry: 936990813
- Sigstore integration time:
-
Permalink:
Qredence/skill-fleet@809d55c53412666c430367d26bbcec099d48e69a -
Branch / Tag:
refs/tags/v0.3.7 - Owner: https://github.com/Qredence
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@809d55c53412666c430367d26bbcec099d48e69a -
Trigger Event:
push
-
Statement type:
File details
Details for the file skill_fleet-0.3.7-py3-none-any.whl.
File metadata
- Download URL: skill_fleet-0.3.7-py3-none-any.whl
- Upload date:
- Size: 469.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
660d68b9ef79f21580e637d54048842515a7429b61d31605d2cf9cd5472f11bc
|
|
| MD5 |
6c7b258d5a0450d1fbe653bc3d6c66cc
|
|
| BLAKE2b-256 |
15954b378ee0b4058ca86b33c2093745373c7bfb42b24ffeee0efa214fce1fb5
|
Provenance
The following attestation bundles were made for skill_fleet-0.3.7-py3-none-any.whl:
Publisher:
release.yaml on Qredence/skill-fleet
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
skill_fleet-0.3.7-py3-none-any.whl -
Subject digest:
660d68b9ef79f21580e637d54048842515a7429b61d31605d2cf9cd5472f11bc - Sigstore transparency entry: 936990822
- Sigstore integration time:
-
Permalink:
Qredence/skill-fleet@809d55c53412666c430367d26bbcec099d48e69a -
Branch / Tag:
refs/tags/v0.3.7 - Owner: https://github.com/Qredence
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@809d55c53412666c430367d26bbcec099d48e69a -
Trigger Event:
push
-
Statement type: