Skip to content

seanrreid/RAD_framework

Repository files navigation

RAD: Research, Architect, Deliver

Rad Logo

A hybrid agent framework for small teams. Enforces information boundary architecture, GSD-style wave execution, and event-recorded approval gates.

Built for teams of any size — works with a dedicated architect or with a developer playing both roles on smaller projects.

Under the hood, RAD is a deterministic harness (the rad CLI in harness/, which folds an append-only event log into gate decisions) wrapped in a framework shell of slash commands and agent boundaries. The harness owns authority and state; the shell owns ergonomics. See docs/harness-and-framework.md.


How It Works

                    ── Gate 0 (optional) ──
                    /rad-epic-decompose [epic #] (architect)
                    Shapes a GitHub epic into per-child stories
                    Writes .agents/epics/ — no plans, no commit

ARCHITECT / TEAM                   TEAM
────────────────                   ────
/rad-research [prd or issue]       /rad-plan [feature]
  Consume spec artifact              Explore sub-agent researches codebase
  Clarify team + platform            Returns bounded RESEARCH_SUMMARY
  Write .agents/research/[slug]      Generate + lint plan file
                                     Cut rad/[feature] work branch
/rad-design [slug]                   Commit plan to that branch (no PR)
  Read research artifact
  Draft agent hierarchy            /rad-adopt [issue or description]
  Write .agents/architecture/        Same as /rad-plan, sourced from
  [architect reviews + approves]     a pre-existing issue or description
  Generate .claude/agents/ files

                    ── Gate 1 ──
                    /rad-approve (architect)
                    Reviews plan, records an `approved` event in
                    the feature's event log on the rad/[feature]
                    branch tip and pushes it. No PR — approval
                    lives in the event log on the branch

                                   /rad-deliver [plan-file]
                                     Gates on the approved event (`rad gate`)
                                     Runs on the existing rad/[feature] branch
                                     Each wave → fresh sub-agent context
                                     Orchestrator carries only WAVE_RESULT
                                     Atomic commit per task
                                     Execution log appended per step
                                     Opens the single deliver PR

                    ── Gate 2 ──
                    Architect reviews the deliver PR
                    (rad/[feature] → default branch)
                    Plan doc + code land together
                    Standard code review, then merge

One Branch, One PR

Every feature lives on a single rad/[feature] work branch, cradle to grave. /rad-plan cuts it from the default branch and commits the plan doc to it. /rad-approve records an approved event in the feature's event log (.agents/state/<feature>/events.jsonl) on that branch's tip — that event is the gate authority. /rad-deliver runs on the same branch and opens the one deliver PR. The plan doc and the code reach the default branch together through that single reviewed PR, which keeps contributors off the protected default branch. There is no plan PR.

The default branch is whatever you set as default_branch: in CLAUDE.md (resolved by scripts/get-default-branch.sh) — it is never hardcoded.

Two Gates

Gate 1 — Plan approval (architect runs /rad-approve)

  • One file: .agents/plans/[feature].md on the rad/[feature] branch
  • Architect reviews the approach before code is written
  • /rad-approve records an approved event in the feature's event log on the branch tip and pushes that branch — no PR, no merge to the default branch. (It also mirrors Status: approved into the plan doc, but that header is display only — the event is the authority.)
  • Blocked: /rad-deliver gates on the approved event via rad gate <feature> approved at the branch tip

Gate 2 — Deliver PR (rad/[feature] → default branch)

  • Plan doc and all implementation changes, together
  • Architect reviews the output after execution
  • Standard code review workflow, then merge

Token Efficiency

RAD delegates heavy context work to sub-agents so main sessions stay lean:

Phase What runs in a sub-agent What stays in main context
/rad-research URL input Haiku sub-agent: fetches and summarizes spec URL Bounded SPEC_SUMMARY block
/rad-design file generation Parallel Haiku sub-agents: one per agent file Completion confirmations
/rad-plan research Explore sub-agent: searches codebase, returns RESEARCH_SUMMARY The summary block (~20 lines)
/rad-deliver per wave Wave sub-agent: loads files, implements, validates, commits WAVE_RESULT block per wave
/rad-review quality-reviewer + accessibility-reviewer agents Finding summaries

The plan linter enforces a context budget on the Files in Scope table:

  • Warn at >800 lines in scope — consider splitting
  • Error at >1500 lines — must split before the plan can be approved

Role Structure

Role Commands Responsibility
Architect All commands (incl. /rad-design, /rad-approve, /rad-epic-decompose) Defines agent boundaries, decomposes epics, approves plans, merges PRs
Developer /rad-research, /rad-plan, /rad-adopt, /rad-deliver, /rad-review Research, plan, and execute within boundaries
Designer /rad-research, /rad-plan, /rad-adopt, /rad-deliver UI-scoped research, planning, and execution
All roles /rad-status, /rad-insights, /kickoff, /wrap, /rpi-design Team dashboard, review pattern analysis, session start/end rituals, agent-architecture scaffolding

All commands are committed to the project repo. The architect/ subdirectory signals which commands carry architect-level responsibility — enforcement is via branch protection and PR workflow, not command access control.


Installation

git clone https://github.com/torchcodelab/rad-framework /tmp/rad
bash /tmp/rad/install.sh --dir /path/to/your-project

The installer handles directory structure, commands, scripts, and CLAUDE.md scaffolding in one step. See INSTALL.md for the full guide including upgrade and uninstall instructions.


File Structure After Installation

your-project/
├── CLAUDE.md                         ← always-loaded project context + RAD config
├── .claude/
│   ├── agents/                       ← auto-discovered by Claude Code
│   │   ├── orchestrator.md
│   │   ├── [domain]-orchestrator.md
│   │   ├── [tool-name].md
│   │   ├── accessibility-reviewer.md ← built-in reviewer (invoked by /rad-review)
│   │   └── quality-reviewer.md       ← built-in reviewer (invoked by /rad-review)
│   └── commands/
│       ├── architect/
│       │   ├── rad-approve.md        → /rad-approve         (architect)
│       │   ├── rad-design.md         → /rad-design          (architect)
│       │   └── rad-epic-decompose.md → /rad-epic-decompose  (architect, Gate 0)
│       ├── team/
│       │   ├── rad-research.md       → /rad-research  (team)
│       │   ├── rad-plan.md           → /rad-plan      (team)
│       │   ├── rad-adopt.md          → /rad-adopt     (team)
│       │   ├── rad-deliver.md        → /rad-deliver   (team)
│       │   ├── rad-review.md         → /rad-review    (team)
│       │   ├── accessibility-review.md → /accessibility-review (team)
│       │   └── quality-review.md     → /quality-review (team)
│       └── shared/
│           ├── rad-status.md         → /rad-status    (shared)
│           └── rad-insights.md       → /rad-insights  (shared)
│   └── skills/
│       ├── kickoff/SKILL.md          → /kickoff       (session start ritual)
│       ├── wrap/SKILL.md             → /wrap          (session end ritual)
│       └── rpi-design/SKILL.md       → /rpi-design    (agent-architecture scaffolding)
├── .agents/
│   ├── research/                     ← research artifacts (/rad-research output)
│   ├── architecture/                 ← architecture drafts (/rad-design draft → approved)
│   ├── epics/                        ← epic shaping stories (/rad-epic-decompose, runtime)
│   ├── plans/                        ← plan artifacts (Gate 1)
│   ├── state/<feature>/events.jsonl  ← append-only event log — the gate authority (runtime)
│   ├── logs/                         ← execution logs per plan
│   ├── findings.jsonl                ← append-only review findings log (written by /rad-review)
│   └── findings/README.md            ← findings log schema and query reference
└── scripts/
    ├── detect-platform.sh            ← detects git platform from remote
    ├── get-default-branch.sh         ← resolves default_branch from CLAUDE.md
    ├── checkout-plan.sh              ← checks out a plan's rad/[feature] branch
    ├── fetch-epic.sh                 ← fetches an epic + children for /rad-epic-decompose
    ├── rad-label.sh                  ← applies RAD labels to a PR
    ├── open-pr.sh                    ← platform-agnostic PR creation
    ├── check-plan-approved.sh        ← gates on the approved event at the branch tip
    ├── check-role.sh                 ← validates contributor role vs. command
    ├── check-scope.sh                ← validates file changes against agent scope
    ├── check-tests.sh                ← checks for test coverage in deliver output
    ├── lint-plan.sh                  ← validates plan structure + context budget
    ├── worktree-lifecycle.sh         ← optional git-worktree isolation for a deliver run
    └── rad-status.sh                 ← powers /rad-status dashboard

Docs

Doc Read when
INSTALL.md Installing or uninstalling RAD
UPGRADE.md Upgrading an existing RAD project to the latest version
docs/how-it-works.md The whole process explained — model, lifecycle, guardrails
docs/harness-and-framework.md What RAD is — the harness core vs. the framework shell, grounded in code
docs/rad-cli.md The rad CLI — gates, deliver, agent adapters, worktree/budget/hook config
docs/rad-wave-contract.md The provider-neutral wave-execution contract adapters honor
docs/harness-state-store.md The deterministic event-log StateStore at the harness core
docs/framing-decisions.md How RAD positions itself on hooks, loops, context injection, and agent-to-agent orchestration
docs/references.md Annotated log of external sources reviewed against RAD, the takeaways, and issues they generated
docs/daily-workflow.md Getting started with the team workflow
docs/architect-guide.md Setting up and maintaining the architecture
docs/epic-decomposition.md When, why, and how to run the Gate-0 /rad-epic-decompose step
docs/plan-pr-guide.md How plan approval works and what to review
docs/wave-execution.md How /rad-deliver runs tasks in waves
docs/platform-support.md Git platform configuration and fallbacks
docs/onboarding.md Guide for new team members
docs/apply-to-existing.md Applying RAD to an existing project (2–3 weeks)
docs/12-factor-agents.md How RAD maps to 12-Factor Agent principles
docs/maintaining-claude-md.md Keeping CLAUDE.md accurate over time
.agents/findings/README.md Findings log schema, record types, and jq query reference

Credits


License

RAD is open source under the MIT License. Use it, fork it, build on it — commercially or otherwise. The only requirement is that the copyright notice and license text travel with substantial copies.

About

The AI Agent framework designed with small teams in mind

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors