organic-growth 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 lab71.tech
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,112 @@
1
+ # 🌱 Organic Growth
2
+
3
+ [![Test](https://github.com/lab71tech/organic-growth/actions/workflows/test.yml/badge.svg)](https://github.com/lab71tech/organic-growth/actions/workflows/test.yml) [![GitHub Release](https://img.shields.io/github/v/release/lab71tech/organic-growth)](https://github.com/lab71tech/organic-growth/releases)
4
+
5
+ Claude Code setup for incremental software development.
6
+
7
+ Grow features in natural stages, where each stage delivers a complete, working system.
8
+
9
+ Inspired by Alistair Cockburn’s Elephant Carpaccio and the idea that projects grow like plants, rather than being sliced from a finished whole.
10
+
11
+ ## Install
12
+
13
+ ```bash
14
+ # In your project directory:
15
+ bunx organic-growth
16
+
17
+ # Or with npx:
18
+ npx organic-growth
19
+
20
+ # With a product DNA document:
21
+ bunx organic-growth docs/my-product-spec.md
22
+
23
+ # Force overwrite existing files:
24
+ bunx organic-growth --force
25
+ ```
26
+
27
+ This copies the `.claude/` configuration into your project. No runtime dependencies.
28
+
29
+ ## What You Get
30
+
31
+ ```
32
+ .claude/
33
+ ├── CLAUDE.md # Project context template + growth philosophy
34
+ ├── agents/
35
+ │ └── gardener.md # Plans, implements, and validates growth stages
36
+ └── commands/
37
+ ├── seed.md # /seed — bootstrap new project
38
+ ├── grow.md # /grow — plan a new feature
39
+ ├── next.md # /next — implement next stage
40
+ ├── replan.md # /replan — adjust when things change
41
+ └── review.md # /review — deep quality review
42
+ ```
43
+
44
+ ## Workflow
45
+
46
+ ```bash
47
+ # 1. Bootstrap (new project)
48
+ > /seed # interview mode
49
+ > /seed docs/product-dna.md # from existing product document
50
+
51
+ # 2. Grow features
52
+ > /grow Add user authentication
53
+ > /next # stage 1
54
+ > /next # stage 2
55
+ > /next # stage 3
56
+ > /clear # fresh session every 3 stages
57
+ > /review 3 # quality check
58
+ > /next # continue
59
+
60
+ # 3. When reality changes
61
+ > /replan We need to support SSO instead of basic auth
62
+ ```
63
+
64
+ ## Philosophy
65
+
66
+ - **One stage = one intent = one test = one commit**
67
+ - **Rolling plan:** 3-5 stages ahead, re-evaluate every 3
68
+ - **Two-layer quality:** deterministic tools after every stage, LLM review on demand
69
+ - **Context hygiene:** fresh session every 3 stages
70
+ - **Product context required:** fill in CLAUDE.md or provide a DNA document
71
+
72
+ ## After Install
73
+
74
+ 1. Edit `.claude/CLAUDE.md` — fill in the Product section (or run `/seed`)
75
+ 2. Fill in Quality Tools section with your project's lint/test commands
76
+ 3. Start building with `/grow`
77
+
78
+ ## Releases
79
+
80
+ Releases are triggered manually via the [Release](.github/workflows/release.yml) workflow. When triggered, it:
81
+
82
+ 1. Checks for meaningful commits since the last `v*` tag
83
+ 2. Bumps the version in `package.json`
84
+ 3. Commits the version bump and pushes a new `v*` tag
85
+ 4. Creates a GitHub Release with auto-generated release notes
86
+
87
+ The [Publish to npm](.github/workflows/publish.yml) workflow triggers on any `v*` tag push and publishes to npm automatically. The full pipeline is: **manual trigger -> version bump -> tag -> GitHub Release -> npm publish**.
88
+
89
+ ```bash
90
+ # Patch release (default — bug fixes, small changes)
91
+ gh workflow run Release
92
+
93
+ # Minor release (new features, backwards-compatible)
94
+ gh workflow run Release -f bump=minor
95
+
96
+ # Major release (breaking changes)
97
+ gh workflow run Release -f bump=major
98
+
99
+ # Dry run — preview what would be released without making changes
100
+ gh workflow run Release -f dry-run=true
101
+ ```
102
+
103
+ Or use the "Run workflow" button on the Actions tab in GitHub.
104
+
105
+ | Input | Type | Default | Description |
106
+ |-------|------|---------|-------------|
107
+ | `bump` | choice: `patch`, `minor`, `major` | `patch` | Version bump type |
108
+ | `dry-run` | boolean | `false` | When `true`, calculates the version and shows a summary but skips the commit, tag, and release |
109
+
110
+ ## License
111
+
112
+ MIT
package/bin/cli.mjs ADDED
@@ -0,0 +1,175 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { existsSync, mkdirSync, copyFileSync, readFileSync, readdirSync, statSync } from 'fs';
4
+ import { join, dirname, relative } from 'path';
5
+ import { fileURLToPath } from 'url';
6
+ import { createInterface } from 'readline';
7
+
8
+ const __filename = fileURLToPath(import.meta.url);
9
+ const __dirname = dirname(__filename);
10
+ const TEMPLATES_DIR = join(__dirname, '..', 'templates');
11
+ const TARGET_DIR = process.cwd();
12
+
13
+ const RESET = '\x1b[0m';
14
+ const GREEN = '\x1b[32m';
15
+ const YELLOW = '\x1b[33m';
16
+ const CYAN = '\x1b[36m';
17
+ const DIM = '\x1b[2m';
18
+
19
+ function log(msg) { console.log(msg); }
20
+ function success(msg) { log(`${GREEN}✓${RESET} ${msg}`); }
21
+ function warn(msg) { log(`${YELLOW}!${RESET} ${msg}`); }
22
+ function info(msg) { log(`${CYAN}→${RESET} ${msg}`); }
23
+
24
+ async function ask(question) {
25
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
26
+ return new Promise(resolve => {
27
+ rl.question(question, answer => {
28
+ rl.close();
29
+ resolve(answer.trim().toLowerCase());
30
+ });
31
+ });
32
+ }
33
+
34
+ function getAllFiles(dir, base = dir) {
35
+ const files = [];
36
+ for (const entry of readdirSync(dir)) {
37
+ const full = join(dir, entry);
38
+ if (statSync(full).isDirectory()) {
39
+ files.push(...getAllFiles(full, base));
40
+ } else {
41
+ files.push(relative(base, full));
42
+ }
43
+ }
44
+ return files;
45
+ }
46
+
47
+ function readVersion() {
48
+ const pkg = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'), 'utf8'));
49
+ return pkg.version;
50
+ }
51
+
52
+ function printHelp() {
53
+ log('');
54
+ log(`${GREEN}🌱 Organic Growth${RESET} — Claude Code setup for incremental development`);
55
+ log('');
56
+ log(`${CYAN}Usage:${RESET}`);
57
+ log(` npx organic-growth [options] [dna-file.md]`);
58
+ log('');
59
+ log(`${CYAN}Options:${RESET}`);
60
+ log(` -f, --force Overwrite existing files without prompting`);
61
+ log(` -h, --help Show this help message`);
62
+ log(` -v, --version Show version number`);
63
+ log('');
64
+ log(`${CYAN}Arguments:${RESET}`);
65
+ log(` dna-file.md Path to a product DNA document to copy into docs/`);
66
+ log('');
67
+ log(`${CYAN}Examples:${RESET}`);
68
+ log(` npx organic-growth Install templates (prompts on conflicts)`);
69
+ log(` npx organic-growth --force Install templates (overwrite existing)`);
70
+ log(` npx organic-growth spec.md Install templates + copy DNA document`);
71
+ log('');
72
+ }
73
+
74
+ async function install() {
75
+ const args = process.argv.slice(2);
76
+
77
+ if (args.includes('--help') || args.includes('-h')) {
78
+ printHelp();
79
+ return;
80
+ }
81
+
82
+ if (args.includes('--version') || args.includes('-v')) {
83
+ log(readVersion());
84
+ return;
85
+ }
86
+
87
+ const force = args.includes('--force') || args.includes('-f');
88
+ const dna = args.find(a => !a.startsWith('-') && a.endsWith('.md'));
89
+
90
+ log('');
91
+ log(`${GREEN}🌱 Organic Growth${RESET} — Claude Code setup for incremental development`);
92
+ log('');
93
+
94
+ const files = getAllFiles(TEMPLATES_DIR);
95
+ const created = [];
96
+ const skipped = [];
97
+
98
+ for (const file of files) {
99
+ const src = join(TEMPLATES_DIR, file);
100
+ const dest = join(TARGET_DIR, file);
101
+ const destDir = dirname(dest);
102
+
103
+ if (!existsSync(destDir)) {
104
+ mkdirSync(destDir, { recursive: true });
105
+ }
106
+
107
+ if (existsSync(dest) && !force) {
108
+ const answer = await ask(`${YELLOW}!${RESET} ${file} already exists. Overwrite? [y/N] `);
109
+ if (answer !== 'y' && answer !== 'yes') {
110
+ skipped.push(file);
111
+ continue;
112
+ }
113
+ }
114
+
115
+ copyFileSync(src, dest);
116
+ created.push(file);
117
+ }
118
+
119
+ // Create docs/growth/ directory
120
+ const growthDir = join(TARGET_DIR, 'docs', 'growth');
121
+ if (!existsSync(growthDir)) {
122
+ mkdirSync(growthDir, { recursive: true });
123
+ created.push('docs/growth/');
124
+ }
125
+
126
+ // Handle DNA document
127
+ if (dna) {
128
+ const dnaSource = join(TARGET_DIR, dna);
129
+ if (existsSync(dnaSource)) {
130
+ const dnaDest = join(TARGET_DIR, 'docs', 'product-dna.md');
131
+ copyFileSync(dnaSource, dnaDest);
132
+ success(`Product DNA copied from ${dna}`);
133
+ } else {
134
+ warn(`DNA file not found: ${dna}`);
135
+ }
136
+ }
137
+
138
+ log('');
139
+ if (created.length > 0) {
140
+ log(`${GREEN}Installed:${RESET}`);
141
+ for (const f of created) {
142
+ log(` ${DIM}${f}${RESET}`);
143
+ }
144
+ }
145
+ if (skipped.length > 0) {
146
+ log(`${YELLOW}Skipped (already exist):${RESET}`);
147
+ for (const f of skipped) {
148
+ log(` ${DIM}${f}${RESET}`);
149
+ }
150
+ }
151
+
152
+ log('');
153
+ log(`${GREEN}Done!${RESET} Next steps:`);
154
+ log('');
155
+ if (dna) {
156
+ info(`Run ${CYAN}/seed docs/product-dna.md${RESET} to bootstrap from your DNA document`);
157
+ } else {
158
+ info(`Run ${CYAN}/seed${RESET} to bootstrap a new project (interview mode)`);
159
+ info(`Or: ${CYAN}/seed path/to/product-doc.md${RESET} if you have a product document`);
160
+ }
161
+ info(`Edit ${CYAN}.claude/CLAUDE.md${RESET} to fill in your tech stack and quality tools`);
162
+ log('');
163
+ log(`${DIM}Commands available after setup:${RESET}`);
164
+ log(` ${CYAN}/seed${RESET} — bootstrap project (interview or DNA document)`);
165
+ log(` ${CYAN}/grow${RESET} — plan and start a new feature`);
166
+ log(` ${CYAN}/next${RESET} — implement the next growth stage`);
167
+ log(` ${CYAN}/replan${RESET} — re-evaluate when things change`);
168
+ log(` ${CYAN}/review${RESET} — deep quality review of recent stages`);
169
+ log('');
170
+ }
171
+
172
+ install().catch(err => {
173
+ console.error('Error:', err.message);
174
+ process.exit(1);
175
+ });
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "organic-growth",
3
+ "version": "1.0.0",
4
+ "description": "Claude Code setup for incremental software development — grow features in natural stages",
5
+ "bin": {
6
+ "organic-growth": "bin/cli.mjs"
7
+ },
8
+ "files": [
9
+ "bin/",
10
+ "templates/"
11
+ ],
12
+ "keywords": [
13
+ "claude-code",
14
+ "ai",
15
+ "agents",
16
+ "agile",
17
+ "incremental-development",
18
+ "elephant-carpaccio"
19
+ ],
20
+ "scripts": {
21
+ "test": "node --test"
22
+ },
23
+ "license": "MIT",
24
+ "repository": {
25
+ "type": "git",
26
+ "url": "https://github.com/lab71tech/organic-growth"
27
+ }
28
+ }
@@ -0,0 +1,115 @@
1
+ # Project Context
2
+
3
+ ## Product (THE SEED — fill this in)
4
+
5
+ <!-- Without this section, the agent grows weeds. Be brief but specific. -->
6
+ <!-- If you have a full product document, put it in docs/product-dna.md -->
7
+ <!-- This section is the distilled version — what the agent sees always. -->
8
+ <!-- The DNA document is read only during planning (/grow, /replan). -->
9
+
10
+ **What:** [One sentence. What is this product?]
11
+ **For whom:** [Who uses it? What's their context?]
12
+ **Core problem:** [What pain does it solve?]
13
+ **Key domain concepts:** [3-7 terms that someone new needs to understand]
14
+ **Current state:** [Greenfield / MVP exists / Production system]
15
+ **Full DNA:** [docs/product-dna.md if exists, otherwise "N/A"]
16
+
17
+ ## Tech Stack (THE SOIL — auto-discovered, but document the non-obvious)
18
+
19
+ <!-- Claude Code reads your build files. Only add what it CAN'T discover. -->
20
+
21
+ - [Any non-standard commands, e.g.: `./gradlew test --profile staging`]
22
+ - [Unusual conventions, e.g.: "endpoint names in Polish"]
23
+ - [Hard constraints, e.g.: "no Lombok", "Flyway not Liquibase"]
24
+
25
+ ### Quality tools (fill in for your project)
26
+
27
+ <!-- Gardener runs these after every stage. List the exact commands. -->
28
+
29
+ - **Build:** [e.g.: `./gradlew build` or `npm run build`]
30
+ - **Lint:** [e.g.: `./gradlew ktlintCheck` or `npm run lint`]
31
+ - **Type check:** [e.g.: `tsc --noEmit` or N/A for dynamic languages]
32
+ - **Test:** [e.g.: `./gradlew test` or `npm test`]
33
+ - **Smoke:** [e.g.: `curl http://localhost:8080/health` or `npm run dev` + check]
34
+
35
+ ## Priorities (LIGHT & WATER — what matters now)
36
+
37
+ <!-- This changes. Update it when priorities shift. -->
38
+
39
+ - [e.g.: "MVP speed over production polish"]
40
+ - [e.g.: "Must work offline first"]
41
+ - [e.g.: "Security is non-negotiable, even for MVP"]
42
+
43
+ ---
44
+
45
+ # Development Philosophy: Organic Growth
46
+
47
+ Every feature is grown in stages from seed to maturity.
48
+ Each stage produces a complete, working system — not a partial one.
49
+ A seedling is a whole plant, not 10% of a tree.
50
+
51
+ ## Growth Rules
52
+
53
+ 1. **One stage = one intent = one test = one commit**
54
+ - Each stage has a single purpose
55
+ - Each stage has at least one test proving it works
56
+ - Each stage is committed separately with a clear message
57
+ - The app builds, tests pass, and runs after every stage
58
+
59
+ 2. **Rolling plan: 3-5 stages ahead**
60
+ - Never plan more than 5 concrete stages ahead
61
+ - Keep a rough outline of what comes after, but expect it to change
62
+ - Re-evaluate the plan every 3 stages or when something unexpected happens
63
+ - Update `docs/growth/<feature>.md` after every stage
64
+
65
+ 3. **Vertical, not horizontal**
66
+ - Each stage touches all layers needed (API + service + DB + test)
67
+ - No "build all the backend first, then the frontend"
68
+ - Early stages can return hardcoded values — that's natural
69
+ - Growth: hardcoded → configurable → dynamic → optimized
70
+
71
+ 4. **Context hygiene**
72
+ - Start a fresh session every 3 stages
73
+ - The growth plan in `docs/growth/` is the continuity mechanism
74
+ - After `/clear`, run `/next` — the agent reads the plan and continues
75
+
76
+ 5. **Quality gate after every stage**
77
+ - Build must pass
78
+ - Linter must pass (zero new warnings)
79
+ - Type check must pass (if applicable)
80
+ - ALL tests must pass (not just new ones)
81
+ - App must start (health check / smoke test)
82
+ - Fix all failures within the stage — don't carry debt forward
83
+
84
+ 6. **Deep review on demand**
85
+ - Run `/review` after every 3-5 stages or before merging
86
+ - Reviews run with fresh context (no implementation bias)
87
+ - Check: correctness, consistency, simplicity, security, test quality
88
+ - Fix 🔴 issues before continuing growth
89
+
90
+ ## Growth Stage Patterns
91
+
92
+ For **greenfield** projects, first stages always follow this pattern:
93
+ 1. Empty project with passing build
94
+ 2. Hello World endpoint/page (proves the stack works end-to-end)
95
+ 3. First real domain concept with hardcoded data
96
+ 4. Persistence (database, migration, repository)
97
+ 5. First real behavior with real data
98
+
99
+ For **existing** projects, first stages are:
100
+ 1. The simplest possible version of the new behavior (even hardcoded)
101
+ 2. Connect it to existing data/services
102
+ 3. Add the real logic incrementally
103
+
104
+ ## Commit Convention
105
+
106
+ ```
107
+ feat(scope): stage N — <what grew>
108
+
109
+ Growth plan: docs/growth/<feature>.md
110
+ ```
111
+
112
+ ## Growth Plan Location
113
+
114
+ All plans live in `docs/growth/<feature-name>.md`.
115
+ Format documented in the gardener agent.
@@ -0,0 +1,132 @@
1
+ ---
2
+ name: gardener
3
+ description: Plans and implements features as organic growth stages.
4
+ Automatically invoked for incremental feature development.
5
+ Reads product context from CLAUDE.md, manages rolling growth plans,
6
+ implements one stage at a time, and self-validates.
7
+ tools:
8
+ - Read
9
+ - Write
10
+ - Edit
11
+ - Bash
12
+ - Grep
13
+ - Glob
14
+ ---
15
+
16
+ You are a software gardener. You grow features in natural stages —
17
+ each stage produces a complete, living system.
18
+
19
+ # How You Work
20
+
21
+ You have three modes, determined by what you're asked to do:
22
+
23
+ ## Mode: PLAN (invoked by /grow)
24
+
25
+ 0. Read CLAUDE.md — check if the Product section is filled in.
26
+ If it contains placeholders like "[One sentence..." or is empty:
27
+ STOP. Tell the user: "No product context yet. Run /seed first
28
+ to plant the seed, or tell me about the project and I'll fill
29
+ it in now." If the user describes the project, fill in the
30
+ Product/Tech Stack/Priorities sections before continuing.
31
+ 1. Read CLAUDE.md to understand the product (seed), stack (soil),
32
+ and priorities (light & water)
33
+ 2. Check if `docs/product-dna.md` exists. If yes, read it —
34
+ it contains the full domain knowledge, business rules, and
35
+ invariants. Use it to make informed planning decisions.
36
+ If no, CLAUDE.md Product section is sufficient.
37
+ 3. Explore the codebase to understand current state
38
+ 4. Ask the user 2-3 clarifying questions — no more.
39
+ Focus on: acceptance criteria, constraints, riskiest part.
40
+ 4. Create a growth plan in `docs/growth/<feature-name>.md`:
41
+
42
+ ```markdown
43
+ # Feature: <name>
44
+ Created: <date>
45
+ Status: 🌱 Growing
46
+
47
+ ## Seed (what & why)
48
+ <one paragraph: what this feature does and why it matters>
49
+
50
+ ## Growth Stages
51
+
52
+ ### Concrete (next 3-5 stages, detailed)
53
+ - ⬜ Stage 1: <description>
54
+ - Intent: <what this achieves>
55
+ - Verify: <how to check it works>
56
+ - Touches: <which areas of the code>
57
+
58
+ - ⬜ Stage 2: ...
59
+
60
+ ### Horizon (rough outline of what comes after)
61
+ - <rough stage description>
62
+ - <rough stage description>
63
+ - ...
64
+
65
+ ## Growth Log
66
+ <!-- Auto-updated after each stage -->
67
+ ```
68
+
69
+ ### Planning Principles
70
+ - First stage is always the simplest possible thing that proves
71
+ the idea works end-to-end (even with hardcoded values)
72
+ - Order by: risk reduction first, then user value
73
+ - Each stage must be vertical (touch all necessary layers)
74
+ - If a stage feels bigger than "one intent" — split it
75
+ - For greenfield: follow the greenfield pattern from CLAUDE.md
76
+
77
+ ## Mode: GROW (invoked by /next)
78
+
79
+ 1. Read the growth plan from `docs/growth/`
80
+ 2. Find the next ⬜ stage
81
+ 3. Check the stage counter:
82
+ - If this is stage 3, 6, 9... → re-evaluate the plan first
83
+ (are remaining stages still correct? adjust if needed)
84
+ 4. Implement ONLY this stage:
85
+ a. Write the code
86
+ b. Write/update at least one test
87
+ c. Quality gate — run ALL checks, fix before proceeding:
88
+ - Build: verify it compiles (`./gradlew build`, `npm run build`, etc.)
89
+ - Lint: run the project linter (`./gradlew ktlintCheck`, `npm run lint`, etc.)
90
+ - Type check: if applicable (`tsc --noEmit`, strict mode, etc.)
91
+ - Tests: ALL tests pass, not just new ones
92
+ - Smoke: app starts, health endpoint responds (or equivalent)
93
+ d. If any check fails — fix it within this stage, don't leave it
94
+ for the next one. Quality debt doesn't carry forward.
95
+ 5. Self-review (quick, not a full code review):
96
+ - Is this stage vertical? (touches all needed layers)
97
+ - Did I only implement ONE intent?
98
+ - Did I smuggle in work from future stages?
99
+ - If I failed any check → fix before proceeding
100
+ 6. Update the growth plan:
101
+ - Mark stage as ✅ with brief note of what was done
102
+ - Add entry to Growth Log with date
103
+ - If this was a re-evaluation point, update upcoming stages
104
+ 7. Commit: `feat(scope): stage N — <what grew>`
105
+ 8. Report:
106
+ - What grew
107
+ - What's next
108
+ - Progress: "Stage 4/~12 — 🌱🌱🌱🌱⬜⬜⬜⬜..."
109
+ - If stage counter is multiple of 3: recommend `/clear` + new session
110
+
111
+ ## Mode: REPLAN (invoked by /replan)
112
+
113
+ 1. Read the current growth plan
114
+ 2. Read the user's reason for replanning
115
+ 3. If `docs/product-dna.md` exists, consult it — the reason for
116
+ replanning may relate to domain rules or business invariants
117
+ 4. Assess current state: what's built, what works, what changed
118
+ 5. Rewrite the Concrete stages (next 3-5) from current state
119
+ 6. Update the Horizon section
120
+ 7. Do NOT undo or modify completed stages
121
+ 8. Report what changed and why
122
+
123
+ # Critical Rules
124
+
125
+ - NEVER implement more than one stage per /next invocation
126
+ - NEVER plan more than 5 concrete stages ahead
127
+ - ALWAYS run build + tests + smoke check before committing
128
+ - ALWAYS update the growth plan after each stage
129
+ - If a stage reveals the plan is wrong, STOP and replan before continuing
130
+ - Hardcoded values are natural in early stages — don't optimize prematurely
131
+ - The growth plan file is the source of truth, not your memory
132
+ - If you don't understand the domain, ASK — don't guess
@@ -0,0 +1,11 @@
1
+ ---
2
+ description: Plan and start growing a new feature from seed
3
+ ---
4
+
5
+ Grow a new feature using the Organic Growth approach.
6
+
7
+ 1. Use the gardener agent in PLAN mode
8
+ 2. Feature to grow: $ARGUMENTS
9
+ 3. After the plan is created and approved, ask:
10
+ "Plan ready. Start growing stage 1?"
11
+ 4. If yes, immediately proceed with GROW mode for stage 1
@@ -0,0 +1,12 @@
1
+ ---
2
+ description: Grow the next stage from the current growth plan
3
+ ---
4
+
5
+ Continue growing: implement the next stage from the active growth plan.
6
+
7
+ 1. Find the active plan in docs/growth/
8
+ 2. Use the gardener agent in GROW mode
9
+ 3. If no plan exists, tell the user to run /grow first
10
+ 4. If all stages are done, congratulate and suggest what might grow next
11
+
12
+ Feature filter (optional): $ARGUMENTS
@@ -0,0 +1,10 @@
1
+ ---
2
+ description: Re-evaluate the growth plan when reality changes
3
+ ---
4
+
5
+ Something changed. Re-evaluate the growth plan from current state.
6
+
7
+ 1. Find the active plan in docs/growth/
8
+ 2. Use the gardener agent in REPLAN mode
9
+ 3. Reason for replanning: $ARGUMENTS
10
+ 4. If no reason given, ask: "What changed?"
@@ -0,0 +1,64 @@
1
+ ---
2
+ description: Deep quality review of recent growth stages (fresh context, no implementation bias)
3
+ ---
4
+
5
+ Review code quality of recent stages. Run this after several stages
6
+ or before merging — it provides a second opinion with zero bias from
7
+ the implementation session.
8
+
9
+ 1. Determine scope:
10
+ - If $ARGUMENTS contains a number (e.g., `/review 3`): review last N stages
11
+ - If $ARGUMENTS contains a feature name: review that feature's stages
12
+ - Default: review all stages since last review (or last 5, whichever is smaller)
13
+
14
+ 2. Read the growth plan to understand intent of each reviewed stage.
15
+
16
+ 3. For each stage in scope, examine the git diff and review for:
17
+
18
+ **Correctness:**
19
+ - Does the code actually do what the stage intended?
20
+ - Are there logic errors, off-by-one, null cases?
21
+ - Do the tests test the right thing? (not just "test exists")
22
+
23
+ **Consistency:**
24
+ - Does new code follow the same patterns as existing code?
25
+ - Naming conventions, error handling style, project structure
26
+ - If `docs/product-dna.md` exists: do domain terms match?
27
+
28
+ **Simplicity:**
29
+ - Is anything over-engineered for the current stage?
30
+ - Code that belongs in future stages?
31
+ - Unnecessary abstractions or premature optimization?
32
+
33
+ **Security basics:**
34
+ - SQL injection, XSS, hardcoded secrets
35
+ - Auth/authz gaps if relevant
36
+ - Input validation
37
+
38
+ **Test quality:**
39
+ - Do tests break if the feature is removed? (vs always-green tests)
40
+ - Are edge cases covered?
41
+ - Test readability — can someone understand intent from the test?
42
+
43
+ 4. Output a review report:
44
+
45
+ ```
46
+ ## Review: <feature> — stages N-M
47
+
48
+ ### 🟢 Good
49
+ - <what's well done — be specific>
50
+
51
+ ### 🟡 Suggestions
52
+ - <improvements, not blockers>
53
+ - <file:line — what to consider>
54
+
55
+ ### 🔴 Issues
56
+ - <things that should be fixed before continuing>
57
+ - <file:line — what's wrong and why>
58
+
59
+ ### Verdict: ✅ Continue / ⚠️ Fix before next stage / 🔴 Stop and address
60
+ ```
61
+
62
+ 5. If there are 🔴 Issues, offer to fix them now.
63
+
64
+ Scope: $ARGUMENTS
@@ -0,0 +1,44 @@
1
+ ---
2
+ description: Bootstrap a new project — from DNA document or interview
3
+ ---
4
+
5
+ Plant the seed for a new project.
6
+
7
+ 1. Check if a product DNA document was provided (as $ARGUMENTS path or attachment).
8
+ Also check if `docs/product-dna.md` already exists.
9
+
10
+ **Path A — DNA exists:**
11
+ - Read the document
12
+ - Distill it into CLAUDE.md Product section (~10 lines: what, for whom,
13
+ core problem, key domain concepts, current state)
14
+ - Copy/move the full document to `docs/product-dna.md` if not already there
15
+ - Confirm with the user: "Here's what I extracted. Anything to adjust?"
16
+
17
+ **Path B — No DNA:**
18
+ - Interview the user. Ask these questions ONE AT A TIME:
19
+ - What are you building? (one sentence)
20
+ - Who is it for? What's their context?
21
+ - What core problem does it solve?
22
+ - What tech stack do you want? (or: should I suggest one?)
23
+ - Any hard constraints? (hosting, budget, compliance, language)
24
+ - What's the priority: speed to MVP, production quality, or learning?
25
+ - Fill in CLAUDE.md Product section from answers
26
+
27
+ 2. In both paths, also fill in:
28
+ - Tech Stack (THE SOIL): from DNA or interview + scan of existing project files
29
+ - Priorities (LIGHT & WATER): from DNA or interview
30
+
31
+ 3. Check if CLAUDE.md already has a filled Product section.
32
+ If yes, ask: "Product context already exists. Overwrite or update?"
33
+
34
+ 4. Generate `docs/growth/project-bootstrap.md` — the first growth plan:
35
+ - Stage 1: Initialize project (build tool, dependencies, empty build passes)
36
+ - Stage 2: Hello World endpoint/page (proves stack works end-to-end)
37
+ - Stage 3: First domain concept with hardcoded data
38
+ - Stage 4: Persistence (database, migration, first real data)
39
+ - Stage 5: First real behavior with real data
40
+ Adjust these based on the specific stack and domain from DNA/interview.
41
+
42
+ 5. Ask: "Seed planted. Start growing stage 1?"
43
+
44
+ Input: $ARGUMENTS