Skip to content

vt-c-pd-route-decision

Execute the design iteration routing decision. Updates workflow state and launches the target phase based on impact analysis recommendations.

Plugin: core-standards
Category: Product Design Workflow
Command: /vt-c-pd-route-decision


Product Design: Route Decision

Execute the routing decision from impact analysis and transition to the appropriate phase.

Workflow Position

ITERATIVE DESIGN LOOP:

   New Input → /vt-c-pd-inbox-scan → /vt-c-pd-analyze-changes → [ /vt-c-pd-route-decision ]
                                                            ▲ YOU ARE HERE
                              ┌─────────────────────────────┘
                    ┌───────────────────┐
                    │   Target Phase    │
                    │ (pd-1, pd-2, etc) │
                    └───────────────────┘

Invocation

/vt-c-pd-route-decision                  # Interactive decision
/vt-c-pd-route-decision --option 1       # Execute specific option from analysis
/vt-c-pd-route-decision --continue       # Continue current phase, defer items

What This Skill Does

  1. Loads impact analysis recommendations from state
  2. Presents decision options to user
  3. Captures user's selection
  4. Updates design state with decision
  5. Logs decision in iteration history
  6. Launches the target phase skill

Execution Instructions

Step 0: Prerequisites

Ensure /vt-c-pd-analyze-changes has been run:

Read: .design-state.yaml
# Check that pending_items have analyzed: true
# Check for analysis.recommended_phase

If not analyzed:

Impact analysis not found.
Run /vt-c-pd-analyze-changes first to assess pending items.

Step 1: Load Current State and Recommendations

From .design-state.yaml: - current_state.phase - Current phase - current_state.iteration - Current iteration number - inbox.pending_items[].analysis - Analysis results

Step 2: Present Decision Options

Based on impact analysis aggregation:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Product Design: Routing Decision
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Current: {phase} (Iteration {n})
Pending Items: {count} analyzed

Impact Summary:
• PRD: {aggregated impact}
• Prototype: {aggregated impact}
• specs: {aggregated impact}

─────────────────────────────────────────────────────────────────
ROUTING OPTIONS
─────────────────────────────────────────────────────────────────

1. [RECOMMENDED] Return to {recommended_phase}
   Reason: {primary reason from analysis}
   Scope: {Full iteration cycle | Targeted rework}
   Artifacts to update:
   - {artifact 1}
   - {artifact 2}

2. Return to {alternative_phase} (if different)
   Reason: Address {subset} issues only
   Trade-off: {what gets deferred}

3. Split into parallel tracks
   Track A: {quick fixes} (→ pd-6-handoff)
   Track B: {larger changes} (separate iteration)
   Trade-off: Complexity of managing two tracks

4. Continue current phase
   Action: Defer all items to backlog
   Document as known limitations
   Proceed to next phase

5. Cancel / Manual override
   Provide custom routing

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Select option [1-5]:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Step 3: Capture User Selection

Use AskUserQuestion or accept from command line argument.

Step 4: Execute Decision

Option 1/2: Return to Earlier Phase

Update State File:

current_state:
  phase: "{target_phase}"    # e.g., "pd-2-prd"
  status: "in_progress"
  iteration: {n+1}           # Increment iteration
  started_at: "{timestamp}"

# Invalidate subsequent phases
quality_gates:
  {target_phase}:
    passed: false           # Reset gate
  {subsequent_phases}:
    passed: false           # Reset all after target

# Version bump artifacts that need updating
artifacts:
  prd:
    version: "{increment if affected}"
    status: "revision_needed"
  prototype:
    version: "{increment if affected}"
    status: "revision_needed"

# Log iteration
iterations:
  - number: {n+1}
    started: "{timestamp}"
    ended: null
    trigger: "design_iteration"
    trigger_details:
      source: "{inbox items}"
      issue: "{summary}"
      decision: "Return to {target_phase}"
      previous_phase: "{current_phase}"

# Log decision
decisions:
  - timestamp: "{now}"
    phase: "{current_phase}"
    type: "iteration_triggered"
    reason: "{from analysis}"
    action: "Return to {target_phase}"
    items_processed:
      - "{item 1}"
      - "{item 2}"

