From 54eb863c5273d8c9b4b08a5fd75ce610ce81cdeb Mon Sep 17 00:00:00 2001 From: Roberto Musso Date: Sat, 11 Apr 2026 02:15:59 +0200 Subject: [PATCH] feat: Update local agent documentation to reflect changes in user_id and session_id handling; add marketing strategy document; update skills-lock.json with new Remotion best practices; update website subproject commit. --- .claude/settings.json | 8 +- .claude/settings.local.json | 8 +- .../skills/remotion-best-practices/SKILL.md | 95 ++ .../remotion-best-practices/rules/3d.md | 86 ++ .../rules/animations.md | 31 + .../remotion-best-practices/rules/assets.md | 78 ++ .../rules/assets/charts-bar-chart.tsx | 173 +++ .../assets/text-animations-typewriter.tsx | 100 ++ .../assets/text-animations-word-highlight.tsx | 103 ++ .../rules/audio-visualization.md | 198 +++ .../remotion-best-practices/rules/audio.md | 169 +++ .../rules/calculate-metadata.md | 134 +++ .../rules/can-decode.md | 81 ++ .../remotion-best-practices/rules/charts.md | 120 ++ .../rules/compositions.md | 154 +++ .../rules/display-captions.md | 184 +++ .../rules/extract-frames.md | 229 ++++ .../remotion-best-practices/rules/ffmpeg.md | 34 + .../remotion-best-practices/rules/fonts.md | 152 +++ .../rules/get-audio-duration.md | 58 + .../rules/get-video-dimensions.md | 68 ++ .../rules/get-video-duration.md | 60 + .../remotion-best-practices/rules/gifs.md | 141 +++ .../remotion-best-practices/rules/images.md | 134 +++ .../rules/import-srt-captions.md | 69 ++ .../rules/light-leaks.md | 73 ++ .../remotion-best-practices/rules/lottie.md | 70 ++ .../remotion-best-practices/rules/maps.md | 412 +++++++ .../rules/measuring-dom-nodes.md | 34 + .../rules/measuring-text.md | 140 +++ .../rules/parameters.md | 109 ++ .../rules/sequencing.md | 118 ++ .../remotion-best-practices/rules/sfx.md | 30 + .../rules/silence-detection.md | 71 ++ .../rules/subtitles.md | 36 + .../remotion-best-practices/rules/tailwind.md | 11 + .../rules/text-animations.md | 20 + .../remotion-best-practices/rules/timing.md | 136 +++ .../rules/transcribe-captions.md | 70 ++ .../rules/transitions.md | 197 +++ .../rules/transparent-videos.md | 106 ++ .../remotion-best-practices/rules/trimming.md | 51 + .../remotion-best-practices/rules/videos.md | 171 +++ .../rules/voiceover.md | 99 ++ .claude/skills/ui-ux-pro-max/SKILL.md | 377 ++++++ .claude/skills/ui-ux-pro-max/data/charts.csv | 26 + .claude/skills/ui-ux-pro-max/data/colors.csv | 97 ++ .claude/skills/ui-ux-pro-max/data/icons.csv | 101 ++ .claude/skills/ui-ux-pro-max/data/landing.csv | 31 + .../skills/ui-ux-pro-max/data/products.csv | 97 ++ .../ui-ux-pro-max/data/react-performance.csv | 45 + .../ui-ux-pro-max/data/stacks/astro.csv | 54 + .../ui-ux-pro-max/data/stacks/flutter.csv | 53 + .../data/stacks/html-tailwind.csv | 56 + .../data/stacks/jetpack-compose.csv | 53 + .../ui-ux-pro-max/data/stacks/nextjs.csv | 53 + .../ui-ux-pro-max/data/stacks/nuxt-ui.csv | 51 + .../ui-ux-pro-max/data/stacks/nuxtjs.csv | 59 + .../data/stacks/react-native.csv | 52 + .../ui-ux-pro-max/data/stacks/react.csv | 54 + .../ui-ux-pro-max/data/stacks/shadcn.csv | 61 + .../ui-ux-pro-max/data/stacks/svelte.csv | 54 + .../ui-ux-pro-max/data/stacks/swiftui.csv | 51 + .../skills/ui-ux-pro-max/data/stacks/vue.csv | 50 + .claude/skills/ui-ux-pro-max/data/styles.csv | 68 ++ .../skills/ui-ux-pro-max/data/typography.csv | 58 + .../ui-ux-pro-max/data/ui-reasoning.csv | 101 ++ .../ui-ux-pro-max/data/ux-guidelines.csv | 100 ++ .../ui-ux-pro-max/data/web-interface.csv | 31 + .../scripts/__pycache__/core.cpython-314.pyc | Bin 0 -> 12619 bytes .../__pycache__/design_system.cpython-314.pyc | Bin 0 -> 62939 bytes .../__pycache__/search.cpython-314.pyc | Bin 0 -> 6584 bytes .claude/skills/ui-ux-pro-max/scripts/core.py | 253 ++++ .../ui-ux-pro-max/scripts/design_system.py | 1067 +++++++++++++++++ .../skills/ui-ux-pro-max/scripts/search.py | 114 ++ adiuvAI | 2 +- api | 2 +- docs/agent-runner-sequence.html | 191 +++ docs/creative-brief.md | 153 +++ docs/llm-provider-report.html | 211 +++- docs/local_agent_v2_mem.md | 15 +- docs/marketing-strategy.md | 415 +++++++ skills-lock.json | 5 + website | 2 +- 84 files changed, 8825 insertions(+), 59 deletions(-) create mode 100644 .claude/skills/remotion-best-practices/SKILL.md create mode 100644 .claude/skills/remotion-best-practices/rules/3d.md create mode 100644 .claude/skills/remotion-best-practices/rules/animations.md create mode 100644 .claude/skills/remotion-best-practices/rules/assets.md create mode 100644 .claude/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx create mode 100644 .claude/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx create mode 100644 .claude/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx create mode 100644 .claude/skills/remotion-best-practices/rules/audio-visualization.md create mode 100644 .claude/skills/remotion-best-practices/rules/audio.md create mode 100644 .claude/skills/remotion-best-practices/rules/calculate-metadata.md create mode 100644 .claude/skills/remotion-best-practices/rules/can-decode.md create mode 100644 .claude/skills/remotion-best-practices/rules/charts.md create mode 100644 .claude/skills/remotion-best-practices/rules/compositions.md create mode 100644 .claude/skills/remotion-best-practices/rules/display-captions.md create mode 100644 .claude/skills/remotion-best-practices/rules/extract-frames.md create mode 100644 .claude/skills/remotion-best-practices/rules/ffmpeg.md create mode 100644 .claude/skills/remotion-best-practices/rules/fonts.md create mode 100644 .claude/skills/remotion-best-practices/rules/get-audio-duration.md create mode 100644 .claude/skills/remotion-best-practices/rules/get-video-dimensions.md create mode 100644 .claude/skills/remotion-best-practices/rules/get-video-duration.md create mode 100644 .claude/skills/remotion-best-practices/rules/gifs.md create mode 100644 .claude/skills/remotion-best-practices/rules/images.md create mode 100644 .claude/skills/remotion-best-practices/rules/import-srt-captions.md create mode 100644 .claude/skills/remotion-best-practices/rules/light-leaks.md create mode 100644 .claude/skills/remotion-best-practices/rules/lottie.md create mode 100644 .claude/skills/remotion-best-practices/rules/maps.md create mode 100644 .claude/skills/remotion-best-practices/rules/measuring-dom-nodes.md create mode 100644 .claude/skills/remotion-best-practices/rules/measuring-text.md create mode 100644 .claude/skills/remotion-best-practices/rules/parameters.md create mode 100644 .claude/skills/remotion-best-practices/rules/sequencing.md create mode 100644 .claude/skills/remotion-best-practices/rules/sfx.md create mode 100644 .claude/skills/remotion-best-practices/rules/silence-detection.md create mode 100644 .claude/skills/remotion-best-practices/rules/subtitles.md create mode 100644 .claude/skills/remotion-best-practices/rules/tailwind.md create mode 100644 .claude/skills/remotion-best-practices/rules/text-animations.md create mode 100644 .claude/skills/remotion-best-practices/rules/timing.md create mode 100644 .claude/skills/remotion-best-practices/rules/transcribe-captions.md create mode 100644 .claude/skills/remotion-best-practices/rules/transitions.md create mode 100644 .claude/skills/remotion-best-practices/rules/transparent-videos.md create mode 100644 .claude/skills/remotion-best-practices/rules/trimming.md create mode 100644 .claude/skills/remotion-best-practices/rules/videos.md create mode 100644 .claude/skills/remotion-best-practices/rules/voiceover.md create mode 100644 .claude/skills/ui-ux-pro-max/SKILL.md create mode 100644 .claude/skills/ui-ux-pro-max/data/charts.csv create mode 100644 .claude/skills/ui-ux-pro-max/data/colors.csv create mode 100644 .claude/skills/ui-ux-pro-max/data/icons.csv create mode 100644 .claude/skills/ui-ux-pro-max/data/landing.csv create mode 100644 .claude/skills/ui-ux-pro-max/data/products.csv create mode 100644 .claude/skills/ui-ux-pro-max/data/react-performance.csv create mode 100644 .claude/skills/ui-ux-pro-max/data/stacks/astro.csv create mode 100644 .claude/skills/ui-ux-pro-max/data/stacks/flutter.csv create mode 100644 .claude/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv create mode 100644 .claude/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv create mode 100644 .claude/skills/ui-ux-pro-max/data/stacks/nextjs.csv create mode 100644 .claude/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv create mode 100644 .claude/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv create mode 100644 .claude/skills/ui-ux-pro-max/data/stacks/react-native.csv create mode 100644 .claude/skills/ui-ux-pro-max/data/stacks/react.csv create mode 100644 .claude/skills/ui-ux-pro-max/data/stacks/shadcn.csv create mode 100644 .claude/skills/ui-ux-pro-max/data/stacks/svelte.csv create mode 100644 .claude/skills/ui-ux-pro-max/data/stacks/swiftui.csv create mode 100644 .claude/skills/ui-ux-pro-max/data/stacks/vue.csv create mode 100644 .claude/skills/ui-ux-pro-max/data/styles.csv create mode 100644 .claude/skills/ui-ux-pro-max/data/typography.csv create mode 100644 .claude/skills/ui-ux-pro-max/data/ui-reasoning.csv create mode 100644 .claude/skills/ui-ux-pro-max/data/ux-guidelines.csv create mode 100644 .claude/skills/ui-ux-pro-max/data/web-interface.csv create mode 100644 .claude/skills/ui-ux-pro-max/scripts/__pycache__/core.cpython-314.pyc create mode 100644 .claude/skills/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-314.pyc create mode 100644 .claude/skills/ui-ux-pro-max/scripts/__pycache__/search.cpython-314.pyc create mode 100644 .claude/skills/ui-ux-pro-max/scripts/core.py create mode 100644 .claude/skills/ui-ux-pro-max/scripts/design_system.py create mode 100644 .claude/skills/ui-ux-pro-max/scripts/search.py create mode 100644 docs/agent-runner-sequence.html create mode 100644 docs/creative-brief.md create mode 100644 docs/marketing-strategy.md diff --git a/.claude/settings.json b/.claude/settings.json index 9e26dfe..ce23189 100644 --- a/.claude/settings.json +++ b/.claude/settings.json @@ -1 +1,7 @@ -{} \ No newline at end of file +{ + "permissions": { + "allow": [ + "Bash(.venv/Scripts/pytest tests/test_auth.py -v)" + ] + } +} diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 13357b6..23011cb 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -1,3 +1,9 @@ { - "enableAllProjectMcpServers": true + "enableAllProjectMcpServers": true, + "permissions": { + "allow": [ + "Bash(git add:*)", + "Bash(git commit -m ':*)" + ] + } } diff --git a/.claude/skills/remotion-best-practices/SKILL.md b/.claude/skills/remotion-best-practices/SKILL.md new file mode 100644 index 0000000..3e07cb2 --- /dev/null +++ b/.claude/skills/remotion-best-practices/SKILL.md @@ -0,0 +1,95 @@ +--- +name: remotion-best-practices +description: Best practices for Remotion - Video creation in React +metadata: + tags: remotion, video, react, animation, composition +--- + +## When to use + +Use this skills whenever you are dealing with Remotion code to obtain the domain-specific knowledge. + +## New project setup + +When in an empty folder or workspace with no existing Remotion project, scaffold one using: + +```bash +npx create-video@latest --yes --blank --no-tailwind my-video +``` + +Replace `my-video` with a suitable project name. + +## Starting preview + +Stsrt the Remotion Studio to preview a video: + +```bash +npx remotion studio +``` + +## Optional: one-frame render check + +You can render a single frame with the CLI to sanity-check layout, colors, or timing. +Skip it for trivial edits, pure refactors, or when you already have enough confidence from Studio or prior renders. + +```bash +npx remotion still [composition-id] --scale=0.25 --frame=30 +``` + +At 30 fps, `--frame=30` is the one-second mark (`--frame` is zero-based). + +## Captions + +When dealing with captions or subtitles, load the [./rules/subtitles.md](./rules/subtitles.md) file for more information. + +## Using FFmpeg + +For some video operations, such as trimming videos or detecting silence, FFmpeg should be used. Load the [./rules/ffmpeg.md](./rules/ffmpeg.md) file for more information. + +## Silence detection + +When needing to detect and trim silent segments from video or audio files, load the [./rules/silence-detection.md](./rules/silence-detection.md) file. + +## Audio visualization + +When needing to visualize audio (spectrum bars, waveforms, bass-reactive effects), load the [./rules/audio-visualization.md](./rules/audio-visualization.md) file for more information. + +## Sound effects + +When needing to use sound effects, load the [./rules/sfx.md](./rules/sfx.md) file for more information. + +## How to use + +Read individual rule files for detailed explanations and code examples: + +- [rules/3d.md](rules/3d.md) - 3D content in Remotion using Three.js and React Three Fiber +- [rules/animations.md](rules/animations.md) - Fundamental animation skills for Remotion +- [rules/assets.md](rules/assets.md) - Importing images, videos, audio, and fonts into Remotion +- [rules/audio.md](rules/audio.md) - Using audio and sound in Remotion - importing, trimming, volume, speed, pitch +- [rules/calculate-metadata.md](rules/calculate-metadata.md) - Dynamically set composition duration, dimensions, and props +- [rules/can-decode.md](rules/can-decode.md) - Check if a video can be decoded by the browser using Mediabunny +- [rules/charts.md](rules/charts.md) - Chart and data visualization patterns for Remotion (bar, pie, line, stock charts) +- [rules/compositions.md](rules/compositions.md) - Defining compositions, stills, folders, default props and dynamic metadata +- [rules/extract-frames.md](rules/extract-frames.md) - Extract frames from videos at specific timestamps using Mediabunny +- [rules/fonts.md](rules/fonts.md) - Loading Google Fonts and local fonts in Remotion +- [rules/get-audio-duration.md](rules/get-audio-duration.md) - Getting the duration of an audio file in seconds with Mediabunny +- [rules/get-video-dimensions.md](rules/get-video-dimensions.md) - Getting the width and height of a video file with Mediabunny +- [rules/get-video-duration.md](rules/get-video-duration.md) - Getting the duration of a video file in seconds with Mediabunny +- [rules/gifs.md](rules/gifs.md) - Displaying GIFs synchronized with Remotion's timeline +- [rules/images.md](rules/images.md) - Embedding images in Remotion using the Img component +- [rules/light-leaks.md](rules/light-leaks.md) - Light leak overlay effects using @remotion/light-leaks +- [rules/lottie.md](rules/lottie.md) - Embedding Lottie animations in Remotion +- [rules/measuring-dom-nodes.md](rules/measuring-dom-nodes.md) - Measuring DOM element dimensions in Remotion +- [rules/measuring-text.md](rules/measuring-text.md) - Measuring text dimensions, fitting text to containers, and checking overflow +- [rules/sequencing.md](rules/sequencing.md) - Sequencing patterns for Remotion - delay, trim, limit duration of items +- [rules/tailwind.md](rules/tailwind.md) - Using TailwindCSS in Remotion +- [rules/text-animations.md](rules/text-animations.md) - Typography and text animation patterns for Remotion +- [rules/timing.md](rules/timing.md) - Timing with interpolate and Bézier easing, springs +- [rules/transitions.md](rules/transitions.md) - Scene transition patterns for Remotion +- [rules/transparent-videos.md](rules/transparent-videos.md) - Rendering out a video with transparency +- [rules/trimming.md](rules/trimming.md) - Trimming patterns for Remotion - cut the beginning or end of animations +- [rules/videos.md](rules/videos.md) - Embedding videos in Remotion - trimming, volume, speed, looping, pitch +- [rules/parameters.md](rules/parameters.md) - Make a video parametrizable by adding a Zod schema +- [rules/maps.md](rules/maps.md) - Add a map using Mapbox and animate it +- [rules/silence-detection.md](rules/silence-detection.md) - Adaptive silence detection using FFmpeg loudnorm and silencedetect +- [rules/voiceover.md](rules/voiceover.md) - Adding AI-generated voiceover to Remotion compositions using ElevenLabs TTS diff --git a/.claude/skills/remotion-best-practices/rules/3d.md b/.claude/skills/remotion-best-practices/rules/3d.md new file mode 100644 index 0000000..c9d254f --- /dev/null +++ b/.claude/skills/remotion-best-practices/rules/3d.md @@ -0,0 +1,86 @@ +--- +name: 3d +description: 3D content in Remotion using Three.js and React Three Fiber. +metadata: + tags: 3d, three, threejs +--- + +# Using Three.js and React Three Fiber in Remotion + +Follow React Three Fiber and Three.js best practices. +Only the following Remotion-specific rules need to be followed: + +## Prerequisites + +First, the `@remotion/three` package needs to be installed. +If it is not, use the following command: + +```bash +npx remotion add @remotion/three # If project uses npm +bunx remotion add @remotion/three # If project uses bun +yarn remotion add @remotion/three # If project uses yarn +pnpm exec remotion add @remotion/three # If project uses pnpm +``` + +## Using ThreeCanvas + +You MUST wrap 3D content in `` and include proper lighting. +`` MUST have a `width` and `height` prop. + +```tsx +import { ThreeCanvas } from "@remotion/three"; +import { useVideoConfig } from "remotion"; + +const { width, height } = useVideoConfig(); + + + + + + + + +; +``` + +## No animations not driven by `useCurrentFrame()` + +Shaders, models etc MUST NOT animate by themselves. +No animations are allowed unless they are driven by `useCurrentFrame()`. +Otherwise, it will cause flickering during rendering. + +Using `useFrame()` from `@react-three/fiber` is forbidden. + +## Animate using `useCurrentFrame()` + +Use `useCurrentFrame()` to perform animations. + +```tsx +const frame = useCurrentFrame(); +const rotationY = frame * 0.02; + + + + +; +``` + +## Using `` inside `` + +The `layout` prop of any `` inside a `` must be set to `none`. + +```tsx +import { Sequence } from "remotion"; +import { ThreeCanvas } from "@remotion/three"; + +const { width, height } = useVideoConfig(); + + + + + + + + +; +``` diff --git a/.claude/skills/remotion-best-practices/rules/animations.md b/.claude/skills/remotion-best-practices/rules/animations.md new file mode 100644 index 0000000..4a02e55 --- /dev/null +++ b/.claude/skills/remotion-best-practices/rules/animations.md @@ -0,0 +1,31 @@ +--- +name: animations +description: Fundamental animation skills for Remotion +metadata: + tags: animations, transitions, frames, useCurrentFrame +--- + +All animations MUST be driven by the `useCurrentFrame()` hook. +Write animations in seconds and multiply them by the `fps` value from `useVideoConfig()`. + +For eased motion, prefer `interpolate` with explicit frame ranges and an easing—especially `Easing.bezier`, which matches CSS `cubic-bezier` so timing can be shared with web specs and curve editors. See [timing](./timing.md). + +```tsx +import { useCurrentFrame, Easing } from "remotion"; + +export const FadeIn = () => { + const frame = useCurrentFrame(); + const { fps } = useVideoConfig(); + + const opacity = interpolate(frame, [0, 2 * fps], [0, 1], { + extrapolateRight: "clamp", + extrapolateLeft: "clamp", + easing: Easing.bezier(0.16, 1, 0.3, 1), + }); + + return
Hello World!
; +}; +``` + +CSS transitions or animations are FORBIDDEN - they will not render correctly. +Tailwind animation class names are FORBIDDEN - they will not render correctly. diff --git a/.claude/skills/remotion-best-practices/rules/assets.md b/.claude/skills/remotion-best-practices/rules/assets.md new file mode 100644 index 0000000..a5d4015 --- /dev/null +++ b/.claude/skills/remotion-best-practices/rules/assets.md @@ -0,0 +1,78 @@ +--- +name: assets +description: Importing images, videos, audio, and fonts into Remotion +metadata: + tags: assets, staticFile, images, fonts, public +--- + +# Importing assets in Remotion + +## The public folder + +Place assets in the `public/` folder at your project root. + +## Using staticFile() + +You MUST use `staticFile()` to reference files from the `public/` folder: + +```tsx +import { Img, staticFile } from "remotion"; + +export const MyComposition = () => { + return ; +}; +``` + +The function returns an encoded URL that works correctly when deploying to subdirectories. + +## Using with components + +**Images:** + +```tsx +import { Img, staticFile } from "remotion"; + +; +``` + +**Videos:** + +```tsx +import { Video } from "@remotion/media"; +import { staticFile } from "remotion"; + +