v2.3Open source · MIT · zero dependenciesمتن‌باز · MIT · بدون وابستگی

Your coding agent can now direct films.ایجنت کدنویستان حالا می‌تواند فیلم بسازد.

Cinewright is an open-source skill for Codex, Claude Code and friends. Every frame is code, every sound is synthesised — no stock footage, no video model, no cloud. Same prompt, same agent: the difference is the skill.سینه‌رایت یک اسکیل متن‌باز برای Codex، Claude Code و هم‌قطارانشان است. هر فریم کد است و هر صدا با کد ساخته می‌شود — بدون ویدیوی استوک، بدون مدل ویدیوساز، بدون ابر. پرامپت یکسان، ایجنت یکسان: تفاوت فقط اسکیل است. فارسی و راست‌به‌چپ هم درجه‌یک پشتیبانی می‌شود.

Make aبسازید:— entirely from code.— فقط با کد.
terminal
$ 
256tested techniquesتکنیک آزموده
32GPU transitionsترنزیشن GPU
50kparticle morphsذرهٔ مورف‌شونده
14offline fontsفونت آفلاین · ۷ فارسی
0dependenciesوابستگی
The proofاثبات

Same prompt. Same agent. With and without Cinewright.پرامپت یکسان. ایجنت یکسان. با سینه‌رایت و بدون آن.

Each agent got the identical request in a clean folder; the only difference is the skill. Codex ran unattended at xhigh reasoning (gpt-6-astra, and gpt-6.1-sol on the showreel). Pick a prompt below — everyday motion graphics first. Every agent is compared with itself — never with another agent. Press play: the sound is part of the result.هر ایجنت همین درخواست را در یک پوشهٔ تمیز گرفت؛ تنها تفاوت، اسکیل است. Codex بدون نظارت و با ریزنینگ xhigh اجرا شد (gpt-6-astra، و روی شوریل gpt-6.1-sol). یکی از پرامپت‌های زیر را انتخاب کنید — موشن‌گرافی‌های روزمره اول. هر ایجنت فقط با خودش مقایسه می‌شود، نه با ایجنت دیگر. پلی بزنید: صدا هم بخشی از نتیجه است.

Not a recordingاین ضبط‌شده نیست

This is the real engine, running in your browser. Right now.این خودِ موتور واقعی است، همین الان در مرورگر شما.

A film is a pure function of time. Drag the playhead — every frame you see is computed on the spot by the same code an agent writes. Rewind, scrub, jump to any second. It is how the agent checks its own work, too.فیلم تابعی خالص از زمان است. هد پخش را بکشید — هر فریم همان لحظه با همان کدی محاسبه می‌شود که ایجنت می‌نویسد. عقب بروید، رد شوید، به هر ثانیه‌ای بپرید. ایجنت هم کار خودش را همین‌طور وارسی می‌کند.

// the entire contract of a film
function renderFrame(t) {
  S.render(t);  // t = 0.00 s
}
time0.00 s
frame @300
scene—

Space = play/pause · ← → = ±1 s · the stage pulses on every beat of the film's own cue timeline.اسپیس = پخش/توقف · ← → = ±۱ ثانیه · صحنه با هر ضرب جدول زمانی خودِ فیلم می‌تپد.

Showreel template preview
LIVE · WEBGL2
This browser can't run the engine's WebGL2 float pipeline — showing a still instead.این مرورگر پایپ‌لاین WebGL2 موتور را اجرا نمی‌کند — یک تصویر ثابت نمایش داده می‌شود.
Why the output changesچرا خروجی فرق می‌کند

Agents make slideshows. Three layers turn that into film.ایجنت‌ها اسلایدشو می‌سازند. سه لایه آن را به فیلم تبدیل می‌کند.

01 — ENGINE

Real motion, not slidesحرکت واقعی، نه اسلاید

