Skip to content

Scenario Agent Skills

A published library of Agent Skills that teach coding agents to produce images, video, audio, textures, skyboxes and 3D through the Scenario MCP server, plus five families that drive ZBrush, Blender, Maya, Unreal and Unity, where every change passes a house-style check and a clean-room application test.

Screenshot of Scenario Agent Skills
Editor screenshot, 30 Sep 2026Scenario Agent Skills ↗

What it is

The public skills library of Scenario, a generative-media company: 122 skills that teach a coding agent how to produce images, video, audio, textures, skyboxes, 3D assets and custom-trained models through the company’s MCP server, installed with npx skills add scenario-labs/skills. Sixty-five are core skills, one directory and one SKILL.md each, organized around a hub skill that teaches the generation loop — discover a capability, read the schema, run the job, wait, display, download. The other fifty-seven are expert tools: five families of a lead plus specialists that drive applications installed on the user’s own machine, ZBrush, Blender, Maya, Unreal Engine and Unity. Both tiers answer to a written authoring contract — a 1,000-word body target with a hard 2,500-word cap, a fixed shape, frontmatter limited to name, description and license, and a test suite for every script a skill ships. Continuous integration and a pre-commit hook enforce the mechanical half; a clean-room agent that never sees the repository, and whose tool-call plan is graded against the live tool reference, is the bar for merging. It is MIT-licensed, was created on 2026-08-12, and carries 794 stars.

Who built itA repository owned by Scenario Labs, the company behind Scenario. Hervé Nivon wrote 129 of its 148 commits; a release bot accounts for fourteen, and Emmanuel de Maistre, one other Scenario account and a fifth account share the remaining five. One hundred and forty-six of the 148 commits carry at least one co-author trailer, and the census is 126 naming a Claude model, four Codex, one Cursor, fourteen the release bot and one a human colleague — because the repository’s own guide prescribes how the model is named.

How it is put together

The parts · 6

A library of prompts, run like a codebase. Each skill is one directory and one markdown file, with references and scripts either beside it or deliberately elsewhere, and what holds 122 of them together is a written contract plus a pipeline of checks rather than a review culture: a word budget with its arithmetic attached, a fixed body shape, a spec validator, a spell checker, a README that must mirror the grouping file, and a manifest generated from that same file. Two consequences shape the rest. The first is that a skill is judged by whether an agent behaves differently with it, so the real gate is a clean-room agent that never sees the repository and is graded on its plan against the live tool reference, which makes the expected failure a defect in prose rather than in code. The second is that the surface underneath is a market of models: a skill groups one provider family without a version number and never asserts a generative model id, so a new generation cannot invalidate a skill name, and the expert tier, which drives installed desktop software instead of the API, stays in the same tree with each of its differences written down.

skills/
Sixty-five core skills, one directory and one SKILL.md each, from 4.6 KB single-lane skills to the 24,739-character hub that teaches the generation loop every other skill calls. A handful carry a references/ directory, a script, or a generated template — sprite sheet grids, isometric templates, a payload reference for text overlay, a dataset-curation note for training.
skills/dcc/ and skills/game-engines/
The fifty-seven expert skills, 232 files under dcc and 467 under game-engines, one README per family recording how it was built. Every skill carries references/sources.md and nearly all carry procedures.md, critique.md and expert-notes.md; forty-one add gui-paths.md naming the menus and dialogs of the application; the specialists import the lead’s scripts/, so 148 Python files live here, the largest at 196,922 characters.
scripts/ and tests/
Twelve repository scripts that enforce the contract — house style, supporting files, groupings, the README mirror, the generated manifest, spelling, command symlinks, spec validation — and fourteen test directories holding the suites for shipped skill scripts, plus one regression suite for the agent command files and an evidence folder a live analytics validation left behind, with screenshots, synthetic checks, an example dashboard and a sample report.
.agents/ and .claude/
The agent surface: six SKILL.md files under .agents/skills/ — two Anthropic skills vendored for people working on this repository and recorded in skills-lock.json with source and hash, and four maintainer commands — with .claude/skills and .claude/commands holding thirty-to-fifty-byte symlinks to them and CLAUDE.md a nine-byte link to the same guide Codex reads.
skills.sh.json and .claude-plugin/
The catalog. skills.sh.json (9,393 bytes) is the single source of truth for which skill sits in which grouping; the plugin marketplace manifest (12,595 bytes) is generated from it, because the installer picker reads only the manifest while the directory page reads only the JSON, and a check fails when the two drift.
Release and lint configuration
Release-please settings with a seven-byte version.txt, four workflows for integration, releases, changelog publishing and pull-request title linting, commitlint with valid scopes derived from the skill directory names, a 9,403-byte project dictionary, and the formatting and spell-check configuration that lets the same checks run before a commit.

