Grove Issues
Turn a brain dump into a clean issue backlog. You receive a messy list of TODOs and produce properly labeled, well-structured GitHub issues ready for the Lattice Kanban board.
When to Activate
- User provides a batch of TODOs, tasks, or ideas in a single message
- User explicitly calls
/grove-issues
- User says something like "create issues for these" or "turn these into tickets"
- User pastes a list of things they want tracked
The Pipeline
Brain Dump → Parse → Deduplicate → Create Issues → Label → Report
Step 1: Parse the Brain Dump
Break the user's message into discrete, actionable issues. Each issue should represent ONE piece of work. If a TODO is too broad, split it. If two TODOs are the same thing, merge them.
Parsing signals:
- Numbered lists → one issue per item
- Bullet points → one issue per bullet
- Paragraphs separated by newlines → one issue per paragraph
- Comma-separated items → one issue per item
- Stream-of-consciousness → use judgment to split at logical boundaries
Step 2: Check for Duplicates
Before creating any issue, search existing open issues for overlap:
gh issue list --state open --limit 100 --json number,title | jq -r '.[].title'
If a TODO matches an existing issue closely, skip it and note the existing issue number in your report. Don't create duplicates.
Step 3: Determine Labels
Each issue gets up to 3 labels:
Component Labels (pick 1-3)
| Label |
When to Apply |
lattice |
Framework, monorepo, shared infrastructure, engine package |
heartwood |
Auth, sessions, passkeys, OAuth, identity |
arbor |
Admin panel, backend API, admin dashboard |
amber |
Images, CDN, R2 storage, JXL, media pipeline |
clearing |
Status page, health monitoring, uptime |
shade |
AI crawler protection, bot defense, rate limiting |
plant |
Pricing, billing, LemonSqueezy, storefront, signup |
ivy |
Email, Resend, notifications, messaging |
foliage |
Theming, design tokens, per-tenant customization |
curio |
Museum exhibits, content display, guestbook |
meadow |
Social features, community feed |
forests |
Forest page, community groves, property showcase |
vine |
Content relationships, margin notes, connections |
graft |
Feature flags, gradual rollout, A/B testing |
petal |
Content moderation, CSAM detection, PhotoDNA |
lumen |
AI assistant, LLM routing, AI gateway |
mycelium |
MCP servers, inter-service networking |
patina |
Backups, cold storage, data preservation |
landing |
Landing site, marketing pages, knowledge base |
Pattern Labels (pick 0-2, in addition to component labels)
Patterns are reusable architectural solutions. Apply when the issue involves implementing or extending a pattern.
| Label |
When to Apply |
pattern:firefly |
Ephemeral server infrastructure (ignite, illuminate, fade lifecycle) |
pattern:loom |
Durable Objects coordination (SessionDO, TenantDO, PostDO) |
pattern:prism |
Glassmorphism design system, seasonal theming, UI layers |
pattern:sentinel |
Load testing, scale validation, ramp-up testing |
pattern:songbird |
Prompt injection protection (canary, kestrel, robin layers) |
pattern:threshold |
Rate limiting, abuse prevention, graduated response |
Type Labels (pick exactly 1)
| Label |
When to Apply |
bug |
Something is broken or wrong |
feature |
New capability that doesn't exist yet |
enhancement |
Improvement to existing functionality |
security |
Security concern, vulnerability, hardening |
documentation |
Docs, guides, help articles |
Priority (only if explicitly stated by user)
Don't guess priority. Only apply if the user explicitly says something is urgent, critical, or low-priority.
Step 4: Write the Issue Body
Use this template for every issue:
## Summary
[1-3 sentences describing what needs to be done and why]
## Acceptance Criteria
- [ ] [Specific, verifiable criterion]
- [ ] [Another criterion]
- [ ] [Keep to 3-6 items]
## Context
- [Relevant technical context]
- [Dependencies or related issues if known]
- [Any constraints mentioned by the user]
Writing guidelines:
- Summary should answer "what" and "why" in plain language
- Acceptance criteria should be checkbox items that can be verified as done/not-done
- Context is optional but helpful for implementation details
- Keep the whole body under 20 lines. Concise beats comprehensive.
- Don't pad with boilerplate. If there's no useful context, skip that section.
Step 5: Create the Issues
gh issue create \
--title "Title in imperative mood" \
--body "$(cat <<'EOF'
## Summary
...
## Acceptance Criteria
- [ ] ...
## Context
- ...
EOF
)" \
--label "component1,type1"
Title guidelines:
- Imperative mood: "Add X" not "Adding X" or "X should be added"
- Specific: "Add glass overlay to Forest page sections" not "Forest page improvements"
- No
[FEATURE] or [BUG] prefixes (labels handle categorization)
- Under 60 characters when possible
Step 6: Report Back
After creating all issues, give the user a summary table:
Created X issues:
| # | Title | Labels |
|---|-------|--------|
| #531 | Add glass overlay to Forest page | forests, enhancement |
| #532 | Fix tooltip positioning on mobile | lattice, bug |
...
Skipped (duplicates of existing issues):
- "Cache purge tool" → already tracked in #527
Edge Cases
Vague TODOs
If a TODO is too vague to create a good issue ("fix the thing", "make it better"), ask the user for clarification rather than creating a bad issue. Group vague items and ask once.
Huge Batches (20+)
For very large batches, create issues in groups of 10 to avoid rate limiting. Pause between batches.
Mixed Priorities
If the user marks some items as urgent/first-focus vs backlog, note this in Context but don't apply priority labels unless they use explicit priority language.
Implementation Details in the Brain Dump
If the user includes HOW to do something (not just WHAT), capture those details in the Context section. The acceptance criteria should still focus on the outcome, not the approach.
Anti-Patterns
Don't do these:
- Don't create issues with only a title and no body
- Don't apply more than 3 component labels (if it touches everything, it's probably
lattice)
- Don't guess at acceptance criteria you can't verify. "Works well" is not a criterion. "Renders correctly on mobile viewport" is.
- Don't create issues for things that are already done
- Don't pad issues with generic criteria like "code is well-documented" or "tests pass"
- Don't add
priority-critical unless the user explicitly says something is critical/urgent
Example
User says:
ok so I need to: fix the broken image on the pricing page, add a dark mode toggle to the knowledge base, wire up the new health endpoint for blog-engine, and eventually we should think about adding RSS feeds to meadow
You create:
- "Fix broken image on pricing page" —
plant, bug
- "Add dark mode toggle to knowledge base" —
landing, enhancement
- "Wire health endpoint for blog-engine into Clearing" —
clearing, feature
- "Add RSS feed support to Meadow" —
meadow, feature
Each with proper Summary, Acceptance Criteria, and Context.
A clean backlog is a calm mind. Turn the chaos into clarity.
1---2name: grove-issues3description: Parse a brain dump of TODOs into properly structured GitHub issues with labels, components, and project board placement. Use when the user provides a batch of tasks, ideas, or TODOs that need to become trackable GitHub issues.4---5
6# Grove Issues
7
8Turn a brain dump into a clean issue backlog. You receive a messy list of TODOs and produce properly labeled, well-structured GitHub issues ready for the Lattice Kanban board.
9
10## When to Activate
11
12- User provides a batch of TODOs, tasks, or ideas in a single message
13- User explicitly calls `/grove-issues`
14- User says something like "create issues for these" or "turn these into tickets"
15- User pastes a list of things they want tracked
16
17---
18
19## The Pipeline
20
21```
22Brain Dump → Parse → Deduplicate → Create Issues → Label → Report
23```
24
25### Step 1: Parse the Brain Dump
26
27Break the user's message into discrete, actionable issues. Each issue should represent ONE piece of work. If a TODO is too broad, split it. If two TODOs are the same thing, merge them.
28
29**Parsing signals:**
30- Numbered lists → one issue per item
31- Bullet points → one issue per bullet
32- Paragraphs separated by newlines → one issue per paragraph
33- Comma-separated items → one issue per item
34- Stream-of-consciousness → use judgment to split at logical boundaries
35
36### Step 2: Check for Duplicates
37
38Before creating any issue, search existing open issues for overlap:
39
40```bash
41gh issue list --state open --limit 100 --json number,title | jq -r '.[].title'
42```
43
44If a TODO matches an existing issue closely, skip it and note the existing issue number in your report. Don't create duplicates.
45
46### Step 3: Determine Labels
47
48Each issue gets up to 3 labels:
49
50#### Component Labels (pick 1-3)
51
52| Label | When to Apply |
53|-------|---------------|
54| `lattice` | Framework, monorepo, shared infrastructure, engine package |
55| `heartwood` | Auth, sessions, passkeys, OAuth, identity |
56| `arbor` | Admin panel, backend API, admin dashboard |
57| `amber` | Images, CDN, R2 storage, JXL, media pipeline |
58| `clearing` | Status page, health monitoring, uptime |
59| `shade` | AI crawler protection, bot defense, rate limiting |
60| `plant` | Pricing, billing, LemonSqueezy, storefront, signup |
61| `ivy` | Email, Resend, notifications, messaging |
62| `foliage` | Theming, design tokens, per-tenant customization |
63| `curio` | Museum exhibits, content display, guestbook |
64| `meadow` | Social features, community feed |
65| `forests` | Forest page, community groves, property showcase |
66| `vine` | Content relationships, margin notes, connections |
67| `graft` | Feature flags, gradual rollout, A/B testing |
68| `petal` | Content moderation, CSAM detection, PhotoDNA |
69| `lumen` | AI assistant, LLM routing, AI gateway |
70| `mycelium` | MCP servers, inter-service networking |
71| `patina` | Backups, cold storage, data preservation |
72| `landing` | Landing site, marketing pages, knowledge base |
73
74#### Pattern Labels (pick 0-2, in addition to component labels)
75
76Patterns are reusable architectural solutions. Apply when the issue involves implementing or extending a pattern.
77
78| Label | When to Apply |
79|-------|---------------|
80| `pattern:firefly` | Ephemeral server infrastructure (ignite, illuminate, fade lifecycle) |
81| `pattern:loom` | Durable Objects coordination (SessionDO, TenantDO, PostDO) |
82| `pattern:prism` | Glassmorphism design system, seasonal theming, UI layers |
83| `pattern:sentinel` | Load testing, scale validation, ramp-up testing |
84| `pattern:songbird` | Prompt injection protection (canary, kestrel, robin layers) |
85| `pattern:threshold` | Rate limiting, abuse prevention, graduated response |
86
87#### Type Labels (pick exactly 1)
88
89| Label | When to Apply |
90|-------|---------------|
91| `bug` | Something is broken or wrong |
92| `feature` | New capability that doesn't exist yet |
93| `enhancement` | Improvement to existing functionality |
94| `security` | Security concern, vulnerability, hardening |
95| `documentation` | Docs, guides, help articles |
96
97#### Priority (only if explicitly stated by user)
98
99Don't guess priority. Only apply if the user explicitly says something is urgent, critical, or low-priority.
100
101### Step 4: Write the Issue Body
102
103Use this template for every issue:
104
105```markdown
106## Summary
107[1-3 sentences describing what needs to be done and why]
108
109## Acceptance Criteria
110- [ ] [Specific, verifiable criterion]
111- [ ] [Another criterion]
112- [ ] [Keep to 3-6 items]
113
114## Context
115- [Relevant technical context]
116- [Dependencies or related issues if known]
117- [Any constraints mentioned by the user]
118```
119
120**Writing guidelines:**
121- Summary should answer "what" and "why" in plain language
122- Acceptance criteria should be checkbox items that can be verified as done/not-done
123- Context is optional but helpful for implementation details
124- Keep the whole body under 20 lines. Concise beats comprehensive.
125- Don't pad with boilerplate. If there's no useful context, skip that section.
126
127### Step 5: Create the Issues
128
129```bash
130gh issue create \
131 --title "Title in imperative mood" \
132 --body "$(cat <<'EOF'
133## Summary
134...
135
136## Acceptance Criteria
137- [ ] ...
138
139## Context
140- ...
141EOF
142)" \
143 --label "component1,type1"
144```
145
146**Title guidelines:**
147- Imperative mood: "Add X" not "Adding X" or "X should be added"
148- Specific: "Add glass overlay to Forest page sections" not "Forest page improvements"
149- No `[FEATURE]` or `[BUG]` prefixes (labels handle categorization)
150- Under 60 characters when possible
151
152### Step 6: Report Back
153
154After creating all issues, give the user a summary table:
155
156```
157Created X issues:
158
159| # | Title | Labels |
160|---|-------|--------|
161| #531 | Add glass overlay to Forest page | forests, enhancement |
162| #532 | Fix tooltip positioning on mobile | lattice, bug |
163...
164
165Skipped (duplicates of existing issues):
166- "Cache purge tool" → already tracked in #527
167```
168
169---
170
171## Edge Cases
172
173### Vague TODOs
174
175If a TODO is too vague to create a good issue ("fix the thing", "make it better"), ask the user for clarification rather than creating a bad issue. Group vague items and ask once.
176
177### Huge Batches (20+)
178
179For very large batches, create issues in groups of 10 to avoid rate limiting. Pause between batches.
180
181### Mixed Priorities
182
183If the user marks some items as urgent/first-focus vs backlog, note this in Context but don't apply priority labels unless they use explicit priority language.
184
185### Implementation Details in the Brain Dump
186
187If the user includes HOW to do something (not just WHAT), capture those details in the Context section. The acceptance criteria should still focus on the outcome, not the approach.
188
189---
190
191## Anti-Patterns
192
193**Don't do these:**
194
195- Don't create issues with only a title and no body
196- Don't apply more than 3 component labels (if it touches everything, it's probably `lattice`)
197- Don't guess at acceptance criteria you can't verify. "Works well" is not a criterion. "Renders correctly on mobile viewport" is.
198- Don't create issues for things that are already done
199- Don't pad issues with generic criteria like "code is well-documented" or "tests pass"
200- Don't add `priority-critical` unless the user explicitly says something is critical/urgent
201
202---
203
204## Example
205
206**User says:**
207> ok so I need to: fix the broken image on the pricing page, add a dark mode toggle to the knowledge base, wire up the new health endpoint for blog-engine, and eventually we should think about adding RSS feeds to meadow
208
209**You create:**
210
2111. **"Fix broken image on pricing page"** — `plant`, `bug`
2122. **"Add dark mode toggle to knowledge base"** — `landing`, `enhancement`
2133. **"Wire health endpoint for blog-engine into Clearing"** — `clearing`, `feature`
2144. **"Add RSS feed support to Meadow"** — `meadow`, `feature`
215
216Each with proper Summary, Acceptance Criteria, and Context.
217
218---
219
220*A clean backlog is a calm mind. Turn the chaos into clarity.*