Skip to content

Source code

Agon Ātrium presentation video

Use the versioned tools in src/scripts/presentation/ and follow the presentation workflow. Resolve repository paths relative to this skill’s directory, two levels up. Read the root agent guidance before changing source. The existing presentation, artwork, screenshots, and marketing direction are the starting point.

Point users to the workflow’s quick start and file guide. yarn presentation:build generates all three video bundles and builds the applications. It uses preserved slide images. yarn presentation:rebuild also regenerates slides and PowerPoints when the documented authoring runtime is configured. Full narration comes from narration/, while samples/ contains only short voice audition text. Only final WebM videos belong in src/showcase/assets/. Keep JPG, VTT, TXT, and PPTX outputs under docs/presentation/artifacts/{posters,captions,transcripts,decks}/. These artifacts are versioned project material and must never enter the showcase package or application build.

Choose the smallest regeneration path

  • For narration changes, edit docs/presentation/narration/<language>.txt. Preserve the bracketed slide IDs and use natural English, German, or French. Run yarn presentation:check, then yarn presentation:video --locale <language>. The renderer derives durations and captions from the new speech. Do not edit generated transcripts in docs/presentation/artifacts/transcripts/ as the source of truth.
  • For visible slide copy or layout changes, edit docs/presentation/storyboard.json or the maintained render-slides.mjs script. Read the workflow’s slide-rendering section, regenerate the selected language’s source frames and revised deck, inspect the images, then regenerate its video. Narration-only changes do not require re-rendering frames unless the PowerPoint speaker notes must also be refreshed.
  • For updated product screenshots, use yarn presentation:capture against the intended local showcase, then regenerate slides and videos. The capture tool uses isolated browser preferences and local terminal/noVNC demonstration adapters. Do not substitute simulated UI artwork for product screenshots.
  • For opening artwork changes, preserve the actual Agon logo. Replace the versioned source/cover.png only with the requested artwork, then regenerate the affected frames and videos. Use an image-generation capability when new raster artwork is requested and available.

Build and delivery invariants

The video build uses versioned PNG frames and ordinary Python tools. It does not require Codex’s presentation runtime. The optional editable-deck renderer uses @oai/artifact-tool and the presentation skill’s finalizer through explicit environment paths. When that runtime is available through load_workspace_dependencies, read the installed Presentations skill and follow its authoring and finalization gates. Use the returned paths rather than inventing a machine-specific installation. If it is unavailable, complete any narration-only video work independently and report the deck-rendering limitation.

The speech pipeline uses Edge TTS in .build/presentation-tools/. It sends selected narration to Microsoft’s speech service and requires matching cached speech for --offline. Keep its pinned dependencies in src/scripts/presentation/requirements.txt. Do not put secrets or private customer data into a public product tour.

The confirmed French voice is Edge Ariane (fr-CH-ArianeNeural) with phonetic brand spellings in settings.json, at normal speed and unmodified pitch. Use yarn presentation:edge --locale fr to audition changes. Keep the official brand names in narration, slides, and transcripts. Edit pronunciations.fr for the spoken spelling, and preserve caption restoration and cache invalidation. The pronunciation map uses exact whole-word substitutions, not SSML. Keep the confirmed male voices Ryan (en-GB-RyanNeural) for English and Conrad (de-DE-ConradNeural) for German, at their existing -4% rate. Reserve Ariane and the phonetic brand substitutions for French. Do not substitute a voice for another language unless the user changes this choice. The user will review complete wording separately.

Cache entries depend on content rather than filenames. Do not copy old clips over changed inputs or bypass stale-frame validation. --force deliberately regenerates selected speech and clips. Existing playback assets survive speech or encoding failures. A stale .lock may be removed only after confirming the earlier build has ended.

Generate matching video and project artifacts for each language, preserving their separate destinations. The video contains the speech. The showcase loads only WebM files and has no external poster, captions, or transcript download. Use presentation:slides --update-artifacts to update versioned decks after validation. Keep the three language mappings in the showcase synchronized when filenames or languages change. Direct edits in a PPTX do not flow back into the storyboard or video.

Verify the requested result

Run yarn presentation:test and yarn presentation:check after tooling or input changes. Use a separate --output directory for experimental builds. Its artifacts default to a sibling <output>-artifacts/ directory. An explicit --artifacts may override that destination. For changed narration, verify the spoken text, caption timing, duration, and unchanged-slide cache reuse. For changed visuals, inspect the rendered frames before publishing their videos. Run the affected showcase browser workflow when replacing delivered media or changing player integration.

Keep source inputs, narration, tooling, and this skill available to Git. Keep environments, audio caches, clips, draft decks, and validation reports ignored. Review the resulting diff, preserve unrelated work, and report the exact regeneration command and remaining runtime limitations. Stop any preview or fixture started for verification unless the user requests that it remain running.

Author

Laurent Declercq l.declercq@agon-innovation.ch

Version

Version: 20260921