Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/Sounio-lang/sounionpx agentmods add skills/sounio-lang/sounio/sounio-renderWrote 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/sounio-lang/sounio/sounio-render)<a href="https://agentmods.dev/skills/sounio-lang/sounio/sounio-render"><img src="https://agentmods.dev/badge/skills/sounio-lang/sounio/sounio-render/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/sounio-lang/sounio/sounio-render"><img src="https://agentmods.dev/badge/skills/sounio-lang/sounio/sounio-render.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.00049 | $0.01010 |
| Opus 5 | $0.00024 | $0.00505 |
| Sonnet 5 | $0.00010 | $0.00202 |
| Haiku 4.5 | $0.00005 | $0.00101 |
Grade A, and why
sounio-render 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 10d 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 — 80 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Sounio Render Platform
Overview
Covers the CPU-rasterizer render pipeline, flagship epistemic scenes, GPU preview emitters, and website showcase assets.
Six modules in stdlib/render/ define the shared API: types.sio, framebuffer.sio, rasterizer.sio, scene.sio, pipeline.sio, epistemic.sio. All render examples are self-contained (no use imports) and output PPM P3 format to stdout.
Workflow
1) Check stdlib/render/ first
- All six modules must pass
souc checkbefore any example edits. - Adding a new primitive (e.g.
rasterize_rect)? Add it torasterizer.sio, verify with asouc runsmoke test. - Helper functions must precede callers — no forward references in Sounio.
2) Complete or edit a render example
- Examples are self-contained: inline all needed functions (no
useimports). - Use
[i64; 65536]framebuffer arrays;[i64; 16384]is undersized for the shared API. - Effect annotations required:
with IO, Mut, Div, Panicon any function calling raster helpers. - Negative float literals: write
0.0 - 0.471, not-0.471(Sounio constraint). varfor mutable locals,letfor immutable. Nopub, no Rust macros.- Keep
var fb_r: [i64; 65536]as flat locals inmain()— never instantiateFramebufferstruct on the stack (it is ~2 MB).
3) Run the PPM gate
SOUC=./bin/souc
bash scripts/sprint53_render_platform_gate.sh
# Spot-check a render:
$SOUC run examples/render/uncertainty_field.sio > /tmp/uf.ppm && head -3 /tmp/uf.ppm
# Expected: P3 / 128 128 / 255
PPM dimensions verified per example:
| Example | Width | Height |
|---|---|---|
triangle_basic.sio |
128 | 128 |
triangle_ppm.sio |
128 | 128 |
cube_wireframe.sio |
192 | 192 |
uncertainty_ppm.sio |
128 | 128 |
uncertainty_field.sio |
128 | 128 |
causal_dag.sio |
256 | 128 |
quaternion_rotation.sio |
192 | 192 |
4) GPU emitter changes
- Each GPU render file (
ptx_render.sio,metal_render.sio,spirv_render.sio,wgsl_render.sioinself-hosted/gpu/) is additive-only. - Existing
main()must continue working; new scene-aware functions are added alongside it. - Scene contract: add
struct RenderScene+fn render_scene_default()(Sprint 54 pattern). - Gate:
bash scripts/sprint54_gpu_contract_gate.sh
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.
- 10d ago First seen · 80 lines · 49 tokens per session scan A a153f1637f19
sounio-render is a skill published in the GitHub repository Sounio-lang/sounio (6 stars, last pushed today), licensed Apache-2.0. It adds 49 tokens to every session and 1,010 once invoked, about $0.0002 per session on Opus 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.
Other skills, from other repositories
vera-language
Write programs in the Vera programming language. Use when asked to write, edit, debug, or review Vera code (.vera files). Vera is a statically typed, purely functional language with algebraic effects, mandatory contracts, and typed slot references (@T.n) instead of variable names.
vera-language
Write programs in the Vera programming language. Use when asked to write, edit, debug, or review Vera code (.vera files). Vera is a statically typed, purely functional language with algebraic effects, mandatory contracts, and typed slot references (@T.n) instead of variable names.
lifeblood-mcp
Use when an agent should work with Lifeblood's MCP semantic-code tools: analyzing C# or Unity workspaces, querying symbols/dependencies/blast radius/file impact/test impact, checking architectural invariants, validating edits with compilecheck/diagnose, or choosing the right Lifeblood tool instead of grep-style…
gameobject-component-destroy
Destroy one or more Components from a target GameObject. Missing (null) components are skipped — they cannot be destroyed. Use 'gameobject-find' and 'gameobject-component-get' to identify the components first.
unity-version-split
Split a C# file into Unity 6.5+ and pre-Unity 6.5 variants. Use when a file needs different implementations for different Unity versions due to API changes (e.g., EntityId vs int, GetEntityId vs GetInstanceID).
godot-signals-groups
Build event-driven, decoupled Godot 4.7 gameplay with signals and node groups: declare and emit custom signals, connect with Callables (incl. bind/one-shot), and broadcast to many nodes via groups and callgroup. Use when wiring node communication in a Godot project, replacing tight references with signals…