Agent skill

Riso Score

by sevenevesai in sevenevesai/riso-windowseat

Scores a riso film or reworks its score. An agent skill from sevenevesai/riso-windowseat.

MITAuto-check passedMedia & Creative

Install Riso Score

skills CLI
$ npx skills add sevenevesai/riso-windowseat --skill riso-score -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install sevenevesai/riso-windowseat riso-score --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/sevenevesai/riso-windowseat.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/riso-score .claude/skills/riso-score && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
riso-score
GitHub stars
282
Token cost
~1.7k tokens
SKILL.md length
897 words
Files
2
Skills in repo
3
Repo updated
First seen
Licence
MIT

At a glance

Scores a riso film or reworks its score. An agent skill from sevenevesai/riso-windowseat.

  • Works in 3 steps: Read the film's FILM.md for sound… → Spot the film: list every boundary and… → Find the film's event data (cue arrays,…
  • Score this film
  • SKILL.md covers Before writing a note, Stages, Gates and Delivery, plus 1 more section
  • Calls node and ffmpeg

What it does

Riso Score is an agent skill from sevenevesai/riso-windowseat. Scores a riso film or reworks its score. Designs the cue list from the film's FILM.md events, builds a deterministic renderAudio() from the sound kit in studies/sound.html, iterates with tools/audio.mjs, gates determinism, length, loudness and sync, and records measured results in FILM.md. Use for "score this film", "add sound/music", "the climax is too loud", "fix the handoff at 16 s", "check the mix", sound effects, foley or a soundtrack on a riso film. Not for drawing or motion (riso-film) or changing tools/.

Its SKILL.md is about 1.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `examples.md`).

It sits in Media & Creative, covering Music and audio generation and Generative and creative coding. The repository describes itself as: Procedural risograph films in single HTML files (Window Seat, Roost and more), with the Claude Code skills, docs and tools to make your own. The licence is MIT.

When your agent uses it

  • Score this film
  • Add sound/music
  • The climax is too loud
  • Fix the handoff at 16 s

Example prompts

  • “score this film”
  • “add sound/music”
  • “the climax is too loud”
  • “/riso-score”

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Read the film's FILM.md for sound direction and timed events, and docs/sound.md for the
  2. Spot the film: list every boundary and visible event with its time and decide whether the
  3. Find the film's event data (cue arrays, reveal starts, contact times). The score reads those,

What it can do on your machine

Read from SKILL.md and the folder at commit 1275fda. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • node
    • ffmpeg

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Riso Score loads about 1.7k tokens when it runs. Until then it costs about 132 tokens; SKILL.md has 897 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~132
When it runs · the whole SKILL.md, loaded when a task matches
~1.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from sevenevesai/riso-windowseat at commit 1275fda, republished under its MIT licence (© sevenevesai). 897 words, ~1,731 tokens.

Download SKILL.mdSave it as .claude/skills/riso-score/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
riso-score
description
Scores a riso film or reworks its score. Designs the cue list from the film's FILM.md events, builds a deterministic renderAudio() from the sound kit in studies/sound.html, iterates with tools/audio.mjs, gates determinism, length, loudness and sync, and records measured results in FILM.md. Use for "score this film", "add sound/music", "the climax is too loud", "fix the handoff at 16 s", "check the mix", sound effects, foley or a soundtrack on a riso film. Not for drawing or motion (riso-film) or changing tools/.

Riso score

Produce the renderAudio() half of films/<name>/index.html: a deterministic stereo score exactly the film's duration at 48 kHz, scaled once to −16 LUFS under a −1 dBTP ceiling, with a measured sheet and a full muxed MP4 reviewed with the picture. Commands run in tools/. examples.md shows eight finished scores: sampled piano (films/window-seat), recorded strings timed from the picture (films/roost), found CC0 instruments (films/held), sampled handpan with edge-timed swells (films/nonpareil), a CC0 trio sharing the picture's clock (films/eclosion), procedural (films/lumen), procedural from the kit alone with a note per drawn mark (films/passenger) and two switchable candidates (films/emergence).

Before writing a note

  1. Read the film's FILM.md for sound direction and timed events, and docs/sound.md for the kit, sync, transitions, mix and how to read the sheet.
  2. Spot the film: list every boundary and visible event with its time and decide whether the music notices it or rides through. Pick three to five true sync points. Choose tempo, mode and one motif from the subject; the project mandates no BPM, key or chord.
  3. Find the film's event data (cue arrays, reveal starts, contact times). The score reads those, never copied numbers, so retiming the picture retimes the sound.

Stages

