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.
npx skills add https://github.com/apify/shepherd --skill shepherd-approve-design
Record human approval of the design, success criteria, and review panel so implementation can begin.
.shepherd/2-design.md, .shepherd/3-success-criteria.md, and .shepherd/_panel.json;stop if any is missing. Approval covers all three.
reason in 3-5 lines.
_state.json: 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
mkdir -p .shepherd
printf 'approved_at=%s\napproved_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
/shepherd so it resumes into implementation.Do not edit source here.
Take apify/shepherd-approve-design from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.