Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add alphacornutum/layercake --skill drive-after-effectsgit clone --depth 1 https://github.com/alphacornutum/layercakeWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/alphacornutum/layercake/drive-after-effects)<a href="https://agentmods.dev/skills/alphacornutum/layercake/drive-after-effects"><img src="https://agentmods.dev/badge/skills/alphacornutum/layercake/drive-after-effects/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/alphacornutum/layercake/drive-after-effects"><img src="https://agentmods.dev/badge/skills/alphacornutum/layercake/drive-after-effects.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00168 | $0.03207 |
| Opus 5.5 | $0.00067 | $0.01283 |
| Sonnet 5.5 | $0.00034 | $0.00641 |
| Haiku 4.5 | $0.00017 | $0.00321 |
Grade A, and why
drive-after-effects scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 79 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Drive After Effects via MCP
Safe, id-correct workflow against the live AE GUI session.
Session assumption
LayerCake assumes a 1:1 agent ↔ After Effects session. There is no app-level lock. Concurrent agents or a human editing the same AE instance can race; stale fingerprint errors on patch/save are the only runtime detection.
Steps
- Check host — Call
ae_host_status. If unavailable, fix platform config: macOSAE_APP_NAMEand/orAE_EXECUTABLE(year suffix must match/Applications); WindowsAE_EXECUTABLEpointing atAfterFX.exe. - Open project —
ae_open_projectwith an absolute.aep/.aetpath when the needed project is not already open. If another project is open at a different path, open refuses (dirty or clean) — callae_save_project/ae_close_projectfirst. Never open over another project without an explicit close. - Bind context — Call
ae_project_contextfor the cheap fingerprint token (path,dirty,revision,fingerprint). Re-poll before every patch or save (or reuse a successful patch response fingerprint when no other mutator intervened). - Project summary (when needed) — Call
ae_project_summaryfor heavier health/portability orientation (third-party effects, missing footage/fonts). Prefer this before deep inventory when those concerns matter; skip for trivial single-layer edits. Do not use summary for fingerprint polling — that isae_project_context. - Inventory as needed — Prefer
ae_list_comps(composition settings forset_comp_settingsplanning: dims/PAR/rate, integer duration/display-start/work-area frames, renderer, composition switches; plus layer switches, parent/matte ids, integer frame timing, Solidsource.footageKind),ae_list_sources, and/orae_list_foldersbefore writing custom scripts. For cleanup planning, callae_get_item_refs— whenunknownRefsPossibleis true, do not treat the item as safe to delete. Panel ops need realItem.idhandles from inventory (includingrootFolder.id— never a magic0). - Docs when unsure —
ae_docs_search→ae_docs_get(orae://docs/...) before inventing DOM APIs. - Optional backup / copy-first — Before risky or broad patches,
ae_save_projectwithmode: "create_backup"and the current fingerprint (requires a clean, saved project; dirty projects must usesave_copyinstead). Agents MAYsave_copy(or otherwise work on a copy) before mutating when the original project file must remain pristine.create_backupcopies the.aeponly — it does not collect linked footage (not Collect Files). - Typed patch — Prefer
ae_patch_project(apply-only) over raw eval for:set_text_style(partial TextDocumentstylebag — font, size, leading/autoLeading, fill/stroke, justification, text, box geometry, allCaps/smallCaps, …; omit key = preserve; plan viaae_get_layerSourceText projection onextended/full; evidence is authoredstyle/fontsplus optionalevaluatedStyle/evaluatedFonts; post-condition on authored supplied keys only; fingerprint guards only — no expected-current bag; does not clear Source Text expressions),create_text(comps-onlytarget+layoutpoint|box+text; box requiresboxTextSize; optionalname/stylesame allowlist asset_text_style; always newLayer.id),rename_layer,rename_project_item,set_layer_index,create_solid(optionalname),replace_layer_source,set_layer_timing(integer frames; not remapping; verified keyframe preservation — see Gotchas for source slip vs drag),set_layer_switches(timeline/layer switches — supply only keys to change inswitches; omitted switches and non-switch state are preserved; evidence is a full switch snapshot before/after; use this fortimeRemapEnabled, mute-video / keep-audio, solo/shy/locked, etc.),set_comp_settings(comps-onlytarget.compIdXORcompName+ partialsettingsbag; omit key = preserve; optional nestedsettings.switches; integer-frame evidence; duration shrink clamps work area unless explicit work area would overrun — that fails; place beforeset_layer_timingin mixed batches, especially when changingframeRate),set_property_expression(build segment paths from nestedae_get_layertree — effect params need parade → effect instance → param; nexrenderpropertyPathwith./->is an alternative — exactly one selector),set_layer_transform(authored 2D Transform — supply only keys to change in nestedtransformbag; omit=preserve; evidence is actual authored/pre-expression numeric before/after snapshots; prefer over eval for slot repair afterreplace_layer_source, e.g. set Position to the new Anchor Point; no op-level expected-current bag — use matchingproject.fingerprint),reset_layer_surface(resetTransformsapplies/verifies AE defaults with value evidence, not a transforms boolean; typically Position at composition center — not “match new Anchor”;clearExpressionsis separate),delete_layer, panelcreate_folder(optionalname) /move_project_item, and guarded cleanup viasafe_delete_project_item. Passproject.path+project.fingerprintguards. All layer-targeting patch ops accept id or unique name with the same ambiguity rules asae_get_layer(no ids-only exceptions). Prefer stable ids when names may collide. Forae_get_layerextended/full, Transform and SourceText may includeauthoredValue/evaluatedValue— wrapper purity MUST use authored/pre-expression samples, not post-expression alone. SourceText is projected as{ kind: "textDocument", style, boxText?, pointText? }.safe_delete_project_itemrefuses in-use /unknownRefsPossibleand empty-folder-only (non-recursive);delete_project_itemremains AE-permissive (recursive folders; in-use allowed) — prefer safe delete +ae_get_item_refsfor cleanup. Cover/Contain expression bodies, protected control-layer name policy, render-backed visibility, andmain/configreachability stay agent/domain concerns — LayerCake does not enforce them. On success, reuse the returned fingerprint when no other mutator intervened; otherwise re-bind context. - Persist —
ae_save_projectwithmode: "save_copy"(and an absolute destination) when you want changes on disk. Patch never saves implicitly. - Eval escape hatch —
ae_eval_scriptbypasses typed safety and fingerprint guards. Use only for one-offs the patch vocabulary cannot express. After Effects is an ES3-like dialect — readreferences/extendscript.md(MCP:skill://drive-after-effects/references/extendscript.md) before writing scripts (var/function/for; notconst, arrows, orArray.map). That reference also covers the wrap return contract (top-levelreturnfor payloads; empty success is normal for void scripts; bare IIFE inner-returnis a footgun). Look up targets by id:
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago Changed · +1 lines 213edd995f0a
- 2mo ago First seen · 78 lines · 168 tokens per session scan A 13f464dbfc6a
drive-after-effects is a skill published in the GitHub repository alphacornutum/layercake (0 stars, last pushed 20d ago), licensed MIT. It adds 168 tokens to every session and 3,207 once invoked, about $0.0007 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
drive-after-effects compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| drive-after-effectsalphacornutum/layercake | Skill | 0 | 20d ago | MIT | A | 168 | Claude Code, Codex |
| after-effects-scriptingMaciejdziuba/youtube-skills | Skill | 4 | 2mo ago | MIT | A | 148 | Claude Code, Codex |
| vox-directorAlisa0808/vox-director | Skill | 2.7k | 1mo ago | MIT | A | 236 | Claude Code, Codex |
| style-guideEngine-Room-Games/after-effects-mcp | Skill | 48 | yesterday | MIT | A | 74 | Claude Code |
| flueSFKislev/Flue | Skill | 104 | 21d ago | MIT | A | 36 | Claude Code, Codex |
| saas-product-demo-videonoamdorr/saas-product-demo-video | Skill | 69 | yesterday | MIT | A | 130 | Claude Code |
| after-effectsEngine-Room-Games/after-effects-mcp | Skill | 48 | yesterday | MIT | A | 89 | Claude Code |