Workflow Lifecycle
The 7 stages of AI-assisted development from capture to close, with enforcement at every transition.
FlyDocs structures AI-assisted development into a repeatable lifecycle. Every issue moves through defined stages with clear handoffs, enforced transitions, and documented outcomes. The workflow is the same regardless of whether issues live in local markdown files, Linear, or Jira.
On the cloud tier, every stage transition syncs to your PM tool automatically. When a developer runs /capture, the issue appears in Linear or Jira. When they /activate, status moves to In Progress. When they /close, it is Done. Leads open their PM tool and it reflects reality -- not what someone remembered to update.
The 7 stages
| Stage | Command | What happens | Enforcement |
|---|---|---|---|
| Capture | /capture | Create issue from input using the appropriate template | Template validation |
| Refine | /refine | Add acceptance criteria, priority, estimates, labels | Spec completeness check |
| Activate | /activate | Assign to implementer and transition to implementing | Assignment required |
| Implement | /implement | Build against the spec with full context loaded | Stop gate, transition validation |
| Review | /review | Check implementation against acceptance criteria | PR validation |
| Validate | /validate | QE verification against acceptance criteria | Criteria checkbox tracking |
| Close | /close | Mark done, record outcomes, update knowledge base | Completion comment required |
Blocked is a side state that any stage can transition to. When work is blocked, the AI records the blocker reason and the issue remains visible in active issue lists until unblocked.
Lifecycle Flow
What happens at each stage
Capture
The AI identifies the issue type (feature, bug, chore, idea) from your description, loads the appropriate template, fills in information it can infer from context, and creates the issue. Templates provide structure with acceptance criteria, technical notes, and dependency tracking.
Refine
The PM agent (or developer) adds detail: acceptance criteria with MoSCoW prioritization (Must/Should/Won't Have), priority level, size estimate, labels, and technical notes. The goal is a spec complete enough for an AI to implement without ambiguity.
Activate
Assignment is a hard gate. The issue cannot move to Implementing without an assignee. This is enforced by the transition validation hook, not just documented as a convention. Once assigned, the issue transitions to Implementing and the implementer has a clear spec to work against.
Implement
The implementation agent reads the spec, creates a branch, builds incrementally, and commits at each milestone. The stop gate hook blocks the AI from finishing its response while the issue is still in Implementing state. The AI must transition the issue to Review (or Blocked) and add a comment explaining what was done.
Review
The review agent checks the implementation against acceptance criteria. PR validation hooks ensure workflow compliance. If criteria are not met, the issue moves back to Implementing with specific feedback.
Validate
Optional QE verification. A separate agent (or human) tests against the acceptance criteria checklist. Checkboxes in the issue description track which criteria have been verified.
Close
The issue is marked done with a completion comment documenting outcomes, decisions made, and any follow-up work captured as new issues. The knowledge base is updated if significant decisions were made.
Enforcement during workflow
The workflow is not just a process diagram. Multiple hooks enforce it at the platform level:
- Stop gate: blocks the AI from finishing with an issue still in Implementing state. The AI must transition or explain why it cannot.
- Transition validation: catches missing comments on status transitions. Every status change requires a comment documenting what happened.
- Assignment gate: the
issues.py transitioncommand enforces assignment before Implementing. You cannot start work on an unassigned issue. - PR validation: validates PR workflow compliance after git operations.
# Transition with a required comment
python3 .claude/skills/flydocs-workflow/scripts/issues.py \
transition ENG-123 REVIEW "All acceptance criteria met, PR ready"
# The transition validation hook catches missing comments
# The stop gate blocks completion if the issue is still IMPLEMENTING Status mapping
FlyDocs defines its own workflow statuses (Backlog, Ready, Implementing, Review, Validate, Done, Blocked, Cancelled). These map to your PM provider's statuses at the workspace level. Linear's "In Progress" might map to FlyDocs' "Implementing." Jira's "In Review" might map to "Review."
The mapping is configured once during workspace setup and applied transparently. The AI always works with FlyDocs status names. The dispatcher scripts handle the translation when communicating with the provider API.
Issue templates
Four template types structure issue creation:
| Type | Purpose | Key sections |
|---|---|---|
| Feature | New user-facing functionality | User story, MoSCoW criteria, technical notes, dependencies |
| Bug | Defects with reproduction steps | Expected vs actual, reproduction steps, severity, root cause |
| Chore | Maintenance and infrastructure | Task description, measurable outcomes, risk assessment |
| Idea | Proposals needing discussion | Concept, motivation, open questions, next steps |
## Context
[Problem description — what user pain or business need]
## Acceptance Criteria
### Must Have
- [ ] [Specific, measurable criterion]
- [ ] [Error handling criterion]
### Should Have
- [ ] [Enhancement criterion]
### Won't Have (Out of Scope)
- [Explicitly excluded functionality]
## Technical Notes
[Implementation approach, components needed, dependencies] Templates include agent instructions in HTML comments that guide the AI during capture and refinement. These instructions tell the AI how to fill in each section, what makes a good acceptance criterion, and when to use checkboxes. The instructions are stripped from the final issue description.
Backend-agnostic workflow
The workflow is identical regardless of PM backend. The same slash commands, the same stage procedures, the same enforcement hooks. Only the dispatcher scripts differ in how they store and retrieve issues:
- Local tier: issues stored as markdown files in
_local/directories - Cloud tier (Linear): issues synced via the FlyDocs relay API to Linear's GraphQL API
- Cloud tier (Jira): issues synced via the relay to Jira's REST API
The unified client in the dispatcher scripts auto-detects the tier from .flydocs/config.json and routes operations transparently. Swapping from local to cloud requires changing one config value. The workflow does not change.
Next
- Hooks & Enforcement: the hooks that enforce the workflow
- Context & Memory: how sessions and knowledge carry forward
- Workspaces & Topology: status mapping, workspace configuration, and cross-repo awareness