Each stage ends with audio.mjs output (seconds to run), not with reasoning about code.

  1. Kit and skeleton. Copy the ── sound kit ── block from studies/sound.html after the film's motion kit; its header lists the names it declares, so rename collisions. Write buildScore(): Score({ duration: DUR, key: '<name>' }), air across the film, return s.render(). Cache the promise so the player and renderAudio() share one render; renderAudio() returns wavBase64(buffer). Publish sync points as window.__riso.marks. node audio.mjs ../films/<name>/index.html --twice must show matching length and two equal renders before anything else.
  2. Bed and transitions. Place sustained layers (pad, organ, wind, rain, air) passage to passage. Bridge each cut on purpose: pre-lap, post-lap, pedal, pivot or texture handoff. Run with --marks on the boundaries; a 200 ms hole 10 dB under its surroundings at a cut is the fade-to-silence failure. Fix it before adding foreground.
  3. Foreground and sync. Put hits on the true sync points so swells peak on the visible arrival; let the rest breathe. --around <t> --window 1 per point: onset within ~40 ms after the mark, never more than 20 ms before. Pick material timbres (contact, paper, drop) from what is on screen.
  4. Climax and ending. Prepare the climax with a riser, a low body and staggered accents, not the same voices louder. Decide button, tail or hard out. Check the lift into the climax in the short-term curve.
  5. Mix. Balance voices, pan by screen x, keep bass centred; render sets the level. If the true-peak ceiling pulled the mix under target, fix the peak, not the target. Nothing above 4 kHz in the band percentages means no air.

Gates

After every stage, and once more in Firefox before delivery:

node audio.mjs ../films/<name>/index.html --twice --marks <sync points>
node audio.mjs ../films/<name>/index.html --engine firefox --ffmpeg

FAIL breaks the contract: no renderAudio(), wrong length, clipped samples, or two renders differing beyond 16-bit jitter (Chromium jitters a step or two; Firefox is byte-identical). WARN is a judgement to resolve or record: level more than 1 LU off −16 LUFS, true peak above −1 dBTP, a rate other than 48 kHz, an opening or ending above −40 dBFS in its first or last 10 ms. Discontinuities are bugs at note starts and expected at designed ticks. Then read out/<name>/_audio.png: waveform lanes, log spectrogram, loudness against the target band with valleys marked, and the per-mark table.

Show full SKILL.md (317 more words)Show less

Delivery

node render.mjs ../films/<name>/index.html --fps 30 --size 1080 --engine firefox

Only the full export carries the score; render.mjs prints the muxed loudness and true peak. When only the score changed, remux instead of re-rendering every frame: take the Firefox WAV that audio.mjs --engine firefox writes to out/<name>.wav, then

ffmpeg -i ../out/<name>.mp4 -i ../out/<name>.wav -map 0:v -map 1:a -c:v copy -c:a aac -b:a 192k -shortest -movflags +faststart ../out/<name>-rescored.mp4
ffmpeg -i ../out/<name>-rescored.mp4 -af ebur128=peak=true -f null -

and read the true peak from the second command, as render.mjs would. Listen through quiet passages, every handoff and the climax with the picture. If you cannot listen, say so, leave perceptual quality unclaimed and name three to five times for the user to hear: passing meters did not stop a modal piano sounding like MIDI to a human listener.

Record under ## Score in FILM.md: direction, tempo/grid and mode, each sync event and what sounds on it, deliberate silences, the measured line (I −16.0 LUFS, LRA 3.7 LU, TP −2.0 dBTP, clipped 0, firefox byte-identical), the marks table, and what was heard or that nothing was. Recorded samples need a license that permits redistribution, pinned sources and attribution beside the film (see films/window-seat/AUDIO-SOURCES.md, CC BY, and films/roost/AUDIO-SOURCES.md, CC0). Libraries disagree on octave numbering (VSCO 2's cello, bass, clarinet and horn and VCSL's vibraphone name middle C C3; VSCO 2's violin C4), so check each root against the recorded partials. A soft low note can lack its fundamental (VSCO horn C1: 0.00 at f, 0.71 at 4f), and a partial scorer then takes the second harmonic: pin such roots from the harmonic spacing and measure only tuning (films/eclosion/build-sample-bank.py).

Player audio and rework

The export never plays in the page. For the in-page player, wire the cached buffer to a live AudioContext that starts from the scrubbed time, stops on pause and seek, and starts muted; examples.md names the functions that do this in each film.

When reworking, read FILM.md first, edit the authoritative index.html, and measure before changing anything so the revision has a baseline. Fix continuity before adding notes. Local fixes preserve approved pacing, sync points and dynamics.

© sevenevesai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file in .claude/skills/riso-score of sevenevesai/riso-windowseat.

  • SKILL.md
  • examples.md

Open the folder on GitHubat commit 1275fda

Compare with similar skills

