# Shepherd Approve Design

> HUMAN-ONLY shepherd design approval. Run after reviewing .shepherd/2-design.md, .shepherd/3-success-criteria.md, and .shepherd/_panel.json. Records the approved panel in _state.json, writes .shepherd/_design.approved, and hands control back to /shepherd. The agent cannot invoke this.

- Skill: `apify/shepherd-approve-design` (Agent Skill)
- Install (CLI): `npx skillmds@latest add apify/shepherd-approve-design`
- Raw SKILL.md: https://api.skillmd.com/api/skills/apify/shepherd-approve-design/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: apify (https://skillmd.com/u/apify)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/apify/shepherd-approve-design

---


# Approve design

Record human approval of the design, success criteria, and review panel so implementation can begin.

1. Read `.shepherd/2-design.md`, `.shepherd/3-success-criteria.md`, and `.shepherd/_panel.json`;
   stop if any is missing. Approval covers all three.
2. Summarize the approach, success criteria, reviewers, final reviewers, limits, and panel
   reason in 3-5 lines.
3. Copy the approved panel into `_state.json`:
   ```bash
   python3 - <<'PY'
   import json
   from pathlib import Path
   state_path = Path(".shepherd/_state.json")
   panel = json.loads(Path(".shepherd/_panel.json").read_text())
   for key in ("reviewers", "final_reviewers", "inner_iterations", "final_review_rounds"):
       if key not in panel:
           raise SystemExit(f"_panel.json missing required key: {key}")
   state = json.loads(state_path.read_text()) if state_path.exists() else {}
   state["panel"] = panel
   state["phase"] = "inner-loop"
   state["iteration"] = 1
   state_path.write_text(json.dumps(state, indent=2, sort_keys=True) + "\n")
   PY
   ```
4. Write the marker:
   ```bash
   mkdir -p .shepherd
   printf 'approved_at=%s\nbase_commit=%s\nnote=design approved by human via /shepherd-approve-design\n' \
     "$(date -u +%Y-%m-%dT%H:%M:%SZ)" "$(git rev-parse HEAD 2>/dev/null || echo none)" \
     > .shepherd/_design.approved
   ```
5. Confirm briefly, then invoke `/shepherd` so it resumes into implementation.

Do not edit source here.

