---
name: tactile-crew
description: Build a 42-second collaborative-editor film with an original flat-character cast, working local application views and an editable soundtrack.
version: 1.0.1
---

# Tactile Crew

Create a small team that visibly assembles a product story. Five persistent flat characters carry assets, react to the music, fill a vacant role, inspect a claim and guide the camera into the finished preview. This package supports flat illustration only; felt, furry and photographic characters are not implemented.

The current renderer is a parameterized authoring template for two local demonstration operations: inventory allocation and category retrieval. It is not a general website-to-video service. A different application or story mechanism requires authoring and validation. The included app runtime is functional; its fixture data must be identified as demonstration data rather than a real commercial product.

## Prepare a brief

Supply a JSON object containing `title`, `monogram`, `locale`, `mode`, `accent`, `tagline`, `entries`, `cast`, `labels`, `fact`, `correction`, `cta`, `tempo` and `root`. Use `allocation` for four records with `name`, `quantity` and `use`; use `retrieval` for four records with `name`, `category` and `steps`, plus a `query` matching a category. Five cast members each have `name` and six-digit hex `color`. Keep primary copy below 80 characters; the build rejects longer primary fields. Use the field descriptions in INPUT.md.

The overstated `fact` is visibly crossed out in the film. Its replacement must be a narrowly true statement supported by the working app or supplied evidence. Do not invent a product capability, customer result or guarantee. The app screenshots are captured by running the app and clicking its real action button. Keep the result JSON and capture evidence with each project.

## Build and inspect

Requirements: Node.js 20+, Python 3, FFmpeg/ffprobe and a Chromium executable. Install the pinned Node dependencies with `npm ci --ignore-scripts`. Fonts and GSAP are bundled with their notices under resources; keep those notices in derived projects.

```
node build.mjs /absolute/brief.json /absolute/new-project
node capture.mjs /absolute/new-project /absolute/chromium
python3 score.py /absolute/new-project
cd /absolute/new-project
python3 -m http.server 8080 --bind 127.0.0.1
```

The project contains an editable HTML/CSS/GSAP composition, a working `app.html`, actual application captures, operation evidence and separate audio stems. Review the entire 42-second timeline: clip landing, music bite, vacant-slot landing, application state change, claim correction, checks, export and final camera entry. Retain failures when iterating. Test zero, reverse seeks, transition boundaries, CJK, fonts and normal-speed playback; syntax success is insufficient.

## Edit sound

Serve the project with a local HTTP server and open `editor.html`. Drag audio clips or change start, gain and mute. Audition is synchronized to the film preview. Export a real mixed WAV and replace `audio/mix.wav` before rendering. Save the edited timeline as `audio-edit.json`; retain the original stems. This is a local Web Audio editor, not a remote editing-service export.

`score.py` can be rerun without adding duplicate soundtrack elements. It composes an original deterministic instrumental bed and synthetic action accents. It does not use paid generation or a third-party song. The composition uses a continuous rhythmic bed and a resolved ending. You must listen to the actual exported mix before making listening or mix-quality claims. Changes to tempo and root affect the score; the film's action schedule remains a fixed 42-second template.

## Render and deliver

```
node node_modules/hyperframes/bin/hyperframes.mjs render /absolute/new-project --output /absolute/new-project/film.mp4 --fps 30 --quality high --workers 1
ffprobe -v error -show_streams -show_format -of json /absolute/new-project/film.mp4
ffmpeg -v error -i /absolute/new-project/film.mp4 -f null -
```

Deliver the encoded film, editable project and measured run report. Inspect native frames and actual playback, including frame drop counts. Use new output directories after changes. State what was executed, viewed and heard separately. A generic package excludes per-brief screenshots, example films and private inputs. Verify fresh-package builds with different subjects before release.
