# Tab Film

> Capture a demo film from a live web app safely and cut it to narration. Use for any "film this agent / app / portal" ask. Encodes the capture method that works on a developer laptop, the three ways desktop capture leaks private windows, and the post-processing step that destroys text. Trigger on film, record, showcase video, demo video, capture the screen.

- Skill: `kody-w/tab-film` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add kody-w/tab-film`
- Raw SKILL.md: https://api.skillmd.com/api/skills/kody-w/tab-film/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: kody-w (https://skillmd.com/u/kody-w)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/kody-w/tab-film

---


# Filming a live web app

## Never use desktop screen capture on this machine

`ffmpeg -f avfoundation -i "2"` grabs **the display**, not a window. It has
leaked private content three separate times in one session:

- Chrome not frontmost → captured VS Code with a session transcript in it
- `open -a "Google Chrome"` → triggered Mission Control, capturing every open
  window at once
- macOS fullscreen → moved Chrome to its own Space, so the capture showed the
  *other* Space (VS Code, Finder, a PowerPoint error dialog)

Fullscreen makes it worse, not better. If a frame is ever captured that contains
anything private, delete it immediately and say so.

You cannot force fullscreen yourself: `⌃⌘F` sent through the extension does not
reach browser chrome, and `requestFullscreen()` is rejected as untrusted from a
synthetic `click` — though it **does** work when armed on `mousedown`.

## Use the extension's recorder — it is tab-only by construction

`gif_creator` captures the tab viewport. The desktop physically cannot appear.

```
gif_creator start_recording
  → drive the page
gif_creator export (download: true, showClickIndicators/ActionLabels/
                    ProgressBar/Watermark all false, quality 4)
```

**Drive frame capture with `wait` actions, not `screenshot` actions.** Both
produce a frame; only `screenshot` returns an image into your context, and a
50-frame burst of those will exhaust a session. `wait` gives the same frames for
free.

Cap is 50 frames per recording. Export between beats and stitch later.

Then dedupe — a 44-frame export is typically 9–29 distinct states:

```python
prev=None
for f in sorted(glob.glob('q/f*.png')):
    h=hashlib.md5(open(f,'rb').read()).hexdigest()
    if h!=prev: keep.append(f); prev=h
```

## NEVER motion-interpolate text

`minterpolate` with `mi_mode=mci` warps pixels along estimated motion vectors.
Between two frames of *different text* it produces unreadable ghosted soup — it
will try to morph "OPERATING BUDGET" into "CAPITAL BUDGET". Hard cuts, or a
crossfade ≤0.3s. Nothing else. This shipped once and was caught by the human reviewer, not by
the build.

The honest consequence: you cannot manufacture fluid motion from discrete text
states. Frame interpolation only works on continuous motion. If the user wants true
30fps of a chat streaming, **they record it themselves** with ⌘⇧5 while you drive
the page — that is the only route, and it takes two minutes.

## Audio contract — non-negotiable

- VO bus **+6dB**, voice `en-US-AndrewMultilingualNeural`
- Bed `/Library/Audio/Apple Loops/Apple/01 Hip Hop/Slow Drift Ambient Synth.caf`
- `sidechaincompress=threshold=0.015:ratio=8:attack=25:release=450:makeup=1`
- `alimiter=limit=0.95`
- **NEVER loudnorm**
- Gate: every VO slot mean > **−19dB**; bed-only gaps < **−22dB**

That bed is quiet material (−37dB mean at −16dB gain), so it passes the gate by
20dB while being effectively inaudible. Raise it until it is actually present.

**Every slot must land inside its window.** If a read does not fit, widen the
window or shorten the copy — **never speed up the read**. Over ~2.6 words/sec
reads rushed; check it and name the slot.

### Azure Speech auth

If your Speech resources have `disableLocalAuth=true` (common under tenant
policy), keys do not exist. Use Entra:

```
Authorization: aad#<resourceId>#<aadToken>
resourceId = /subscriptions/<subscription-id>/resourceGroups/<resource-group>/
             providers/Microsoft.CognitiveServices/accounts/<speech-resource>
