# Grove Config

> Use when configuring Grove for a repository that does not yet have a `.grove/config.json`, or when a user asks to configure Grove in their project

- Skill: `chrisbanes/grove-config` (Agent Skill)
- Install (CLI): `npx skillmds@latest add chrisbanes/grove-config`
- Raw SKILL.md: https://api.skillmd.com/api/skills/chrisbanes/grove-config/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: chrisbanes (https://skillmd.com/u/chrisbanes)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/chrisbanes/grove-config

---


I'm using the grove-config skill to set up Grove for this project.

## Workflow

### Step 1: Verify git repo

```bash
git rev-parse --show-toplevel
```

If the command fails, stop. Grove requires a git repository.

### Step 2: Check if already initialized

```bash
test -f .grove/config.json
```

If `.grove/config.json` exists, report that Grove is already initialized and ask the user whether they want to re-initialize. Stop unless they confirm.

### Step 3: Detect build system

Scan for marker files in the following priority order. Use the first match. If multiple top-level markers exist, ask the user which is the primary build system.

| Build System | Marker File(s) | Warmup Command | Post-Clone Hook |
|---|---|---|---|
| Gradle | `build.gradle.kts` or `build.gradle` | `./gradlew assemble` | Clean lock files, `configuration-cache` |
| Node.js | `package.json` | `npm run build` | Clean `node_modules/.cache` |
| Rust | `Cargo.toml` | `cargo build` | Clean `target/debug/incremental` |
| Go | `go.mod` | `go build ./...` | Minimal — Go handles relocatable caches well |
| Python | `pyproject.toml` or `requirements.txt` | `poetry install` or `pip install -e .` | Clean `__pycache__` dirs |
| C/C++ | `Makefile` or `CMakeLists.txt` | `make` or `cmake --build build` | Project-specific |

If no marker is found, ask the user to provide a warmup command.

### Step 4: Present proposed config for confirmation

Show the user:
- Warmup command
- Workspace directory (default: system temp under a grove subdirectory)
- Post-clone hook content

Ask for confirmation before proceeding.

### Step 5: Run grove config

```bash
grove config --warmup-command "<cmd>"
```

### Step 6: Write post-clone hook

Write the post-clone hook script to `.grove/hooks/post-clone` and make it executable:

```bash
chmod +x .grove/hooks/post-clone
```

### Step 7: Suggest git add

Tell the user to commit the Grove configuration:

```bash
git add .grove/config.json .grove/hooks/
git commit -m "chore: add Grove configuration"
```

## Quick Reference

| Command | Purpose |
|---|---|
| `grove config --warmup-command "<cmd>"` | Initialize Grove |
| `grove update` | Refresh golden copy build state |

## Common Mistakes

- **Running `grove config` outside a git repo** — Grove requires git; always verify first.
- **Skipping the post-clone hook** — without it, workspaces inherit stale lock files or cache artifacts.
- **Not committing `.grove/`** — commit so collaborators and CI get the same warmup behavior.

## Red Flags

- `grove config` fails with a permissions error — check `grove` is installed and the user has write access.
- Warmup command exits non-zero during `grove config` — fix unresolved dependencies before initializing.
- Multiple `package.json` and `build.gradle` at the root — polyglot monorepo; ask which is primary.

## Integration

- **Standalone** — not called by other skills automatically
- **Suggested by:** `grove:using-grove` when `.grove/config.json` is not found
- **Invoked via:** `/grove-config` slash command

