Everything as Code
Help turn every commit into deployable, compliant software you can trust
What is r2r (Ready to Release)?
r2r is an extensible CLI that enables Everything-as-Code workflows from your terminal, IDE, or CI/CD pipeline. Built by engineers, for engineers.
The CLI is your primary interface for:
- Writing executable specifications that validate your system
- Running continuous compliance checks on every commit
- Generating audit evidence as a byproduct of your pipeline
- Integrating with MCP servers and VSCode for IDE-native workflows
- Automating delivery flows with containers and GitHub Actions
This repository is both the tool and a working example - it demonstrates CI/CD implementation with the same principles and patterns explained in the documentation. Study the .github/workflows/, specs, and build processes to see Everything-as-Code in action.
Why Everything as Code?
Traditional compliance creates friction: manual documentation, periodic audits, late validation. Development teams wait for approvals. Compliance teams scramble during audit prep. Quality suffers.
The r2r CLI transforms compliance from a bottleneck into automation:
- Terminal-First: Run validation and evidence generation from
r2rcommands - Shift-Left Compliance - Catch issues at commit time (5 minutes) vs. production (days)
- Executable Specifications - Requirements and policies as code in version control
- Continuous Validation - Compliance checked on every commit, not quarterly
- Automated Evidence - Traceability generated automatically by your pipeline
- Reference Implementation - This repo's own CI/CD demonstrates the patterns
Documentation Navigation
Documentation is organized using the Diataxis framework - a systematic approach to technical documentation authoring:
Tutorials
Learning-oriented guides
Step-by-step lessons that take you through a series of steps to complete a project. Start here if you're new to the CLI and want hands-on guidance through core concepts.
How-to Guides
Task-oriented recipes
Guides that show you how to solve specific problems. Use these when you need to accomplish a particular task.
Reference
Information-oriented descriptions
Technical reference material for looking up details. Check here for system architecture, module contracts, command syntax, configuration options, and specifications.
- R2R and EAC Architecture - System overview and design
- Repository Layout - File structure
- Command Reference - CLI commands
- Decision Records - Architectural decisions
Explanation
Understanding-oriented discussion
Conceptual explanations that clarify and illuminate. Read these to understand the "why" behind the system.
Choose your path:
- "I'm new and want to learn" → Tutorials
- "I need to accomplish a task" → How-to Guides
- "I need technical details" → Reference
- "I want to understand why" → Explanation
Working with Documentation
Directory Structure
docs/
├── index.md # This file
├── assets/ # Binary files ONLY (.gif, .png, .pdf)
├── https://ready-to-release.github.io/eac/tutorials # Learning-oriented guides
├── https://ready-to-release.github.io/eac/how-to-guides # Task-oriented recipes
├── https://ready-to-release.github.io/eac/reference # Technical specifications
└── https://ready-to-release.github.io/eac/explanation # Conceptual discussions
Repository Modules
This repository is organized into modules - each representing a distinct deliverable with its own versioning, CI/CD pipeline, and release process.
| Moniker | Type | Root Path |
|---|---|---|
| books | container | |
| docs | container | docs |
| eac-commands | go | go/eac/commands |
| eac-core | go | go/eac/core |
| eac-mcp-commands | go | go/eac/mcp/commands |
| eac-specs | go | go/eac/specs |
| ext-eac | container | containers/ext-eac |
| github | static | .github |
| implicit-r2r-cli | static | scripts |
| r2r-cli | go | go/r2r/cli |
| r2r-eac | static | release/bundle |
| r2r-installer | static | scripts |
| release-docs | static | release |
| repository | static | / |
| templates | static | templates |
| vscode-ext-commit | typescript | typescript/vscode-ext-commit |