SKILL.md
Upload R2 Asset
Use this for large media assets that should be hosted on https://remotion.media/ instead of committed to Git.
Workflow
- Find the main worktree:
``bash git worktree list --porcelain ` Prefer the worktree on refs/heads/main, usually /Users/jonathanburger/remotion`.
- Load R2 credentials from the main worktree:
``bash --env-file=/Users/jonathanburger/remotion/packages/remotion-media/.env ` Do not print secret values. The required variables are AWSACCESSKEYID and AWSSECRETACCESSKEY`.
- Upload the file to the
parser-mediabucket using Bun's S3-compatible client:
``bash bun --env-file=/Users/jonathanburger/remotion/packages/remotion-media/.env -e "import {S3Client} from 'bun'; const filePath='<local-file>'; const key='<remote-file-name>'; const client=new S3Client({accessKeyId:Bun.env.AWSACCESSKEYID, secretAccessKey:Bun.env.AWSSECRETACCESSKEY, endpoint:'https://2fe488b3b0f4deee223aef7464784c46.r2.cloudflarestorage.com';, bucket:'parser-media'}); const file=Bun.file(filePath); if (await client.exists(key)) { const stat=await client.stat(key); if (stat.size===file.size) { console.log('exists-same-size', key, file.size); process.exit(0); } } await client.write(key, file); const stat=await client.stat(key); console.log('uploaded', key, stat.size);" ``
- Verify the public URL:
``bash curl -I --fail https://remotion.media/<remote-file-name> ``
- Replace local asset usage with the hosted URL and delete the local binary.
Do not wrap remote URLs in staticFile(): staticFile() rejects http:// and https:// URLs. Use the URL string directly, for example: ``tsx <Video src="https://remotion.media/example.mp4" /> ``
- Run the focused lint or stylecheck for touched packages, then commit and push.