🔄 Workflow Comparison: Code-Level Analysis
This document explains the technical differences between full_stack_dev, vibe_start, and boring_session_start based on their source code implementation.
| Feature | full_stack_dev |
vibe_start |
boring_session_start |
|---|---|---|---|
| Type | Prompt (Recipe) | Prompt (SOP) | Tool (System) |
| Source | src/boring/mcp/prompts.py |
src/boring/mcp/prompts.py |
src/boring/mcp/tools/session.py |
| Mechanism | Text Instruction | Text Instruction | Python State Machine |
| State | Stateless (Context Window) | Stateless (Context Window) | Stateful (Disk JSON) |
| Enforcement | Low (Suggestion) | Medium (SOP) | High (Code-Enforced) |
1. full_stack_dev (The Recipe)
Focus: Specific Tech Stack Implementation.
- Code Location:
prompts.py(Line 283) - What it does: It acts as a static "recipe" for building a FastAPI + React application.
- Workflow:
- Architecture
- Backend (FastAPI)
- Frontend (React)
- Deploy
- When to use: Only when you specifically want to build this exact stack in a "waterfall" simplified manner. It does NOT enforce quality gates programmatically.
# Code Snippet (prompts.py)
@mcp.prompt(name="full_stack_dev", description="全棧應用開發...")
def full_stack_dev(...):
return """Phase 2: 後端開發... Phase 3: 前端開發..."""
2. vibe_start (The Methodology)
Focus: General Best Practices & Phases.
- Code Location:
prompts.py(Line 206) - What it does: It instructs the Agent to follow the "Vibe Coding" methodology (Spec -> Plan -> Implement -> Verify).
- Workflow:
speckit_constitution(Principles)speckit_checklist(Quality)boring_multi_agent(Implementation)
- Key Difference: Unlike
boring_session_start, this is just a text prompt. The Agent could hallucinate skipping a step. It has no "memory" if the context window overflows.
3. boring_session_start (The System)
Focus: Robustness, State Recovery, & Human-in-the-Loop.
- Code Location:
session.py(Line 223) - What it does: It initiates a State Machine managed by Python code.
- Persistence: It saves state to
.boring/memory/sessions/{id}.json. This means even if the chat crashes, the session can be resumed (boring_session_continue). - Enforcement: It explicitly defines
SessionPhase(Alignment, Planning, Implementation...). You CANNOT proceed to Implementation without callingboring_session_confirm(), which is enforced by code logic.
# Code Snippet (session.py)
class VibeSessionManager:
def create_session(self, goal: str) -> VibeSession:
# Actually creates a file on disk
self.save_session(session)
@audited
def boring_session_start(...):
# Initializes the manager and returns Phase 1 output
manager = get_session_manager(project_root)
session = manager.create_session(...)
🎯 Summary Recommendation
| Goal | Recommended Tool |
|---|---|
| Serious, Complex Work | boring_session_start (via vibe_session prompt) |
| Quick, One-off Task | vibe_start |
| Learning Full Stack | full_stack_dev |
Best Practice: Always prefer boring_session_start (triggered by saying "Start Session") for professional work, as it guarantees the process is followed and progress is saved.