Restaurant Demo Orchestrator
Run one resumable work order from lead intake through a locally verified private Demo. Treat this Skill and the main agent as the control plane; use three bounded worker agents and the four specialist Skills as execution planes.
Read references/orchestration-contract.md before changing the stage model, artifact kinds, or transition rules.
Start Or Resume A Work Order
- Read the project context and inspect local lead data before browsing.
- Initialize the work order with
scripts/workflow.py init. Seed the Sheet row, Place ID, Maps URL, and local lead snapshot when available. - Run
scripts/workflow.py resumeto obtain every active or dependency-ready stage, its worker lane, assigned Skill, expected artifacts, and stage-specific prompt. - Complete intake, research, design lock, and image slots in the main agent before fan-out.
- Spawn one design worker, one food worker, and one exterior worker when subagents are available. Start the three dependency-ready lanes together; each worker records real artifacts and marks only its assigned stages
passed,blocked, or—only for an optional branch—skippedwith a reason. - Join all workers. The main agent runs contract validation, integrates their outputs, resolves conflicts, performs final QA, and records the private Demo.
- Run
scripts/workflow.py validateafter transitions. Use--run-contractsafter palette, food, or exterior manifests pass. - Repeat until
private_demopasses or evidence creates a genuine blocker. If subagents are unavailable, execute the same lanes sequentially and record the fallback in stage notes.
Do not ask the user to invoke each Skill separately. When the user says to build, run, continue, or resume the Demo, continue through all unblocked stages in the same task. Give concise progress updates when switching specialist Skills.
Preserve Specialist Boundaries
Use the assigned Skill rather than reproducing its work inside the orchestrator:
research,design_lock,image_slots,site_design,implementation, andqa:$restaurant-demo-builderbrand_palette:$restaurant-brand-palettefood_images:$restaurant-food-image-studioexterior_image:$restaurant-exterior-image-studiointakeandprivate_demo: this Skill
Before dispatching a specialist stage, the main agent must read that Skill completely. Each worker must also read its assigned Skill and follow its evidence and validation gates. A stage may pass only when its required artifacts exist. A specialist manifest status recorded by the workflow never overrides the specialist validator.
Parallel Agent Contract
Use at most three worker agents in these isolated lanes:
design: runbrand_palette, then create the responsivesite_designshell with contract-defined image placeholders. Write palette/lock/handoff files and the site shell; do not integrate worker image outputs or perform final QA.food: runfood_images. Write only the Food Image Studio work order and manifest; do not edit the site shell or final Demo.exterior: runexterior_image. Write only the Exterior Image Studio work order and manifest; do not edit the site shell or final Demo.
The main agent owns intake, research, locks shared by all lanes, final implementation, QA, repository operations, publication decisions, and the user handoff. Only the main agent may copy selected worker assets into the final Demo, reconcile copy/layout/asset conflicts, or declare the Demo ready.
Workers may update their own workflow stages through workflow.py set-stage; the state tool serializes concurrent writes. A worker must not edit another lane's files or statuses. On worker completion, inspect the actual artifacts and run validators instead of trusting the message alone.
Stage Rules
Follow this order:
intake
-> research
-> design_lock
-> image_slots
-> [design: brand_palette -> site_design]
[food: food_images] (parallel)
[exterior: exterior_image]
-> implementation by main agent
-> qa
-> private_demo
food_images and exterior_image are decision branches, not silent omissions. Pass them when qualified assets are produced; skip them with an evidence-backed reason when the page remains text-led or an exterior adds no arrival value. Never skip brand_palette; use its explicitly labeled Recipe fallback when restaurant evidence cannot support a brand-derived palette.
Use these statuses only. Up to three dependency-independent worker stages may be in_progress, but only one per worker lane; a main-agent stage never overlaps a worker stage:
pending: not startedin_progress: actively executing; only one stage at a timepassed: dependencies, artifacts, and relevant validators passblocked: cannot proceed; record a concrete blockerskipped: optional branch deliberately omitted; record why
Never mark incomplete work passed to advance the workflow. Reopen a terminal stage with --reopen when its evidence or output changes.
Commands
Replace <orchestrator-skill> with this installed skill folder. Run work-order commands from your restaurant project directory.
Initialize:
python3 <orchestrator-skill>/scripts/workflow.py init \
--project-root . \
--restaurant "Restaurant Name" \
--slug restaurant-name \
--place-id "PLACE_ID" \
--maps-url "GOOGLE_MAPS_URL" \
--lead-json output/leads.json \
--source-sheet-id "SHEET_ID" \
--source-sheet-title "Sheet title" \
--source-tab Sheet1 \
--source-row 28 \
--sheet-checked-at 2026-07-13
Inspect and resume; resume may return multiple actionable stages after fan-out:
python3 <orchestrator-skill>/scripts/workflow.py status \
--workflow orchestration/restaurant-name/workflow.json
python3 <orchestrator-skill>/scripts/workflow.py resume \
--workflow orchestration/restaurant-name/workflow.json
Record a stage:
python3 <orchestrator-skill>/scripts/workflow.py set-stage \
--workflow orchestration/restaurant-name/workflow.json \
--stage research --status passed \
--artifact research_record=orchestration/restaurant-name/research/RESEARCH.md \
--artifact restaurant_profile=orchestration/restaurant-name/research/restaurant-profile.json
Validate:
python3 <orchestrator-skill>/scripts/workflow.py validate \
--workflow orchestration/restaurant-name/workflow.json --run-contracts
Guardrails
- Keep every new work order
private-localby default. - Do not add automatic deploy, upload, email, Messenger, or outreach commands.
- Keep verified facts, snapshot facts, inferences, creative decisions, and open questions distinct.
- Recheck current hours, menu, rating, review count, website status, services, and contact links before using them on the page.
- Do not place secrets, service-account files, tokens, or private credentials in a work order.
- Stop at
private_demo; publishing and outreach require separate explicit user authorization.
Handoff
Report the work-order path, current stage, local Demo path or URL when available, validation results, blockers, owner-confirmation items, and publication-clearance gaps. State explicitly that no publishing or outreach occurred unless separately authorized.