feat(cmo): Steam launch playbook — capsule_set, landing_page, press_kit + Steam-aware reviewer
Why
The heuristic reviewer's action library was missing the deliverables a real Steam launch needs: capsule art (the 6 required sizes), owned-channel web presence, press kit, demo plan, localization, wishlist conversion. With Triple O's first Steam launch (aziz/cnc) on the horizon this gap was costing concrete deliverables.
What
Reviewer (project_reviewer.py): new _steam_actions(readiness) set, only emitted when positioning.platforms includes pc/steam/windows/mac/linux. Adds 9 new action kinds across alpha/beta/launch-ready stages. Mobile-only projects unaffected.
Three new executors (project_dashboard/executor.py):
-
capsule_set— drafts all 6 Steam capsules with focal element, logo treatment, must-avoid, and Claude-enriched illustration prompt + palette + mood per capsule. -
landing_page_draft— generates self-contained static HTML+inline CSS landing page from a Claude-drafted copy bundle. No external deps. -
press_kit_assemble— fact-sheet markdown + asset checklist + presskit()-style directory structure.
All follow the existing pattern: deterministic skeleton → optional Claude enrichment → always returns usable output. Image production stays delegated to the creative pipeline.
Verification on aziz/cnc
Executed all three live against the persisted aziz/cnc review with platforms=[pc, steam]:
- 6 capsules with concrete prompts ("USA Particle Cannon firing over desert base", "Chinese Overlord tank meeting GLA technical column").
- Landing page tagline: "The General you remembered is back. Three factions, zero compromises, one more chance to rule the battlefield."
- Press kit fact sheet rendered at 1166 chars; asset checklist with 7 items.
Three new actions persisted and visible in the dashboard at https://cmo.laparedita.com/projects/
Tests
- 3 new executor offline tests (verify shape + Steam dimensions are exact + HTML is self-contained).
- 2 reviewer tests covering Steam-target emission and mobile-only omission.
- Full suite: 352 passed (+5).