Without guardrails, AI coding assistants inherit and replicate technical debt from the surrounding codebase. Spec-driven development addresses this by providing AI assistants with explicit specifications (via files like agents.md, claude.md, or gemini.md) that define conventions, constraints, and anti-patterns to avoid before any code is written. Effective specs include a target state, clear scope, explicit constraints, and before/after examples. They act earlier than linters or CI checks by shaping contributions before they are written. The post covers how to prioritize debt reduction using an impact/frequency matrix, how to integrate specs into local dev, PR, and CI/CD workflows, how to measure progress by tracking anti-pattern frequency and velocity metrics, and common pitfalls like overly broad/narrow specs, stale specs, and lack of ownership. Aviator Runbooks are presented as a platform for sharing and versioning specs across teams.