Grove gives your coding agent a whole project, ready to build: what to build, why, and the decisions already made. This guide gets you from install to your first linked pull request.
You need a Grove account first. If you don't have one, ask a workspace admin to invite you.
1. Install the Grove CLI
In Grove, click your picture at the bottom right, then Connect your agent.
Open the Build from specs tab.
Copy the install command under Install the Grove CLI, and run it in your terminal.
The CLI needs Node.js 22 or later. On Windows, run the command in WSL or Git Bash.
If your terminal doesn't recognize grove after the install, add this line to your shell startup file (~/.zshrc for zsh, ~/.bashrc for bash), then open a new terminal:
export PATH="$HOME/.grove/bin:$PATH"
2. Log in
Run:
grove login
Your browser opens. Sign in with your Grove account. When you're done, the terminal shows which account you're logged in as.
3. Set up Grove in your repo
You do this once for each repo. Paste this prompt to your coding agent:
Set Grove up in this repo: install the Grove CLI if it isn't already, run `grove init`, do what it says, and open a PR for it.
Your agent adds a short instruction to the repo's agent files: CLAUDE.md, AGENTS.md, and GEMINI.md. The instruction tells every coding agent to run grove before it starts work. Merge the pull request.
Grove keeps its working files in a .grove/ folder in your repo. Add .grove/ to your .gitignore.
4. Pick up a project
Start a new branch or worktree for the work. Your coding agent runs grove first. Grove then names the project this worktree belongs to. If no project is picked yet, Grove helps your agent find one.
You can also ask your agent: "What projects are available in Grove? Pick up the first one that's ready to build." Or run the commands yourself:
grove project list --status ready
grove project view P-003
grove project assign P-003
grove project assign does three things:
It copies the project's documents into your worktree, under
.grove/project/.It moves the project to Building, so your product lead can see the work has started.
It adds you to the project's Members.
Tip: Put the project ID in your branch name, such as p-003-move-a-visit. Grove then finds the project for you.
If the work doesn't belong to any project, run grove project assign --none.
5. Build from the plan
Your agent builds from the documents in .grove/project/: the project's outcomes and its Requirements. The requirements hold the product decisions. The technical approach is up to you.
If the product lead changes the plan while you build, grove tells your agent the project is behind. Ask your agent: "The requirements changed. Pull the latest and adjust your plan accordingly." Or run:
grove project sync P-003
6. Ask instead of guessing
When the plan is unclear, don't guess. Have your agent raise a thread. The thread goes to the project in Grove, where your product lead answers it:
grove thread raise P-003 --message "Can a customer move a visit to a different pro?"
Read the answer with grove thread list P-003 and grove thread show <thread ID>.
7. Link your pull request
Link each pull request to its project, so Grove can track it. Do any one of these:
Put the project ID in the branch name or the PR title.
Write
Part of P-003in the PR description.
Then tell Grove which outcomes the pull request delivers. Add a claims block to the PR description, and quote each outcome's bold short name from the plan exactly:
<!-- grove:claims v1 -->
project: P-003
- completes: "Move a visit myself."
- advances: "See the change on my schedule." — schedule view only
<!-- /grove:claims -->
Use completes when the pull request finishes an outcome, and advances when it moves an outcome forward. Or ask your agent: "Open a PR for this work, and declare which outcomes it delivers so it shows up in Grove."
8. After you merge
Grove reads the merged code and checks it against each outcome you claimed. Your product lead sees the result next to each outcome, then checks the work and marks it done.
This needs GitHub connected to your workspace. A workspace admin connects it.