token = az account get-access-token --resource https://cognitiveservices.azure.com
```

## Two cuts, two vocabularies

**Internal** (SEs reviewing the pipeline) may say RAPP Factory, MVP, skills.

**Customer-facing** must not. The customer has never heard of RAPP, the Factory,
RAPPlication, brainstem, egg, MVP, or prototype. Put a **vocabulary gate in the
build script** that hard-fails on those words in narration and card strings — and
know that it cannot see the pixels of captured shots, which is where leakage
actually lives. Check frames by eye.

## The gate

**Watch it.** Extract frames and READ them across the whole timeline. A green
build is not a watched film — this failed twice in one session, once shipping a
smeared unwatchable cut.

Then spawn a **separate blind adversarial reviewer** with the audience brief.
It will find things you cannot, because you know what you intended. Real findings
it caught that the builder missed:

- Internal tool identifiers on screen for 57 of 105 seconds
- Narration claiming success over a frame where the agent visibly failed
- 23 seconds held on one identical frame
- The artifact's own heading sliced in half at the scroll edge
- The user's question never visible despite three "ask it for…" lines
- Invented person names on screen 12s before the synthetic-data disclaimer

Loop until it returns PASS with zero blockers. Then report residual defects
honestly — a known flaw named is fine, a flaw the customer finds is not.

## Related

`/cs-agent-live` to get the agent presentable before you film it.

<!-- toaster:generated:begin -->

## Run this — do not improvise

This capability's deterministic implementation is a RAPP single-file agent, linked beside this file as `tab_film_agent.py` and embedded as the fenced Python below (sha256 c714a305c2330727…; a byte-exact copy is also vaulted in the capsule comment at the end of this file). On a host with sandbox execution, run the linked file directly — if it is missing, write the fence contents verbatim to `tab_film_agent.py` first:

```bash
python3 tab_film_agent.py '{"key": "value"}'      # arguments as one JSON object
echo '{"key": "value"}' | python3 tab_film_agent.py   # or on stdin
python3 tab_film_agent.py --tool                      # emit the JSON tool contract
```

Treat stdout as a tool result. If it reports missing or unresolved inputs, stop and collect them. If it returns `steps`, execute those steps in order exactly as returned; if it returns `instructions`, follow them with the supplied inputs. Otherwise use the result verbatim. Do not invent behavior beyond that output. On a host without code execution, treat the Parameters schema and the code below as the exact specification and never paraphrase a step. Never edit inside the generated markers; a converter-equipped host can instead restore the original file checksum-verified with the installed `rapp-agent-converter/scripts/toast.py convert SKILL.md --to agent`.

````python  # rapp:deterministic
"""TabFilm -- Capture a demo film from a live web app safely and cut it to narration. Use for any "film this agent / app / portal" ask. Encodes the capture method that works on a developer laptop, the three ways desktop capture leaks private windows, and the post-processing step that destroys text. Trigger on film, record, showcase video, demo video, capture the screen.

Generated by the rapp skill from tab-film. The RCI capsule at the bottom of this file carries the full original; `toast.py convert` restores it byte-exact."""

import json
import re
import sys

try:
    from agents.basic_agent import BasicAgent
except ImportError:  # running OUTSIDE a brainstem -- stay executable anyway.
    class BasicAgent:  # noqa: D101 - minimal stand-in, same contract
        def __init__(self, name=None, metadata=None):
            if name:
                self.name = name
            if metadata:
                self.metadata = metadata

        def perform(self, **kwargs):
            return "Not implemented."

        def system_context(self):
            return None

        def to_tool(self):
            return {"type": "function", "function": {
                "name": self.name,
                "description": self.metadata.get("description", ""),
                "parameters": self.metadata.get("parameters", {})}}

# The procedural layer, verbatim from the source capability.
INSTRUCTIONS = '# Filming a live web app\n\n## Never use desktop screen capture on this machine\n\n`ffmpeg -f avfoundation -i "2"` grabs **the display**, not a window. It has\nleaked private content three separate times in one session:\n\n- Chrome not frontmost → captured VS Code with a session transcript in it\n- `open -a "Google Chrome"` → triggered Mission Control, capturing every open\n  window at once\n- macOS fullscreen → moved Chrome to its own Space, so the capture showed the\n  *other* Space (VS Code, Finder, a PowerPoint error dialog)\n\nFullscreen makes it worse, not better. If a frame is ever captured that contains\nanything private, delete it immediately and say so.\n\nYou cannot force fullscreen yourself: `⌃⌘F` sent through the extension does not\nreach browser chrome, and `requestFullscreen()` is rejected as untrusted from a\nsynthetic `click` — though it **does** work when armed on `mousedown`.\n\n## Use the extension's recorder — it is tab-only by construction\n\n`gif_creator` captures the tab viewport. The desktop physically cannot appear.\n\n```\ngif_creator start_recording\n  → drive the page\ngif_creator export (download: true, showClickIndicators/ActionLabels/\n                    ProgressBar/Watermark all false, quality 4)\n```\n\n**Drive frame capture with `wait` actions, not `screenshot` actions.** Both\nproduce a frame; only `screenshot` returns an image into your context, and a\n50-frame burst of those will exhaust a session. `wait` gives the same frames for\nfree.\n\nCap is 50 frames per recording. Export between beats and stitch later.\n\nThen dedupe — a 44-frame export is typically 9–29 distinct states:\n\n```python\nprev=None\nfor f in sorted(glob.glob('q/f*.png')):\n    h=hashlib.md5(open(f,'rb').read()).hexdigest()\n    if h!=prev: keep.append(f); prev=h\n```\n\n## NEVER motion-interpolate text\n\n`minterpolate` with `mi_mode=mci` warps pixels along estimated motion vectors.\nBetween two frames of *different text* it produces unreadable ghosted soup — it\nwill try to morph "OPERATING BUDGET" into "CAPITAL BUDGET". Hard cuts, or a\ncrossfade ≤0.3s. Nothing else. This shipped once and was caught by the human reviewer, not by\nthe build.\n\nThe honest consequence: you cannot manufacture fluid motion from discrete text\nstates. Frame interpolation only works on continuous motion. If the user wants true\n30fps of a chat streaming, **they record it themselves** with ⌘⇧5 while you drive\nthe page — that is the only route, and it takes two minutes.\n\n## Audio contract — non-negotiable\n\n- VO bus **+6dB**, voice `en-US-AndrewMultilingualNeural`\n- Bed `/Library/Audio/Apple Loops/Apple/01 Hip Hop/Slow Drift Ambient Synth.caf`\n- `sidechaincompress=threshold=0.015:ratio=8:attack=25:release=450:makeup=1`\n- `alimiter=limit=0.95`\n- **NEVER loudnorm**\n- Gate: every VO slot mean > **−19dB**; bed-only gaps < **−22dB**\n\nThat bed is quiet material (−37dB mean at −16dB gain), so it passes the gate by\n20dB while being effectively inaudible. Raise it until it is actually present.\n\n**Every slot must land inside its window.** If a read does not fit, widen the\nwindow or shorten the copy — **never speed up the read**. Over ~2.6 words/sec\nreads rushed; check it and name the slot.\n\n### Azure Speech auth\n\nIf your Speech resources have `disableLocalAuth=true` (common under tenant\npolicy), keys do not exist. Use Entra:\n\n```\nAuthorization: aad#<resourceId>#<aadToken>\nresourceId = /subscriptions/<subscription-id>/resourceGroups/<resource-group>/\n             providers/Microsoft.CognitiveServices/accounts/<speech-resource>\ntoken = az account get-access-token --resource https://cognitiveservices.azure.com\n```\n\n## Two cuts, two vocabularies\n\n**Internal** (SEs reviewing the pipeline) may say RAPP Factory, MVP, skills.\n\n**Customer-facing** must not. The customer has never heard of RAPP, the Factory,\nRAPPlication, brainstem, egg, MVP, or prototype. Put a **vocabulary gate in the\nbuild script** that hard-fails on those words in narration and card strings — and\nknow that it cannot see the pixels of captured shots, which is where leakage\nactually lives. Check frames by eye.\n\n## The gate\n\n**Watch it.** Extract frames and READ them across the whole timeline. A green\nbuild is not a watched film — this failed twice in one session, once shipping a\nsmeared unwatchable cut.\n\nThen spawn a **separate blind adversarial reviewer** with the audience brief.\nIt will find things you cannot, because you know what you intended. Real findings\nit caught that the builder missed:\n\n- Internal tool identifiers on screen for 57 of 105 seconds\n- Narration claiming success over a frame where the agent visibly failed\n- 23 seconds held on one identical frame\n- The artifact's own heading sliced in half at the scroll edge\n- The user's question never visible despite three "ask it for…" lines\n- Invented person names on screen 12s before the synthetic-data disclaimer\n\nLoop until it returns PASS with zero blockers. Then report residual defects\nhonestly — a known flaw named is fine, a flaw the customer finds is not.\n\n## Related\n\n`/cs-agent-live` to get the agent presentable before you film it.'

