Architecture Decision Records

ADRs capture each architectural decision: the context that led to it, the decision itself, the consequences, and the alternatives that were rejected. The source-of-truth lives at docs/architecture/adr/ in the repo — this page is a stable index.

Index

#TitleStatusScope
001Apache 2.0 license for the projectacceptedLegal
002Rust-based architecture with npm binary distributionacceptedCore
003Testing strategy — layered mocking with optional record-and-replay for real APIsacceptedTesting, CI
004Trait-based provider abstraction for testability and extensibilityacceptedCore
005Credential storage — OS keychain with environment-variable fallbackacceptedStorage, Security
007Plugin architecture — API providers, format pipeline, and the enricher modelacceptedPlugins
010Asset management — file attachments for AI agentsacceptedAssets (phases 1–3 shipped; phase 5 pending)
012Skills subsystem — procedural recipes on top of the tool bundleproposedSkills
013Skill install targets — repo-local default, global and agent-specific overridesproposedSkills
014Skills lifecycle — manifest-based install, upgrade, and collision detectionproposedSkills
015Skills self-feedback loop — session trace formatproposedSkills, Observability
016Skills language adaptationproposedSkills (deferred)
017Agent detection and devboy onboard commandproposedOnboarding, Skills

Number gaps (006, 008, 009, 011) are intentional — those numbers are reserved for decisions that are not in scope for this project.

Writing a new ADR

See TEMPLATE.md. Copy it to ADR-NNN-short-title.md using the next available number, fill in every section, and start with status: proposed. Flip to accepted once implemented (or rejected / superseded if it goes the other way).