Wishes
A wish is Genie’s unit of work. It’s a structured document (WISH.md) that defines what to build, how to validate it, and how to break it into parallelizable execution groups.
The Pipeline
Every wish flows through a five-stage pipeline:| Stage | Skill | Input | Output |
|---|---|---|---|
| Explore | /brainstorm | Rough idea | Design document with decisions |
| Plan | /wish | Design document | WISH.md with criteria and groups |
| Execute | /work | Approved WISH.md | Code changes, tests, docs |
| Validate | /review | Completed work | SHIP, FIX-FIRST, or BLOCKED |
| Ship | automatic | SHIP verdict | Pull request |
Anatomy of a WISH.md
Every wish contains these sections:Header
| Status | Meaning |
|---|---|
DRAFT | Being written, not yet approved |
APPROVED | Ready for execution |
IN_PROGRESS | Currently being worked on |
REVIEW | Work complete, under review |
DONE | Shipped and merged |
BLOCKED | Cannot proceed — needs input |
Scope
Defines clear boundaries — what’s in and what’s out:Success Criteria
Checkboxes that define “done”. These are what/review validates against:
Execution Groups
Parallelizable work units. Each group is assigned to an agent:depends-on run sequentially. Independent groups run in parallel — this is how Genie achieves speed.
Wish State
Genie tracks execution state in PostgreSQL via the task system. A wish becomes a parent task, and each execution group becomes a child task with dependency edges. The task system records:- Which groups are complete
- Which agents are assigned
- Current pipeline stage
- Timestamps and error states
tasks and task_dependencies tables — no file locks needed, and concurrency is handled natively by PostgreSQL.
File Locations
| Location | Path | Purpose |
|---|---|---|
| Wish document | .genie/wishes/<slug>/WISH.md | The plan |
| Design document | .genie/brainstorms/<slug>/DESIGN.md | Pre-wish exploration |
| Execution state | PostgreSQL tasks table | Progress tracking |
CLI Commands
Wishes become tasks in the database — see the Task CLI reference for full task management commands.Best Practices
Keep wishes small
Keep wishes small
A wish should be completable in one session. If it has more than 6 execution groups, consider splitting into multiple wishes.
Write testable criteria
Write testable criteria
Each success criterion should be verifiable by a command or assertion. Avoid subjective criteria like “code is clean.”
Declare dependencies explicitly
Declare dependencies explicitly
If Group 3 needs Group 1’s output, say
depends-on: Group 1. Genie uses this to schedule execution order.Scope aggressively
Scope aggressively
The OUT section is as important as IN. Explicitly listing what you won’t do prevents scope creep.