diff --git a/CHANGELOG.md b/CHANGELOG.md index 8be4fa6..d792c16 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # Changelog +## 0.1.9 — 2026-10-01 + +Wave 0.1.9 body-only. Katalog tetap 65 (50 model + 15 manual). Tidak ada pertumbuhan allowlist. Tidak ada penambahan atau pensiun skill. Exception 0.1.8 tetap spent. +MERGE: `kaventro/motion-designer` (`0cf0ba92d3db7d8d5ae603a65b56a99a2866311c`, MIT) ke `skills/business-motion-film`. + +- `business-motion-film`: Penambahan mode `product-film` untuk membuat film peluncuran (launch film, teaser, product promo) dari UI aplikasi nyata (iOS, macOS/Windows/Linux desktop, Electron/Tauri, web app) di dalam wadah perangkat asli (iPhone / window desktop), bukan iklan komersial abstrak. +- Layar dibangun langsung dari kode sumber atau tangkapan layar terverifikasi di repo. Mockup generik ditolak. Mobile selalu di dalam frame iPhone (dynamic island / status bar); desktop selalu di dalam jendela aplikasi dengan pergerakan kursor yang bermakna. +- Kontrak frame deterministik murni `seek(t)`: dilarang menggunakan timer (`setTimeout`/`setInterval`), `Date.now()`, `Math.random()`, maupun transisi/animasi CSS. Loop timeline harus menutup rapat; frame identik dari arah scrub manapun. +- Beat-map audio: struktur narasi mengikuti tempo (BPM), bar, dan drop musik; aksi kunci mendarat tepat pada drop. Track audio pengguna selalu didahulukan. +- Gerbang 4 still (buka, momen produk utama, drop, frame akhir) wajib disetujui pengguna sebelum build; berhenti jika belum disetujui. +- QA & ledger bukti (`FACT:`): contact sheet + audit daftar kesalahan umum (label terpotong, UI full-bleed, crossfade sembarangan, pointer melayang, klaim tanpa bukti). Pelaporan wajib menyertakan path mp4, status ketersediaan ffmpeg dan Chrome, serta loudness LUFS jika ada audio. Ketiadaan ffmpeg atau Chrome dilaporkan sebagai `NOT_CONFIGURED`, bukan PASS palsu. +- Pipeline render: pintu default tetap `hyperframes` (brag card 18 detik tetap `skills/hyperframes/references/brag.md`). Pipeline render Chrome DevTools upstream hanya digunakan jika diminta secara eksplisit dan Chrome tersedia. +- Model audio/suara upstream (ACE-Step ~11 GB, Chatterbox, Kokoro) adalah `OPTIONAL_POINTER`. Tidak ada pengunduhan model dan script `install.sh` upstream tidak dijalankan. Ketiadaan model = `NOT_CONFIGURED`. +- Peran spesialis tetangga tidak berubah: `id-demo-video` (demo narasi Indonesia), `scroll-craft` (scrollytelling 2D), `scroll-world` (kamera 3D), `emil-design-eng` (motion physics UI; token film memakai token Emil, bukan style kit Meadow/Midnight), `impeccable`, `found-this-design`, `ninerouter`. +- Pin sumber dan lisensi dicatat di `vendor/sources.json`, `vendor/provenance.json`, `vendor/license-audit.json`, `vendor/licenses/KAVENTRO-MOTION-DESIGNER-MIT.txt`, `THIRD_PARTY_NOTICES.md`, dan `docs/source-wave.md`. Versi produk 0.1.9. + ## 0.1.8 — 2026-10-01 Unfreeze terbatas 0.1.8. Katalog tetap 65. diff --git a/README.md b/README.md index 9748135..4b08c4b 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ OpenCode 2 overlay: 65 frozen routed skills, thin `AGENTS.md`, `opencode-he`. Installer and runtime overlay for [OpenCode 2](https://opencode.ai/v2/docs/). -Version **0.1.8**. The 65-skill catalog is strictly frozen. +Version **0.1.9**. The 65-skill catalog is strictly frozen. ## What it is @@ -117,7 +117,7 @@ Default: repository evidence first. Then at most one specialist. | Photoreal / media | `visual-studio` | | Scroll-led storytelling | `scroll-craft` | | Scroll-driven 3D / camera world | `scroll-world` | -| Commercial launch films & business explainers | `business-motion-film` (render via `hyperframes`; absorbs Three.js product-hero patterns) | +| Commercial launch films & business explainers | `business-motion-film` (render via `hyperframes`; absorbs Three.js product-hero patterns; real app UI launch films stay `launch_film` → `business-motion-film`) | | 9Router gateway (inference/image/video/TTS/STT/web) | `ninerouter` | | Deterministic HTML composition video | `hyperframes` (18s brag card via `references/brag.md`) | | Demo video aplikasi & narasi ID | `id-demo-video` (`/demo-video`) | @@ -133,7 +133,7 @@ Default: repository evidence first. Then at most one specialist. | TS Oxlint install | `install-anti-slop` (explicit only) | | Architecture bake-off | `/architect` (manual) | -Warehouse: `api-design`, `contract-first`, `automation-audit-ops`, `code-tour`, `click-path-audit` (plus Wave 2 diagnostics). Wave 0.1.7 additions: `json-render` (generative UI from typed catalogs), `deck-design` (consulting-grade PPTX & 16:9 HTML slide decks), `pageindex` (vectorless tree-reasoning long document navigation). Wave 0.1.8 additions: `business-motion-film` (commercial launch films; retires `img2threejs`), `ninerouter` (multi-provider gateway stub; retires `prompt-optimizer`). +Warehouse: `api-design`, `contract-first`, `automation-audit-ops`, `code-tour`, `click-path-audit` (plus Wave 2 diagnostics). Wave 0.1.7 additions: `json-render` (generative UI from typed catalogs), `deck-design` (consulting-grade PPTX & 16:9 HTML slide decks), `pageindex` (vectorless tree-reasoning long document navigation). Wave 0.1.8 additions: `business-motion-film` (commercial launch films; retires `img2threejs`), `ninerouter` (multi-provider gateway stub; retires `prompt-optimizer`). Wave 0.1.9 body-only: merges `kaventro/motion-designer` into `business-motion-film` (product-film mode; catalog strictly 65/65). Examples: interactive product story told by scroll → `scroll-craft`. Unbroken camera through a miniature factory → `scroll-world`. Clean security dashboard → `impeccable`. Video, image generation, and Design V2 stay optional. diff --git a/THIRD_PARTY_NOTICES.md b/THIRD_PARTY_NOTICES.md index 75b3626..19b202a 100644 --- a/THIRD_PARTY_NOTICES.md +++ b/THIRD_PARTY_NOTICES.md @@ -34,7 +34,7 @@ Machine-readable copy: `vendor/license-audit.json`. | Email design doctrine | Merged from [CosmoBlk/email-design](https://github.com/CosmoBlk/email-design) (MIT © 2026 CosmoBlk), [jayesh-bansal/email-pro-max](https://github.com/jayesh-bansal/email-pro-max) (MIT © 2026 Jayesh Bansal), [chunkydotdev/email-skills](https://github.com/chunkydotdev/email-skills) (MIT © 2026 chunkydotdev), and [Olshansk/agent-skills](https://github.com/Olshansk/agent-skills) (MIT © 2026 Olshansk) into `skills/impeccable/reference/email.md` | MIT | follow MIT | | Emil Kowalski motion doctrines | Merged from [emilkowalski/skills](https://github.com/emilkowalski/skills) (`85e8e2363b71`) into `skills/emil-design-eng/references/` (`motion.md`, `apple-principles.md`, `native-motion.md`, `interface-feel.md`). Text: `vendor/licenses/EMILKOWALSKI-MIT.txt` | MIT © 2026 Emil Kowalski | follow MIT | | Warehouse Batch 2a (`agent-architecture-audit`, `cost-aware-llm-pipeline`, `eval-harness`, `skill-stocktake`) | Adapted from [affaan-m/ECC](https://github.com/affaan-m/ECC); respective skill `NOTICE.md` files (prompt-optimizer retired in 0.1.8) | MIT © 2024-2026 affaan-m and ECC contributors | follow MIT | -| `business-motion-film` | [echris6/motion-video-kit](https://github.com/echris6/motion-video-kit) `255562b` — `vendor/licenses/ECHRIS6-MOTION-VIDEO-KIT-MIT.txt`; skill `NOTICE.md` | MIT © 2026 echris6 | follow MIT | +| `business-motion-film` | [echris6/motion-video-kit](https://github.com/echris6/motion-video-kit) `255562b` — `vendor/licenses/ECHRIS6-MOTION-VIDEO-KIT-MIT.txt`; [kaventro/motion-designer](https://github.com/kaventro/motion-designer) `0cf0ba9` (product-film mode) — `vendor/licenses/KAVENTRO-MOTION-DESIGNER-MIT.txt`; skill `NOTICE.md` | MIT © 2026 echris6; MIT © 2026 kaventro | follow MIT | | `ninerouter` | [decolua/9router](https://github.com/decolua/9router) `f01fb90`; skill `NOTICE.md`. First-party gateway stub; skills on-demand. | MIT © 2026 decolua | follow MIT | | Warehouse Batch 3a (`api-design`, `automation-audit-ops`, `click-path-audit`, `code-tour`, `contract-first`) | Adapted from [affaan-m/ECC](https://github.com/affaan-m/ECC); respective skill `NOTICE.md` files | MIT © 2024-2026 affaan-m and ECC contributors | follow MIT | | Design bank media | User-provided public bootstrap artifact or existing local bank | **not cleared** | not in git; normal install does not download it | diff --git a/VERSION b/VERSION index 699c6c6..1a03094 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.1.8 +0.1.9 diff --git a/docs/CATALOG-FREEZE.md b/docs/CATALOG-FREEZE.md index 763465e..02bbcc9 100644 --- a/docs/CATALOG-FREEZE.md +++ b/docs/CATALOG-FREEZE.md @@ -2,8 +2,9 @@ This contract defines the immutable boundary and governance for the OpenCodeHighEnd catalog. The 65-skill catalog is strictly frozen. -- **Product version**: 0.1.8 +- **Product version**: 0.1.9 - **Catalog**: 65 names. 50 model-invoked under `skills/`. 15 manual under `manual-skills/` + `commands/`. +- **Wave 0.1.9 body-only**: catalog strictly frozen at 65 (50 model + 15 manual). Zero catalog growth. No new exceptions; 0.1.8 exception is spent. Upstream `kaventro/motion-designer` merged into `business-motion-film` (product-film mode). - **Wave 0.1.8 limited unfreeze exception** (CHANGELOG 0.1.8): catalog stays 65 (50 model + 15 manual). Retired names: `img2threejs` (Three.js product-hero patterns moved to `business-motion-film` references), `prompt-optimizer` (overlaps `research` + `humanizer`). Added model-invoked: `business-motion-film` (from `echris6/motion-video-kit`, MIT), `ninerouter` (first-party gateway stub). Intent `img3d` replaced by `launch_film | gateway_llm`. This exception is spent. - **Wave 0.1.7 unfreeze exception** (CHANGELOG 0.1.7): catalog grew 62 → 65 to add `json-render`, `deck-design`, `pageindex`. No twin retired. (Spent). - **Retired in prior waves and not to be revived**: `ask-matt`, `grilling`, `wait-what`, `matt-implement`. diff --git a/docs/architecture.md b/docs/architecture.md index e5fb77b..db776ea 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -47,7 +47,7 @@ Instead of opaque multi-agent swarms or chat-based delegation, OpenCodeHighEnd o 5. **Generative UI Node (`json-render`)**: Handed off from `prototype` or `found-this-design` when UI must be generated from typed JSON schemas or component catalogs rather than freeform layout code. 6. **Consulting Slide Decks Node (`deck-design`)**: Handed off from `smartdoc` for consulting PPTX and 16:9 HTML slide decks. `smartdoc` retains document contracts/OCR/PDF rendering; `markitdown` retains file-to-Markdown ingest. 7. **Long-Document Navigation Node (`pageindex`)**: Handed off from `research` for navigating deep, structured documents (filings, manuals, technical specs) using hierarchical tree reasoning rather than naive vector similarity chunking. Primary-source citation rules remain strictly enforced. -8. **Commercial Launch Films & Business Explainers (`business-motion-film`)**: Handed off for business ads, launch films, sample reels, and explainers. Rendering is strictly executed through `hyperframes`; Three.js product-hero patterns are absorbed into references (not a standalone skill). Continuous 3D camera flight stays with `scroll-world`, 18s brag cards stay in `hyperframes/references/brag.md`, and Indonesian narrated tours stay with `id-demo-video`. +8. **Commercial Launch Films & Business Explainers (`business-motion-film`)**: Handed off for business ads, launch films (including real app UI product-film mode), sample reels, and explainers. Rendering is strictly executed through `hyperframes`; Three.js product-hero patterns are absorbed into references (not a standalone skill). Continuous 3D camera flight stays with `scroll-world`, 18s brag cards stay in `hyperframes/references/brag.md`, and Indonesian narrated tours stay with `id-demo-video`. 9. **Multi-Provider Gateway Node (`ninerouter`)**: Handed off when routing inference, image/video generation, speech, transcription, embeddings, or web fetch/search through a user-managed 9Router gateway. 9Router is `FOREIGN_ON_DEMAND`, not an extra core MCP server. Zero-bind prohibition: fails closed immediately on `0.0.0.0`. Graceful degradation to `NOT_CONFIGURED` if the gateway is absent or unreachable. ## Harness Engineering Principles diff --git a/docs/routing.md b/docs/routing.md index 7d4cad4..c6ac942 100644 --- a/docs/routing.md +++ b/docs/routing.md @@ -35,7 +35,7 @@ academic | longdoc_nav | browser_qa | architecture | warehouse | ops_data | vide | `motion` | `emil-design-eng` | Micro-interactions, spring physics, touch feel | | `scroll_2d` | `scroll-craft` | Scrollytelling, pinned 2D timelines, scroll triggers | | `scroll_3d` | `scroll-world` | Continuous 3D fly-through, camera-scrub worlds | -| `launch_film` | `business-motion-film` | Commercials, launch films, business explainers, sample reels; render via hyperframes; product-hero Three.js in references | +| `launch_film` | `business-motion-film` | Commercials, launch films (including real app UI product-film), business explainers, sample reels; render via hyperframes; product-hero Three.js in references | | `gateway_llm` | `ninerouter` | 9Router gateway (chat, image, video, TTS, STT, embeddings, web) via NINEROUTER_URL; foreign on-demand stub | | `docs` | `smartdoc` | Technical docs, OCR/PDF/DOCX extraction & contracts | | `slides_pptx` | `deck-design` | Consulting PPTX / 16:9 HTML decks; smartdoc keeps PDF/DOCX; markitdown keeps ingest | @@ -80,7 +80,7 @@ MANUAL_NOT_INVOKED Never list unused tools as used. -UI direction from the bank routes to `found-this-design` first, which stops before component implementation. Visual UI and UI atoms (buttons, inputs, cards, nav) route to `impeccable` after Design V2 shortlist; BANK_MISS ≠ generate (+ shadcn/Design V2 internal). Stitch MCP is for screen/comp generation only, then found-this-design or impeccable with Design V2 atom shortlisting; never implement production UI from Stitch alone. UI Skills MCP is design-skill lookup only; product UI remains Design Bank + Impeccable + Design V2 atoms + shadcn; BANK_MISS ≠ generate from a random ui-skills document. Motion UI routes to `emil-design-eng`. Still/ads/non-UI surface route to `visual-studio`. Scroll-led stories route to `scroll-craft`, while continuous camera 3D fly-throughs route to `scroll-world`. Commercials, launch films, business explainers, sample reels, and pitch videos route to `business-motion-film` (render via hyperframes; Three.js product-hero patterns in references; 18s brag cards stay in `hyperframes/references/brag.md`). Schema/JSON generative UI from a typed catalog routes to `json-render` (after tokens/direction or internal schema UI; never bypass Design Bank for marketing). +UI direction from the bank routes to `found-this-design` first, which stops before component implementation. Visual UI and UI atoms (buttons, inputs, cards, nav) route to `impeccable` after Design V2 shortlist; BANK_MISS ≠ generate (+ shadcn/Design V2 internal). Stitch MCP is for screen/comp generation only, then found-this-design or impeccable with Design V2 atom shortlisting; never implement production UI from Stitch alone. UI Skills MCP is design-skill lookup only; product UI remains Design Bank + Impeccable + Design V2 atoms + shadcn; BANK_MISS ≠ generate from a random ui-skills document. Motion UI routes to `emil-design-eng`. Still/ads/non-UI surface route to `visual-studio`. Scroll-led stories route to `scroll-craft`, while continuous camera 3D fly-throughs route to `scroll-world`. Commercials, launch films, business explainers, sample reels, and pitch videos route to `business-motion-film` (render via hyperframes; includes real app UI product-film mode; Three.js product-hero patterns in references; 18s brag cards stay in `hyperframes/references/brag.md`). Schema/JSON generative UI from a typed catalog routes to `json-render` (after tokens/direction or internal schema UI; never bypass Design Bank for marketing). Browser verification follows four explicit doors: exploratory application UI routes to `playwright-qa`, persistent multi-account sessions route to `browser-act`, observed Chromium cause routes to `chrome-devtools-axi`, and button handler sequential undo / shared-store side effects route to `click-path-audit`. diff --git a/docs/skills.md b/docs/skills.md index 1aaf2ef..7de7abe 100644 --- a/docs/skills.md +++ b/docs/skills.md @@ -5,7 +5,7 @@ Policy: `vendor/skill-policy.json` plus `vendor/skill-allowlist.txt`. - 50 model-invoked skills live under `skills/` and install to `~/.config/opencode/skills/` (core + Wave 2/3 warehouse specialists + 0.1.7 `json-render`, `deck-design`, `pageindex` + 0.1.8 `business-motion-film`, `ninerouter`) - 15 manual skills live under `manual-skills/` and install to `~/.config/opencode/highend/skills/` plus `commands/` -`smartdoc` is per-job document intelligence. `deck-design` owns consulting PPTX / 16:9 HTML slide decks. `pageindex` owns tree/reasoning navigation of long structured documents. `json-render` owns schema/JSON generative UI after tokens/direction (or internal schema UI). `markitdown` converts Office/PDF/HTML/CSV/XLSX/PPTX/EPUB/ZIP to Markdown for ingest; SmartDoc keeps contract/QA/render. `smartbook-ingest` compiles reusable local knowledge. `humanizer` cleans user-facing prose tells (`/unslop` is its manual alias). `academic` manages scholarly research, writing, and peer review. `hyperframes` handles deterministic HTML-to-MP4 video composition. `id-demo-video` coordinates Indonesian application demo video production (`/demo-video` is its manual slash command). `diagram-design` crafts editorial HTML/SVG diagrams. `business-motion-film` plans and quality-checks commercial launch films and explainers (rendered via hyperframes; absorbs Three.js product-hero patterns). `ninerouter` routes models, images, video, speech, and web tools through a 9Router gateway. Warehouse diagnostics include `agent-architecture-audit` (agent stack layers), `cost-aware-llm-pipeline` (token budgeting), `eval-harness` (benchmarks), and `skill-stocktake` (catalog hygiene; `prompt-optimizer` retired in 0.1.8 with prompt refinement handled by humanizer, research, and writing-for-agents). Wave 3 adds `api-design`, `contract-first`, `automation-audit-ops`, `code-tour`, and `click-path-audit`. Handwriting is a SmartDoc renderer, not a skill. +`smartdoc` is per-job document intelligence. `deck-design` owns consulting PPTX / 16:9 HTML slide decks. `pageindex` owns tree/reasoning navigation of long structured documents. `json-render` owns schema/JSON generative UI after tokens/direction (or internal schema UI). `markitdown` converts Office/PDF/HTML/CSV/XLSX/PPTX/EPUB/ZIP to Markdown for ingest; SmartDoc keeps contract/QA/render. `smartbook-ingest` compiles reusable local knowledge. `humanizer` cleans user-facing prose tells (`/unslop` is its manual alias). `academic` manages scholarly research, writing, and peer review. `hyperframes` handles deterministic HTML-to-MP4 video composition. `id-demo-video` coordinates Indonesian application demo video production (`/demo-video` is its manual slash command). `diagram-design` crafts editorial HTML/SVG diagrams. `business-motion-film` plans and quality-checks commercial launch films, real app UI product promos, and explainers (rendered via hyperframes; absorbs Three.js product-hero patterns). `ninerouter` routes models, images, video, speech, and web tools through a 9Router gateway. Warehouse diagnostics include `agent-architecture-audit` (agent stack layers), `cost-aware-llm-pipeline` (token budgeting), `eval-harness` (benchmarks), and `skill-stocktake` (catalog hygiene; `prompt-optimizer` retired in 0.1.8 with prompt refinement handled by humanizer, research, and writing-for-agents). Wave 3 adds `api-design`, `contract-first`, `automation-audit-ops`, `code-tour`, and `click-path-audit`. Handwriting is a SmartDoc renderer, not a skill. OpenCode 2 discovers `~/.config/opencode/skills` and project `.opencode/skills`. Manual skills must not be copied into those directories; they live under `~/.config/opencode/highend/skills/` and are invoked only as `~/.config/opencode/commands/.md` (or project `.opencode/commands/.md`). diff --git a/docs/source-wave.md b/docs/source-wave.md index 9379b06..fe17316 100644 --- a/docs/source-wave.md +++ b/docs/source-wave.md @@ -58,6 +58,7 @@ Recorded per Phase 0 contract. | [VectifyAI/PageIndex](https://github.com/VectifyAI/PageIndex) | `037a7dbacfb9a19f38b354ce60cee5094b3f854c` | Vectorless tree/reasoning RAG for long documents. MIT. | **DONE** | `skills/pageindex` | First-party wrapper. Local tree-then-reason; SDK optional on the user machine. Cloud MCP not registered. Not Graphiti/Cognee/second codebase-memory. Degrade `NOT_CONFIGURED`. | | [jakubkrehel/better-interface](https://ui-skills.com) | ui-skills upstream | Tactile interface guidelines (no hairline-only affordances, contrast boundaries). MIT. | **MERGE** | `skills/emil-design-eng/references/interface-feel.md` | Key tactile checklist item ("No Hairline-Only Affordances") merged into `interface-feel.md`. No new skill folder. | | [echris6/motion-video-kit](https://github.com/echris6/motion-video-kit) | `255562b04b1e5ecaa4ba98e5c9aa191d5ba7f6fa` | AI-assisted short commercial kit: independent critic loop, motion principles, quality bar, audio rules, Three.js product-hero patterns. MIT. | **ADD** | `skills/business-motion-film` | Added in 0.1.8 (retires `img2threejs`). First-party wrapper; references pinned upstream. Render via hyperframes. Three.js product hero patterns absorbed here. | +| [kaventro/motion-designer](https://github.com/kaventro/motion-designer) | `0cf0ba92d3db7d8d5ae603a65b56a99a2866311c` | App launch films from real UI, device chrome, seek(t) deterministic frames, beat mapping. MIT. | **MERGE** | `skills/business-motion-film` | Merged as product-film mode in business-motion-film. Zero catalog bloat; not a standalone skill. Default render via hyperframes. Upstream heavy models (ACE-Step, Chatterbox/Kokoro) and full plugins not vendored. | | [decolua/9router](https://github.com/decolua/9router) | `f01fb909e37189008080632ddaf404f096345cde` | Unlimited multi-provider LLM gateway, fallbacks, image/video gen, TTS, STT, embeddings, web tools. MIT. | **ADD** | `skills/ninerouter` | Added in 0.1.8 as first-party gateway stub (retires `prompt-optimizer`). Upstream capability skills fetched on demand. Configured via NINEROUTER_URL. Not an extra core MCP. | | [obra/superpowers](https://github.com/obra/superpowers) | upstream ref | Agent coding superpowers, workflows, and skills. | **MERGE** | `skills/tdd`, `skills/grill-with-docs` | Workflow discipline merged into existing TDD and planning specialists; not a new skill. | | [anthropics/skills](https://github.com/anthropics/skills) | upstream ref | Official Anthropic Claude skill library. | **MERGE** | `skills/impeccable`, `skills/humanizer` | Merged into existing specialists; no duplicate skill names. | diff --git a/rules/00-routing.md b/rules/00-routing.md index d226fa0..c53f81a 100644 --- a/rules/00-routing.md +++ b/rules/00-routing.md @@ -44,7 +44,7 @@ academic | longdoc_nav | browser_qa | architecture | warehouse | ops_data | vide | `motion` | `emil-design-eng` | Micro-interactions, spring physics, touch feel | | `scroll_2d` | `scroll-craft` | Scrollytelling, pinned 2D timelines, scroll triggers | | `scroll_3d` | `scroll-world` | Continuous 3D fly-through, camera-scrub worlds | -| `launch_film` | `business-motion-film` | Commercials, launch films, business explainers, sample reels; render via hyperframes; product-hero Three.js in references | +| `launch_film` | `business-motion-film` | Commercials, launch films (including real app UI product-film), business explainers, sample reels; render via hyperframes; product-hero Three.js in references | | `gateway_llm` | `ninerouter` | 9Router gateway (chat, image, video, TTS, STT, embeddings, web) via NINEROUTER_URL; foreign on-demand stub | | `docs` | `smartdoc` | Technical docs, OCR/PDF/DOCX extraction & contracts | | `slides_pptx` | `deck-design` | Consulting PPTX / 16:9 HTML decks; smartdoc keeps PDF/DOCX; markitdown keeps ingest | @@ -142,7 +142,7 @@ The specialist architecture forms a deterministic graph connected by file artifa - Use the hub only when cwd has `components.json`. Never silent `shadcn init` on this adapter, a backend or Python tree, or a non-UI cwd. - Scroll-led storytelling (scroll is the timeline, scrollytelling, signature interaction): `/scroll-craft`. Ordinary scrollable UI stays `/impeccable`. `/scroll-craft` plus Continuous World: Scroll Craft writes the brief, then `/scroll-world`. - Continuous camera fly-through, diorama, or 3D-world landing: `/scroll-world` even if the request says scroll. -- Commercials, launch films, business explainers, sample reels, pitch videos: `/business-motion-film` (render via `hyperframes`; Three.js product-hero patterns in references, not a standalone skill; 18s brag cards stay `hyperframes/references/brag.md`). Indonesian narrated tours stay `/id-demo-video`. Not `scroll-world` (camera fly-through), not `visual-studio` (photoreal stills/media), and not `impeccable` (product UI). +- Commercials, launch films, business explainers, sample reels, pitch videos: `/business-motion-film` (render via `hyperframes`; includes real app UI product-film mode; Three.js product-hero patterns in references, not a standalone skill; 18s brag cards stay `hyperframes/references/brag.md`). Indonesian narrated tours stay `/id-demo-video`. Not `scroll-world` (camera fly-through), not `visual-studio` (photoreal stills/media), and not `impeccable` (product UI). - Deterministic HTML composition rendered to video: `/hyperframes` (headless Chrome + FFmpeg; 18s brag/launch cards via `references/brag.md`). Not `visual-studio`, not `emil-design-eng`. Ordinary scrollable UI stays `/impeccable`. - Demo video aplikasi, walkthrough layar, narasi Indonesia, demo lomba: skill `id-demo-video` (bukan `hyperframes` untuk durasi panjang utuh, bukan `playwright-qa`, bukan `visual-studio`). Kartu judul HTML→MP4 tetap `hyperframes`. - Photoreal stills / ads / identity with no UI surface: `/visual-studio`. diff --git a/skills/business-motion-film/NOTICE.md b/skills/business-motion-film/NOTICE.md index 2e23f8d..750b8b4 100644 --- a/skills/business-motion-film/NOTICE.md +++ b/skills/business-motion-film/NOTICE.md @@ -5,4 +5,9 @@ - License: MIT - Copyright: Copyright (c) 2026 echris6 - Local license copy: `vendor/licenses/ECHRIS6-MOTION-VIDEO-KIT-MIT.txt` -- Notes: Adapted into first-party OpenCode skill stub. Pointers reference pinned upstream files rather than vendoring large reference corpuses. Rendering is executed via hyperframes. +- Merged upstream repository: [kaventro/motion-designer](https://github.com/kaventro/motion-designer) +- Merged upstream commit: `0cf0ba92d3db7d8d5ae603a65b56a99a2866311c` +- License: MIT +- Copyright: Copyright (c) 2026 kaventro +- Local license copy: `vendor/licenses/KAVENTRO-MOTION-DESIGNER-MIT.txt` +- Notes: Adapted into first-party OpenCode skill stub. Wave 0.1.9 merges product-film mode (real app UI in device chrome, seek(t) deterministic frames, 4-still approval gate, beat mapping). Pointers reference pinned upstream files rather than vendoring large reference corpuses, heavy models, or full plugins. Rendering executes through hyperframes. diff --git a/skills/business-motion-film/SKILL.md b/skills/business-motion-film/SKILL.md index 9a1316d..390a3b9 100644 --- a/skills/business-motion-film/SKILL.md +++ b/skills/business-motion-film/SKILL.md @@ -1,6 +1,6 @@ --- name: business-motion-film -description: Plan, storyboard, and quality-check premium short business commercials, product launch films, sample reels, and explainers with code-built motion (HTML/GSAP/Three.js) and an independent critic Gauntlet. Render through hyperframes. Not for narrated Indonesian app tours (id-demo-video), 2D scrollytelling (scroll-craft), or continuous camera fly-through landings (scroll-world). +description: Plan, storyboard, and quality-check premium short business commercials, product launch films (including real app UI product-film mode), sample reels, and explainers with code-built motion (HTML/GSAP/Three.js) and an independent critic Gauntlet. Render through hyperframes. Not for narrated Indonesian app tours (id-demo-video), 2D scrollytelling (scroll-craft), or continuous camera fly-through landings (scroll-world). compatibility: opencode license: MIT --- @@ -24,14 +24,43 @@ Intent: `launch_film`. Product hero Three.js patterns live here (formerly `img2t ## Pinned Upstream References -Read only the upstream reference needed for the current step (upstream `echris6/motion-video-kit@255562b`): +Read only the upstream reference needed for the current step: -- **Storyboarding & Motion Grammar**: `references/motion-grammar.md`, `references/launch-film-notes.md` +- **Product-Film Mode (Real App UI)**: `references/product-film.md` (upstream `kaventro/motion-designer@0cf0ba9`) +- **Storyboarding & Motion Grammar**: `references/motion-grammar.md`, `references/launch-film-notes.md` (upstream `echris6/motion-video-kit@255562b`) - **3D Components & Product Hero Realism**: `references/three-js-patterns.md`, `references/product-hero-realism.md` - **Review & Gauntlet**: `references/gauntlet.md`, `references/critic-prompts.md`, `references/quality-bar.md` - **Audio & Mix Rules**: `references/audio.md` - **Offers & Business Logic**: `references/business-offers.md` +## Product-Film Mode (Real App UI) + +Use this mode when the user requests a launch film, teaser, or product promo of a real application interface (iOS, desktop macOS/Windows/Linux, Electron/Tauri, web app) rather than an abstract business commercial. + +1. **Grounded Interface in Device Frame**: + - Reconstruct screens directly from repository source code, design tokens, or verified screenshots. Generic mockups and ungrounded templates are rejected. + - Mobile apps remain contained inside an iPhone frame with dynamic island or status bar for the entire film; never display app UI full-bleed. + - Desktop apps remain contained inside their application window; the cursor moves only when demonstrating an intentional user interaction. + - Never adopt upstream foreign style kits (Meadow, Midnight, etc.); style from repository tokens or `emil-design-eng` motion principles. +2. **Deterministic Frame Contract (`seek(t)`)**: + - Every layout property, camera move, and text element is a pure function of time `seek(t)`. + - Zero timers (`setTimeout`, `setInterval`), zero `Date.now()`, zero `Math.random()`, and zero CSS transitions or `@keyframes` animations. + - The timeline loop must close cleanly, and identical frames must render regardless of seek trajectory or order. +3. **Beat-Map & Audio Priority**: + - Structure narrative along tempo (BPM), bars, and musical drops; pivotal feature reveals must land on the drop. + - Prioritize the user-provided audio track. + - Upstream heavy models (ACE-Step ~11 GB, Chatterbox, Kokoro) are `OPTIONAL_POINTER`. Never run upstream `install.sh` and never download models. Absent models report `NOT_CONFIGURED`. +4. **Four Stills Approval Gate**: + - Before building, you must present four explicit still frames for user approval: (1) Opening / hook, (2) Key product moment in action, (3) The Drop climax, and (4) Final lock-up. + - Without explicit user approval of these four stills, halt and do not proceed to build. +5. **QA Loop & Mechanical Evidence (`FACT:`)**: + - Review contact sheets across transitions and verify against the failure catalogue (truncated labels, full-bleed UI, arbitrary crossfades, wandering pointer, unverified claims). + - Done-gate requires `FACT:` citations: local MP4 file path, presence/absence of `ffmpeg` and Chrome, and measured loudness (LUFS) if audio is included. + - If `ffmpeg` or Chrome is absent, report `NOT_CONFIGURED`; never emit a false `PASS`. +6. **Rendering Pipeline**: + - Primary default rendering engine remains `hyperframes` (18s brag cards remain in `skills/hyperframes/references/brag.md`). + - The upstream Chrome DevTools render pipeline is used only when explicitly requested and Chrome is present. + ## The Gauntlet & Honesty Gates 1. **Truth on Business Claims**: Never invent testimonials, ratings, warranties, savings, or customer logos. Unverified concept ads must display a clear concept disclaimer. diff --git a/skills/business-motion-film/references/product-film.md b/skills/business-motion-film/references/product-film.md new file mode 100644 index 0000000..1564780 --- /dev/null +++ b/skills/business-motion-film/references/product-film.md @@ -0,0 +1,87 @@ +# Product-Film Mode Reference (Real App UI) + +Distilled motion doctrine adapted from `kaventro/motion-designer@0cf0ba9` (MIT). +Used when the user requests a launch film, teaser, or product promo of a real application interface (iOS, macOS/Windows/Linux desktop, Electron/Tauri, web app) rather than an abstract business commercial. + +## 1. Real App Interface & Device Boundaries + +- **Real Code or Screenshots Only**: Rebuild screens directly from repository components, styling tokens, icons, and layout, or use verified repository screenshots (e.g. 3× iOS simulator captures or desktop snapshots). Generic mockups, stock UI, and ungrounded templates are rejected. +- **Mobile in Device Chrome**: + - Screen dimensions: 402 × 874 pt (iPhone 16 Pro / 17 Pro standard), corner radius `R: 55`, bezel: 5 pt, titanium frame: 3 pt. + - Overlay chrome: Status bar (time 9:41, cellular, wifi, battery), Dynamic Island (125 × 37 pt at `y: 11`), Home indicator (134 × 5 pt at `y: 861`). Set `--sb` to `#fff` over dark scenes. + - Framing: Both side edges must remain visible in frame (`s ≤ 3.3` on 1440 stage); crop only vertically for close-ups. Never display app UI full-bleed without device context. + - Legibility: 13 pt app text requires camera scale `s ≥ 1.55` (~20 px on stage). +- **Desktop in Window Chrome**: + - Screen dimensions: 1512 × 982 pt (14" laptop standard) or floating application window (`WIN` e.g. 1200 pt). + - Window chrome: Title bar, native window controls (traffic lights red `#FF5F56`, yellow `#FFBD2E`, green `#27C93F` on macOS; platform caption controls on Windows/Linux). + - Pointer choreography: Arrive one beat early, click squarely on the beat, pause for UI reaction before moving. Typing pace: 60–90 ms per keystroke; hide cursor while typing. The cursor moves only when demonstrating intentional interaction—never wander or idle-wiggle. + - Legibility: 13–14 pt desktop labels need zoom `1.15–1.9` on the active pane. Never cut text labels at frame edges. +- **No Style Kits**: Do not adopt foreign upstream style kits (Meadow, Midnight, Warm Ink, Field Guide, Paper and Ink, Color Block). Derive visual tokens directly from the app itself or from `emil-design-eng` motion principles. + +## 2. Deterministic Frame Contract: `seek(t)` + +- **Pure Function of Time**: Every scene property, layout transform, spinner, caret, and kinetic element must be a pure deterministic function of elapsed time `seek(t)`. +- **Prohibited Primitives**: Zero timers (`setTimeout`, `setInterval`), zero `Date.now()`, zero `Math.random()`, and zero asynchronous state carryover between frames. Zero CSS transitions or CSS `@keyframes` animations. +- **Seam & Path Consistency**: The timeline loop must close cleanly (the frame immediately following the end must match the initial frame). Seeking to time `t` from any order or direction must yield bit-identical pixels. + +## 3. Beat-Map & Sound Direction + +- **Beat-Driven Choreography**: Map the story across tempo (BPM), bars, and musical drops. + - Calculate beat timestamps: `t_beat = (60 / BPM) * beat_index`. + - Align scene cuts to bar boundaries (e.g. every 4 or 8 beats). +- **Drop Synchronization**: Core product actions, key reveals, and major value transitions must land squarely on musical drops. +- **Micro-Drift on Holds**: During a hold scene, apply a subtle camera ease-in (2–3% zoom drift over the hold) so the screen never looks like a frozen video frame. +- **Soundtrack Priority**: Prioritize the user-provided audio track. +- **Optional Heavy Models**: Heavy audio generation models (ACE-Step ~11 GB) and speech synthesizers (Chatterbox, Kokoro) are `OPTIONAL_POINTER`. Never execute upstream `install.sh` and never auto-download models. When absent, report `NOT_CONFIGURED`. + +## 4. Rights, Claims & Data Honesty + +- **Real Features Only**: Feature claims must reflect real code paths in the repository. Opt-in features (notifications, AI, permissions) appear as user-enabled actions, not default states. +- **Fictional Plausible Data**: All names, merchants, amounts, balances, dates, and account numbers must be fictional and plausible. Never use real personal or customer data. +- **Audio Rights & Licensing**: + - Record audio title, artist, source URL, and license terms in the evidence ledger. + - Prioritize user-provided tracks, CC0, or verified MIT-licensed stems. Never use unlicensed copyrighted music. + - Generated sound effects for UI clicks and transitions should be synthetic or licensed. +- **Marketing Film vs App Store Preview**: + - Marketing films (built via HTML/hyperframes) are tailored for product launches, landing pages, Twitter/X, and social media. + - If the user specifically requests an Apple App Store App Preview (Guideline 2.3.4), note that it requires raw simulator video captures without external device frames, exactly 30 fps, and portrait 886 × 1920 px. + +## 5. The Four-Still Approval Gate + +Before writing implementation code or starting a build, you must define the story beats and present four distinct still frames for explicit user review: +1. **Opening Still**: Hook and initial device entrance. +2. **Key Product Moment Still**: The primary feature or workflow shown in action. +3. **The Drop Still**: The pivotal climax or key result landing on the musical drop. +4. **Final Frame Still**: The concluding lock-up, product mark, and call to action. + +*Halt Gate:* Without explicit approval of the four stills from the user, stop and do not proceed to build. + +## 6. QA Loop & Mechanical Ledger + +- **Contact Sheets**: Generate visual contact sheets of the film (timeline overview every 0.5 s, transitions every 0.05 s) to review cadence, cropping, and legibility. +- **Failure Catalogue**: Audit against common flaws: + - Text cut off or truncated (`"Savi"`, `"Uncategori…"`). + - UI displayed full-bleed without device framing. + - Arbitrary crossfades between unrelated scenes instead of physical UI transitions. + - Cursor moving without purpose or clicking empty space. + - Invented features or claims not present in the codebase. +- **Evidence Ledger (`FACT:`)**: + - `FACT:` Verified local MP4 output file path and byte size. + - `FACT:` Presence or absence of `ffmpeg` and `ffprobe`. + - `FACT:` Presence or absence of headless Chrome / Chromium. + - `FACT:` Integrated audio loudness (LUFS) and true peak (dBFS) if audio is rendered. +- **Tooling Gate**: If `ffmpeg` or `chromium` is missing from the local environment, report `NOT_CONFIGURED`. Never emit a false `PASS`. + +## 7. Rendering Engine Hierarchy + +- **Default Engine**: Rendering is executed through `hyperframes` (deterministic HTML/CSS/canvas to seekable frames). 18-second brag cards remain strictly in `skills/hyperframes/references/brag.md`. +- **Alternative Upstream Pipeline**: Direct DevTools-driven Chrome frame capture into ffmpeg is used only when explicitly requested by the user and Chrome is verified available on the machine. + +## 8. Neighbor Boundaries + +- Spoken Indonesian app walkthroughs and demo contests: strictly `id-demo-video`. +- 2D timeline scrollytelling websites: `scroll-craft`. +- Continuous camera fly-through 3D worlds: `scroll-world`. +- UI motion physics and micro-interactions: `emil-design-eng`. +- Product UI atom design and implementation: `impeccable` and `found-this-design`. +- Gateway multi-model routing: `ninerouter`. diff --git a/templates/AGENTS.md b/templates/AGENTS.md index 586e0c9..34f2cc5 100644 --- a/templates/AGENTS.md +++ b/templates/AGENTS.md @@ -37,7 +37,7 @@ Code Mode host is OpenCode 2: session tools are strictly `tools.opencode.session ## Specialists (load one) -UI direction → skill `found-this-design` (must write `.impeccable/found-this-design.json` before implement) then `impeccable`. UI atoms (button, input, card, nav) after world/brief → impeccable after Design V2 shortlist; BANK_MISS ≠ generate (never `found-this-design` for buttons). Motion UI (easing, hover, seam) → `emil-design-eng`. Still/ads/non-UI surface → `visual-studio`. Scroll-led story → `scroll-craft`. Camera/3D world/diorama → `scroll-world`. Iklan / launch film / explainer bisnis / sample reel / pitch video → `business-motion-film` (render lewat hyperframes; pola Three.js product-hero di references, bukan skill sendiri; brag 18s tetap hyperframes/brag.md). Registry → shadcn MCP. Design Intelligence and Design V2 are internal to Impeccable `new-work`, never a route. Stitch MCP = screen/comp generation only; then found-this-design or impeccable + Design V2 atoms. Never implement production UI from Stitch alone. UI Skills MCP = design-skill lookup only; product UI remains Design Bank + Impeccable + Design V2 atoms + shadcn; BANK_MISS ≠ generate from a random ui-skills document. Schema/JSON generative UI → skill `json-render` (after tokens/direction or internal schema UI; never bypass Design Bank for marketing; never Jev compose). +UI direction → skill `found-this-design` (must write `.impeccable/found-this-design.json` before implement) then `impeccable`. UI atoms (button, input, card, nav) after world/brief → impeccable after Design V2 shortlist; BANK_MISS ≠ generate (never `found-this-design` for buttons). Motion UI (easing, hover, seam) → `emil-design-eng`. Still/ads/non-UI surface → `visual-studio`. Scroll-led story → `scroll-craft`. Camera/3D world/diorama → `scroll-world`. Iklan / launch film / explainer bisnis / sample reel / pitch video / product-film UI aplikasi → `business-motion-film` (render lewat hyperframes; pola Three.js product-hero di references, bukan skill sendiri; brag 18s tetap hyperframes/brag.md). Registry → shadcn MCP. Design Intelligence and Design V2 are internal to Impeccable `new-work`, never a route. Stitch MCP = screen/comp generation only; then found-this-design or impeccable + Design V2 atoms. Never implement production UI from Stitch alone. UI Skills MCP = design-skill lookup only; product UI remains Design Bank + Impeccable + Design V2 atoms + shadcn; BANK_MISS ≠ generate from a random ui-skills document. Schema/JSON generative UI → skill `json-render` (after tokens/direction or internal schema UI; never bypass Design Bank for marketing; never Jev compose). Browser QA → skill `playwright-qa` (isolated verification session; builder does not self-attest). Explicit/session BrowserAct → `browser-act`. Observed cause → `chrome-devtools-axi` after `opencode-chromium-cdp` (`127.0.0.1:9223`). Never Google Chrome. Project E2E suites (Playwright Test/Cypress) stay authoritative for regressions. diff --git a/vendor/license-audit.json b/vendor/license-audit.json index ac6d9de..f70bbf8 100644 --- a/vendor/license-audit.json +++ b/vendor/license-audit.json @@ -1,7 +1,7 @@ { "schemaVersion": 1, "product": "OpenCodeHighEnd", - "productVersion": "0.1.8", + "productVersion": "0.1.9", "note": "Evidence-based. A missing frontmatter license is not a grant. Adapted \u2260 first-party.", "skills": { "demo-video": { @@ -311,7 +311,7 @@ }, "business-motion-film": { "license": "MIT", - "evidence": "SKILL.md frontmatter + echris6/motion-video-kit MIT; NOTICE.md; vendor/licenses/ECHRIS6-MOTION-VIDEO-KIT-MIT.txt", + "evidence": "SKILL.md frontmatter + echris6/motion-video-kit MIT; kaventro/motion-designer MIT; NOTICE.md; vendor/licenses/ECHRIS6-MOTION-VIDEO-KIT-MIT.txt; vendor/licenses/KAVENTRO-MOTION-DESIGNER-MIT.txt", "redistribution": "mit" }, "json-render": { diff --git a/vendor/licenses/KAVENTRO-MOTION-DESIGNER-MIT.txt b/vendor/licenses/KAVENTRO-MOTION-DESIGNER-MIT.txt new file mode 100644 index 0000000..a873db9 --- /dev/null +++ b/vendor/licenses/KAVENTRO-MOTION-DESIGNER-MIT.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 kaventro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/provenance.json b/vendor/provenance.json index 17b4072..ac1960d 100644 --- a/vendor/provenance.json +++ b/vendor/provenance.json @@ -1,7 +1,7 @@ { "schemaVersion": 1, "product": "OpenCodeHighEnd", - "productVersion": "0.1.8", + "productVersion": "0.1.9", "firstPartyLicense": "MIT", "components": [ { @@ -679,7 +679,7 @@ "copyright": "Copyright (c) 2026 echris6", "modified": true, "redistribution": "mit", - "notes": "Adapted from echris6/motion-video-kit. Launch-style business commercials, independent critic loop, and product hero 3D realism; render executed via hyperframes." + "notes": "Adapted from echris6/motion-video-kit. Launch-style business commercials, independent critic loop, and product hero 3D realism; render executed via hyperframes. Wave 0.1.9 merges product-film mode (real app UI) from kaventro/motion-designer@0cf0ba92d3db7d8d5ae603a65b56a99a2866311c (MIT, Copyright (c) 2026 kaventro)." } ] } diff --git a/vendor/sources.json b/vendor/sources.json index 83581fc..4147336 100644 --- a/vendor/sources.json +++ b/vendor/sources.json @@ -1,7 +1,7 @@ { "schemaVersion": 1, "product": "OpenCodeHighEnd", - "productVersion": "0.1.8", + "productVersion": "0.1.9", "sources": { "codebase-memory": { "repository": "https://github.com/DeusData/codebase-memory-mcp", @@ -231,6 +231,14 @@ "licenseFile": "vendor/licenses/ECHRIS6-MOTION-VIDEO-KIT-MIT.txt", "note": "First-party skill wrapper. Pointers reference pinned upstream files; large reference packs not vendored. Rendered via hyperframes." }, + "motion-designer": { + "repository": "https://github.com/kaventro/motion-designer", + "commit": "0cf0ba92d3db7d8d5ae603a65b56a99a2866311c", + "license": "MIT", + "copyright": "Copyright (c) 2026 kaventro", + "licenseFile": "vendor/licenses/KAVENTRO-MOTION-DESIGNER-MIT.txt", + "note": "Merged into skills/business-motion-film as product-film mode. Real app UI in device chrome, seek(t) frame determinism, 4-still approval gate. Models and plugin not vendored." + }, "9router": { "repository": "https://github.com/decolua/9router", "commit": "f01fb909e37189008080632ddaf404f096345cde",