This project uses a structured workflow for complex tasks. Four Contributor Roles are shipped as agent personas under vibe/agents/; backlog prioritisation (PM) is left to the human contributor, who also remains the final acceptance authority for merges and project policy above all shipped roles.
| Role | Type | Responsibility |
|---|---|---|
| Admin | Contributor | Workflow governance and the instruction set (vibe/INSTRUCTIONS.md, role files, docs, and the active host instruction file — e.g. CLAUDE.md for Claude Code). Clarifies requirements, runs mid-session interventions, initiates the design flow, and orchestrates wrap-ups. Diagnoses and routes; does not write model code, design briefs, or architectural blueprints. Surfaces policy-level changes to the human for sign-off. |
| Designer | Contributor | Domain reasoning and brainstorming. Pre-digests reference material, resolves design ambiguity, chooses dimensions and constraints. Produces a design brief — what to build and why. Reviews Developer output against acceptance criteria. |
| TL | Contributor | Code/system architecture: shared abstractions, component boundaries, base-class and Protocol/ABC contracts, cross-cutting refactors, vibe_cading/tools/ CLI design, and post-implementation architectural review. Invoked for architecturally-significant work only — a new shared abstraction, a cq_utils.py / base-class change, a refactor spanning multiple model families. Everyday single-part creation flows Designer → Developer without it. |
| Developer | Contributor | Per-part code structure (classes, methods, build pipeline). Implements the design brief, runs analysis tools, validates output. Escalates design blockers to the Designer and architecturally-significant decisions to the TL. |
┌─────────────────────────────────────────────────────────────────┐
│ 1. REQUIREMENTS User ←→ Admin │
│ Clarify scope, constraints, and acceptance criteria. │
│ Admin ensures instructions cover the task domain, then │
│ routes: trivial → Developer; non-trivial → Designer. │
├─────────────────────────────────────────────────────────────────┤
│ 2. DESIGN User ←→ Designer │
│ Designer produces a design brief (.agents/plans/). │
│ All domain ambiguities are resolved here, not deferred. │
│ User approves the brief before proceeding. │
├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤
│ 2b. ARCHITECTURE (only if architecturally significant) │
│ Admin pulls in the TL. TL designs shared abstractions, │
│ contracts, and boundaries in an architecture plan before │
│ the Developer writes code. Skipped for everyday parts. │
├─────────────────────────────────────────────────────────────────┤
│ 3. EXECUTION Developer (autonomous) │
│ Developer owns per-part code structure, then implements. │
│ On design blockers → Designer (3a); on architectural │
│ blockers → TL (3a). On completion → Review (phase 4). │
├ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤
│ 3a. ESCALATION Developer → Designer (design) / TL (arch) │
│ Developer pauses, documents the blocker in the brief/plan. │
│ The resolving role updates it; the Developer resumes. │
├─────────────────────────────────────────────────────────────────┤
│ 4. REVIEW Designer + TL validate output │
│ Designer checks deliverables against acceptance criteria. │
│ TL reviews code architecture against structural invariants │
│ (architecturally-significant work only). │
│ If criteria not met → back to phase 3 with corrections. │
└─────────────────────────────────────────────────────────────────┘
Each contributor role's canonical persona is tracked under vibe/agents/ (tool-neutral). For Claude Code, vibe_cading/tools/init-claude-runtime.sh regenerates per-clone runtime aliases at .claude/agents/<name>.md that delegate back to the canonical content; the .claude/ tree itself is git-ignored. For Google Antigravity (agy), you can define a subagent dynamically by loading the system prompt from the canonical file. The four roles below are shipped; PM (backlog prioritisation) is intentionally not shipped — the human contributor drives it. The human also remains the final acceptance authority for merges and project policy.
| Role | Canonical persona | How to invoke (Claude Code) | How to invoke (Google Antigravity) |
|---|---|---|---|
| Admin | vibe/agents/admin.md |
Ask "use the admin agent to ..." / @admin, or invoke directly via the Agent tool with subagent_type: "admin" |
Invoke a subagent defined with the system prompt from vibe/agents/admin.md |
| Designer | vibe/agents/designer.md |
Ask "use the designer agent to ...", or invoke directly via the Agent tool with subagent_type: "designer" |
Invoke a subagent defined with the system prompt from vibe/agents/designer.md |
| TL | vibe/agents/tl.md |
Ask "use the tl agent to ..." / @tl, or invoke directly via the Agent tool with subagent_type: "tl" (architecturally-significant work only) |
Invoke a subagent defined with the system prompt from vibe/agents/tl.md (architecturally-significant work only) |
| Developer | vibe/agents/developer.md |
Ask "use the developer agent to ...", or invoke directly via the Agent tool with subagent_type: "developer" |
Invoke a subagent defined with the system prompt from vibe/agents/developer.md |
Design briefs are stored in .agents/plans/ (git-ignored). See
vibe/templates/_template_design.md
for the required format.
A design brief must contain:
- Task summary — one-paragraph scope statement.
- Coordinate system — axis mapping, origin, orientation decisions (resolved by the Designer, not deferred to the Developer).
- Dimension table — every key dimension with its source (STEP analysis, reference drawing, Lego spec, user input).
- Deliverables — a numbered checklist, each with:
- Feature name
- Acceptance criteria (dimensions, tolerances, tool commands to validate)
- Dependencies on other deliverables
- Design decisions — any ambiguity the Designer identified and resolved (e.g. "simplify fillet as sharp edge", "use body-centred origin").
- Special considerations — tolerances, print orientation, assembly order, interference risks, material constraints.
- Validation commands — exact tool invocations to run after completion.
What the brief does NOT contain: Code structure, class names, method
signatures, or build pipeline — per-part structure is the Developer's
responsibility; architecturally-significant structure (shared abstractions,
base-class and Protocol/ABC contracts) is decided by the TL in a separate
architecture plan, not deferred to the Developer ad hoc.
When the Developer encounters a blocker during execution:
- Stop work on the blocked deliverable.
- Document the blocker by appending to the design brief (or the TL's
architecture plan) under
## Escalations:- What was attempted
- What failed or is ambiguous
- What decision is needed
- Continue with unblocked deliverables if possible.
- Route by blocker type:
- Design blocker (a dimension, feature intent, or geometry question) →
invoke the Designer (the
designersubagent). - Architectural blocker (a shared contract that won't generalise, an
abstraction forcing boundary hacks) → invoke the TL (the
tlsubagent).
- Design blocker (a dimension, feature intent, or geometry question) →
invoke the Designer (the
- The resolving role updates the brief/plan and the Developer resumes.