Choices, and what they beat

  • Cap a skill body at 2,500 words over trusting the specification, which sets no format restrictions

    Written out rather than asserted: the reference validator passes a 200,000-word body clean; the widely repeated 5,000-word figure is a debugging remedy for a skill already misbehaving; and the rule that bites is that an invoked skill keeps its first 5,000 tokens inside a 25,000-token pool shared by everything re-attached after compaction. At this repository’s density of about 1.75 tokens per word, 2,500 words is near 4,400 tokens, inside the per-skill ceiling with margin for identifier-dense prose, and past it a body buys truncation with content.

  • Trim an over-budget body instead of splitting it over moving facts into a linked reference file

    The body loads on every trigger and a reference loads only when the agent follows the link, so a reference the workflow always needs is a longer body in disguise with an extra hop in front of it. Facts every run needs stay in the body; only genuinely situational material, deep tables, per-mode detail and scripts, is linked out — and the guide says so explicitly rather than leaving it to taste.

  • Never name a generative model id in a skill over naming the generation the skill was written against

    Availability differs per team and the generation named today is superseded within months, so discovery through the capability-ranking tool is the only sanctioned route to a generative model. The exceptions are narrow and written down: a platform utility with no competing alternative, and the one member a skill exists to run. The test is turned on Scenario’s own tools too, and three of the sixty-four tool-tagged Scenario models fail it because an upstream vendor supplies the same operation.

  • Name a model family without its version over a skill name carrying the current generation

    A skill name is a permanent identifier — installs, README rows, the grouping file, cross-references from sibling skills — while generations churn every few months, so a versioned name goes stale the day the next one ships and forces either a breaking rename or near-duplicate skills competing for one trigger. Versions are data, not identity: the version keywords belong in the description, where a search for that version still finds the skill.

  • Record the model in the commit trailer, in a prescribed format over leaving the authorship of a commit implicit

    The guide specifies the trailer down to model, reasoning effort and speed tier, says to use the settings of the contributing session rather than repository defaults, to omit an unknown field rather than guess, and to carry the trailers into the final squash message. The effect is measurable in the history: 146 of 148 commits carry a co-author line, and 126 of those name a Claude model.

Read fromAGENTS.md (37,286 characters) in full, README.md (54,000 characters), CHANGELOG.md (13,500 characters) and version.txt; the thirty pull requests and issues quoted in the report, from #141 to #170, including the application-test reports appended to #153, #154, #155, #156, #159, #161 and #163; the complete 968-file tree with sizes and the two-level directory summary; and the twelve scripts under scripts/.

Build log