Riso Score next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Riso Score compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Riso Score this skillsevenevesai/riso-windowseat282—~1.7kAutomated safety check: PassMIT
Music VideoNoizAI/skills526—~1.5kAutomated safety check: PassNone
Algorithmic Art with p5.jsanthropics/skills180k38 repos~4.9kAutomated safety check: PassApache-2.0
Canvas Designanthropics/skills180k52 repos~3kAutomated safety check: PassApache-2.0
HyperFrames Media Useheygen-com/hyperframes60k—~2.4kAutomated safety check: PassApache-2.0
Photo Abstract EditorialZzzLc0405/photo-abstract-editorial5.9k—~815Automated safety check: PassProprietary

Similar skills

  • Music Video

    NoizAI/skills

    Build a music video from an existing song and lyrics, either as p5.js/p5.brush animation or by assembling local images and clips.

    526 GitHub stars~1.5k tokensUpdated 13 days ago
    Media & CreativeAuto-check passed
  • Official

    Creates original generative art in two steps: a written algorithmic philosophy, then a p5.js sketch with seeded randomness and an interactive viewer for exploring parameters.

    180k GitHub starsUsed in 38 repos~4.9k tokens
    Media & CreativeAuto-check passed
  • Canvas Design

    anthropics/skills

    Official

    Creates original posters and static art as PNG or PDF by first writing a short design philosophy, then expressing it visually on a canvas.

    180k GitHub starsUsed in 52 repos~3k tokens
    Media & CreativeAuto-check passed
  • HyperFrames Media Use

    heygen-com/hyperframes

    Finds, generates and edits media for HyperFrames video projects: music, sound effects, images, icons, logos, voiceovers, captions and color grades.

    60k GitHub stars~2.4k tokensUpdated today
    Media & CreativeAuto-check passed
  • Photo Abstract Editorial

    ZzzLc0405/photo-abstract-editorial

    Creates one vertical editorial image from an uploaded photo, keeping the photo untouched and adding an abstract panel and short English title derived from it.

    5.9k GitHub stars~815 tokensUpdated 1 mo ago
    Media & CreativeAuto-check passed
  • Mono Color

    yanliudesign/mono-color-skill

    Generate original one-ink or controlled two-ink editorial images from any theme, sentence, article idea, object, or reference photo.

    3.4k GitHub stars~8.5k tokensUpdated 1 mo ago
    Media & CreativeAuto-check passed

More from sevenevesai/riso-windowseat

  • Riso Still

    sevenevesai/riso-windowseat

    Create or improve procedural risograph still art, illustrations, posters, print series and images in this repo.

    282 GitHub stars~1.4k tokensUpdated 16 days ago
    Auto-check passed
  • Riso Film

    sevenevesai/riso-windowseat

    Design, build or improve procedural risograph animations and videos in this repo, including narrative films, abstract shorts, motion effects and visual inspection.

    282 GitHub stars~1.9k tokensUpdated 16 days ago
    Auto-check passed

Questions about Riso Score

What does Riso Score do?

Scores a riso film or reworks its score. An agent skill from sevenevesai/riso-windowseat. Riso Score is an agent skill from sevenevesai/riso-windowseat. Scores a riso film or reworks its score.

When should I use Riso Score?

Riso Score fits situations like: score this film; add sound/music; the climax is too loud; fix the handoff at 16 s.

How do I install Riso Score in Claude Code?

Run `npx skills add sevenevesai/riso-windowseat --skill riso-score -a claude-code`. Or copy the skill folder (.claude/skills/riso-score in sevenevesai/riso-windowseat) into .claude/skills/riso-score in your project. Claude Code loads it when a task matches its description.

How do I install Riso Score in Codex?

Run `npx skills add sevenevesai/riso-windowseat --skill riso-score -a codex`. Or copy the skill folder (.claude/skills/riso-score in sevenevesai/riso-windowseat) into .agents/skills/riso-score in your project. Codex loads it when a task matches its description.

Can I use Riso Score in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add sevenevesai/riso-windowseat --skill riso-score -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/riso-score, .gemini/skills/riso-score, .github/skills/riso-score and .opencode/skills/riso-score in your project.

What does Riso Score need to run?

Going by SKILL.md and its folder, Riso Score needs the command-line tools its instructions call (node and ffmpeg).

Does Riso Score access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Riso Score safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Riso Score use?

Riso Score is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Riso Score use?

About 1.7k tokens (SKILL.md is roughly 6.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Riso Score?

Skills that share tags, products or a category with Riso Score: Music Video (NoizAI/skills, 526 stars), Algorithmic Art with p5.js (anthropics/skills, 180k stars), Canvas Design (anthropics/skills, 180k stars) and HyperFrames Media Use (heygen-com/hyperframes, 60k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Riso Score?

sevenevesai (a GitHub user) maintains it in sevenevesai/riso-windowseat, which has 282 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on September 25, 2026.

Source: sevenevesai/riso-windowseat on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.