Skip to content

ADR Packs

ADR packs are curated, importable bundles of Architecture Decision Records and their rules. Browse, cherry-pick, and import a governance baseline in one command.

An ADR pack is a curated bundle of Architecture Decision Records and their executable rules, designed for a specific stack, domain, or concern. Instead of starting governance from a blank file, you import an opinionated baseline and start catching real issues immediately.

Packs are the answer to the greenfield problem. Archgate excels at brownfield projects, where patterns already exist and archgate init plus @lessons-learned capture them as ADRs. A new repository has no patterns to extract, no conventions to enforce, and no obvious first ADRs. Packs ship defaults instead of instructions, the same way rails new and create-next-app ship opinionated starter content rather than an empty shell.

The registry has a single content primitive — the pack — plus a community links index. Every ADR lives inside a pack. There is no separate “standalone ADR” bucket: topical collections like security or testing are simply packs with a narrower scope than opinionated stacks like typescript-strict. They share the same structure and differ only in scope and tags.

Curated packs

Hosted in archgate/awesome-adrs, reviewed by Archgate maintainers, and marked with a Curated badge. See the curated catalog.

Community links

Pointers to external, archgate-compatible repositories that the maintainers did not author. See community packs.

Every pack on disk has the same shape:

packs/typescript-strict/
archgate-pack.yaml # pack metadata: name, version, description, tags
README.md # overview and ADR listing
rules.d.ts # ambient types for .rules.ts (triple-slash reference)
adrs/
TS-001-no-any.md # ADR document
TS-001-no-any.rules.ts # co-located rule file
TS-002-explicit-return-types.md
TS-002-explicit-return-types.rules.ts

You can import an entire pack or cherry-pick individual ADRs from within a pack. The path you pass determines the granularity — point at a pack directory for the whole pack, or at an ADR file for a single decision and its sibling rule.

Terminal window
# Imports every ADR in the pack
archgate adr import packs/typescript-strict

The path you read in the registry README is exactly what you type into the CLI — there is no slug lookup or translation step. The .md extension is optional, and every form accepts a @<ref> suffix for version pinning (for example packs/[email protected]).

  1. Discover a pack in the curated catalog or, soon, in the visual builder at adrs.archgate.dev.

  2. Import the pack or cherry-picked ADRs with archgate adr import. Files are written into .archgate/adrs/ with IDs renamed to match your project’s domain prefixes and avoid collisions.

  3. Run archgate check and watch the imported rules catch real issues against your code.

Most teams want a subset of any given pack — the three security ADRs that apply to them, not all of them. Cherry-picking lets pack authors write comprehensive packs without penalizing consumers who only need a few decisions. A team’s end state is their pack, assembled from multiple sources: a few ADRs from typescript-strict, one from security, the testing rule they care about, and their company’s private accessibility ADR.

Import also works against any git-accessible repository, not just the official registry — third-party org/repo paths, browser URLs pasted from GitHub, SSH remotes, and self-hosted git all resolve through your existing git authentication.