GARDEN supports Claude Code and Codex CLI. uv must be on PATH for either harness:
bundled Python entry points run through uv run --no-project. See GARDEN principles for the methodology.
1. Confirm the prerequisite
Install uv and make it available on PATH before adding the plugin in either harness.
- Action: confirm that
uvis available in the shell used for Claude Code or Codex CLI. - Acceptance signal:
uvresolves onPATHbefore any bundled Python entry point runs.
2. Add the marketplace
Claude Code
Add the GARDEN marketplace. Pass --scope user|project|local to choose where it is
registered; the default is user.
claude plugin marketplace add vshuraeff/garden
Codex CLI
Add the same marketplace to Codex CLI. The command also accepts a local path or full
Git URL, with --ref or --sparse when needed.
codex plugin marketplace add vshuraeff/garden
- Action: add the
gardenmarketplace in each harness where the plugin is needed. - Acceptance signal:
claude plugin marketplace listandcodex plugin marketplace listeach show a marketplace namedgarden.
3. Install the plugin
Claude Code
Install the marketplace-qualified plugin name. Pass -s user|project|local to set the
install scope. You can instead select the plugin from the interactive /plugin menu.
claude plugin install garden@garden
Start a new Claude Code session after installing. Its first interactive load presents a trust prompt; accept it only after reviewing the plugin source.
Codex CLI
Install the plugin from the marketplace.
codex plugin add garden@garden
Start a new Codex session after installing. Hooks are skipped until trusted; run
/hooks, inspect the source and command, then trust the hashes.
- Action: install
garden@gardenin the selected harness, using a Claude Code scope flag when required, then start a new session. - Acceptance signal:
claude plugin listshowsgardenin Claude Code;codex plugin list --marketplace gardenand/pluginsshow it in Codex CLI. Confirm that the MCP toolsgarden_inspect_projectandgarden_check_fileare available.
4. Pin the plugin for a team or project
This Claude Code-specific configuration declares the GARDEN marketplace and enables the plugin for a repository. It also enables automatic marketplace updates.
{
"extraKnownMarketplaces": {
"garden": {
"source": { "source": "github", "repo": "vshuraeff/garden" },
"autoUpdate": true
}
},
"enabledPlugins": { "garden@garden": true }
}
- Action: merge this configuration with the project's existing
.claude/settings.json, preserving unrelated settings. - Acceptance signal: the project configuration names
garden@gardeninenabledPlugins, and a new project-scoped Claude Code session resolves the marketplace.
5. Know what the plugin ships
Installing garden provides six skills: garden:bootstrap, garden:retrofit,
garden:review, garden:audit, garden:start, and garden:stop.
The plugin includes the read-only garden-reviewer agent. Claude Code loads its
Markdown agent from the plugin package. Codex CLI requires garden:start to install
the project-scoped .codex/agents/garden-reviewer.toml agent.
The garden MCP server runs tools/garden_mcp.py over stdio and exposes the read-only
garden_inspect_project and garden_check_file tools. In Claude Code, use /mcp to
confirm that the server is available.
The manifest-registered garden-check.sh PostToolUse hook is a thin wrapper running
garden_hook.py, backed by garden_core.py. It is a
no-op until naming-registry.txt exists at the project root. Once it exists, it blocks
when root CONTEXT.md exceeds 200 lines or a CONTRACT.md does not start with
Version: MAJOR.MINOR.PATCH; it gives advisory nudges for a missing per-capability
CONTRACT.md or missing colocated tests.
- Action: inspect the installed skills, agent delivery, MCP server, and hook behavior before adopting GARDEN in a project.
- Acceptance signal: Claude Code shows the
gardenMCP server in/mcp; the hook has no effect until the project containsnaming-registry.txt.
6. Start a GARDEN adoption in a project
Use garden:bootstrap for a new project and garden:retrofit for an existing codebase.
New project:
Use the garden:bootstrap skill to set up this new project under GARDEN: propose a
slice map for <short product description>, create the naming registry, root
CONTEXT.md, one directory per slice with README and CONTRACT.md, and wire the CI
gates in the prescribed order. Ask me before finalizing the slice map.
Existing codebase:
Use the garden:retrofit skill to begin adopting GARDEN in this repository: measure
the baseline, propose the first slice to extract, add contracts at its seams, set
the lint ratchet to warn, and log every decision to retrofit-log.md. Do not
restructure anything outside the first slice.
garden:start asks whether to install for Claude Code, Codex CLI, or both, then runs
uv run --no-project <plugin-root>/tools/garden_project.py install --root <project-root> --harness <claude|codex|both>.
For Claude Code it installs the owned, SHA-256 digest-marked .claude/rules/garden.md.
For Codex CLI it appends an owned, digest-marked block to the project-root AGENTS.md
and installs .codex/agents/garden-reviewer.toml. The installer refuses to touch
unmanaged or hand-edited content that it does not own.
After selecting Codex CLI, start a new Codex session and inspect the project-scoped
reviewer through /agent.
Codex installs a cached plugin copy. During local plugin development, bump the shared
version with uv run --no-project plugins/garden/tools/plugin_version.py bump patch
and reinstall the plugin.
- Action: use the matching prompt, then run
garden:startand select the harness or harnesses that need project-scoped artifacts. - Acceptance signal: bootstrap creates the naming registry, root
CONTEXT.md, slice READMEs andCONTRACT.mdfiles, and stack-compatible CI gates; retrofit records three dated baselines, creates the first slice and its seam contracts, applies the lint ratchet, and writesretrofit-log.mddecisions. With Codex CLI selected, a new session showsgarden-reviewerin/agent.
7. Use the plugin day to day
Run garden:review before merging a change. For example, prompt either harness with
Run garden:review on the current diff. Run garden:audit periodically for a full
compliance audit. Once naming-registry.txt exists, the PostToolUse gate runs after
matching tool use; it has no manual invocation.
- Action: review each proposed merge with
garden:reviewand schedulegarden:auditfor broader compliance checks. - Acceptance signal: review findings cite the current diff and audit findings cite the compliance checklist; the PostToolUse hook reports any applicable hard-gate failure.
8. Update the plugin
Claude Code
Update the marketplace, then the installed plugin, and start a new Claude Code session.
Alternatively, use autoUpdate: true in the Claude Code configuration from step 4.
claude plugin marketplace update garden
claude plugin update garden
Codex CLI
Codex CLI has no dedicated plugin update command. Its available command set implies
refreshing the marketplace snapshot, then rerunning the install command to reinstall
from that snapshot. Omit garden from the first command to upgrade all configured Git
marketplaces.
codex plugin marketplace upgrade garden
codex plugin add garden@garden
- Action: use the two commands for the selected harness in the order shown; start a new Claude Code session after its update.
- Acceptance signal:
claude plugin details gardenshows the updated installed plugin, andcodex plugin list --marketplace gardenshows the reinstalled Codex CLI plugin.
9. Remove or pause the plugin
Run garden:stop before removing the plugin. It asks which harnesses to remove and
runs garden_project.py remove --harness <claude|codex|both>, removing only the owned,
digest-marked artifacts that it installed. It does not touch naming-registry.txt,
CONTEXT.md, CONTRACT.md files, slice directories, or retrofit-log.md.
Claude Code
To pause the plugin, run claude plugin disable garden; re-enable it with
claude plugin enable garden. Remove it with claude plugin uninstall garden, then
remove the marketplace with claude plugin marketplace remove garden. Start a new
Claude Code session after disabling, enabling, uninstalling, or removing the marketplace.
If needed, remove the leftover cache:
rm -rf ~/.claude/plugins/cache/garden/garden/
Removing the marketplace already removes ~/.claude/plugins/marketplaces/garden/.
Codex CLI
Codex CLI has no disable or enable command; removal is its only plugin-management lever. Remove the plugin from local configuration and cache, then remove the marketplace when it is no longer needed.
codex plugin remove garden@garden
codex plugin marketplace remove garden
Methodology artifacts are deliberately never removed: naming-registry.txt,
CONTEXT.md, CONTRACT.md files, slice READMEs, and retrofit-log.md are project
content. Removing naming-registry.txt alone deactivates the PostToolUse hook; deleting
the remaining artifacts is a manual editorial decision.
- Action: run
garden:stopfor the installed harness or harnesses, then pause or remove the plugin and marketplace as needed. - Acceptance signal:
claude plugin listorcodex plugin list --marketplace gardenno longer showsgarden, the marketplace is absent, and methodology artifacts remain unless manually removed.
Next steps
- Learn the principles through Getting started with GARDEN.
- Apply GARDEN to a new codebase with How to apply GARDEN to a new project.
- Adopt GARDEN incrementally with How to retrofit GARDEN onto a legacy codebase.