6 stages
  1. 01

    A hundred and twenty-two skills in seven weeks

    The repository was created on 2026-08-12 and last pushed to on 2026-09-30. In that window it took 148 commits, eighty-five of them in August after the twelfth and sixty-three in September, and grew to 968 files. Of the 128 SKILL.md files in the tree, 122 are published: 65 core skills sitting one directory each under skills/, and 57 expert tools in five families, split by the pull request that ported them into ZBrush 9, Blender 13, Maya 11, Unreal Engine 10 and Unity 14. The other six are two Anthropic skills vendored for agents working on the repository itself, and four maintainer commands. Releases are how a change reaches a user, because an install always fetches the latest copy from main and nothing is version-pinned: fourteen releases, from skills-v0.37.3 on 2026-08-28 to skills-v0.48.0 on 2026-09-26, roughly one every two days. The changelog they generate holds 47 entries — 29 features, 17 bug fixes and one documentation change — while version.txt reads 0.48.0 and a release pull request for 0.48.1 was still open on 2026-09-28. Around the code sit 794 stars, 93 forks and fourteen open issues.

  2. 02

    Who, or what, wrote it

    Five accounts appear in the history. Hervé Nivon wrote 129 of the 148 commits, 128 of them from an address at scenario.com; a release bot accounts for fourteen; Emmanuel de Maistre and one other Scenario account for two each; and a fifth account for one. What makes this history worth reading is the trailers. 146 of the 148 commits carry at least one co-author line, and the census is 126 naming a Claude model — thirty-eight of them the bare word “Claude”, thirty-eight “Claude Fable 5”, twenty-five “Claude Fable 5.1”, and the rest Opus and Sonnet variants — plus four Codex, one Cursor, fourteen the release bot and one a human colleague. That is written policy rather than habit. The repository’s agent guide has a section titled “Codex commit attribution” which prescribes the trailer down to its fields, model, reasoning effort and speed tier, tells the author to use the settings of the contributing session rather than repository defaults, to omit an unknown field instead of guessing, and to carry the trailers into the final squash message so attribution survives the squash workflow. A separate rule makes the same point from the other end: only feat, fix, docs, perf and revert commits reach a release, so a change to shipped skill content must be typed as one of them or it waits for someone else’s release to publish it.

  3. 03

    A contract, twelve scripts and a nine-step gate

    The repository is organized by a document. AGENTS.md runs to 37,286 characters of authoring contract: frontmatter limited to name, description and license; a name that must equal the directory name; a description in the third person that starts with “Use when”, describes triggering conditions only and stays under 500 characters; a body of 1,000 words as the target with a hard 2,500-word cap; and a fixed shape of Overview, Quick reference, one worked example and Common mistakes. A supporting file may sit beside a SKILL.md only when its content is too large to inline, and must be linked directly from it, because a reference chained through another file may never be read. A script a skill ships lives inside the skill directory, but its test suite lives at the repository root in tests/<name>/, one directory per skill that ships one: fourteen test directories in all. Twelve repository scripts sit around that, and the pre-commit hook runs them in order — sorting the spell-check dictionary, regenerating the plugin manifest, then pnpm validate, which is nine checks: house style and the body budget, formatting, supporting files, groupings, the generated manifest, the README mirror of those groupings, the dictionary, spelling, and the Agent Skills spec validator. The same file records a bug against itself: committing from a git worktree fails the spec check because git exports GIT_DIR into hooks, so validation has to run from a shell without it and the commit be made with --no-verify.

  4. 04

    The test that decides whether a skill actually teaches

    Mechanical validation checks a file against a format; a second protocol checks whether the text teaches, and it is the thing the pull request threads argue about. /skills:validate <name> writes a use case, installs the working-tree copy into a clean-room agent with no repository context, hands it only that skill, the core scenario skill that real installs ship alongside it, and one realistic task, then asks for a numbered tool-call plan with exact tool names and argument shapes: planning only, no execution, no browsing, and an instruction to flag uncertainty rather than guess. The plan is graded against the tool reference, fetched fresh rather than recalled. One invented tool name is a fail. A generative model id asserted as a constant is a fail. A plan that reaches for the REST API, the SDK or a command line where an MCP tool exists is a fail. And anything asserted that appears in neither the skill nor the tool reference counts as a guess, even when it happens to be right. A failure is treated as a defect in the text and re-run with a new agent, because a failed agent is contaminated by its own mistake. A new skill also gets a baseline probe with nothing installed, to confirm it earns the context it costs. Runs are pre-registered with a budget, and one in the report was written down as two still runs, twenty-four clip runs and 700 CU.

  5. 05

    Rules that were bought with a failure

    The discussions record what did not work. One pull request taught a way to make a prompt depend on a branch of a workflow graph; the independent run produced the right prompt and a workflow job that never left in-progress, because a branch skips only the node wired to its own handle. The rule was withdrawn and replaced with three shapes that were each validated live, plus a conditional expression inside one text transform. Another added a parallax-background lane and failed on live visual acceptance, five model runs and six dry runs in: asking one generation for “the layers” returns a single picture of stacked layers, so the lane now either splits a finished painting or runs one generation per depth plane. A third taught agents to convert HEIC photos before upload; the API release shipped, HEIC stopped being refused, and the paragraph had to be reframed, with the branch reset onto main and force-pushed and the thread keeping both the earlier position and the reason it changed. Elsewhere the record walks a claim back: a matched test showed that capabilities credited to a new comparison skill were already carried by the core skill and the public tool contracts. Two rules read like scars — sweep a delivered video into contact sheets rather than checking one frame per shot, because a defect that fades in mid-shot passed a spot check at 10.5 s on a clip whose artifact appears at 11.0 s — and stop hunting a mechanism after roughly two inconclusive controlled runs.

  6. 06

    Fifty-seven skills ported, with the verification notes left in

    The largest single change is the expert tier: fifty-seven skills in five families, ported from Emmanuel de Maistre’s own expert-skill repositories and merged on 2026-09-25 with the credit in the pull request. They were distilled from expert videos, talks and documentation, then graded blind against the same model without them. Each family is a lead skill plus specialists named after a topic, and the specialists import the lead’s scripts, which is why a family installs as one set. The apparatus is uniform and enormous: every one of the fifty-seven ships references/sources.md, and nearly all ship procedures.md, critique.md and expert-notes.md — 57, 53, 52 and 52 files — with gui-paths.md in forty-one, and 148 Python scripts whose largest is a 196,922-character Maya lighting module, a file larger than the 54,000-character README. Each family folder carries a README recording how the family was built and how far it was verified, and the honesty survives the merge: one change deleted the “not yet run inside Maya or the engine” status notes from the module docstrings and the family README while listing, in its own body, the files where the same notes remained, and the Unity family claims every procedure was run live in Unity 6.3.

Adjacent records

All records →