| .gitignore | ||
| GOAL.md | ||
| OBJECTIVE.md | ||
| README.md | ||
| RESULT.md | ||
| WIT.md | ||
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
- Load
GOAL.md— internalize the north star and the non-goals. - Load
WIT.md— learn the rules of the road before touching anything. - Pick from
OBJECTIVE.md— take the next open objective, respecting dependencies. - Check against
RESULT.md— verify the work meets the success criteria before calling it done. - 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.