# Ordered commands lifted verbatim from the capability's own documentation.
STEPS = []


class TabFilmAgent(BasicAgent):
    def __init__(self):
        self.name = 'TabFilm'
        self.metadata = {
          "name": "TabFilm",
          "description": "Capture a demo film from a live web app safely and cut it to narration. Use for any \"film this agent / app / portal\" ask. Encodes the capture method that works on a developer laptop, the three ways desktop capture leaks private windows, and the post-processing step that destroys text. Trigger on film, record, showcase video, demo video, capture the screen.",
          "parameters": {
            "type": "object",
            "properties": {},
            "required": []
          }
        }
        super().__init__(name=self.name, metadata=self.metadata)

    def perform(self, **kwargs):  # toaster:generated-perform
        return json.dumps({"status": "ok", "instructions": INSTRUCTIONS,
                           "inputs": kwargs,
                           "note": "Prose-only capability: follow INSTRUCTIONS "
                                   "with the given inputs."}, indent=2)

if __name__ == "__main__":
    #     echo '{"arg": "value"}' | python3 tab_film_agent.py
    #     python3 tab_film_agent.py '{"arg": "value"}'
    #     python3 tab_film_agent.py --tool          # emit the JSON tool contract
    _a = sys.argv[1:]
    if _a and _a[0] == "--tool":
        print(json.dumps(TabFilmAgent().to_tool(), indent=2))
    else:
        _raw = _a[0] if _a else (sys.stdin.read().strip() or "{}")
        print(TabFilmAgent().perform(**json.loads(_raw)))

# rci-capsule:v1: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
````

<!-- toaster:generated:end -->

<!-- rci-capsule:v1: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

…(truncated)