Clear Processed Items:

inbox:
  pending_items: []  # Clear after routing decision

Option 3: Split into Parallel Tracks

# Create track marker
parallel_tracks:
  active: true
  tracks:
    - name: "Track A - Quick Fixes"
      phase: "pd-3-prototype"
      scope: ["usability fixes"]
      target: "v1.0"
    - name: "Track B - New Features"
      phase: "pd-2-prd"
      scope: ["scope additions"]
      target: "v1.1"

Note: Parallel tracks add complexity. Consider carefully.

Option 4: Continue / Defer

# Don't change phase
current_state:
  phase: "{unchanged}"

# Move items to deferred
inbox:
  pending_items: []  # Clear
  deferred_items:
    - file: "{item}"
      deferred_at: "{timestamp}"
      reason: "Deferred to backlog"

# Log decision
decisions:
  - timestamp: "{now}"
    type: "continue_with_deferral"
    items_deferred: ["{items}"]
    reason: "Proceeding to maintain timeline"

Step 5: Display Confirmation

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Product Design: Routing Complete
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

✓ Decision logged
✓ State updated to {target_phase} (Iteration {n})
✓ Quality gates reset for phases: {list}
✓ Artifacts marked for revision: {list}

Trigger: {trigger summary}
Action: {action taken}

Previous Phase: {old_phase}
New Phase: {new_phase}
Iteration: {old_n} → {new_n}

TIP: After the target phase completes, capture this iteration's
decisions for the audit trail:
  /vt-c-pd-capture-decisions

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Step 6: Launch Target Phase

Automatically invoke the target phase skill:

# Launch target phase with iteration context
/{target_phase} --iteration={n} --reason="{trigger}"

Phase Launch Messages:

For pd-1-research:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
LAUNCHING: /vt-c-pd-1-research
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Context: Returning due to user research invalidation

Previous research version: {version}
Issues to address:
• {issue 1}
• {issue 2}

Guidance:
- Review previous personas against new findings
- Update interview scripts if needed
- Focus on areas identified in impact analysis

For pd-2-prd:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
LAUNCHING: /vt-c-pd-2-prd
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Context: Returning due to scope/requirements change

Previous PRD version: {version}
Issues to address:
• {issue 1}
• {issue 2}

Guidance:
- Update PRD Section 4 (Features) with changes
- Review acceptance criteria
- Consider impact on timeline
- Will cascade to prototype and specs updates

For pd-3-prototype:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
LAUNCHING: /vt-c-pd-3-prototype
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Context: Returning due to UI/UX issues

Previous prototype version: {version}
Issues to address:
• {issue 1}
• {issue 2}

Guidance:
- Focus on usability findings
- Update affected components
- Re-deploy for validation
- Will need re-testing in pd-4-validate

Decision History Tracking

All routing decisions are logged for learning:

# In .design-state.yaml
decisions:
  - timestamp: "2026-01-28T14:30:00"
    phase: "pd-4-validate"
    type: "iteration_triggered"
    reason: "Usability test failure - task completion below threshold"
    action: "Return to pd-3-prototype"
    items_processed:
      - "usability-test-results-2026-01-28.pdf"
    outcome: null  # Filled in after iteration completes

After iteration completes, update outcome:

    outcome:
      completed_at: "2026-01-28T16:00:00"
      phases_revisited: ["pd-3-prototype", "pd-4-validate"]
      artifacts_updated: ["prototype v1.2  v1.3"]
      success: true

Metrics Integration

Track iteration patterns for process improvement:

// metrics/design-iterations.json
{
  "iterations": [
    {
      "project": "VisiMatch Camera",
      "total_iterations": 4,
      "triggers": {
        "usability_test": 2,
        "stakeholder_feedback": 1,
        "tech_constraint": 1
      },
      "phases_returned_to": {
        "pd-1": 0,
        "pd-2": 1,
        "pd-3": 2
      },
      "avg_iteration_duration_hours": 3.5
    }
  ]
}
  • /vt-c-pd-inbox-scan - Detect new items
  • /vt-c-pd-analyze-changes - Analyze impact (run before this)
  • All /pd-* phase skills - Launched by routing decision