#124 by GitHub stars

lemomo-ai/lemo-opuscar

A toolbox of film styles made in code for Claude Code: 66 ready to use, and your own. Each style is a style prompt plus a demo film made entirely in code by Claude Opus 5.5, with no video model. By Lemomo. · 一套用代码做片的风格工具箱:66 种现成风格,也能做出你自己的

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

plugin/skills/lemo-opuscar/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

413a6bd6d78e → bebbbe1aa92a

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 413a6bd6d78e

No earlier version was observed for comparison.

Compare on GitHub

tools/directory/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

413a6bd6d78e → bebbbe1aa92a

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 413a6bd6d78e

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit bebbbe1aa92a3cb4bb6f83500e61b23a17d1aa00

git clone --filter=blob:none --no-checkout https://github.com/lemomo-ai/lemo-opuscar.git .hotskills/lemomo-ai-lemo-opuscar && git -C .hotskills/lemomo-ai-lemo-opuscar checkout --detach bebbbe1aa92a3cb4bb6f83500e61b23a17d1aa00 # Copy each selected skill directory from .hotskills/lemomo-ai-lemo-opuscar into .claude/skills/<skill-name>/
git clone --filter=blob:none --no-checkout https://github.com/lemomo-ai/lemo-opuscar.git .hotskills/lemomo-ai-lemo-opuscar && git -C .hotskills/lemomo-ai-lemo-opuscar checkout --detach bebbbe1aa92a3cb4bb6f83500e61b23a17d1aa00 # Copy each selected skill directory from .hotskills/lemomo-ai-lemo-opuscar into .agents/skills/<skill-name>/
12.9kGitHub stars
3.1kstars in 7 days
2skills in this repository
59commits in 30 days

Heat

8.5
  • Star growth, last 7 daysAhead of 100% of tracked repositories
  • Star growth, last 24 hoursAhead of 99% of tracked repositories
  • Rank movement, last 7 daysAhead of 96% of tracked repositories
  • Commits, last 30 daysAhead of 91% of tracked repositories
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekAhead of 0% of tracked repositories

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Sep 20, 2026Nov 6, 202612,884

Individual skills in this repository

How it works

lemo-opuscar

When your agent uses it

Direct and produce a short film made entirely in code, in one of the styles of the Lemo-Opuscar library (e.g. Impasto Oil Painting 油画厚涂, Watercolor Brush 水彩笔刷, Ukiyo-e 浮世绘, Satellite Briefing 卫星简报, Exploded Teardown 产品拆解). Use when the user asks for a video, film, short, promo, explainer or animation (视频、短片、动画、宣传片) in a named style, including explainers built from real material such as satellite imagery, laser scans, CAD files or archive scans (数据解说、科普、产品拆解), and new films cut from real archive footage and documents (剪辑与纪实, e.g. 用档案影像剪一支新闻片); when they want a film about their own topic and haven't chosen a style (help them choose); when they want to change a style into their own, make their own style from a blank page, or use a style they saved (改风格、从空白开始、我的风格); when they start the skill without saying what they want; or when they ask which film styles there are. Not for plain editing, trimming or converting the user's existing video files.

What it loads into context

Frontmatter

275 tokens

Always available to the agent

SKILL.md

882 tokens

When the skill is activated

Reference documents

