Artifacts
Every V-Model phase produces artifacts that feed the next phase. All user-project artifacts live under _devprocess/ in the user's project repository (not in this plugin's repo).
Directory tree
_devprocess/
analysis/
BA-{PROJECT}.md Phase 1: Business Analysis
EXPLORE-{PROJECT}.md Phase 1: Exploration Board (PoC/MVP)
security/
AUDIT-{PROJECT}-{YYYY-MM-DD}.md Phase 6: Security Audit report
requirements/
epics/
EPIC-{NNN}-{slug}.md Phase 2: Epic spec
features/
FEATURE-{EPIC}-{NNN}-{slug}.md Phase 2: Feature spec (epic-local)
handoff/
architect-handoff.md Phase 2 -> 3: aggregated ASRs + NFRs
plan-context.md Phase 3 -> 4: tech stack + integrations
architecture/
ADR-{NNN}-{slug}.md Phase 3: Architecture Decision Record
arc42.md Phase 3: arc42 documentation
context/
10_backlog.md Single source of truth for project state
(per BACKLOG-TEMPLATE.md)
20_bugs.md FIX-NN bug log (/coding Phase 3c)
30_handoffs.md Append-only phase handoffs log (all phases)
40_metrics.md Signal layer (per METRICS-TEMPLATE.md)
cycle time, drift count, hypothesis status,
phase transitions, cross-phase triggersLiving Documents
Artifacts are not one-off specifications. They are continuously updated during and after implementation. At the end of a V-Model cycle, every artifact reflects the actually-implemented state, not the originally-planned state.
For example, an ADR proposal created in Phase 3 may be modified in Phase 4 (Critical Review) when /coding finds that the proposal doesn't match the existing codebase. The ADR file is updated in place with Status: Accepted (modified by review) and the justification for the change. See Living Documents.
The four context files
10_backlog.md, 20_bugs.md, 30_handoffs.md, and 40_metrics.md serve different purposes:
10_backlog.md: living backlog and single source of truth for the project state. Follows the binding format inskills/requirements-engineering/templates/BACKLOG-TEMPLATE.md: dashboard on top, entries grouped by Epic (BL-NNN rows with status, priority, Claim ({pair-id} @ YYYY-MM-DD), Feature-Spec, ADR, source, commit), standalone items for epic-free findings, a reference list of open bugs, deferred items. Every phase skill that changes project state updates this file in the same edit pass (new row, status transition, claim acquire or release, dashboard refresh). The Claim column lets multiple human-agent pairs work the backlog concurrently without a central lock service. The pair-id convention is{human-handle}-{model}(for exampleseb-opus-4-7).20_bugs.md: FIX-NN bug log. Every bug found during/codingPhase 3c (Debugging Protocol) gets an entry with causal chain and priority. Resolved bugs carry the commit SHA and regression-test verification status.30_handoffs.md: append-only phase handoffs log. Each phase skill appends one entry at the end of its run with artifacts produced, handoff context (open questions, assumptions, risks), and the next phase. Phase 7 Release Closure also appends arelease-to-baentry that queues the BA Post-Release Review.40_metrics.md: signal layer. Five append-additive tables seeded fromskills/v-model-workflow/templates/METRICS-TEMPLATE.md: cycle time per FEATURE, drift count (plan-context.mdvs. real code), BA hypothesis validation status, phase transition counts, cross-phase trigger counts. Writes happen inside existing phase actions, no separate metrics-collection ceremony. Rows are never deleted.
The numbering (10_, 20_, 30_, 40_) leaves room for future additions.
Traceability chain
BA document (Why?)
-> Epic (What, strategic?)
-> Feature (What, concrete?)
-> ASR (What is architecture-relevant?)
-> ADR (How do we solve it?)
-> plan-context.md (Context bridge)
-> Critical Review (Does it fit the codebase?)
-> Code (Implementation)
-> Tests (Does it work?)
-> Security Audit (Is it safe?)
-> Release Closure (Close the cycle)Every step writes back into the source artifacts so the chain is never broken.
Project initialization
When starting a new project, initialize the structure:
mkdir -p _devprocess/{analysis/security,requirements/{epics,features,handoff},architecture,context}
touch _devprocess/context/20_bugs.md _devprocess/context/30_handoffs.md
cp skills/requirements-engineering/templates/BACKLOG-TEMPLATE.md \
_devprocess/context/10_backlog.md
cp skills/v-model-workflow/templates/METRICS-TEMPLATE.md \
_devprocess/context/40_metrics.md10_backlog.md is seeded from the template (not created empty) so the first write already follows the binding format. Replace {PROJECT} in the header with the actual project name.
The /project-conventions skill runs this for you if you invoke it.
See also
- Conventions: naming rules and language conventions
- V-Model concept: why this structure
- Living Documents concept