by JosssphZhou
Cinematic architecture animations that play in your terminal. Your coding agent fills one YAML file.
# Add to your Claude Code skills
git clone https://github.com/JosssphZhou/cinettySee how cinetty compares with popular alternatives.
cinetty is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by JosssphZhou. Cinematic architecture animations that play in your terminal. Your coding agent fills one YAML file. It has 51 GitHub stars.
cinetty's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/JosssphZhou/cinetty" and add it to your Claude Code skills directory (see the Installation section above). cinetty ships a SKILL.md manifest, so compatible agents can discover and load it automatically.
cinetty is primarily written in Python. It is open-source under JosssphZhou on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh cinetty against similar tools.
No comments yet. Be the first to share your thoughts!
Available after the catalog security scan passes.
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
Run every command in this file from the directory that holds this file: the cinetty repository root. cinetty turns one project.yaml into an architecture animation that plays in the current terminal. Each template is a finished animation with a fixed layout, palette and rhythm, plus named fields. You fill the fields with the user's system; you never edit the layout. Everything you need is in this file and the files it names: make templates, each template.yaml and its example. You do not need to read the code in cinetty/ or scripts/.
Run this once. It needs Python 3.12 or newer (or uv), Bash and Make on macOS or Linux.
make setup
make setup creates .venv and installs the light dependencies for the five text templates and checks for all examples. It does not install photo dependencies or download models. Everything stays inside this directory. If it stops, its last line names what is missing.
Both installation commands need network access. If the command fails because the network is blocked, ask the user to run the same command in their own terminal, then continue. Do not install the packages some other way, and do not use another project's Python environment.
make templates FORMAT=json
Each entry has id, kind (video), terminal (the size it needs), duration, purpose, a preview path and the path of a filled example. Pick the template whose purpose matches the shape of the user's system, not its subject. Decide by shape before you look at which facts you have, and keep that template; missing facts are handled in step 2, never by switching templates.
| Template | Fits a system that |
|---|---|
loop-landscape |
improves itself over rounds: propose, try candidates, keep what helped (wide) |
loop-portrait |
has a fast live loop on top and a slow learning loop below (tall) |
photo-loop |
reads real photos with a vision model while a background loop improves it |
pipeline |
plans work and has a router hand each step to one to three workers (agents, people or services), with an advisor that steps in |
screen-flow |
is an agent that operates a phone or another screen |
circuit-flow |
has about eight parts with signals running along wires (boards, services); the board always shows eight modules and sixteen wires |
If you chose photo-loop, install the photo dependencies and two local models before preparing or playing it:
make setup-photo
The shipped examples include source photos and detection results, but not the prepared outlines and animation images. Their first play also needs make setup-photo. Content checks with make check work with the light installation.
Read templates/<id>/template.yaml. Its fields section lists every field with its type, whether it is required, max_cells, item counts, number ranges and enum values. Its notes say what each part of the picture shows.
Read the example project named in example. It is a complete file that passes the check.
Read the user's repository. Write project.yaml where the user wants it:
template: <id>
template_version: 1
name: my-project
fields:
... # every field from template.yaml
pipeline, screen-flow and circuit-flow also take events:, a list of timed steps, or the path of a .jsonl file with one event per line. Every event has t (seconds from the start, never decreasing) and type. The other keys depend on the type and are listed under events in template.yaml. The example shows a complete timeline.
Rules for the content:
--).photo-loop) uses the user's own photos. If the user has none, use the two sample photos in assets/photos/ with the blur rectangles from the example, and say so in your reply. Preparing photos runs local models only.· or •). Use a colon, a comma or another field.placeholders such as {n}.project.yaml holds one language. For a second language, copy it and translate the text.project.yaml. Use only photos the user may publish; blur faces and number plates with the blur field.made with cinetty appears at the bottom. Keep it unless the user asks to remove it; then add credit: false at the top level.make check INPUT=path/to/project.yaml FORMAT=json
The command exits non-zero when something is wrong and lists every problem with a code, the field path and a hint. A length problem also has actual, limit and over, and its hint names the exact change, for example fix: shorten by 6 cells, to at most 34 cells. The check also plays the whole animation and reports text that does not fit on screen, with the time and round.
Do what each hint says, then run the check again. Repeat until it prints no problems. Never work around a limit: do not add spaces, split a word over two fields or edit template.yaml.
make play INPUT="path/to/project.yaml"
The animation plays in the current terminal, which must be at least as large as the template's terminal size from step 1 (for example 120 x 40 cells). Ctrl-C stops it; LOOP=1 repeats it. If the player asks for more cells, enlarge the terminal or reduce its font size. make play needs an interactive terminal. If your shell runs without one, it stops with a message; then ask the user to run the same command in their terminal. To see one moment as text, run make once INPUT="path/to/project.yaml" AT=12.
A video ends by itself after its duration and 6 more seconds on the last frame. The first play of photo-loop prepares the photos with local models, which can take several minutes; later plays reuse them.
photo-loop needs a terminal that supports the Kitty graphics protocol (Ghostty, Kitty, WezTerm). The other five templates use text cells only.screen-flow plays the board alone.To keep a video, record the terminal with the user's own screen recorder.
| Code | What to do |
|---|---|
too_long, too_long_on_screen |
Follow the hint: shorten the text at the path by the number of cells it names. When the hint names several fields, the total of the cuts must reach that number. |
too_many, too_few |
The template takes a fixed or limited number of items at that path. |
missing, empty, unknown_field |
Use exactly the fields in template.yaml; every required field needs a value. |
unknown_ref |
Use one of the names the hint lists; references must name an item that exists. |
out_of_range |
Use a value inside the range in the hint, or add the items it asks for. |
count_mismatch |
A count disagrees with the numbers it counts, for example fallbacks against confidences and the gate. Write the number the hint gives, or change the numbers or the gate. |
wrong_type |
Quote text that YAML would read as a number, a date or a mapping, for example 'roles: admin'. |
time_goes_back, bad_time |
Event times are seconds from the start and never decrease. |
unknown_event |
Use the event types listed under events in template.yaml. |
spaced_dot |
Replace the spaced dot with a colon or a comma, or move the second part into another field. |
unsure_width |
Replace the symbol the hint names with another one, for example a symbol from the template's example. Terminals disagree on its width. |
no_split |
Write the text as <before> → <after>, for example v1 → v3. The comparison's divider runs through the arrow. |
cannot_draw |
Two fields disagree, for example a count larger than its list. Fix the round named in the path. |
Layouts live in templates/<id>/scene.yaml and are drawn by the engine in cinetty/. Edit them only when the user asks for a different layout; docs/scene-reference.md describes the format. Content never needs a layout change.
Each preview illustrates the template in action. Click any card to inspect its template schema, scene configuration, and example project.
🎬 10-Second Demo Clip: docs/hero.mp4
cinetty is a template library for terminal animations, much like a curated pack of After Effects templates:
make check until all layout constraints pass, and plays the result. Guidelines for coding agents are documented in AGENTS.md.photo-loop).make setup installs only the three lightweight packages needed for text rendering (about 73 MB, completed in seconds).make setup-photo adds PyTorch and two vision models (about 2 GB).brew install --cask font-sarasa-gothic) for optimal CJK terminal cell alignment. Without it, macOS falls back to default system CJK fonts.# Clone the repository and navigate into it
git clone https://github.com/JosssphZhou/cinetty.git cinetty && cd cinetty
# Fast setup: install text-template dependencies into .venv (about 73 MB)
make setup
# Play an example animation
make play INPUT=examples/circuit-flow/project.en.yaml
For the photo template (photo-loop), download the vision models first:
# Add PyTorch and vision models (about 2 GB)
make setup-photo
# Prepare the photos and play the photo example
make play INPUT=examples/harness-photo/project.en.yaml
Ctrl-C at any time.LOOP=1 to repeat playback continuously (make play INPUT=... LOOP=1).make preview is an alias for make play.Cmd -).The repository root includes SKILL.md, enabling the entire clone to operate as a native skill for Claude Code and OpenAI Codex. Install it into your tool's skills directory and run make setup; the agent will automatically invoke cinetty whenever you ask for an architecture animation. AGENTS.md contains the equivalent workflow for other agents.
| Environment | All Projects (Global) | Single Project Only |
|---|---|---|
| Claude Code | ~/.claude/skills/cinetty |
.claude/skills/cinetty in project root |
| Codex | ~/.agents/skills/cinetty |
.agents/skills/cinetty in project root |
git clone https://github.com/JosssphZhou/cinetty.git ~/.claude/skills/cinetty && make -C ~/.claude/skills/cinetty setup
Directory structures verified on 2026-10-21 against Claude Code skills and Codex skills.
Run the following command to view the catalog of all available templates:
make templates
| Template | Concept | Terminal Grid | Duration |
|---|---|---|---|
loop-landscape |
An agent harness that improves itself over three rounds, scored by a decision core | 120 × 40 cells | ~35 s |
loop-portrait |
A fast live decision loop on top, a slow learning loop below that improves it | 66 × 48 cells | ~37 s |
photo-loop |
A vision model reads real photos with live box effects while a background loop improves it | 66 × 48 cells (Kitty images) | ~36 s (28 s with two rounds) |
pipeline |
A main agent plans, a router dispatches to one to three workers, an advisor steps in at three moments | 90 × 46 cells | 15 s per cycle |
screen-flow |
An agent operates a phone: OCR, a decision model, a pixel-only fallback, and two devices | 94 × 37 cells | 26 s |
circuit-flow |
Eight modules light up as signals run along the wires between them | 120 × 40 cells | 44 s |
Each template directory contains:
template.yaml: Field schema, definitions, types, and cell budget limits.scene.yaml: Layout definitions, coordinate bounds, and color slots.preview/: A still frame (still.png) and demo animation clip (clip.gif / clip.mp4).Every template includes at least one complete example under examples/. See examples/web-service/ for an adaptation of the circuit template to web microservices.
Run make templates and read template.yaml in your chosen template directory.
Copy an example project and replace the content with your own system definition:
template: circuit-flow
template_version: 1
name: my-service
credit: false # Optional: set to false to omit the "made with cinetty" footer
fields:
title: MY SERVICE
# ...
events:
- {t: 3.0, type: light, box: A, until: 7.0}
# ...
Validate that your text fits the allocated terminal cell budgets:
make check INPUT=my-service.yaml
Every issue identifies the exact field path and cell overflow:
too_long: fields.modules.B.name (38 > 34): shorten to at most 34 cells (a CJK character counts as 2)
Widths are measured in terminal cells (a Chinese / CJK character counts as two cells). The checker never auto-truncates text for you.
Run the player in your terminal:
make play INPUT=my-service.yaml
Note that screen-flow renders the terminal board alone.
Created by Joseph Zhou ([@openmys](https://x.com/openm