Spec-driven development with approval loops

Quickstart

Run a spec plan end-to-end with quality gates from Python. PipelineOrchestrator.run_all is an async coroutine, so drive it with asyncio.run (or await it inside an existing event loop):

import asyncio

from attune.pipeline import PipelineOrchestrator, PipelineResult


async def main() -> None:
    orchestrator = PipelineOrchestrator(".claude/plans/my-feature.md")
    result: PipelineResult = await orchestrator.run_all()
    print(result.summary)   # human-readable run summary
    print(result.success)   # True if all tasks executed and passed gates


asyncio.run(main())

summary and success are properties — read them, don't call them. Running this produces a PipelineResult with per-task outcomes, total cost, and duration.

To skip quality gates during a quick smoke test, pass skip_gates=True to the constructor.