Other

/audio-dashboard

Use when building audio narration dashboards that require STT-after-TTS exact word-timing, a real word-click-seek read-along dashboard, the AfterCode workflow, or publish-to-tailnet delivery.

$ golems-cli skills install audio-dashboard
94% best pass rate
68 assertions
13 evals
fixtures

Updated 6 days ago

Purpose

This is the one canonical golem-powers skill for audio narration dashboards, and it is self-contained and transferable: the whole engine is vendored under vendor/ and driven by skill-local scripts under scripts/. Runtime/build paths do NOT clone or reach into $NARRATIONLAYER_ROOT, $AGENT_HTML_ROOT, or $SKILL_CREATOR_ROOT; the opt-in maintenance lint reads only the checkout named explicitly by NARRATIONLAYER_UPSTREAM. The only external requirements are machine-local binaries/daemon (verified by scripts/bootstrap.mjs) and the environment-specific tailnet publish/probe step.

The invariant: never ship read-along timing from WPM math, line duration, fake words, placeholder recap text, or old GolemPlaylist generators. A correct dashboard keeps immutable raw Whisper words.raw.json for gates, separate script-first repaired words.json for display, real transcript text, and word-click seek to the clicked timestamp.

When To Use

Use this for:

  • AfterCode read-along dashboards.
  • Narration dashboards that need exact word highlights or word-click seeking.
  • Regenerating a broken audio dashboard that drifted, restarted, or showed placeholder/meta transcript text.
  • Publishing an audio dashboard to the tailnet hub.

Do not use this for listen-only podcasts with no teleprompter requirement.

Dashboard Types

The skill exposes two separate types through the same timing, evidence, and tailnet pipeline. They share audio primitives, not presentation templates.

Type: cinema

Use the default cinema type for narrated digests and story-mode briefings. Omit spec.type or set "type": "cinema". It stays on the vendored V4 renderer at vendor/agent-html/templates/v4-story-mode/: a global Play-All story surface, Q/A scenes, read-along teleprompter, and optional decision boxes appended below.

Type: decision-flow — audio decision dashboard

Use decision-flow for questionnaires and batches of decisions. Its user-facing name is audio decision dashboard. Set "type": "decision-flow". Its standalone template lives in templates/decision-flow/ and does not render or overwrite cinema. Each decision is one self-contained ledger card whose sceneIds own all of that card's audio. The card-local play button runs those clips in order, keeps the real-word-timed teleprompter open while playing or paused, and collapses it only when that decision's full section completes. Word clicks seek within the section and retain the normal clip-to-clip flow. Next and Skip acknowledge the action, advance to the following card, and autoplay it. Picks and free text persist under the per-dashboard key dbx:<spec.id>, so a new dashboard ID cannot inherit an older dashboard's answers; Copy answers exports paste-ready markdown. Each card also exposes ↻ Restart, which restarts that decision's audio and teleprompter section from the beginning without advancing to another card.

Decision-flow is parallel to cinema, not a replacement. Cinema remains the pure-listening narrated-digest/story surface with global Play-All. A decision dashboard may set cinemaUrl to expose a small Cinema listening mode link to its parallel rendition.

Author decision-flow narration for the operator, not for the agents who coined the vocabulary: assume the listener has zero prior context. On first use, define every internal term, codename, and agent-coined label in plain language inside the narration itself, including what happened, why it matters, and what changes between the options. Never ask the operator to decide on unexplained jargon or rely on a separate plan, collab log, dashboard card, or glossary to make the audio understandable.

Decision-flow fails closed unless every scene is owned by exactly one decision. This keeps audio and questions woven together and prevents a cinema-style global audio strip / separate question list from reappearing.