Borrowing it
Nothing to install: this file belongs to vchelaru/FlatRedBall2. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/vchelaru/FlatRedBall2/main/.claude/skills/animation-editor-rendering/SKILL.mdgit clone --depth 1 https://github.com/vchelaru/FlatRedBall2Wrote 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/vchelaru/flatredball2/animation-editor-rendering)<a href="https://agentmods.dev/skills/vchelaru/flatredball2/animation-editor-rendering"><img src="https://agentmods.dev/badge/skills/vchelaru/flatredball2/animation-editor-rendering/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/vchelaru/flatredball2/animation-editor-rendering"><img src="https://agentmods.dev/badge/skills/vchelaru/flatredball2/animation-editor-rendering.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.00066 | $0.00670 |
| Opus 5.5 | $0.00026 | $0.00268 |
| Sonnet 5.5 | $0.00013 | $0.00134 |
| Haiku 4.5 | $0.00007 | $0.00067 |
Grade A, and why
animation-editor-rendering 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 16d 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.
What it actually says
AnimationEditor — Rendering & Performance
Where and how the AnimationEditor draws pixels, and the SkiaSharp gotchas that come with it. Editor location/layout lives in the animation-editor skill; headless test discipline in animation-editor-testing.
Both panels render through a SkiaSharp ICustomDrawOperation on Avalonia's render thread (top: WireframeControl.DrawOp.Render; bottom: PreviewControl.DrawFrameCore). lease.GrContext != null means the GPU (ANGLE) path; null means CPU (software) — the two behave differently, so always know which you're on before reasoning about cost.
A "used to be smooth, now it's slow" report is a git signal, not an architecture signal. Before theorizing about the pipeline, git log the render files — a recent commit that changed how an image is drawn is far more often the cause than a long-standing pattern suddenly biting. Chasing the architecture first wastes rounds.
Measure before guessing. An on-canvas draw-time overlay (rolling ms/frame + a GPU/CPU tag) toggles with F3 (DiagnosticsEnabled on each control, rendered by DrawTimeOverlay). Turn it on first: the ms reading plus the GPU/CPU tag localize the cost and rule out whole categories of hypothesis immediately.
Landmine — a raster SKImage re-uploads to the GPU every frame. An SKImage from SKImage.FromBitmap is CPU-resident; on the GPU path Skia re-uploads the visible source region on each draw, so cost scales inversely with zoom — zoomed out is slower, which misdirects toward mipmaps/filtering. Fix: let Skia keep the texture cached by raising the GPU resource-cache budget once per lease (GRContext.SetResourceCacheLimit), sized to hold the image. Do not hand-manage a GPU copy via SKImage.ToTextureImage held across frames — opening a menu/popup purges the GRContext, leaving that cached texture dangling so it draws nothing (blank/flicker of only the image, while vector draws in the same pass survive). Skia's own cache re-uploads correctly after a purge; a hand-held texture does not.
Landmine — don't call SKImage.Subset() more than once against the same SKImage instance. Caching one SKImage.FromBitmap(sheet) and repeatedly .Subset()-ing it (e.g. once per frame when cropping many frames off one sheet) crashes the process with an access violation — happened in ThumbnailService.GetFrameThumbnail. Use SKBitmap.ExtractSubset(dst, rect) instead: a pixel-buffer view (not a copy) on a fresh local bitmap each call, so nothing is shared to corrupt, at the same low cost.
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.
- 16d ago Changed · +66 tokens per session df4d58cf23b8
- 26d ago Changed 18e1f5717bb1
- 1mo ago First seen · 19 lines · 0 tokens per session scan A 082b90e26791
animation-editor-rendering is a skill published in the GitHub repository vchelaru/FlatRedBall2 (15 stars, last pushed today), licensed MIT. It adds 66 tokens to every session and 670 once invoked, about $0.0003 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-09-22.
Other skills, from other repositories
debug-optimize-lcp
Guides debugging and optimizing Largest Contentful Paint (LCP) using Chrome DevTools MCP tools. Use this skill whenever the user asks about LCP performance, slow page loads, Core Web Vitals optimization, or wants to understand why their page's main content takes too long to appear. Also use when the user mentions…
systematic-debugging
Use when debugging a failing test, build error, or runtime issue that isn't immediately obvious. Guides a 4-phase root cause analysis instead of random fix attempts.
log-error-digest
Analyze log files to troubleshoot errors, identify peak error periods, and produce error clustering, frequency statistics, and time distribution reports. Supports JSON, syslog, and Nginx formats with automatic detection. Use when a user uploads a .log file and asks to analyze errors, find patterns, debug issues, or…
cwv-optimizer
Diagnose and fix Core Web Vitals issues on AEM Edge Delivery Services pages. Goes deeper than generic CWV advice by understanding EDS-specific performance patterns including the 100KB LCP budget, E-L-D loading phases, block rendering behavior, and third-party script impact. Produces specific fixes for LCP, CLS, and…
incident-response-incident-response
Coordinate production incident triage, mitigation, investigation, recovery, and follow-up. Use when responding to outages or other incidents that require structured operational coordination.
ci-fixer
CI failures - read error, minimal fix, verify.