An automated development workflow that guides you from idea to working software, step by step.
Tulip is a systematic approach to building software that uses AI agents to automate workflow steps, ensuring quality through testing and clear documentation. Instead of wondering "what do I build next?", Tulip provides a clear, repeatable process that takes your project from concept to completion.
Here's the step-by-step flow that takes your project from idea to working software:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β STEP 1: Design Phase (You Do This) β
β β
β β’ Write Product Design Document (GDD/PRD) β
β β Describes what you're building β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β STEP 2: Change Analysis (Automated) β
β β
β β’ Delta Agent: Finds what changed in your design β
β β’ Gap Agent: Finds what's missing in your technical planβ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β STEP 3: Architecture Update (Automated) β
β β
β β’ Architect Agent: Updates technical docs based on β
β changes and gaps β
β β’ Ensures TDD, specs, and APIs are up to date β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β STEP 4: Master Plan (Automated) β
β β
β β’ Creates development plan with all loops and gates β
β β’ Defines progression through D-loops β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β STEP 5: Loop Planning (Automated) β
β β
β β’ Planning Agent: Chooses next loop to work on β
β β’ Breaks loop into Change Units (small tasks) β
β β’ Each CU has goals, file allowlists, test requirements β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β STEP 6: Implementation (Automated) β
β β
β β’ Implementation Agent: Picks next Change Unit β
β β’ Creates implementation plan β
β β’ Writes tests FIRST (test-first development) β
β β’ Implements minimal code to pass tests β
β β’ Verifies all tests pass β
β β’ Marks CU complete, selects next one β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β STEP 7: Loop Completion (Automated) β
β β
β β’ When all CUs in loop are done and tests pass β
β β’ Workflow advances to next development loop β
β β’ Process repeats until project is complete β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
What happens:
- You write the Product Design Document (PDD) that defines your project:
- For games: Called Game Design Document (GDD) - describes gameplay, mechanics, features
- For apps: Called Product Requirements Document (PRD) - describes features, user flows, requirements
- This document describes what you're building
Why it matters:
- This document serves as the source of truth for what your product should do
- It uses templates (blueprints) to ensure consistency
- The Architect Agent (in Step 3) will create/update the Technical Design Document (TDD) based on this
Templates available:
blueprint/gdd-blueprint.mdfor gamesblueprint/prd-blueprint.mdfor applications
What happens: When you create a new version of your design (e.g., v0 β v1), two AI agents analyze the changes:
-
Delta Agent (
agents/deltas/)- Compares your old and new design documents
- Extracts what changed: new features, modified features, removed features
- Creates a structured list (YAML file) tracking all changes
-
Gap Agent (
agents/gaps/)- Compares your design document with your technical plan
- Identifies missing implementation details in your TDD
- Finds gaps like: missing algorithms, undefined constants, unclear patterns
- Creates a structured list (YAML file) of what needs to be added
Why it matters:
- Ensures nothing is missed when upgrading versions
- Provides traceability: you know exactly what changed and why
- Creates structured data that other agents can use
Output:
deltas/<pdd>_v*_to_v*.yaml- List of design changesgaps/tdd_v*_to_<pdd>_v*.yaml- List of missing implementation details
What happens:
The Architect Agent (agents/architect/) creates or updates your technical documentation:
-
Creates/Updates Technical Design Document (TDD)
- For initial version: Creates TDD based on your Product Design Document
- For version upgrades: Updates TDD based on deltas and gaps
- Adds new packages, modules, or systems needed
- Updates architecture diagrams and descriptions
- Works top-down: system overview β services β modules β interfaces
-
Updates Package Specifications (SPEC.md files)
- Documents what each package does
- Defines invariants and constraints
- Explains relationships between components
-
Updates API Documentation (API.md files)
- Documents interfaces and contracts
- Defines method signatures and behaviors
- Specifies protocols for communication
Why it matters:
- Creates the technical foundation (TDD) from your product design
- Keeps technical documentation in sync with design changes
- Ensures all agents work from the same up-to-date information
- The TDD becomes the source of truth for planning and implementation
Output:
- Created/Updated
tdd_<project>_v*.md - Created/Updated
server/**/SPEC.mdfiles - Created/Updated
client/**/API.mdfiles
What happens: A master development plan is created that defines:
-
Development Loops (D-loops): The layers you'll build in order
- Server loops: D0 (workspace) β D1 (entities) β D2 (domain logic) β D3 (validation) β D4 (contracts) β D5 (session) β D6 (context) β D7 (transport) β D8 (observability) β D9 (end-to-end)
- Client loops: D0 (workspace) β D1 (state) β D2 (orchestrator) β D4 (contracts) β D5 (network) β D6 (rendering) β D7 (UI) β D8 (input) β D9 (observability) β D10 (end-to-end)
-
Quality Gates: Proof requirements for each loop
- What tests must pass before advancing
- What evidence must be recorded
-
Sequence: The order in which loops will be completed
Why it matters:
- Provides the roadmap for the entire project
- Ensures you build from inside-out (core logic first, then user-facing features)
- Sets clear quality standards at each stage
Key principle: You can't advance to loop D(n+1) until all tests pass for loop Dn. This ensures each layer is solid before building on top.
Output:
devplan_<project>_v*.md- Master development plan
What happens:
The Planning Agent (agents/planning/) analyzes the next development loop to work on:
-
Chooses the next loop based on the master plan and current progress
-
Breaks the loop into Change Units (CUs) - small, testable tasks
- Each CU has a clear, single goal
- Each CU knows which files it can modify (allowlist)
- Each CU has specific test requirements (proof labels)
- Each CU has a status:
BACKLOGβNEXTβIN_PROGRESSβDONE
-
Creates a detailed plan with:
- Loop goals and prerequisites
- Step-by-step outcomes
- Complete CU list with all requirements
- Acceptance criteria
Example: Instead of "build user authentication," you might have:
- CU1: Create User entity (D1 loop)
- CU2: Add password validation (D3 loop)
- CU3: Create login endpoint (D5 loop)
- CU4: Add session management (D5 loop)
Why it matters:
- Breaks large work into manageable pieces
- Ensures each piece is testable and has clear boundaries
- Provides clear status tracking
Output:
development_v*/<loop>/<date>_<slug>/plan.md- Detailed plan for the loop
What happens:
The Implementation Agent (agents/implementation/) executes each Change Unit:
-
Finds the next CU marked
NEXTin the plan -
Creates an implementation plan with:
- Task breakdown
- Files that can be modified (allowlist)
- Tests that must pass
- Evidence requirements
-
Waits for approval (manual gate)
-
Writes tests FIRST (test-first development)
- Tests define the expected behavior
- Tests are labeled with proof requirements (e.g.,
scope:unit loop:d1-domain)
-
Implements minimal code to make tests pass
- Only modifies files in the allowlist
- Writes the simplest code that satisfies the tests
-
Verifies all tests pass and records evidence
- Runs the test suite
- Documents results
-
Marks CU as
DONEand selects the nextNEXTCU- Only one CU marked
NEXTat a time - Ensures focus on one task
- Only one CU marked
-
Commits and merges with evidence
Why it matters:
- Test-first ensures you know when you're done
- Small, focused changes reduce risk
- Evidence provides proof that everything works
Output:
development_v*/<loop>/<slug>/cu_<cu-slug>/<cu-slug>-implementation_plan.md- Code changes in allowed files
- Updated plan.md with CU status changes
What happens: When all Change Units in a loop are complete and all tests pass:
- Loop is marked complete
- Workflow automatically advances to the next development loop
- Process repeats from Step 5 (Loop Planning) for the new loop
- Continues until the project is complete
Why it matters:
- Ensures systematic progression through layers
- Quality gates prevent advancing with broken code
- Clear progression from core to surface
The flow repeats:
- Steps 5-7 repeat for each development loop
- Each loop builds on the previous one
- Eventually, all loops are complete and the project is done
As you follow the flow, here are the key concepts you'll encounter:
Work is broken into small, testable pieces called Change Units. Each CU:
- Has a clear, single goal
- Knows which files it can modify (allowlist)
- Has tests that prove it works
- Moves through stages:
BACKLOGβNEXTβIN_PROGRESSβDONE
Specialized AI agents execute specific workflow steps:
| Agent | What It Does | When It Runs |
|---|---|---|
| Delta Agent | Analyzes what changed between design document versions | After creating a new version of your design document |
| Gap Agent | Identifies missing implementation details in your technical plan | After delta analysis, before architecture updates |
| Architect Agent | Updates technical documentation (TDD, specs, APIs) based on changes | After gap analysis, before planning |
| Planning Agent | Creates detailed implementation plans for each development loop | When ready to start a new development loop |
| Implementation Agent | Implements code following test-first principles | When a Change Unit is ready to be built |
vortex/
βββ workflow/ # π Main guides - start here!
β βββ workflow.md # Complete workflow documentation
β βββ workflow-game.md # Game-specific guidance
β βββ workflow-application.md # Application-specific guidance
β
βββ agents/ # π€ AI agent configurations
β βββ architect/ # Updates technical documentation
β βββ deltas/ # Analyzes design document changes
β βββ gaps/ # Finds missing implementation details
β βββ planning/ # Creates implementation plans
β βββ implementation/ # Implements code (test-first)
β
βββ blueprint/ # π Document templates
β βββ gdd-blueprint.md # Game Design Document template
β βββ tdd-blueprint.md # Technical Design Document template
β βββ ...
β
βββ utils/ # π Utility files and helpers
β βββ features.md # Feature definitions and conventions
β βββ objectives.md # Project objectives and goals
β βββ test_lables.md # Test labeling conventions
β
βββ v0/ # π¦ Version 0 designs
β βββ (your initial design documents)
β
βββ v1/ # π¦ Version 1 designs
βββ (your next version's designs)
- Read the Main Guide: Start with
workflow/workflow.md- it explains everything in detail - Choose Your Project Type:
- Building a game? See
workflow/workflow-game.md - Building an app? See
workflow/workflow-application.md
- Building a game? See
- Use the Templates: The blueprint files in
blueprint/help you structure your design documents - Configure Agents: The agent files in
agents/are configurations for AI agents that execute workflow steps
Tulip ensures that:
- Everything is documented: You can see what's being built and how
- Changes are tracked: You know what changed between versions and why
- Quality is guaranteed: Tests prove everything works before moving forward
- Progress is visible: Clear status tracking shows where things are
The workflow documents in workflow/ explain the process in detail, and the design documents (GDD/PRD and TDD) serve as the single source of truth for what's being built.