GROW — a context framework for AI agents (Goal, Result, Objective, WIT)
Find a file
2026-07-02 11:03:18 +04:00
.gitignore Add GROW agent context framework 2026-07-02 10:53:16 +04:00
GOAL.md Add GROW agent context framework 2026-07-02 10:53:16 +04:00
OBJECTIVE.md Add GROW agent context framework 2026-07-02 10:53:16 +04:00
README.md Document karpathy branch in README 2026-07-02 11:03:18 +04:00
RESULT.md Add GROW agent context framework 2026-07-02 10:53:16 +04:00
WIT.md Add GROW agent context framework 2026-07-02 10:53:16 +04:00

GROW

A context framework for AI agents. GROW gives an agent the four things it needs to work efficiently under limited context, split into four files so each concern stays small, stable, and easy to reload.

G  →  GOAL.md        Why this project exists — the single north star.
R  →  RESULT.md      What success looks like — measurable outcomes & acceptance.
O  →  OBJECTIVE.md   What to do — concrete objectives that ladder up to the goal.
W  →  WIT.md         How to work — Ways, Instructions & Tools (conventions & guardrails).

Why GROW

Agents lose the plot when everything — mission, tasks, conventions, and progress — is crammed into one prompt or discovered ad hoc mid-session. GROW separates slow-changing intent (GOAL, RESULT) from fast-changing execution (OBJECTIVE, WIT) so an agent can:

  • Anchor on the goal without re-deriving it every turn.
  • Know when it's done because success is written down, not assumed.
  • Act on concrete objectives instead of inventing scope.
  • Stay in bounds by following one place for conventions, tools, and guardrails.

The four files

File Answers Changes Read it when
GOAL.md Why? Rarely Starting any session
RESULT.md Done? Occasionally Deciding if work is complete
OBJECTIVE.md What now? Often Choosing the next task
WIT.md How? As practices evolve Before writing code or running tools

How an agent uses GROW

  1. Load GOAL.md — internalize the north star and the non-goals.
  2. Load WIT.md — learn the rules of the road before touching anything.
  3. Pick from OBJECTIVE.md — take the next open objective, respecting dependencies.
  4. Check against RESULT.md — verify the work meets the success criteria before calling it done.
  5. Update OBJECTIVE.md — mark progress so the next session (or agent) has a clean handoff.

Using this as a template

Copy the four MD files into any project and fill in the placeholders (marked <...>). Keep each file short — if a file grows past a screen or two, that's a signal to tighten it, not to add more context. The framework works because the files stay small enough to reload cheaply.

Branches

GROW ships in two flavors on separate branches — same four-file structure, different amount of opinion baked in:

Branch What it is Use when
main Plain GROW (this branch) — neutral templates, no opinion baked in You want a blank framework to fill with your own conventions
karpathy GROW + Andrej Karpathy's four LLM-coding principles pre-loaded into the templates You want sensible LLM-coding guardrails out of the box

The karpathy branch bakes in Think Before Coding, Simplicity First, and Surgical Changes (into WIT.md) plus Goal-Driven Execution — verifiable success criteria and plan→verify steps (into GOAL.md / RESULT.md / OBJECTIVE.md). See that branch's README for the full mapping.

git clone https://git.linhex.com/kannan/GROW.git
cd GROW
git checkout karpathy   # opinionated variant with Karpathy guardrails
git checkout main       # plain base (this branch)

Layout

GROW/
├── README.md        This file — the framework spec.
├── GOAL.md          The north star.
├── RESULT.md        Success criteria & deliverables.
├── OBJECTIVE.md     Concrete, ordered objectives.
└── WIT.md           Ways, Instructions & Tools.