DevSpark Implementation Lifecycle
This guide defines the recommended DevSpark lifecycle for teams. For the principles behind the mechanics, see the DevSpark Philosophy.
Primary approach: prompt-first workflows through your AI agent using remote prompt files.
Lifecycle at a Glance
At any point, run /devspark.next to detect the current branch, artifacts,
gates, and PR state and receive one recommended next command. Use
/devspark.next --auto to chain safe steps until a human-owned Git or merge
boundary is reached.
- Bootstrap with the matching quickstart prompt.
- Establish the repository constitution.
- Run
specify → clarify when needed → plan → tasks → required gates → implement. - Run focused verification when the change needs explicit behavioral proof.
- Commit and synchronize the branch, then run
create-pr → pr-review ↔ address-pr-review → merge. - Run
releaseas a separate human-triggered event to revalidate and archive completed packages. - Re-run the matching quickstart prompt whenever installation, upgrade, or repair is needed.
1. Bootstrap (Primary)
Open your AI agent in the target repository and run the matching quickstart prompt:
- Copilot:
@workspace Follow the instructions at https://raw.githubusercontent.com/markhazleton/devspark/main/quickstart/devspark_quickstart_copilot.md - Claude Code:
Follow the instructions at https://raw.githubusercontent.com/markhazleton/devspark/main/quickstart/devspark_quickstart_claudecode.md - Cursor:
Follow the instructions at https://raw.githubusercontent.com/markhazleton/devspark/main/quickstart/devspark_quickstart_cursor.md - Other agents:
Follow the instructions at https://raw.githubusercontent.com/markhazleton/devspark/main/quickstart/devspark_quickstart_generic.md
The quickstart prompt installs stock framework files into .devspark/ and
preserves repository-owned current truth in .knowledge/.
This is the standard installation path for DevSpark and the only approved maintenance path.
2. Implement Features
After bootstrap, run the standard implementation lifecycle in chat:
/devspark.constitution/devspark.specify(route-aware intake: one-off fix, quick spec, or full spec)/devspark.clarify(optional but recommended)/devspark.plan/devspark.tasks- Run the gates named by spec frontmatter:
/devspark.checklist,/devspark.analyze, and/devspark.criticas required /devspark.implement/devspark.verifywhen focused behavioral or evidence proof is needed- Commit and synchronize the branch
/devspark.create-pr/devspark.pr-review/devspark.address-pr-reviewwhen findings are open/devspark.pr-review UPDATE- Merge the PR after approval
/devspark.releaseat the selected release event, not automatically after merge
Lifecycle Terminology
DevSpark uses distinct terms for workflow concepts:
- Prompt: the workflow command surface that owns lifecycle orchestration.
- Agent: an AI runtime or client integration that executes prompts.
- Skill: a portable capability package a prompt may delegate to.
- Participant: a human or AI-filled team member with responsibility in a workflow.
- Role: a responsibility label for a participant, such as owner, planner, implementer, reviewer, critic, or scribe.
Participant metadata is advisory and artifact-only. It can record responsibility context in specs, plans, or tasks, but it does not affect command execution, prompt resolution, script resolution, gate enforcement, or command output. Customization layers and precedence are unchanged.
Route-Aware Intake
/devspark.specify is the canonical starting point for new work. It classifies the request, explains the recommendation, and asks the user to confirm or override it.
one-off-fixredirects to/devspark.quickfixquick-speccreates a lightweight spec with frontmatter metadatafull-speccreates the full specification workflow
Downstream commands must read the spec frontmatter first and treat that metadata as authoritative.
Ephemeral Work-Package Lifecycle
Specs, plans, tasks, and gates are temporary work-package files under
.devspark.work/. They remain there after implementation, verification, and PR
review. Release validates their code, test, knowledge, and governance linkage,
then moves eligible packages to .archive/YYYY-MM-DD/<topic>/.
/devspark.specify --> Status: Draft
/devspark.clarify --> (no change, still Draft)
/devspark.plan --> (no change, still Draft)
/devspark.tasks --> (no change, still Draft)
/devspark.implement --> Status: In Progress (at start)
--> Status: Complete (when all tasks marked [X])
/devspark.create-pr --> Draft or update the PR using spec, task, and gate context
/devspark.pr-review --> Reviewer findings and disposition
/devspark.address-pr-review --> Author applies fixes with commit-isolation gates
/devspark.pr-review UPDATE --> Focused re-review against latest fix iteration
/devspark.verify --> Confirms evidence and task linkage; package remains live
/devspark.release --> Revalidates and archives eligible work packages
Quality gate outputs are written inside the in-flight work package:
gates/analyze.mdfor cross-artifact consistency reviewgates/critic.mdfor adversarial technical risk reviewgates/checklist.mdas the current checklist gate summary across checklist files
Downstream commands treat those gate files as temporary implementation state, not durable repository knowledge.
Valid status values: Draft, In Progress, Complete. A complete package
remains in .devspark.work/ until release.
Key rules:
- A work package cannot leave
.devspark.work/before release, even after it passes verification. /devspark.pr-reviewflags missing code/knowledge linkage as a blocking current-truth issue./devspark.site-auditflags stale.devspark.work/packages on main as anti-patterns./devspark.releasefails when completed work packages lack valid code, test, knowledge, or governance linkage and is the sole archive writer.
Release Events and Sprint Reporting
The implementation loop repeats per feature. A release is a human-selected business event, not an automatic sprint boundary:
+--- Repeat per feature until ready to merge ----------+
| /specify -> /clarify when needed -> /plan -> /tasks |
| -> required gates -> /implement -> focused /verify |
| -> commit/push -> /create-pr -> /pr-review |
| <-> /address-pr-review -> merge |
+--------------------------------------------------------+
|
(human-selected release event)
|
/devspark.release
- Per feature: Run the route-defined lifecycle from specify through required gates and implement, gather focused verification evidence when needed, draft the PR with
/devspark.create-pr, review it, and merge. - At the selected release event: Run
/devspark.releaseonce to validate current truth, generate release notes, bump the version, and archive eligible completed packages. - Anytime: Run
/devspark.site-auditas a health check to catch lifecycle violations. - Blocked packages: Release leaves incomplete or invalid packages in
.devspark.work/and reports their blockers.
Sprint reporting is layered on top of this lifecycle. Query released dates and Git history when a team needs a sprint view; DevSpark does not maintain sprint state as another source of truth.
When to Use Technical Details vs. Product Language
Each phase has a different audience and purpose. Mixing technical decisions into the wrong phase creates specs that lock you into solutions before you understand the problem, or plans that lack the detail needed to build anything.
Specify and Clarify: Product language only
These phases define what users need and why. Write as if explaining to a product manager. No frameworks, no databases, no APIs.
| Anti-pattern (too technical) | Better (product-focused) |
|---|---|
/devspark.specify Build a React app with Redux state management and a PostgreSQL backend for managing tasks |
/devspark.specify Build a task manager where teams create projects, assign tasks to members, and track progress on a Kanban board |
/devspark.specify Create a REST API with JWT auth that serves photo metadata from S3 |
/devspark.specify Build a photo album organizer. Albums grouped by date, drag-and-drop reordering, tile-based photo previews |
/devspark.clarify Should we use WebSockets or SSE for the real-time updates? |
/devspark.clarify When a team member moves a task, how quickly should other users see the change? Instant, or is a short delay acceptable? |
/devspark.clarify Should the Redis cache TTL be 5 minutes or 15 minutes? |
/devspark.clarify How fresh does the dashboard data need to be? Real-time, or is a few minutes of delay acceptable? |
Why this matters: If you say "use React" in the spec, the AI treats it as a requirement and won't consider whether Svelte, Vue, or vanilla JS might be a better fit. The spec becomes a solution document instead of a problem document. Keep the spec technology-agnostic so the plan phase can make informed technical choices.
Plan: Technical details belong here
This phase translates product requirements into architecture and technology choices. Now is the time for frameworks, databases, protocols, and infrastructure decisions.
| Good plan input | Why it works |
|---|---|
/devspark.plan Use Vite + vanilla JS, SQLite for local storage, no server needed |
Provides clear technology direction while the spec already defined what to build |
/devspark.plan .NET Aspire with Blazor Server frontend, Postgres database, REST APIs for projects/tasks/notifications |
Specific stack choices that the plan phase can evaluate against the spec's requirements |
/devspark.plan Existing Next.js app. Add this feature using the existing Prisma ORM and tRPC patterns |
Constrains the plan to work within an existing codebase's patterns |
Tasks and Implement: Implementation specifics
These phases work with concrete code. File paths, function signatures, migration scripts, test fixtures, and dependency versions all belong here.
Quick reference: What goes where
| Phase | Language | Example |
|---|---|---|
| Specify | Product/user outcomes | "Users can drag tasks between columns" |
| Clarify | Requirements and constraints | "Is there a maximum number of team members per project?" |
| Plan | Architecture and technology | "Use Blazor Server with SignalR for real-time Kanban updates" |
| Tasks | Implementation details | "Create TaskCard.razor component with drag-and-drop via SortableJS" |
Multi-App Workflows (Optional)
If your repository contains multiple applications, you can scope any command to a specific application:
- Use
--app <id>with any command to target a specific application - Use
--repo-scopefor repository-wide operations - Run
/devspark.add-applicationto register new applications in the multi-app registry
Multi-app support is entirely optional. Single-application repositories use the standard workflow above with no changes.
3. Upgrade and Repair
Re-run the same quickstart prompt in the target repository.
Recommended cadence:
- Run dry-run first
- Review proposed stock changes
- Apply upgrade
Upgrade behavior:
- Updates stock framework files in
.devspark/ - Preserves team and personal customizations in
.knowledge/ - Preserves current-truth knowledge in
.knowledge/ - Initializes missing
.knowledge/entities/and.knowledge/ontology/scaffold files - Classifies
.documentation/intake into.archive/,.devspark.work/, or.knowledge/ - Warns when
.knowledge/overrides/commands/overrides may hide structural changes in updated stock prompts
This is the standard update and repair path for DevSpark.
4. Version Stamping Rules
Quickstart flows must keep .devspark/VERSION authoritative.
- The
version:value must be the latest DevSpark semantic version (X.Y.Z) - Do not write
quickstartas a version value - If missing or invalid, treat installed version as unknown and refresh from latest
Do not use a separate DevSpark installer, updater, or repair command. Keep those flows in quickstart prompts.