# builder-spores.md
# task-class: builder
# scion-model: gemini-2.5-flash
# token-budget: 800
# last-updated: 2026-03-24

---
spore: aesthetic-contract
task-class: builder
scion-model: gemini-2.5-flash
deposited: 2026-03-24
hook: nil
---
policy: all built pages must match the star-map aesthetic contract in commission brief
trigger: PostToolUse · tool=Write · file_path in site/ · ext .html
on-match: allow
on-novel: escalate to parent

---
spore: no-self-hosted-video
task-class: builder
scion-model: gemini-2.5-flash
deposited: 2026-03-24
hook: hooks/video-embed-guard.js
---
policy: deny any video file reference that is not an external embed URL
trigger: PreToolUse · tool=Write · content contains <video src= with local path
on-match: deny
on-novel: escalate to parent

---
spore: no-large-file-commit
task-class: builder
scion-model: gemini-2.5-flash
deposited: 2026-03-24
hook: hooks/large-file-guard.py
---
policy: deny writes of files >1MB to site/; use FileBrowser URL reference instead
trigger: PreToolUse · tool=Write · file_path in site/ · file_size > 1MB
on-match: deny
on-novel: escalate to parent

---
spore: output-to-site-only
task-class: builder
scion-model: gemini-2.5-flash
deposited: 2026-03-24
hook: nil
---
policy: write built output to site/{section}/ only; never write directly to ToBuild or DumperCan
trigger: PreToolUse · tool=Write · file_path not in site/
on-match: deny
on-novel: escalate to parent

---
spore: nav-back-required
task-class: builder
scion-model: gemini-2.5-flash
deposited: 2026-03-24
hook: nil
---
policy: every built page must include a back link to the star-map home page
trigger: PostToolUse · tool=Write · file_path in site/ · ext .html · no back-link detected
on-match: escalate
on-novel: escalate to parent

---
spore: skill-scout-required
task-class: builder
scion-model: gemini-2.5-flash
deposited: 2026-03-24
hook: nil
---
policy: parent must run skill-scout before commissioning builder; section-appropriate skill must be bundled
trigger: SessionStart · source=startup · SCION_EXTERNAL_SKILL unset
on-match: escalate
on-novel: escalate to parent
