30 added, 148 removed. Audit A to A.
---
name: tidyfactor-cinematic
- description: TidyFactor Cinematic track — builds single-file, scroll-driven luxury landing pages (Apple x Cartier aesthetic) as one index.html with CDN-only libraries (GSAP, Lenis, Tailwind), no build step, no framework. The product "film" is a JPG frame-sequence drawn on canvas and scrubbed by scroll, not a scrubbed video element. Reads brand.json as the single source of truth for colors, typography, voice, identity, and localization when present. Supports three media providers (Nano Banana default, Qwen+Wan, Higgsfield), eight layouts (film, story, space, app, creator, product, store, auto) selected via use-case routing, and a curated set of distinctive luxury Arabic typography pairings beyond the default El Messiri/Tajawal. Trigger on commands "init", "brand", "clone-brand", "media", "film", "hero", "theme", "typeface", "transitions", "i18n", "perf", "a11y", "convert", "audit", "variant", "deploy", "polish", or requests like "build a cinematic landing page", "scroll-driven product page", "luxury Apple-style landing page", "صفحة هبوط سينمائية", "convert this landing page to a cinematic one", "audit this cinematic page", "make the Arabic typography more distinctive/luxurious", "check page performance", "accessibility check", "clone our brand from this site", "make an A/B variant". Covers three modes — Init, Convert, Improve.
+ description: "TidyFactor Cinematic track — builds single-file, scroll-driven luxury landing pages (Apple x Cartier aesthetic) as one index.html with CDN-only libraries (GSAP, Lenis, Tailwind) and Contextual Decision Layer (CDL). Features JPG frame-sequence canvas scrubbing and luxury Arabic typography. Trigger on commands 'brief', 'init', 'brand', 'clone-brand', 'media', 'film', 'hero', 'theme', 'typeface', 'transitions', 'i18n', 'perf', 'a11y', 'convert', 'audit', 'variant', 'deploy', 'polish', or requests like 'build a cinematic landing page', 'scroll-driven product page', 'luxury Apple-style landing page', 'صفحة هبوط سينمائية'. Anti-triggers: Do NOT use for multi-page complex web apps or backend engines."
---
# TidyFactor Cinematic (Scroll-Driven Luxury Landing Pages)
- Part of the TidyFactor skill library (see `references/tidyfactor-vision.md` for
- the shared philosophy and this track's relationship to [[alwkala]]). Unlike
- the hosting-stack tracks (`tidyfactor-html`, `tidyfactor-php`...), this skill
- doesn't ship a backend — it produces one `index.html` per project: a
- scroll-driven cinematic film + a luxury landing page, CDN-only, zero build.
-
- If the request wants a standard multi-product catalog, a spec-comparison
- page, or an A/B-tested funnel — that's a normal `tidyfactor-html` job, not
- this one. **Fit test:** one clear subject + a transformation arc + the user
- wants to inspire, not just list features → this skill.
-
- ## The locked engine (never re-litigated per project)
-
- - **Film**: JPG frame-sequence (`assets/seq/f000.jpg … fNNN.jpg`) drawn on
- `<canvas>`, scrubbed by scroll progress. **Never** `video.currentTime`
- scrubbing — H.264 keyframe-seeking stutters.
- - **Stack**: GSAP 3.12 + ScrollTrigger, Lenis 1.0, Tailwind CSS — all CDN.
- Typography via Google Fonts.
- - **Brand source of truth**: `brand.json` at the project root, when present,
- overrides every template default (colors, fonts, voice, identity,
- localization) — see `memory/11-brand-json.md`. Absent brand.json → the
- warm-gold + El Messiri/Tajawal fallback applies.
- - **Layouts**: `film` (`fullbleed`), `story` (`editorial`), `space` (`spatial`), `app` (`interface`), `creator` (`minimal`), `product` (`product`), `store` (`store`), `auto` (`auto`) — picked via `memory/10-use-cases.md`.
- - **Media providers**: `nanobanana` (default, built-in `generate_image`
- tool, no extra deps), `qwen` (Qwen Image + Wan via DashScope, paid API),
- `higgsfield` (CLI, paid). Provider comes from `brand.json`'s
- `mediaProvider` field.
-
- ## Memory Routing
-
- | Memory File | Purpose |
- |---|---|
- | `memory/10-use-cases.md` | Layout logic & user-case mapping |
- | `memory/11-brand-json.md` | Schema definition & override precedence |
- | `memory/12-arabic-typography.md` | Luxury pairings & mood classification |
- | `memory/13-performance-budget.md` | Asset constraints & optimization targets |
- | `memory/14-accessibility.md` | Canvas standards & keyboard navigation |
-
- ## Step 0 — Identify the mode (ask if not obvious)
-
- > "What are we doing?
- > 1. **Init** — build a brand-new cinematic landing page for a product
- > 2. **Convert** — bring an existing static/standard landing page onto the
- > cinematic engine
- > 3. **Improve** — audit and harden a page already built on this kit"
-
- ## Command Index
-
- | Command | Purpose | Reference | Phase |
- |---|---|---|---|
- | `init` | **Primary deliverable** — full working cinematic page, one pass | `references/commands/init.md` | — |
- | `brand` | Read/scaffold `brand.json`; token → CSS variable mapping | `references/commands/brand.md` | 1 |
- | `clone-brand` | Extract `brand.json` tokens from an existing site/PDF/logo instead of a manual brief | `references/commands/clone-brand.md` | 1 |
- | `media` | Provider selection + asset pipeline (keyframes → clips → frames → cutout) | `references/commands/media.md` | 2 |
- | `film` | Canvas frame-sequence build + `FRAME_COUNT` sync | `references/commands/film.md` | 2 |
- | `hero` | Hero entrance — cutout/establishing-shot/device-mockup per layout | `references/commands/hero.md` | 2 |
- | `theme` | Light/dark palette derivation (gold-deep/gold-bright, ambient tween) | `references/commands/theme.md` | 2 |
- | `typeface` | Distinctive Arabic (+ Latin accent) font pairing selection beyond the default | `references/commands/typeface.md` | 2 |
- | `transitions` | Boundary-matched clip transitions between film segments | `references/commands/transitions.md` | 2 |
- | `i18n` | Arabic/English direction, RTL, modesty & identity rules (applies the `typeface` choice) | `references/commands/i18n.md` | 3 |
- | `perf` | Performance budget check — frame sequence, asset, and font weight against explicit limits | `references/commands/perf.md` | 3 |
- | `a11y` | Accessibility pass — canvas alt-text, contrast, focus states, keyboard scroll | `references/commands/a11y.md` | 3 |
- | `convert` | Retrofit an existing landing page onto the cinematic engine | `references/commands/convert.md` | — |
- | `audit` | Quality-bar + brand.json verification checklist as a standalone report | `references/commands/audit.md` | — |
- | `variant` | Produce an A/B page from an already-built project, reusing engine + media where possible | `references/commands/variant.md` | — |
- | `deploy` | Preview, asset optimization, static-hosting export | `references/commands/deploy.md` | 3 |
-
- New commands follow `references/commands/_template.md`.
-
- ## Command Sequencing & Phases
-
- `init` runs standalone and produces the full page in one pass — see "Running
- a full mode" below. For `convert`/`improve` work on an existing project:
-
- 1. **Phase 1 — Brand foundation.** `brand` (or `clone-brand` when an
- existing identity should be extracted rather than briefed) always first —
- every later command reads its tokens. No brand.json means every visual
- command below falls back to the legacy gold palette; flag that explicitly
- rather than silently proceeding.
- 2. **Phase 2 — Engine.** `media` generates the raw assets → `film` builds the
- scroll canvas from them → `hero` builds the entrance → `theme` applies the
- derived palette → `typeface` resolves the Arabic/Latin font pairing (skip
- only if the default El Messiri/Tajawal/Cormorant pair is confirmed fine)
- → `transitions` verifies boundary matches.
- 3. **Phase 3 — Scale & delivery.** `i18n` (localization/RTL/modesty, applies
- whichever pair `typeface` resolved) → `perf` (asset/font budget check) →
- `a11y` (accessibility pass) → `deploy` (optimize + preview) — always last.
-
- `convert`, `audit`, and `variant` are entry points, not phase members —
- `convert` hands off into Phase 1→3 once the target shape is agreed; `audit`
- can run standalone at any time as a read-only report; `variant` runs against
- an already-completed project and only re-enters Phase 1→3 for the specific
- fields that changed (see `references/commands/variant.md`).
+ A command dispatcher for luxury scroll-driven landing pages (Apple × Cartier aesthetic). This router declares commands and workflows without performing execution directly.
- Never run two commands "at the same time" — each finishes, gets verified via
- `references/workflow.md`, and gets reported before the next starts.
+ ## Commands
- ## Running a single command
- 1. Confirm mode (Step 0).
- 2. Read the matching reference file in full before acting.
- 3. Read `brand.json` if present (`brand` command) — every other command
- depends on it.
- 4. Execute per that reference file's steps.
- 5. Report using that command's checklist.
+ | User intent | Command | What it loads |
+ |---|---|---|
+ | Strategic Luxury Discovery & Brief Resolution | `references/commands/brief.md` | `references/workflows/brief.md` + `references/memory/decision-points.md` + `references/memory/quality-bar.md` |
+ | Primary deliverable — full working cinematic page | `references/commands/init.md` | `references/workflows/init.md` + `references/memory/10-use-cases.md` + `references/memory/11-brand-json.md` |
+ | Read/scaffold `brand.json` and tokens | `references/commands/brand.md` | `references/commands/brand.md` + `references/memory/11-brand-json.md` |
+ | Extract `brand.json` tokens from an existing site | `references/commands/clone-brand.md` | `references/commands/clone-brand.md` + `references/memory/15-brand-extraction.md` |
+ | Media pipeline providers (Nano Banana, Qwen, Higgsfield) | `references/commands/media.md` | `references/commands/media.md` + `references/memory/06-media-pipeline.md` |
+ | Canvas frame sequence scrubbing engine | `references/commands/film.md` | `references/commands/film.md` + `references/memory/02-scroll-film-canvas.md` |
+ | Cinematic hero fold, luxury badges, CTAs | `references/commands/hero.md` | `references/commands/hero.md` + `references/memory/04-cinematic-hero.md` |
+ | Color themes, dark obsidian, gold radial glows | `references/commands/theme.md` | `references/commands/theme.md` + `references/memory/05-theming.md` |
+ | Luxury Arabic & Latin typography pairings | `references/commands/typeface.md` | `references/commands/typeface.md` + `references/memory/12-arabic-typography.md` |
+ | GSAP ScrollTrigger section pinning & reveals | `references/commands/transitions.md` | `references/commands/transitions.md` + `references/memory/03-seamless-transitions.md` |
+ | Bilingual support & Arabic RTL typography | `references/commands/i18n.md` | `references/commands/i18n.md` + `references/memory/12-arabic-typography.md` |
+ | Performance budget & image asset compression | `references/commands/perf.md` | `references/commands/perf.md` + `references/memory/13-performance-budget.md` |
+ | Accessibility audit & keyboard navigation | `references/commands/a11y.md` | `references/commands/a11y.md` + `references/memory/14-accessibility.md` |
+ | Convert existing page into cinematic engine | `references/commands/convert.md` | `references/workflows/convert.md` + `references/memory/decision-points.md` |
+ | Complete 7-axis luxury & performance audit | `references/commands/audit.md` | `references/workflows/audit.md` + `references/memory/quality-bar.md` |
+ | Generate high-converting A/B variants | `references/commands/variant.md` | `references/workflows/variant.md` + `references/memory/16-variants.md` |
+ | Static deploy preparation (GitHub Pages, cPanel) | `references/commands/deploy.md` | `references/commands/deploy.md` + `references/memory/08-preview-and-env-gotchas.md` |
+ | Micro-animations, glow shaders, physics polish | `references/commands/polish.md` | `references/workflows/polish.md` + `references/memory/quality-bar.md` |
- ## Running a full mode end-to-end
- - **Init**: run `init` alone — it reads brand.json (or triggers `clone-brand`
- if the user hands over an existing identity instead of a brief), picks a
- layout, scaffolds, writes the media prompt list, generates assets, and
- syncs the film, in one pass (mirrors the original `AGENTS.md` build
- order). `typeface` runs inline if the brief signals a non-default mood;
- `perf`/`a11y` run as part of `deploy` at the end, always.
- - **Convert**: `convert` first (map the source onto the engine + agree
- scope; `clone-brand` if the source site's identity should carry over),
- then Phase 1→3 in full.
- - **Improve**: `audit` first (read-only report), then only the phases whose
- findings the user confirms. A performance or accessibility regression
- found by `audit` routes to `perf`/`a11y` specifically, not a full rebuild.
- - **Variant** (not a full mode — a targeted follow-up on a finished
- project): `variant` alone, per `references/commands/variant.md`.
+ Read only the command file that matches the request. Do not load all commands simultaneously.
- ## Hard constraints (apply to every command)
- - Never scrub `video.currentTime` — canvas frame-sequence only.
- - Never `mix-blend-mode` on animated elements — transparent PNG cutouts.
- - Never cross-dissolve two stills — boundary-matched clips only (clip N
- end-frame == clip N+1 start-frame).
- - Never hardcode a hex value or font name in `index.html` when a brand.json
- token exists.
- - Arabic typography: El Messiri (headings) + Tajawal (body) by default, or a
- `memory/12-arabic-typography.md` mood pairing chosen via `typeface`.
- **Never Amiri, and no manuscript/calligraphic face above ~24px, regardless
- of which pair is chosen.**
- - Modesty is mandatory for any human subject (full hijab, conservative);
- product identity is preserved exactly across all generated assets.
- - `prefers-reduced-motion` and a missing-asset gradient fallback are
- non-negotiable on every build.
- - Canvas film container carries an `aria-label`; the `<canvas>` itself is
- `aria-hidden="true"` — see `memory/14-accessibility.md`.
- - Frame sequence, font, and image weight stay inside
- `memory/13-performance-budget.md`'s budgets, or the overage and its cause
- are stated explicitly.
- - `brand`/`clone-brand` always runs first on Convert/Improve; `deploy`
- (which includes `perf` and `a11y`) always runs last.
+ ## Non-Negotiable Invariants
- ## Related skills
- - Needs a real backend (forms that persist, an admin panel, a database)
- behind this landing page → `tidyfactor-php-micro` or `tidyfactor-php`,
- this skill still owns the front-of-house single page.
- - Wants a standard multi-page marketing site, not one cinematic page →
- `tidyfactor-html`.
- - Building the brand.json itself from scratch for a client → pair with
- `website-copywriting-mena` for the voice/copy tokens.
+ 1. **Contextual Decision Layer (CDL)**: Resolve visual baselines via `/brief` or `.tidyfactor/cinematic-brief.md` before emitting code.
+ 2. **Canvas Frame Scrubbing**: Product films are JPG frame sequences drawn on `<canvas>` and scrubbed by Lenis/GSAP scroll. Never use `<video>` currentTime.
+ 3. **Zero Build Dependency**: Single-file deliverable (`index.html`) using CDN-only libraries (GSAP 3.12, Lenis 1.0, Tailwind CSS).
+ 4. **Arabic Typography Rigor**: Never use Amiri for headings larger than 24px. Use El Messiri or curated luxury display pairings.
+ 5. **7-Axis Pre-Emit Critique**: All generated pages must be evaluated with `/* Pre-emit critique: P5 H5 E5 S5 R5 V5 D5 */`.