name: zbeam-page-orchestrator description: "Section-by-section page orchestration. Use when generation-loop stalls on oversized pages. Not the primary path — generation-loop handles routine work."
Z-Beam Page Orchestrator
Manual-only skill — called by Todd directly, not by weekly-batch or generation-loop. Use when: writing a new page where the full-page content-writer would exceed context limits. Alternative to generation-loop for very large pages or slow-start situations. generation-loop is preferred for routine new-page work; use this when generation-loop stalls.
Sequences zbeam-content-writer one section at a time. Each call is small and focused.
The page section (title, description, meta) is always written last.
Input required: slug, content type (material | application | location), mode (new | update)
Mode:
new— page doesn't exist yet; useszbeam-content-writer section:[x]update— page exists; useszbeam-page-updater section:[x]
Step 1: Prerequisites
# Confirm editorial brief exists
ls data/research/editorial-brief-[slug]-*.json | sort | tail -1
import json, glob
eb_file = sorted(glob.glob('data/research/editorial-brief-[slug]-*.json'))[-1]
eb = json.load(open(eb_file))
print('contentType:', eb.get('contentType', 'material'))
print('readyToWrite:', eb.get('readyToWrite', True))
if not eb.get('readyToWrite', True):
print('BLOCKED — gaps:', eb.get('blockingGaps', []))
Stop if readyToWrite is false. Report blocking gaps to user.
Step 2: Create page shell (new pages only)
If no YAML file exists yet, create a minimal shell before section writes begin:
import yaml
from datetime import date
slug = '[slug]'
content_type = '[material|application|location]'
today = date.today().isoformat()
shell = {
'document': {
'id': slug,
'contentType': content_type,
'schemaVersion': '7.0.0'
},
'routing': {
'slug': slug,
'fullPath': f'/materials/[category]/[subcategory]/{slug}',
'category': '[category]',
'subcategory': '[subcategory]'
},
'page': {
'title': f'[{slug} — placeholder]',
'description': '',
'subject': '',
'keywords': []
}
}
path = f'frontmatter/{content_type}s/{slug}.yaml'
with open(path, 'w') as f:
yaml.dump(shell, f, allow_unicode=True, sort_keys=False, default_flow_style=False)
print(f'Shell created: {path}')
For rewrite mode (page already exists): skip this step.
Step 3: Run sections in order
Read references/section-sequences.md for the full section tables (material + application)
and the pre-extract logic that loads the written-sections snapshot and slices the section
brief from all three research briefs before each section write.
Which skill to use:
- Mode
new→zbeam-content-writer - Mode
update→zbeam-page-updater
Validation after each section:
python3 -c "import yaml; yaml.safe_load(open('frontmatter/[type]s/[slug].yaml'))" && echo "valid"
Do not skip ahead. Each section builds on the previous one, and page depends on all of them.
Progress log — copy and track as you go
Material page:
[ ] 1. characteristics
[ ] 2. laserInteraction
[ ] 3. machineSettings
[ ] 4. industryApplications
[ ] 5. regulatoryStandards
[ ] 6. faq
[ ] 7. serp ← title + metaDescription
[ ] 8. page ← description + keywords (last)
Application page:
[ ] 1. problems
[ ] 2. howToProceed
[ ] 3. faq
[ ] 4. enhancements
[ ] 5. serp ← title + metaDescription
[ ] 6. page ← description + keywords (last)
Mark each [x] when the section passes YAML validation with no FAIL items.
Step 4: Final validation pass (after all sections complete)
Run in order once all sections are marked [x]:
- Post-gen report
group:prose— fast prose check, YAML only - Post-gen report
group:seo— SERP fields + sectionDescription, YAML only - Fix all FAIL items from steps 1–2 (surgical string replacement)
- Post-gen report
group:data— source grounding + required sentences (loads briefs) - Fix any FAIL items from step 4
zbeam-crosslinker [slug]— adds internal linkszbeam-content-validator [slug]— full gate (loads only what each dim needs)
Report to user
- Content type + sections completed
- Word count per section
- FAIL items encountered and fixed during section writes
- Post-gen score
- Crosslinks added
- Validator result (PASS / FAIL with dimension scores)