0 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

    Scripts executed separately

    • ../../../core/render/still.mjs
    • scripts/setup.sh

    Files

    • ../../../.claude-plugin/marketplace.jsonasset414 bytes
    • ../../../core/render/still.mjsruns1,867 bytes
    • ../../.claude-plugin/plugin.jsonasset368 bytes
    • SKILL.mdcore3,452 bytes
    • SKILL.mdcore3,452 bytes
    • SKILL.mdcore3,452 bytes
    • SKILL.mdcore3,452 bytes
    • scripts/setup.shruns6,845 bytes
    Read SKILL.md
    
    # Lemo-Opuscar
    
    The styles, guides and tools live in the Lemo-Opuscar library (github.com/lemomo-ai/lemo-opuscar). This skill fetches it and hands you over to it.
    
    1. **Get the library.** Run `sh "<skill base directory>/scripts/setup.sh"`. It clones or updates the library (default `~/lemo-opuscar`; a clone the user is standing in is used as it is) and prints `LIB=<path>` on its last line.
    2. **Install the core tools early.** Start `sh "<skill base directory>/scripts/setup.sh" deps` right away, in the background if you can: it takes a few minutes the first time. Add `deps voice` or `deps music` later, only if the film needs them (`$LIB/TECHNIQUE.md` §1). Report missing system tools (Node, ffmpeg, Python) in your one round of questions; don't install system software yourself. Packages a style needs (its `STYLE.md` lists them) you install yourself, into the project folder.
    3. **Follow the library.** Read `$LIB/AGENTS.md` and do what it says, starting with **Start** (the user's own styles in `~/lemo-my-styles/`; when they started the skill without writing anything, the language question first, then the ways in): finding the style or making their own, the one round of questions, the treatment, production and delivery.
    
    What changes in skill mode:
    
    | | |
    |---|---|
    | Project folder | `<name>/` in the folder the user started from (lowercase letters, digits, hyphens; avoid `#` and `?` in the path). Wherever the guides say `films/<name>/`, read this folder |
    | Running tools | from `$LIB`, with the project's absolute path: `cd "$LIB" && node core/render/still.mjs "<project>" 1.5 3` |
    View the complete source on GitHub

    Skills included

    • lemo-opuscar
    • lemo-opuscar

    Repository facts

    License
    MIT
    Created
    Sep 26, 2026
    Last pushed
    Oct 31, 2026
    Forks
    1,472
    Open issues
    5
    Project activity
    Active

    Rank over the last 12 weeks

    Now #124 · best #124 · up 440 in 30 days

    1. #148 on Oct 31
    2. #142 on Nov 1
    3. #135 on Nov 2
    4. #131 on Nov 3
    5. #125 from Nov 4 to Nov 5
    6. #124 since Nov 6
    33 earlier periods
    1. #920 on Sep 20
    2. #874 on Sep 26
    3. #883 on Sep 27
    4. #918 on Sep 28
    5. #928 on Sep 29
    6. #853 on Sep 30
    7. #757 on Oct 1
    8. #743 on Oct 2
    9. #692 on Oct 3
    10. #682 on Oct 4
    11. #602 on Oct 5
    12. #582 on Oct 6
    13. #564 on Oct 7
    14. #570 on Oct 8
    15. #526 on Oct 9
    16. #490 on Oct 10
    17. #471 on Oct 11
    18. #462 on Oct 12
    19. #443 on Oct 13
    20. #431 on Oct 14
    21. #412 on Oct 15
    22. #390 on Oct 16
    23. #365 on Oct 17
    24. #335 on Oct 18
    25. #287 on Oct 19
    26. #267 on Oct 20
    27. #257 on Oct 21
    28. #235 on Oct 22
    29. #220 on Oct 23
    30. #203 on Oct 24
    31. #204 on Oct 25
    32. #157 on Oct 28
    33. #153 from Oct 29 to Oct 30

    Before you install

    Network or broad shell

    Automated signals, not a guarantee

    Checked Nov 5, 2026

    Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

    Show 13 notes
    • plugin/skills/lemo-opuscar/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
    • plugin/skills/lemo-opuscar/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
    • plugin/skills/lemo-opuscar/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
    • tools/directory/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
    • tools/directory/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
    • tools/directory/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
    • tools/directory/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
    • tools/fetch.sh:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
    • tools/fetch.sh:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
    • tools/fetch.sh:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
    • tools/fetch.sh:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
    • tools/fetch.sh:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
    • tools/fetch.sh:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
    Show all 51 signals by file

    .claude-plugin/marketplace.json

    • Network accessline 3
      "owner": {     "name": "Lemomo",     "url": "https://github.com/lemomo-ai"
    • Network accessline 4
      "name": "Lemomo",     "url": "https://github.com/lemomo-ai"   },
    • Network accessline 5
      "url": "https://github.com/lemomo-ai"

    core/render/still.mjs

    • Executable scriptline 1
      Executable file
    • Executable scriptline 1
      Executable file

    plugin/.claude-plugin/plugin.json

    • Network accessline 2
      "name": "lemo-opuscar",   "description": "Make a film in one of the library's code-rendered styles: your agent directs, draws, scores and mixes it.",   "author": { "name": "Lemomo", "url": "https://github.com/lemomo-ai" },
    • Network accessline 3
      "description": "Make a film in one of the library's code-rendered styles: your agent directs, draws, scores and mixes it.",   "author": { "name": "Lemomo", "url": "https://github.com/lemomo-ai" },   "homepage": "https://lemomo-ai.github.io/
    • Network accessline 4
      "author": { "name": "Lemomo", "url": "https://github.com/lemomo-ai" },
    • Network accessline 5
      "homepage": "https://lemomo-ai.github.io/lemo-opuscar/",
    • Network accessline 6
      "repository": "https://github.com/lemomo-ai/lemo-opuscar",

    plugin/skills/lemo-opuscar/scripts/setup.sh

    • Executable scriptline 1
      #!/bin/sh
    • Network accessline 10
      set -e REPO=${LEMO_OPUSCAR_REPO:-https://github.com/lemomo-ai/lemo-opuscar.git}
    • Network accessline 11
      REPO=${LEMO_OPUSCAR_REPO:-https://github.com/lemomo-ai/lemo-opuscar.git}
    • Network accessline 31
      [ "$(git -C "$LIB" remote get-url origin 2>/dev/null)" = "$REPO" ] || git -C "$LIB" remote set-url origin "$REPO"   if err=$(git -C "$LIB" fetch --quiet --depth 1 origin main 2>&1 && git -C "$LIB" reset --quiet --hard FETCH_HEAD 2>&1); then
    • Network accessline 36
      command -v git >/dev/null || { echo "✗ git is needed to download the library"; exit 1; }   echo "↓ downloading the style library into $LIB"   git clone --quiet --depth 1 --filter=blob:none --sparse --branch main "$REPO" "$LIB" || { rm -rf "
    • Network accessline 37
      echo "↓ downloading the style library into $LIB"   git clone --quiet --depth 1 --filter=blob:none --sparse --branch main "$REPO" "$LIB" || { rm -rf "$LIB"; echo "✗ download failed (offline?)"; exit 1; }   apply_sparse
    • Dangerous shell operationline 38
      git clone --quiet --depth 1 --filter=blob:none --sparse --branch main "$REPO" "$LIB" || { rm -rf "$LIB"; echo "✗ download failed (offline?)"; exit 1; }
    • Network accessline 38
      git clone --quiet --depth 1 --filter=blob:none --sparse --branch main "$REPO" "$LIB" || { rm -rf "$LIB"; echo "✗ download failed (offline?)"; exit 1; }
    • Dangerous shell operationline 73
      [ ! -e .venv ] || .venv/bin/python -c pass 2>/dev/null || { echo "! $LIB/.venv is broken; making it again"; rm -rf .venv; }

    tools/directory/README.md

    • Network accessline 8
      This is the plugin directory edition (version {VERSION}): the guides, the {STYLES} style prompts and the rendering tools, without the demo films. **The films, the gallery and the newest styles live in the main repository: [github.com/lemomo
    • Network accessline 34
      - **Claude Code on your own computer.** The plugin renders video with local tools, so it needs a shell: it does not run in the claude.ai chat. - **Node 20+, ffmpeg and Python 3.11+** (or [uv](https://docs.astral.sh/uv/)). You install these;
    • Network accessline 35
      - **Node 20+, ffmpeg and Python 3.11+** (or [uv](https://docs.astral.sh/uv/)). You install these; Claude tells you if one is missing.
    • Network accessline 47
      | Python packages: numpy, scipy, soundfile, soxr, pillow | PyPI | first film | ~150 MB | | Voice tier: kokoro-onnx, edge-tts, faster-whisper | PyPI | only for a film with narration | ~200 MB | | Kokoro voice model (offline TTS) | this proje
    • Network accessline 48
      | Voice tier: kokoro-onnx, edge-tts, faster-whisper | PyPI | only for a film with narration | ~200 MB | | Kokoro voice model (offline TTS) | this project's [GitHub Releases](https://github.com/lemomo-ai/lemo-opuscar/releases/tag/assets) | o
    • Network accessline 49
      | Kokoro voice model (offline TTS) | this project's [GitHub Releases](https://github.com/lemomo-ai/lemo-opuscar/releases/tag/assets) | only for a film with narration | 354 MB |
    • Network accessline 69
      Made by LemoLab · by Lemomo ([@lemomo_ai](https://x.com/lemomo_ai)). Problems or ideas: [open an issue](https://github.com/lemomo-ai/lemo-opuscar/issues) in the main repository.

    tools/directory/SECURITY.md

    • Network accessline 5
      Please don't open a public issue for a security problem. Report it privately: on the main repository's **Security** page, click **Report a vulnerability** ([direct link](https://github.com/lemomo-ai/lemo-opuscar/security/advisories/new)). I
    • Network accessline 21
      发现安全问题,请不要开公开 issue,到主仓库的 **Security** 页点 **Report a vulnerability** 私下提交([直达链接](https://github.com/lemomo-ai/lemo-opuscar/security/advisories/new)),写上插件版本、你让它做了什么、怎么复现。片子不好看、功能 bug 照常开 issue。

    tools/directory/SKILL.md

    • Network accessline 20
      | Library files in pages | absolute URLs: `/core/lib.js`, `/node_modules/three/…` (the project is served at `/@film/`) | | Library files in scripts and `build.sh` | `$LIB/…`, with `LIB=<path>` at the top of `build.sh`; never `../..` | | Dem
    • Network accessline 21
      | Library files in scripts and `build.sh` | `$LIB/…`, with `LIB=<path>` at the top of `build.sh`; never `../..` | | Demo films | not in this edition: no `demo/` source and no `poster.jpg`. Each style's `DEMO.md` (how its demo was made) is t
    • Network accessline 22
      | Demo films | not in this edition: no `demo/` source and no `poster.jpg`. Each style's `DEMO.md` (how its demo was made) is there; read it only after your `TREATMENT.md` is written, as the guides say. An Edit & Documentary style needs its 

    tools/directory/library-setup.sh

    • Executable scriptline 1
      #!/bin/sh
    • Dangerous shell operationline 39
      [ ! -e .venv ] || .venv/bin/python -c pass 2>/dev/null || { echo "! $LIB/.venv is broken; making it again"; rm -rf .venv; }

    tools/directory/setup.sh

    • Executable scriptline 1
      #!/bin/sh

    tools/fetch.sh

    • Executable scriptline 1
      #!/bin/sh
    • Executable scriptline 1
      Executable file; content unavailable
    • Executable scriptline 1
      Executable file; content unavailable
    • Executable scriptline 1
      Executable file; content unavailable
    • Executable scriptline 1
      Executable file; content unavailable
    • Executable scriptline 1
      Executable file; content unavailable
    • Executable scriptline 1
      Executable file; content unavailable
    • Network accessline 50
      if shutil.which('curl'):                                          # resume, retries and a progress bar         r = subprocess.run(['curl', '-L', '--fail', '--retry', '3', '--retry-delay', '2', '--connect-timeout', '20', '-C', '-', '-#', '-o
    • Network accessline 51
      r = subprocess.run(['curl', '-L', '--fail', '--retry', '3', '--retry-delay', '2', '--connect-timeout', '20', '-C', '-', '-#', '-o', tmp, url])         if r.returncode: sys.exit(f'✗ download failed (curl exit {r.returncode}); check the netwo
    • Network accessline 52
      if r.returncode: sys.exit(f'✗ download failed (curl exit {r.returncode}); check the network and run the same command again to resume')
    • Network accessline 55
      try:         while have() < size:             req = urllib.request.Request(url, headers={'Range': f'bytes={have()}-'} if have() else {})
    • Network accessline 56
      while have() < size:             req = urllib.request.Request(url, headers={'Range': f'bytes={have()}-'} if have() else {})             try: r = urllib.request.urlopen(req, timeout=60)
    • Network accessline 57
      req = urllib.request.Request(url, headers={'Range': f'bytes={have()}-'} if have() else {})
    • Network accessline 58
      try: r = urllib.request.urlopen(req, timeout=60)
    • Network accessline 94
      if free < need:         sys.exit(f'✗ not enough disk space: {p["file"]} is {size / 1e9:.2f} GB and needs about {need / 1e9:.1f} GB free here while it downloads and unpacks; {free / 1e9:.1f} GB is available')     download(f'https://github.co
    • Network accessline 95
      sys.exit(f'✗ not enough disk space: {p["file"]} is {size / 1e9:.2f} GB and needs about {need / 1e9:.1f} GB free here while it downloads and unpacks; {free / 1e9:.1f} GB is available')     download(f'https://github.com/{man["repo"]}/releases
    • Network accessline 96
      download(f'https://github.com/{man["repo"]}/releases/download/{man["tag"]}/{p["file"]}', tmp, size)

    How the signals fit together

    Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

    Some files could not be read; the facts below still hold.

    Signal confidence: 43 facts

    Works with

    Agent compatibility, from the files in this repository
    AgentStatusEvidenceInstall to
    Claude CodeNativeManifest .claude-plugin/marketplace.json.claude/skills/<skill-name>/
    CodexNativeManifest AGENTS.md.agents/skills/<skill-name>/
    CursorCompatibleStandard SKILL.md plugin/skills/lemo-opuscar/SKILL.md.cursor/skills/<skill-name>/
    Gemini CLICompatibleStandard SKILL.md plugin/skills/lemo-opuscar/SKILL.md.gemini/skills/<skill-name>/
    GitHub CopilotCompatibleStandard SKILL.md plugin/skills/lemo-opuscar/SKILL.md.github/skills/<skill-name>/
    OpenCodeCompatibleStandard SKILL.md plugin/skills/lemo-opuscar/SKILL.md.opencode/skills/<skill-name>/
    • Native The repository ships a manifest, folder or frontmatter field for this agent.
    • Compatible A standard SKILL.md that this agent can read.
    • Unknown No evidence either way.

    Derived automatically from paths, manifests and frontmatter. Not tested on each agent.

    Add this badge to your README

    It updates every night and links to this page.

    lemomo-ai/lemo-opuscar: #124 on hotskills, 12.9k stars

    [![lemomo-ai/lemo-opuscar on hotskills](https://hotskills.dev/badge/lemomo-ai-lemo-opuscar.svg)](https://hotskills.dev/skill/lemomo-ai-lemo-opuscar/)