A motion-graphics kit and a GPU toolkit written from scratch, deterministic down to the pixel.یک کیت موشن‌گرافی و جعبه‌ابزار GPU که از صفر نوشته شده و تا سطح پیکسل قطعی است.

  • Cut into one-idea shots, not slides: eleven scene types, seven themes, 50 self-drawing icons, counters and chartsبریده به شات‌های تک‌ایده‌ای، نه اسلاید: یازده نوع صحنه، هفت تم، ۵۰ آیکونِ خودکش، شمارنده و نمودار
  • One carried object and travelling transitions — whip, push, zoom, iris — instead of slide-to-slide wipesیک شیءِ حامل و گذارهای سفرکننده — ویپ، پوش، زوم، آیریس — به‌جای وایپ‌های اسلاید-به-اسلاید
  • Type that slams, slides and drops; beat-synced camera and hitsتایپی که می‌کوبد، می‌لغزد و می‌افتد؛ دوربین و ضربه‌های هم‌ضرب
  • Sound scored from the same spec: drums, bass, pads, keys, risers, impactsصدا از همان مشخصات ساخته می‌شود: درام، بیس، پد، کیبورد، رایزر، ایمپکت
  • GPU particles, shader backgrounds and filters when a film needs themذرات GPU، پس‌زمینهٔ شیدری و فیلتر، هر وقت فیلمی لازم داشته باشد
02 — KNOWLEDGE

It knows what is possible — and whenمی‌داند چه ممکن است — و کِی

An atlas of 256 recipes with runnable code, a gallery so the agent can see before it chooses, and a generator that returns three different directions for every brief.اطلسی از ۲۵۶ دستورکار با کد اجرایی، گالری تا ایجنت قبل از انتخاب ببیند، و مولدی که برای هر بریف سه جهت متفاوت می‌دهد.

  • Every recipe: use · how · avoid · pairs-withهر دستورکار: کاربرد · روش · پرهیز · ترکیب
  • 22 complete style systems — commit to one۲۲ سیستم سبک کامل — یکی را انتخاب کن و پایش بمان
03 — PROCESS

It must use it — and prove it didباید از آن استفاده کند — و ثابت کند

Studio mode: brief → look-dev → skeleton → three polish rounds. Then gates that measure, not hope.حالت استودیو: بریف ← سبک‌یابی ← اسکلت ← سه دور صیقل. بعد دروازه‌هایی که اندازه می‌گیرند، نه امید.

  • Anti-slideshow gates: motion metric, frame-fill floor, shots of 1–2 s instead of slides, continuity (a carried object, travelling transitions)دروازه‌های ضد-اسلایدشو: معیار حرکت، کف پُری قاب، شاتِ ۱–۲ ثانیه‌ای به‌جای اسلاید، پیوستگی (شیءِ حامل، گذارهای سفرکننده)
  • Craft gate: ≥ 6 techniques, ≥ 4 transitions, 3 written reviewsدروازهٔ craft: حداقل ۶ تکنیک، ۴ ترنزیشن، ۳ بازبینی نوشته‌شده
  • Determinism proof: same time ⇒ same pixelsاثبات قطعی‌بودن: زمان یکسان ⇒ پیکسل یکسان
MG kitCarryWhipIrisTypeCinesynthFXParts
atlas.mjs
qc.mjs check
From a sentence to an MP4از یک جمله تا MP4

One timeline drives picture and sound.یک جدول زمانی، تصویر و صدا را می‌راند.

Briefبریفconcept · style bible · shot list naming atlas techniquesمفهوم · کتاب سبک · لیست شات با نام تکنیک‌هاbrief.md
Directionsجهت‌هاthree different creative routes per briefسه مسیر خلاقانهٔ متفاوت برای هر بریفinspire.mjs
Frames as codeفریم به‌مثابه کدscenes + score from one cue timelineصحنه‌ها و موسیقی از یک جدول زمانیvideo.html · audio.mjs
Renderرندرparallel headless Chrome → ffmpeg, resumableChrome بی‌سر موازی ← ffmpeg، قابل‌ازسرگیریrender.mjs
Gatesدروازه‌هاenergy · fill · audio · craft · determinismانرژی · پُری · صدا · craft · قطعی‌بودنqc.mjs check
Three polish rounds loop between gates and scenes: motion & camera → craft & detail → sound & finishسه دور صیقل میان دروازه‌ها و صحنه‌ها می‌چرخد: حرکت و دوربین ← جزئیات ← صدا و پایان‌بندی
The atlasاطلس

256 techniques your agent can reach for.تکنیک در دسترس ایجنت شما.

Search it like your agent does. Each card is a real recipe from the repository — click one to copy the command that shows its full code. The reels below are rendered by the atlas itself.همان‌طور که ایجنت جستجو می‌کند جستجو کنید. هر کارت یک دستورکار واقعی از ریپوست — کلیک کنید تا دستور نمایش کد کامل کپی شود. ریل‌های زیر را خودِ اطلس رندر کرده است.

node atlas.mjs show <id>
Made with itساخته‌شده با آن

