Metadata-Version: 2.4
Name: ai-drift
Version: 0.6.0
Summary: AI agent conversation drift analyzer - identifies gaps between what AI agents did and what users wanted
Author-email: Jim Rosser <me@j4r.wtf>
License: MIT
Project-URL: Homepage, https://github.com/jarosser06/drift
Project-URL: Repository, https://github.com/jarosser06/drift
Project-URL: Issues, https://github.com/jarosser06/drift/issues
Project-URL: Documentation, https://docs.driftai.dev
Keywords: ai,agent,analysis,claude,drift,ai-drift,conversation-analysis,quality-assurance
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pydantic<3.0.0,>=2.5.0
Requires-Dist: pydantic-settings<3.0.0,>=2.1.0
Requires-Dist: anthropic<1.0.0,>=0.75.0
Requires-Dist: boto3<2.0.0,>=1.34.0
Requires-Dist: pyyaml<7.0.0,>=6.0.0
Requires-Dist: python-dateutil<3.0.0,>=2.8.0
Requires-Dist: requests<3.0.0,>=2.31.0
Requires-Dist: jsonschema<5.0.0,>=4.0.0
Provides-Extra: dev
Requires-Dist: pytest<8.0.0,>=7.4.0; extra == "dev"
Requires-Dist: pytest-cov<5.0.0,>=4.1.0; extra == "dev"
Requires-Dist: pytest-mock<4.0.0,>=3.12.0; extra == "dev"
Requires-Dist: pytest-asyncio<0.22.0,>=0.21.0; extra == "dev"
Requires-Dist: mypy<2.0.0,>=1.7.0; extra == "dev"
Requires-Dist: types-pyyaml<7.0.0,>=6.0.0; extra == "dev"
Requires-Dist: types-python-dateutil<3.0.0,>=2.8.0; extra == "dev"
Requires-Dist: types-requests<3.0.0,>=2.31.0; extra == "dev"
Requires-Dist: black<24.0.0,>=23.12.0; extra == "dev"
Requires-Dist: flake8<7.0.0,>=6.1.0; extra == "dev"
Requires-Dist: flake8-docstrings<2.0.0,>=1.7.0; extra == "dev"
Requires-Dist: isort<6.0.0,>=5.13.0; extra == "dev"
Requires-Dist: build<2.0.0,>=1.0.0; extra == "dev"
Requires-Dist: twine<6.0.0,>=4.0.0; extra == "dev"
Requires-Dist: pkginfo>=1.12.0; extra == "dev"
Provides-Extra: docs
Requires-Dist: sphinx>=7.0.0; extra == "docs"
Requires-Dist: sphinx-rtd-theme>=2.0.0; extra == "docs"
Requires-Dist: sphinx-autodoc-typehints>=1.25.0; extra == "docs"
Requires-Dist: myst-parser>=2.0.0; extra == "docs"
Dynamic: license-file

# Drift

[![PyPI version](https://badge.fury.io/py/ai-drift.svg)](https://pypi.org/project/ai-drift/)
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)

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:**

```yaml
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:**

```bash
drift
```

**3. Fix issues, re-run until green.**

That's it. Define standards → validate → fix → iterate.

## Installation

```bash
uv pip install ai-drift
```

## Common Workflow

```bash
# 1. Define your standards in .drift.yaml
# 2. Run validation
drift

# 3. Generate AI prompts to create missing files
drift draft --target-rule skill_validation > prompt.md

# 4. Fix issues manually or with AI
# 5. Re-validate until green
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`](.drift.yaml) in this repo.

## Documentation

- **[Writing Rules](docs/rules.md)** - Define custom validation rules
- **[Validators Reference](docs/validators.md)** - Available validation types
- **[Draft Command](docs/draft.md)** - Generate AI prompts from rules
- **[CLI Options](docs/cli.md)** - Command-line reference

## Development

```bash
./test.sh          # Run tests (90%+ coverage required)
./lint.sh          # Run linters
./lint.sh --fix    # Auto-fix formatting
```

## License

MIT
