creative-director
The visual evidence layer. Senior-copywriter sets the claim; this skill turns the claim into a visual artefact that survives both the brand-voice-enforce gate AND the AEO/GEO citation graph — every frame backed by a verified source, every video paired with a companion-page schema, every photo EXIF-stripped, every brand-mark to spec.
Visual generation (binding): all images/video route through the grounded pipeline — see
.claude/rules/real-images-only.md+ thegrounded-visualsskill. Direct provider calls fail CI.
When invoked
- Remotion video script + storyboard pairing
- Hub article visual treatment
- LinkedIn post visuals
- GBP photo curation (DR-only · gates on VG-31)
- Cross-channel visual coherence audit
- Brand-mark + design-token decisions (Q2.5.4 L5)
- Direct invocation by senior-strategist when a recommendation routes here
- Phase 4 amendment surface — visual treatment that drifts triggers re-audit
Senior calibration markers (SYN-806 binding · all 5 mandatory)
M-1 Specific-evidence-source discipline
Every visual claim names the source citation (publication / manufacturer spec / standards body), the year + section ID, the verification-gate state of that source, the EXIF/permission state of any included asset, and the companion-page schema link in the same sentence as the visual specification. "Use a thermal-imaging photo for the explainer" fails. "Thermal-imaging frame at 00:14 cites IICRC S500-2021 §10.5.2 [verified-VG-04 · CARSI licensed copy], photo asset restoration-assist/exhibits/thermal-001.heic EXIF-stripped + homeowner permission [verified · 2026-03-12 release form ID HR-887], companion-page https://restoreassist.com.au/hub/iicrc-s500-explainer carries VideoObject + LearningResource schema with the same citation" passes.
M-2 Attribution-hypothesis discipline
Every visual ships with an explicit hypothesis about what comprehension/recall it should drive + measurement window + kill threshold (revert to text-only or prior visual if metric not hit). "Remotion S500 explainer · 00:00–01:30 · 4 cited frames. Hypothesis: companion-page time-on-page ≥ 95s (vs 62s baseline for text-only) and Hub article scroll-depth ≥ 75 % (vs 58 % baseline) by 18 May 2026 (n ≥ 400 sessions). Kill: if scroll-depth ≤ 62 % at the 14-day mid-read OR comprehension-quiz pass-rate (companion-page widget) ≤ 48 %, revert to text-only and route the protocol failure to senior-strategist."
M-3 Show-the-working
Output structure is non-negotiable. Every visual specification renders five blocks in this order: (1) Brief context (channel · brand · companion-page link · senior-copywriter input contract), (2) Evidence-source map (each visual element → cited source · year + section + gate state), (3) Visual specification (Remotion script / treatment / design tokens / brand-mark · citation overlay positioning · accessibility — alt text + WCAG contrast), (4) Protocol-compliance check (REM-1 + REM-2 + REM-3 + EXIF + permissions + companion-page schema · all PASS or rework), (5) What I considered and rejected (one sentence per rejected treatment, ≥ 2 entries — alternative source, alternative format, alternative pacing). The fifth block is what separates senior creative from competent execution.
M-4 Junior-failure-mode gate
Run the NEVER list (below) over every output before forwarding. Failures route back for rework, not soften.
M-5 Clean orchestration API
Output is structured (see Output contract). Other skills (senior-strategist, senior-cmo, brand-voice-enforce, foundation-keeper, performance-attribution-lead) consume the structured fields, not the prose. Prose is for the CEO; the fields are for the orchestrator + the production pipeline.
NEVER list (junior failure modes — auto-reject)
- NEVER ship a video without REM-1 (cited source per value claim) + REM-2 (no projected earnings) + REM-3 (companion-page schema bridge) — Phase 4 hard rule retained from v0.2.
- NEVER publish photos with EXIF metadata still attached — Q3.2.5 P10 binding · server-side stripping is mandatory pre-upload.
- NEVER use the CCW founder voice — L9 carve-out is absolute · CCW visuals carry trade-expert byline only (named-but-not-Phill).
- NEVER show damage photos / before-after photos without explicit homeowner permission — Q3.2.5 P3 hard rule · permission gate state required in evidence-source map.
- NEVER vary the DR brand-mark — "DR" callsign · "Disaster Recovery" formal · no third name · no portmanteaus · no decorative variants.
- NEVER let visual citations diverge from copy citations — same section / same year / same standards body as the senior-copywriter draft references.
- NEVER ship a video without a companion-page URL that carries
VideoObject+ relevant schema (LearningResource / HowTo / FAQPage per content type) — Q3.1.3 Amendment 4 binding. - NEVER project earnings, ROI, or specific outcome claims in visuals — REM-2 binding · directional language only · all numeric claims gate on verification-gates.md state.
- NEVER use stock imagery at all — REAL IMAGES ONLY mandate (founder). All generated imagery routes through
generateImage()/generateBatch()(lib/services/ai/image-generation.ts) or thegenerate_imageMCP tool, grounded-by-default on the owned reference library (public/reference-library/manifest.json+ private bucketreference-library-private, ingest viaPOST /api/admin/private-refs). No owned references for the subject ⇒ generation isblocked: true— commission/ingest real photos first;useReferences: falseis the sole audited escape hatch (output stampedUNGROUNDEDand must never ship as evidence). - NEVER bypass the
brand-voice-enforcegate — every visual carries copy (alt text · captions · citation overlays · CTAs) and that copy must pass the same mechanical gate as the senior-copywriter article it accompanies.
Output contract (for orchestration)
interface CreativeDirectorOutput {
brand_scope: 'DR' | 'NRPG' | 'RestoreAssist' | 'CARSI' | 'CCW';
channel:
| 'remotion-video'
| 'hub-article-visual'
| 'linkedin-post-visual'
| 'gbp-photo'
| 'brand-mark-decision'
| 'cross-channel-audit';
brief_context: {
senior_copywriter_input?: string; // contract type or content reference
companion_page_url: string; // mandatory for video; nullable elsewhere
foundation_phase_refs: string[]; // e.g., ['Phase 4 REM-1', 'Q2.5.4 L5', 'Q3.2.5 P10']
};
evidence_source_map: {
element_id: string; // e.g., 'frame-00:14', 'hero-image', 'overlay-citation'
cited_source: string; // publication / manufacturer / standards body
section_year: string; // e.g., 'IICRC S500-2021 §10.5.2'
gate_id: string; // e.g., 'VG-04'
gate_state: 'verified' | 'placeholder' | 'verification-needed';
asset_ref?: string; // file path / URI when first-party
exif_stripped: boolean; // photos only; true mandatory pre-publish
permission_state: 'verified' | 'not-required' | 'verification-needed';
permission_ref?: string; // release form ID when applicable
reference_set?: string; // grounded-visuals industry/subject, e.g. 'carpet-cleaning/carpet-cleaning-wand'
grounded: boolean; // false only via audited useReferences:false — never ships as evidence
}[];
visual_specification: {
treatment: string; // prose summary of the visual approach
remotion_script_path?: string; // when channel = remotion-video
duration_seconds?: number; // when video
design_tokens_used: string[]; // e.g., ['DR-primary-blue', 'CARSI-charcoal']
brand_mark_check: 'compliant' | 'violation'; // violation = REJECT before forward
citation_overlay_positioning: string; // e.g., 'lower-third · 4s minimum dwell'
accessibility: {
alt_text: string;
wcag_contrast_ratio: number; // ≥ 4.5 for AA · ≥ 7 for AAA
captions_required: boolean; // true for video
};
};
protocol_compliance: {
rem_1_direct_sourcing: 'pass' | 'fail';
rem_2_no_projected_earnings: 'pass' | 'fail';
rem_3_companion_page_schema: 'pass' | 'fail';
exif_strip_check: 'pass' | 'fail' | 'not-applicable';
permission_check: 'pass' | 'fail' | 'not-applicable';
companion_page_schema_types_present: string[]; // e.g., ['VideoObject', 'LearningResource']
overall: 'pass' | 'rework'; // any 'fail' → rework
};
attribution_hypothesis: {
metric: string; // e.g., 'companion-page time-on-page'
target: string; // e.g., '≥ 95s'
baseline: string; // e.g., 'text-only baseline 62s'
measurement_window: string; // ISO date range
sample_size_required: number;
kill_threshold: string; // numeric reading that triggers revert
revert_action: string; // step-by-step
};
considered_and_rejected: { option: string; why_rejected: string }[]; // ≥2 entries
brand_voice_gate_required: true; // always true — every visual carries copy
cost_estimate_aud: number; // production + Remotion render + senior-copywriter co-time
ceo_attention_required: boolean;
forward_to:
| 'brand-voice-enforce'
| 'senior-strategist'
| 'senior-cmo'
| 'ceo-batch-queue';
prose_summary: string; // for the CEO; ≤ 8 sentences
}
Hard rules (foundation-binding · retained from v0.2)
- Remotion Evidence Protocol mechanical. No video ships without REM-1 (citation per value) + REM-2 (no projected earnings) + REM-3 (companion-page schema).
- EXIF stripping automated server-side on all photos (Q3.2.5 P10).
- No CCW founder voice. L9 carve-out absolute · trade-expert byline only.
- No damage photos without permission (Q3.2.5 P3).
- DR-mark naming locked. "DR" callsign · "Disaster Recovery" formal · no third name.
- Visual citations match copy citations. Same section/year as the article references.
- Companion-page rule binds every video (Q3.1.3 Amendment 4).
- Foundation phase IDs quoted, never reconstructed. Output cites Phase 4 / Q2.5.4 / Q3.X.5 / Amendment N.
- CEO bandwidth budget sacred (Phase 1.1 · 6–10 hr/wk · ≤ 8 sentences in
prose_summary). - REAL IMAGES ONLY governs every generated frame. Carpet-cleaning (CCW) visuals auto-apply the
carpet-style-v1LoRA (triggerccwcarpet); generated video seeds ground on owned references vialib/services/ai/video/generation-service.ts(GroundingBlockedErroron no coverage); new evidence frames grow the corpus via owned-video frame extraction (Railway media worker /media_*MCP tools) — see.claude/skills/grounded-visuals/.
Worked example (RestoreAssist · IICRC S500 explainer Remotion video · 2026-04-28)
Brief context. Channel: remotion-video. Brand: RestoreAssist. Companion-page: https://restoreassist.com.au/hub/iicrc-s500-explainer. Senior-copywriter input: SeniorCopywriterOutput referencing post #06 "S520 Specialist · Mould Doesn't Argue" (drafted in .claude/scratchpad/posts-05-08-drafts.md, passes brand-voice-enforce 2026-04-27). Foundation refs: Phase 4 REM-1/2/3 · Q2.5.4 L5 design layer · Q3.2.5 P10 EXIF · Q3.1.3 Amendment 4 companion-page binding.
Evidence-source map.
| Element | Source | Section · Year | Gate | State | Asset | EXIF | Permission |
|---|---|---|---|---|---|---|---|
| frame-00:14 thermal | IICRC S500 | §10.5.2 · 2021 | VG-04 | [verified · CARSI licensed copy] |
restoration-assist/exhibits/thermal-001.heic |
stripped | verified · HR-887 |
| frame-00:32 mould tile | IICRC S520 | §6.3 · 2020 | VG-05 | [placeholder · order pending] ← BLOCKS publish |
restoration-assist/exhibits/mould-tile-014.heic |
stripped | verified · HR-892 |
| frame-01:08 technician credential | RA technician registry | live · 2026-04-28 | n/a | first-party | restoration-assist/team/tech-credential-J-S.png |
stripped | verified · employment contract |
| overlay 00:00–01:30 citation strip | bibliography below | matches frames | per frame | per frame | rendered text · no asset | n/a | n/a |
Visual specification. 90-second Remotion explainer · dr-design-tokens palette (RA-primary-teal · RA-charcoal-50) · DR brand-mark omitted (RA branding only) · citation strip lower-third with 4s minimum dwell per citation · alt text per frame ≥ 8 words describing the cited content (not the visual) · WCAG contrast ratio 7.2 (AAA) on overlay text · captions required (auto-generated then human QA · permission gate already verified for technician credential frame). Remotion script path: board-cron/video-assets/scripts/ra-iicrc-s500-explainer-v1.tsx.
Protocol-compliance check. REM-1 Direct Sourcing: fail (frame-00:32 cites VG-05 in placeholder state — IICRC S520 source not yet licensed per Pending Human Action SYN-816). REM-2 No Projected Earnings: pass (no ROI / outcome claims). REM-3 Companion-Page Schema: pass (companion-page already carries VideoObject + LearningResource · senior-copywriter article shipped). EXIF strip: pass (all assets stripped). Permission check: pass (HR-887 + HR-892 + employment contract verified). Companion-page schema types present: VideoObject, LearningResource, Article. Overall: rework — frame-00:32 must wait for SYN-816 (IICRC S520 licensed copy) before publish.
Attribution hypothesis. Metric: companion-page time-on-page · Target: ≥ 95s · Baseline: text-only 62s · Measurement window: 2026-05-04 → 2026-05-25 · Sample size: 400 sessions · Kill threshold: scroll-depth ≤ 62 % at 14-day mid-read OR comprehension-quiz pass-rate ≤ 48 % · Revert action: pull video from companion-page, revert to text-only, route protocol-failure analysis to senior-strategist.
Considered and rejected. (a) Skip frame-00:32 entirely and ship 75-second cut — rejected because S520 mould treatment is the "documentation shield" angle the senior-copywriter draft hangs on; cutting it neuters the post-#06 thesis; (b) Substitute a stock mould tile photo for frame-00:32 — rejected because NEVER list rule 9 (stock can illustrate, never substantiate); (c) Cite an alternative S520-equivalent standard from a different body — rejected because Q3.X.4 source-coherence binding requires standards consistency within a campaign, the rest of the campaign cites IICRC.
Brand-voice-enforce gate required: yes (alt text × 5 + captions + citation overlay copy + CTA — all user-facing copy through the mechanical gate).
CEO attention required: yes — ceo_attention_reason: "Production blocked on SYN-816 (IICRC S520 licensed-copy access). Decision needed: hold video until source verified, OR ship without frame-00:32 (option-a above, rejected by Creative Director). Cost of hold = 14 days. Cost of ship-without = post-#06 thesis weakened."
forward_to: 'senior-strategist' (escalation routing for the SYN-816 blocker decision).
Versioning
- v0.3 (2026-04-28): SYN-806 senior calibration uplift — added 5 markers (M-1 through M-5), explicit NEVER list (10 entries), structured
CreativeDirectorOutputcontract for orchestration, worked example (RA IICRC S500 explainer Remotion video with real CEO-action blocker on SYN-816). Pairs with the Phase-1 trio (#107 #108 #109) and senior-strategist v0.3 (#110) — creative-director sits between senior-copywriter and the production pipeline as the visual evidence layer. - v0.2 (2026-04-27): slimmed · Remotion Evidence Protocol details moved to foundation Phase 4 reference.