Real films. Real renders. Zero footage.فیلم‌های واقعی. رندر واقعی. صفر فوتیج.

Every film below was made by a coding agent from one prompt — the prompt is on the card. Hover to preview; click to watch with sound.هر فیلم زیر را یک ایجنت کدنویس از روی یک پرامپت ساخته است — پرامپت روی کارت است. موس را ببرید برای پیش‌نمایش؛ کلیک کنید برای تماشا با صدا.

فارسی و راست‌به‌چپ

فارسی هم درست و کامل کار می‌کند.

ض

شکل‌دهی درست، راست‌به‌چپ، کلمه‌به‌کلمهحروف چسبیده، ارقام فارسی، نام‌های لاتین سالم در خط راست‌به‌چپ. کلمه‌ها به‌صورت کلمه انیمیت می‌شوند — هرگز حرف‌به‌حرف.

ن

هفت فونت فارسیوزیرمتن، لاله‌زار، امیری، ریم‌کوفی، عارف رقعه و رکّاس — همه آفلاین و همراه اسکیل.

۱۲۳

ارقام و عددهاشمارش‌گرها، نمودارها و قیمت‌ها با ارقام فارسی و جداکنندهٔ هزارگان درست نمایش داده می‌شوند.

هرفریمرابهحرکتدرآور
Don't take our word for itحرف ما را باور نکنید

Each agent against itself. Measured.هر ایجنت در برابر خودش. اندازه‌گیری‌شده.

The repository ships a benchmark: it hands a coding agent the same task in a clean folder, with and without the skill, then measures every finished film. The numbers below come straight from the committed result files — no hand-typing.ریپو یک بنچمارک دارد: همان تسک را در پوشهٔ تمیز، با و بدون اسکیل، به ایجنت می‌دهد و هر فیلم را می‌سنجد. اعداد زیر مستقیم از فایل‌های نتیجهٔ ثبت‌شده می‌آیند — بدون تایپ دستی.

frame fill = share of each frame that is not background (higher = bolder pictures) · static = share of the film where almost nothing changes (lower = more motion) · LRA = loudness range, dynamics of the mix. These measure motion and sound hygiene, not beauty — that is what the films above are for. n = 1 per cell: one run is an anecdote. Full report & method · run it yourself — and tell us if it contradicts us.پُری قاب = سهمی از هر فریم که پس‌زمینه نیست (بیشتر = تصویر جسورتر) · ساکن = سهمی از فیلم که تقریباً هیچ چیز تغییر نمی‌کند (کمتر = حرکت بیشتر) · LRA = دامنهٔ بلندی صدا، پویایی میکس. این‌ها سلامت حرکت و صدا را می‌سنجند نه زیبایی — برای زیبایی فیلم‌های بالا هست. یک اجرا برای هر خانه فقط یک حکایت است. گزارش کامل و روش · خودتان اجرا کنید — و اگر خلافش درآمد بگویید.

Get itدریافت

One line. Then just ask.یک خط. بعد فقط بخواهید.

Needs Node ≥ 18, Chrome/Edge/Chromium and ffmpeg — the installer checks and tells you what is missing. No npm install.به Node ≥ 18، Chrome/Edge و ffmpeg نیاز دارد — نصب‌کننده بررسی می‌کند و می‌گوید چه کم است. npm install لازم نیست.

irm https://raw.githubusercontent.com/msmahdinejad/cinewright/main/install.ps1 | iex
curl -fsSL https://raw.githubusercontent.com/msmahdinejad/cinewright/main/install.sh | bash
/plugin marketplace add msmahdinejad/cinewright
/plugin install cinewright@cinewright
npx skills add msmahdinejad/cinewright
docker build -t cinewright https://github.com/msmahdinejad/cinewright.git
docker run --rm -v "$PWD/film:/work" cinewright scaffold /work --template showreel
docker run --rm -v "$PWD/film:/work" cinewright render
Restart your agentایجنت را ببندید و باز کنید — so it rescans skills.تا اسکیل‌ها را دوباره بخواند.
Open an empty folderیک پوشهٔ خالی باز کنید — one film per folder.هر فیلم یک پوشه.
Ask — and say “go all out”بخواهید — و بگویید «go all out» — that switches on studio mode.این حالت استودیو را روشن می‌کند.
Try askingاین‌ها را امتحان کنید

More in the prompt cookbook.بیشتر در نمونه‌پرامپت‌ها.