Spec-Driven Mode
Shep’s default is fast mode — describe a feature, the agent codes it, you review the PR. That’s the right choice for most work.
When the change is bigger or the approach matters more than the speed, switch to spec-driven mode. Shep produces a PRD, a research artifact, and a plan — each one a stop where you can read what the agent is about to do and approve, edit, or reject before any code is written.
When to use it
Reach for --no-fast when:
- The feature is large enough that you want a plan before code.
- The approach is non-obvious and you want to see the tradeoffs.
- You’re delegating to multiple agents in sequence and want the artifacts as a hand-off contract.
- A teammate will review the proposal before implementation.
Stick with the default for:
- Bug fixes.
- Small, well-defined features (“add a /health endpoint”).
- Anything you’d describe in one sentence.
The pipeline
Started ─▶ Analyze ─▶ Requirements ─▶ Research ─▶ Planning ─▶ Implementation ─▶ Review ─▶ Maintain
│ │ │
Gate 1: PRD (research) Gate 2: Plan
│
Gate 3: MergeWhat each phase produces
Analyze
Shep examines your codebase: architecture, dependencies, conventions, tech stack. The output goes to the agent as context for the rest of the pipeline.
Requirements
The agent turns your description into a structured PRD. You see:
- Goals
- User stories
- Acceptance criteria
- Out-of-scope items
- Open questions
This is Gate 1. By default Shep pauses here. Read the PRD, edit anything wrong, then approve. Use --allow-prd to auto-approve.
Research
The agent investigates the technical approach: which libraries, which patterns, which tradeoffs. Output is a research artifact you can read.
There’s no gate here by default — Shep moves on automatically.
Planning
The agent produces a tasks list — concrete steps with acceptance criteria. Each task is a unit of work the implementation phase will execute.
This is Gate 2. By default Shep pauses. Approve, edit, or reject. Use --allow-plan to auto-approve.
Implementation
The agent works through the plan task-by-task. You can watch live in the dashboard.
If agents.implementation.requireApproval is set, the agent pauses before each task. Otherwise it runs the whole plan.
Review, then PR
Same as fast mode — push, open draft PR, watch CI, auto-fix on failure.
Gate 3: Merge
Only relevant if you set --allow-merge. Shep waits for CI to pass, then merges the PR. Without that flag, the PR stays in draft and you merge manually.
Running it
shep feat new "redesign the payment system" --no-fast --prApprove gates from the dashboard, or from the CLI:
shep feat approve <id> # approve current gate
shep feat reject <id> --feedback "..." # reject and request changes
shep feat resume <id> # continue after providing feedbackTuning automation
Mix and match approval flags to dial in how much you want to be in the loop:
| Setup | What you approve |
|---|---|
--no-fast | PRD, plan, and (manual) merge. |
--no-fast --allow-prd | Plan and (manual) merge. PRD auto. |
--no-fast --allow-prd --allow-plan | Manual merge only. PRD and plan auto. |
--no-fast --allow-all | Everything automated. PRD, plan, push, PR, merge. |
Artifacts
The PRD, research, and plan are stored as YAML in the worktree under specs/<feature-id>/. Each is human-readable and editable. After you edit, shep feat approve <id> continues with your edits.
What happens if the agent gets the PRD wrong
Two options:
- Reject with feedback.
shep feat reject <id> --feedback "the PRD missed the mobile flow — please add it". The agent regenerates the PRD with your feedback. - Edit and approve. Open the PRD file, fix it yourself, then
shep feat approve <id>.
Same pattern for the plan.
Defaults
To make spec-driven the default for a project, set it in workflow settings:
shep settings workflow
# answer "Use fast or spec-driven?" with spec-drivenOr per-repo in .shep/config.json:
{
"workflow": {
"defaultMode": "spec-driven"
}
}(Then individual features can opt into fast mode with --fast.)