Files
agentic-dev-template/.sandcastle
Danijel Martinek cd0a332443 docs: surface sandcastle image-build step (one-time setup)
Closes the gap the user hit running `pnpm work decompose --execute`:
sandcastle errored with `Image 'sandcastle:template-vertical' not
found locally. Build it first with 'sandcastle docker build-image'`,
but neither the README nor the runbook documented this step.

README.md: new "Sandcastle setup (one-time)" section after Quick
reference. Three commands (docker info, build-image, auth) — the
minimum needed to make dispatch work. Links to the runbook for the
full lifecycle.

docs/guides/runbook.md: Prerequisites in "Using Sandcastle" grow
from 4 to 5 items. New step 2 walks through `sandcastle docker
build-image`, quotes the exact "Image not found locally" error so
agents searching for the string land on the fix, and shows the
remove-image + rebuild flow for Dockerfile edits.

.sandcastle/README.md: new "Build the sandbox image (one-time)"
section parallel to the env section, cross-linking to the runbook.

scripts/work/decompose.mjs + scripts/work/dispatch.mjs: when the
sandcastle error message matches the "Image '.+' not found locally"
pattern, the dispatcher now prints the build-image command inline
above the generic "See runbook" line. The error stack itself remains
unchanged.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 17:51:30 +02:00
..

.sandcastle/

This directory holds prompt templates that the future orchestrator (pnpm work dispatch in the sandcastle-dispatch-v1 epic) feeds to sandcastle when dispatching agents.

Prompt templates

File Role Variables
prd-eliciter.prompt.md Interview a human to produce a PRD draft {{INITIAL_BRIEF}}
adr-eliciter.prompt.md Interview a human to produce an ADR draft {{INITIAL_PROPOSAL}}
decomposer.prompt.md Turn a PRD into epic + story files {{PRD_FILE_CONTENT}}
implementer.prompt.md Execute a single task {{TASK_FILE_CONTENT}}
reviewer.prompt.md Review the implementer's diff {{TASK_FILE_CONTENT}}, {{DIFF}}

Convention: every prompt enforces "generators first"

Each prompt template starts with the same non-negotiable rule: the agent must prefer pnpm turbo gen <kind> over hand-rolled scaffolding. This applies to feature packages, events, jobs, realtime channels, optional core packages, and atomic-design components. Hand-rolled code is only acceptable when the generator's output doesn't cover the case — and even then, the agent runs the generator first and modifies its output rather than starting from scratch.

Environment

Configure runtime tokens via .env (gitignored). Copy .env.example and fill values for the providers you use.

Build the sandbox image (one-time)

Sandcastle dispatches into a Docker image tagged sandcastle:<root-package-name>. Build it once per clone before pnpm work dispatch --execute or pnpm work decompose <id> --execute will work:

pnpm exec sandcastle docker build-image
# Tags: sandcastle:template-vertical

Rebuild after editing this Dockerfile:

pnpm exec sandcastle docker remove-image
pnpm exec sandcastle docker build-image

See docs/guides/runbook.md → Using Sandcastle → Prerequisites for the full setup.

Manual usage

Until the orchestrator ships, these templates are usable manually: copy the relevant .prompt.md content into a Claude / Codex / other agent session, fill the {{VARIABLE}} placeholders by hand, and run.