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 ouzlifaneyassine1-dot/onyx-engine --skill smokegit clone --depth 1 https://github.com/ouzlifaneyassine1-dot/onyx-engineWrote 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/ouzlifaneyassine1-dot/onyx-engine/smoke)<a href="https://agentmods.dev/skills/ouzlifaneyassine1-dot/onyx-engine/smoke"><img src="https://agentmods.dev/badge/skills/ouzlifaneyassine1-dot/onyx-engine/smoke/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/ouzlifaneyassine1-dot/onyx-engine/smoke"><img src="https://agentmods.dev/badge/skills/ouzlifaneyassine1-dot/onyx-engine/smoke.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.00081 | $0.04576 |
| Opus 5 | $0.00041 | $0.02288 |
| Sonnet 5 | $0.00016 | $0.00915 |
| Haiku 4.5 | $0.00008 | $0.00458 |
Grade A, and why
smoke 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 8d 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.
This is a copy
86% identical to smoke — 131 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 382 lines — stays where its author put it; the contents beside it link to each section on GitHub.
smoke — Soft Particle Smoke Plume
Smoke is the same particle pattern as fire — billboard quads emitted from a small disc, drifting upward — except the shader is dim, soft, low-emission, and tinted by depth instead of glowing. Slower spawn rate, longer lifetime, larger end scale. Pair it with fire for any campfire/torch/explosion. Used everywhere: chimney smoke, smoldering wreckage, smoke trails behind rockets, steam from vents, fog clouds.
When to use
- "Smoke rising from the campfire."
- "Chimney smoke on the cottage."
- "Smoke trail behind the rocket."
- "Steam from the vent."
- "Smoke from the smoldering wreckage."
- "Fog cloud at the cave entrance."
- After spawning
fire, smoke almost always belongs above it.
When NOT to use
- The user wants flames, not smoke — use
fire. - The user wants a giant ground-hugging fog volume — use a
FogVolumenode with theWorldEnvironment.volumetric_fogshader, not a particle system. Particles don't scale to room-size fog. - The user wants a 2D smoke effect —
canvas_itemshader, not this. - The user wants the smoke to physically interact with the player (pushed by movement) — particles are visual; use a
FogVolume+ script that follows the player. - The user wants thick black bonfire smoke that completely occludes — bump density way up, but consider a
FogVolumefor genuine visual occlusion.
Recipe
1. Files to create
addons/vfx/smoke/smoke.gdshader
addons/vfx/smoke/smoke_controller.gd
addons/vfx/smoke/smoke.tscn
2. Shader code
addons/vfx/smoke/smoke.gdshader:
shader_type spatial;
render_mode unshaded, blend_mix, depth_draw_never, cull_disabled, shadows_disabled;
#include "res://addons/vfx/_building-blocks/noise-3d-fbm.gdshaderinc"
uniform vec4 smoke_color_young : source_color = vec4(0.85, 0.85, 0.85, 1.0); // freshly emitted
uniform vec4 smoke_color_old : source_color = vec4(0.45, 0.45, 0.45, 1.0); // late life
uniform float density : hint_range(0.0, 1.0) = 0.55;
uniform float noise_scale : hint_range(0.5, 8.0) = 2.0;
uniform float noise_speed : hint_range(0.0, 2.0) = 0.5;
uniform float soft_edge : hint_range(0.01, 0.5) = 0.30;
uniform float depth_fade : hint_range(0.0, 4.0) = 1.0; // soft against geometry behind
void vertex() {
MODELVIEW_MATRIX = VIEW_MATRIX * mat4(
INV_VIEW_MATRIX[0],
INV_VIEW_MATRIX[1],
INV_VIEW_MATRIX[2],
MODEL_MATRIX[3]
);
}
void fragment() {
float age = CUSTOM.x;
// Distort UVs with slow noise.
vec3 np = vec3(UV * noise_scale, TIME * noise_speed + CUSTOM.y * 10.0);
float n = fbm3(np);
// Soft round mask, modulated by noise so the silhouette is wispy not circular.
vec2 c = UV - vec2(0.5);
float r = length(c) * 2.0;
float mask = smoothstep(1.0, 1.0 - soft_edge, r);
mask *= (0.6 + 0.4 * n); // bite chunks out of the puff
// Fade in fast, fade out slow.
float alpha_age = smoothstep(0.0, 0.15, age) * (1.0 - smoothstep(0.6, 1.0, age));
// Color drifts young → old as it ages (cools off / dilutes).
vec3 col = mix(smoke_color_young.rgb, smoke_color_old.rgb, age);
ALBEDO = col;
ALPHA = mask * alpha_age * density;
}
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.
- 8d ago First seen · 382 lines · 81 tokens per session scan A ec8c3690a52e
smoke is a skill published in the GitHub repository ouzlifaneyassine1-dot/onyx-engine (0 stars, last pushed 3mo ago), licensed MIT. It adds 81 tokens to every session and 4,576 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 0 findings. It is 86% identical to smoke, differing in 131 lines, and is treated as a copy.
Other skills, from other repositories
game-feel
Use when a Summer game "feels flat", "lacks impact", "needs juice", or "needs punch", or the user asks for hit feedback, screen shake, camera shake, audio ducking, or general game feel. Walks through Summer Engine's hit-flash, trauma camera shake, and audio-ducking stack, wired so one hit fires all three. Trigger on…
fire
Use when authoring a fire visual effect — animated flames built with a particle shader, GPUParticles3D, and a noise-based color ramp. Trigger on "torch", "campfire", "bonfire", "flame", "fire effect", "burning", "make this thing on fire", "candle".
lightning
Use when authoring a lightning bolt visual effect — procedural jagged path drawn via ImmediateMesh, glow shader, sparks at endpoints, screen shake. Trigger on "lightning bolt", "chain lightning", "electric attack", "tesla coil", "shock spell", "thunderbolt", "energy beam".
smoke
Use when authoring a smoke visual effect — a slow-rising column or puff of soft particles built with a noise + density falloff shader on a quad mesh, GPUParticles3D. Trigger on "smoke", "smoke trail", "puff", "chimney smoke", "smoke from a fire", "steam", "fog cloud", "explosion smoke".
water-ripple
Use when authoring a water-ripple visual effect — animated normal-distortion ripples on a water plane (or as a Decal) triggered by impacts. Trigger on "water ripple", "ripples on water", "raindrop ripple", "splash ripple", "rain on water", "footstep in puddle", "fish jumps".
dissolve
Use when authoring a dissolve effect — an object's mesh disintegrating with a glowing burning edge, driven by a noise threshold ShaderMaterial overriding the target's existing material. Trigger on "dissolve", "disintegrate", "burn away", "Thanos snap", "vanish into ash", "enemy fades out", "object burns up".