scenario-labs/skills
Get production-ready images, video, audio, and 3D from any AI agent: skills that pick the right model, price before spending, and keep characters and brands consistent through the Scenario MCP, plus expert teams that drive Blender, Maya, ZBrush, Unreal, and Unity.
The score is jscpd's own --health model: markup, data and text left out, tests kept. The numbers below are the trending scan's.
Most complex files
- skills/dcc/maya/scenario-maya-groom/scripts/mx_groom.py1546 cx
- skills/dcc/maya/scenario-maya-lighting-rendering/scripts/mx_light.py1291 cx
- skills/dcc/maya/scenario-maya-retopology-uv/scripts/mx_retopology_uv.py1168 cx
- skills/game-engines/unreal/scenario-unreal-animation/scripts/ue_anim.py1050 cx
- skills/dcc/maya/scenario-maya-deformation/scripts/mx_skin.py985 cx
- skills/dcc/maya/scenario-maya-animation/scripts/mx_anim.py973 cx
- skills/dcc/maya/scenario-maya-rigging/scripts/mx_rig.py943 cx
- skills/dcc/blender/scenario-blender-retopology/scripts/bx_retopo.py926 cx
- skills/game-engines/unreal/scenario-unreal-lighting-rendering/scripts/ue_light.py926 cx
- skills/game-engines/unreal/scenario-unreal-materials/scripts/ue_materials.py911 cx
Dead code 42.99% unused · 80 findings
- skills/dcc/maya/scenario-maya-retopology-uv/scripts/mx_retopology_uv.pyunused-file
- skills/game-engines/unreal/scenario-unreal-materials/scripts/ue_materials.pyunused-file
- skills/dcc/blender/scenario-blender-rigging/scripts/bx_rig.pyunused-file
- skills/game-engines/unreal/scenario-unreal-gameplay/scripts/ue_gameplay.pyunused-file
- skills/dcc/blender/scenario-blender-retopology/scripts/bx_retopo.pyunused-file
- skills/game-engines/unreal/scenario-unreal-vfx/scripts/ue_vfx.pyunused-file
- skills/dcc/maya/scenario-maya-rigging/scripts/mx_rig.pyunused-file
- skills/dcc/maya/scenario-maya-animation/scripts/mx_anim.pyunused-file
- skills/dcc/blender/scenario-blender-uv-baking/scripts/bx_uvbake.pyunused-file
- skills/dcc/zbrush/scenario-zbrush-character-creature/scripts/zb_character.pyunused-file
The code number leaves out tests, fixtures, docs, examples, data files, styles, translations and vendored code, and 1 generated file: skills/game-engines/godot/scenario-godot-multiplayer/scripts/agentkit/multiplayer/net_audit.gd.
Largest clones in the code
- 110 lines in 2 placespython1,103 tokensskills/game-engines/godot/scenario-godot-expert/scripts/gd_review.py:23–132skills/game-engines/roblox/scenario-roblox-expert/scripts/rbx_review.py:21–130
23import math 24import shutil 25import struct 26import subprocess 27import zlib 28from pathlib import Path 29 30try: 31 from PIL import Image, ImageDraw # type: ignore 32 HAVE_PIL = TrueFirst 10 of 110 lines.
- 99 lines in 2 placespython1,027 tokensskills/scenario-blender-2d-animation/scripts/reframe_stills.py:1–99skills/scenario-side-view-game-kit/scripts/reframe_stills.py:1–99
1#!/usr/bin/env python3 2"""Split a two-pose still into two square first frames with headroom. 3 4The still holds one character twice on a flat magenta (#FF00FF) field, in 5side profile facing right: the rest pose on the left half, the jump (hero) or 6attack wind-up (enemy) on the right half. Each pose is cut out, scaled so the 7figure is a fixed share of the frame height, and pasted centered on a fresh 8magenta square with its feet on a fixed baseline. The empty space above the 9head leaves room for a raised weapon or a jump in the animated clip. 10First 10 of 99 lines.
- 54 lines in 2 placespython769 tokensskills/game-engines/godot/scenario-godot-expert/scripts/gd_review.py:169–222skills/game-engines/roblox/scenario-roblox-expert/scripts/rbx_review.py:167–220
169 "surround_luma": round(sm, 4), "centre_contrast": round(abs(cm - sm), 4), "unique_colors": uniq, 170 "alpha_mean": round(alpha, 4), "histogram": [round(c / n, 4) for c in hist], "flags": flags, 171 "ok": not any(f in flags for f in ("all_black", "all_white", "uniform", "transparent"))} 172 173 174def compare(a, b, sample: int = 256) -> dict: 175 """Mean absolute difference (0..1) and changed-pixel fraction (> 0.1) between two images on a grid. 176 177 Use it to prove an edit changed the render (or that a refactor did not).""" 178 _, _, gwa, gha, pa = _samples(a, sample)First 10 of 54 lines.
7 more
- 33 lines in 2 placespython506 tokens
- 52 lines in 2 placespython418 tokens
- 20 lines in 2 placespython282 tokens
- 8 lines in 6 placespython55 tokensskills/scenario-kinetic-music-video/scripts/audio_analysis.py:16–23skills/scenario-kinetic-music-video/scripts/av_sync_check.py:8–15skills/scenario-kinetic-music-video/scripts/beatwarp.py:7–14skills/scenario-kinetic-music-video/scripts/plot_lyrics.py:8–15skills/scenario-kinetic-music-video/scripts/prep_video.py:20–27and 1 more
- 13 lines in 2 placespython271 tokens
- 27 lines in 2 placespython252 tokens
- 28 lines in 2 placespython249 tokens
Largest clones over all files, tests and data included
- 824 lines in 2 placestxtdocs and examples6,779 tokensskills/scenario-kinetic-music-video/assets/python/linux-x86_64.txt:621–1444skills/scenario-kinetic-music-video/assets/python/macos-arm64.txt:621–1444
621idna==3.20 \ 622 --hash=sha256:a7db850025b95ded1eae8a46181a1a6c56c92c96f0e2b005d9ff8dc0210cab44 \ 623 --hash=sha256:ab7ae7122974553370f0bdb919e1a960b2cd1bc1ef0276416d896db81c14582c 624 # via 625 # anyio 626 # httpx2 627 # requests 628jax==0.10.2 \ 629 --hash=sha256:724d73c4678d8b06f6a6ab4db1b8a2fea8cd4f1e2c2564f99601634ec7b8d1c6 \ 630 --hash=sha256:bf77428a8c2e6904c4f46d5ab12aa5cfc6cad2179f07f7e4c0fc75ac86ef0639First 10 of 824 lines.
- 6 lines in 62 placesmarkdowndocs and examples84 tokensskills/dcc/blender/scenario-blender-animation/SKILL.md:13–18skills/dcc/blender/scenario-blender-blockout/SKILL.md:16–21skills/dcc/blender/scenario-blender-geometry-nodes/SKILL.md:13–18skills/dcc/blender/scenario-blender-hair/SKILL.md:12–17skills/dcc/blender/scenario-blender-hard-surface/SKILL.md:13–18and 57 more
13curve plot, and a playblast it actually looks at. If a sibling skill named here is missing from your 14available skills, load it with `skill_get` (Scenario MCP) or ask the user to install it 15(https://github.com/scenario-labs/skills#install); unattended, proceed from tool schemas and flag 16the gap. 17 18**REQUIRED BACKGROUND:** scenario-blender-expert (execution channel, review loop, 5.2 API changes).16in the viewport alone. If a sibling skill named here is missing from your available skills, load it 17with `skill_get` (Scenario MCP) or ask the user to install it 18(https://github.com/scenario-labs/skills#install); unattended, proceed from tool schemas and flag 19the gap. 20 21**REQUIRED BACKGROUND:** scenario-blender-expert (execution channel, review loop, 5.2 API changes). - 461 lines in 2 placestxtdocs and examples3,682 tokensskills/scenario-kinetic-music-video/assets/python/linux-x86_64.txt:1551–2011skills/scenario-kinetic-music-video/assets/python/macos-arm64.txt:1468–1928
1551 # via faster-whisper 1552opencv-contrib-python==5.0.0.93 \ 1553 --hash=sha256:29b916da864002a921c79b6df4cfb2dcf79870f166ddf3ce1179b558bc7313d7 \ 1554 --hash=sha256:3ebb8e0506573f36f54038116321a086c97aeda8ef154198931f3ea18b435cc7 \ 1555 --hash=sha256:45a1ce7c68828907348e649edd471a7dc5244d3d0ac21989e67c63d2f4fa629a \ 1556 --hash=sha256:461622db95c964652d4d8fda171034961c3de270f78a6095aaad31050771774a \ 1557 --hash=sha256:8427dcb0561dc3ba32f3771c627f52b87c29932c265bea28ffcb54804c3c3fec \ 1558 --hash=sha256:b84f0b0fcdbd2421b5819e517542463e71eed7f41e0a0c4ec280ed88b7269a66 \ 1559 --hash=sha256:cac609c9a4fce67feb287837c671a2c4da9467df8e47fa0cce7bdc453d12a529 \ 1560 --hash=sha256:da0ba61096b08c63cb4440d8fd6f323835cbb78b714c5ba22a39e1db68c83166 \First 10 of 461 lines.
- 73 lines in 7 placespythontests490 tokens
- 327 lines in 2 placesmarkupmarkup2,831 tokens
By format, code only
| Format | Files | Lines | Clones | Duplicated lines | Duplication |
|---|---|---|---|---|---|
| python | 201 | 148,774 | 149 | 1,747 | 1.17% |
| csharp | 225 | 40,609 | 36 | 310 | 0.76% |
| gdscript | 154 | 19,896 | 27 | 240 | 1.21% |
| javascript | 19 | 3,872 | 6 | 70 | 1.81% |
| bash | 10 | 779 | 0 | 0 | 0% |
| swift | 1 | 42 | 0 | 0 | 0% |
By format, all files
| Format | Files | Lines | Clones | Duplicated lines | Duplication |
|---|---|---|---|---|---|
| markdown | 696 | 141,252 | 358 | 2,487 | 1.76% |
| python | 379 | 171,178 | 181 | 2,629 | 1.54% |
| csharp | 254 | 43,150 | 55 | 544 | 1.26% |
| gdscript | 183 | 21,794 | 38 | 328 | 1.51% |
| json | 37 | 4,799 | 24 | 836 | 17.42% |
| javascript | 26 | 5,159 | 13 | 135 | 2.62% |
| txt | 7 | 6,759 | 12 | 2,327 | 34.43% |
| lua | 21 | 6,218 | 7 | 67 | 1.08% |
| markup | 8 | 4,242 | 7 | 743 | 17.52% |
| yaml | 30 | 1,394 | 5 | 114 | 8.18% |
Trending appearances
| Day | Rank | Stars | Files | Lines | Clones | All files | Code | Health | Commit |
|---|---|---|---|---|---|---|---|---|---|
| Nov 5, 2026 | #10 | 2,567 (+224) | 1,726 | 409,042 | 702 | 2.5% | 1.11% | E 23.1 | 6e4a6f0 |
Want this for your own project? Install jscpd and run jscpd ., or measure it the way the baselines were measured.