TDD framework for AI workflows - define agent/skill/command standards in .drift.yaml and validate project structure programmatically
Project description
Drift
Test-driven development for AI workflows - define your standards, validate your project, iterate to compliance.
What It Does
Drift validates your AI agent projects against custom rules you define. No built-in opinions - you write the rules in .drift.yaml, Drift validates against them.
Quick Example
1. Create .drift.yaml with your rules:
rule_definitions:
claude_md_exists:
description: "Project must have CLAUDE.md"
scope: project_level
phases:
- name: check_file
type: file_exists
file_path: CLAUDE.md
failure_message: "CLAUDE.md is missing"
2. Run validation:
uvx --from ai-drift drift
3. Fix issues, re-run until green.
That's it. Define standards → validate → fix → iterate.
Installation
Run directly with uv (no installation needed):
uvx --from ai-drift drift
Or install with uv:
uv pip install ai-drift
Common Workflow
# 1. Define your standards in .drift.yaml
# 2. Run validation
uvx --from ai-drift drift
# 3. Generate AI prompts to create missing files
uvx --from ai-drift drift draft --target-rule skill_validation > prompt.md
# 4. Fix issues manually or with AI
# 5. Re-validate until green
uvx --from ai-drift drift
What You Can Validate
Define rules to check:
- Required files exist (CLAUDE.md, README.md, etc.)
- Link integrity (no broken file references)
- YAML frontmatter structure
- Dependency health (no redundant transitive dependencies)
- File format compliance (regex patterns)
- Content quality (with optional LLM-based rules)
Examples: See .drift.yaml in this repo.
Configuration Options
Parameter Overrides
Override validator parameters at different levels using parameter override configuration:
# Validator-level overrides - apply to all rules using a validator
validator_param_overrides:
core:file_exists:
merge:
ignore_patterns:
- ".venv/**"
- "node_modules/**/*"
- "**/*.tmp"
core:markdown_link:
merge:
ignore_patterns:
- "https://example.com/**"
- "http://localhost:**"
# Rule-level overrides - apply to specific rules
rule_param_overrides:
Python::documentation:
merge:
ignore_patterns:
- "tests/**"
# Phase-specific override
General::skill_validation::check_links:
replace:
check_external_urls: false
# Skip entire rules or phases
ignore_validation_rules:
- "Claude Code::skill_validation::check_description_quality"
- "Python::formatting"
Override Strategies:
- merge: Extends lists/dicts (for
ignore_patterns, etc.) - replace: Completely replaces parameter value
Pattern Types:
- Glob patterns:
*.md,**/*.py,src/**/* - Regex patterns: Auto-detected by metacharacters (
^,$,\(, etc.) - Literal paths: Exact path matching
Precedence: validator overrides → rule overrides → phase overrides
See Configuration Guide for complete details.
Documentation
- Writing Rules - Define custom validation rules
- Validators Reference - Available validation types
- Draft Command - Generate AI prompts from rules
- CLI Options - Command-line reference
- Configuration - Provider setup and ignore patterns
Development
./test.sh # Run tests (90%+ coverage required)
./lint.sh # Run linters
./lint.sh --fix # Auto-fix formatting
License
MIT
Project details
Release history Release notifications | RSS feed
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 ai_drift-0.10.0.tar.gz.
File metadata
- Download URL: ai_drift-0.10.0.tar.gz
- Upload date:
- Size: 107.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1ff3d34c6211b6282810d671ada3ea90d3ef9cf693a4b7a9d6a2bc12a5d3e1ef
|
|
| MD5 |
5167cb13466d6c952cc786c7593ac83b
|
|
| BLAKE2b-256 |
7529d3cecdaed5f60e99f88f9f67262281dc976c56a44ee6de233dfd1409c114
|
File details
Details for the file ai_drift-0.10.0-py3-none-any.whl.
File metadata
- Download URL: ai_drift-0.10.0-py3-none-any.whl
- Upload date:
- Size: 137.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
50793fc17c54e4aa0bb9e42fbad69ed7b5efe24e619e2a3edf197a4bb955a757
|
|
| MD5 |
db911b17581494986e9a6fba50fa7bcf
|
|
| BLAKE2b-256 |
677e68d17918f3eeab388b79794ded8d25eddef0608b006799601e554c208d8e
|