Pixijs
RSamaium/CanvasEngine
Use this skill first for ANY PixiJS v8 task; it routes to the right specialized skill for the job.
Get naga WGSL validation working in a repo — installs the naga/jq toolchain, a PostToolUse hook that compiles every .wgsl on write, and a batch validate-shaders script, so shader checking then…
$ npx skills add oframe/ogpu --skill naga-setup -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install oframe/ogpu naga-setup --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/oframe/ogpu.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/naga-setup .claude/skills/naga-setup && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "naga-setup" agent skill from https://github.com/oframe/ogpu/tree/main/.claude/skills/naga-setup into .claude/skills/naga-setup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "naga-setup", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/oframe/ogpu/tree/main/.claude/skills/naga-setupType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add oframe/ogpu --skill naga-setup -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install oframe/ogpu naga-setup --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/oframe/ogpu.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/naga-setup .agents/skills/naga-setup && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "naga-setup" agent skill from https://github.com/oframe/ogpu/tree/main/.claude/skills/naga-setup into .agents/skills/naga-setup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "naga-setup", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add oframe/ogpu --skill naga-setup -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install oframe/ogpu naga-setup --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/oframe/ogpu.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/naga-setup .cursor/skills/naga-setup && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "naga-setup" agent skill from https://github.com/oframe/ogpu/tree/main/.claude/skills/naga-setup into .cursor/skills/naga-setup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "naga-setup", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/oframe/ogpu.git --path .claude/skills/naga-setup--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add oframe/ogpu --skill naga-setup -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install oframe/ogpu naga-setup --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/oframe/ogpu.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/naga-setup .gemini/skills/naga-setup && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "naga-setup" agent skill from https://github.com/oframe/ogpu/tree/main/.claude/skills/naga-setup into .gemini/skills/naga-setup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "naga-setup", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install oframe/ogpu naga-setupInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add oframe/ogpu --skill naga-setup -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/oframe/ogpu.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/naga-setup .github/skills/naga-setup && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "naga-setup" agent skill from https://github.com/oframe/ogpu/tree/main/.claude/skills/naga-setup into .github/skills/naga-setup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "naga-setup", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add oframe/ogpu --skill naga-setup -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install oframe/ogpu naga-setup --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/oframe/ogpu.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/naga-setup .opencode/skills/naga-setup && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "naga-setup" agent skill from https://github.com/oframe/ogpu/tree/main/.claude/skills/naga-setup into .opencode/skills/naga-setup/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "naga-setup", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
naga-setupGet naga WGSL validation working in a repo — installs the naga/jq toolchain, a PostToolUse hook that compiles every .wgsl on write, and a batch validate-shaders script, so shader checking then…
Naga Setup is an agent skill from oframe/ogpu. Get naga WGSL validation working in a repo — installs the naga/jq toolchain, a PostToolUse hook that compiles every .wgsl on write, and a batch validate-shaders script, so shader checking then happens automatically with no skill involved. Use for the setup act: "set up naga here", "add the shader validation hook", "wire up WGSL checking in my new repo", "port my naga setup over", scaffolding a fresh WebGPU project — and also on a fresh clone of a repo that already ships the hook, since the config arrives with the…
Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including assets.
It sits in Game Development, covering Shaders and Project scaffolding. The repository describes itself as: Minimal WebGPU Library. The licence is Unlicense.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 65e0a1a. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships script files (JavaScript), which the agent can run.
Shell commands in SKILL.md call:
jqbrewnodecargogitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Naga Setup loads about 1.9k tokens when it runs. Until then it costs about 179 tokens; SKILL.md has 914 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from oframe/ogpu at commit 65e0a1a, republished under its Unlicense licence (© oframe). 914 words, ~1,896 tokens.
.claude/skills/naga-setup/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Wire a repo so every WGSL edit is compiled by naga immediately, and the whole
shader tree can be checked in one command. WGSL errors otherwise only surface in
the browser console after a reload — this collapses that loop to zero.
A working setup is four artifacts, and they arrive by different routes:
| Artifact | Travels with a git clone? | |
|---|---|---|
| Repo config | .claude/settings.json hook — runs naga after each Edit/Write of a .wgsl, exits 2 on failure so the compiler error blocks and gets fixed in the same turn | yes |
scripts/validate-shaders.mjs + npm entry — batch check for CI or a refactor that touched many shaders; the hook only sees files an agent writes, the script sees all of them | yes | |
| Local toolchain | naga binary | no |
jq binary | no |
So a fresh clone of an already-wired repo still has half a setup: a hook that
fires and does nothing, because naga isn't on the machine. That's why step 1 is
the toolchain and not the config. Check each artifact, install whichever are
missing, and when all four are present say so and stop — re-adding the hook just
duplicates it.
naga --version
jq --versionMissing naga makes everything else inert, so fix it first — and offer to run the
install rather than just quoting it, since on a fresh clone this is usually the
only gap:
brew install naga-cli # macOS / Linux — NOT `brew install naga`, that formula
# is a Snake game and collides on the same binary name
cargo install naga-cli # any platform with RustIf naga --version succeeds but prints something that isn't a wgpu version
string, that's the Snake game — people hit this often enough to be worth checking
rather than assuming a zero exit means the compiler.
jq reads the tool payload for the hook. Usually present on macOS; brew install jq
otherwise.
Already a naga entry under hooks.PostToolUse in the repo's .claude/settings.json?
Leave it and move on.
Otherwise add it there — the repo's file, not the user's global one, so it travels with the repo and doesn't fire in unrelated projects:
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write|MultiEdit",
"hooks": [
{
"type": "command",
"command": "f=$(jq -r '.tool_input.file_path // empty'); case \"$f\" in *.wgsl) out=$(naga \"$f\" 2>&1) || { echo \"WGSL validation failed: $f\" >&2; echo \"$out\" >&2; exit 2; };; esac",
"statusMessage": "Validating WGSL with naga"
}
]
}
]
}
}Merge, don't clobber. If .claude/settings.json exists, read it and append to
the existing hooks.PostToolUse array — overwriting someone's settings to add a
shader check is a bad trade.
Notes in case the command needs adapting:
jq -r '.tool_input.file_path' pulls the path out. It's absolute, so the hook works regardless of cwd.case guard means non-WGSL edits cost one shell spawn and exit silently — cheap enough to leave unconditional.Already a scripts/validate-shaders.mjs? Leave it — a repo's copy may have been
adapted, and overwriting it with a near-identical file is a bad trade.
Otherwise copy assets/validate-shaders.mjs into the repo's scripts/ (create it
if needed). It walks the whole tree from the root, skipping generated and vendored
directories — deliberately not just src/, since shaders also live in examples/,
demos/, sandbox/, and a batch check that quietly misses most of them is worse
than no batch check. Widen its SKIP set if the repo has a big generated directory
the default misses. It also takes explicit paths:
node scripts/validate-shaders.mjs path/to/one.wgsl.
Exit codes: 0 all valid, 1 a shader failed, 2 naga not installed.
If the repo has a package.json, add:
"scripts": { "validate:shaders": "node scripts/validate-shaders.mjs" }Not a node project? Leave the script without the npm entry — it only needs a node
binary. No node at all? Install the hook alone and say the batch command isn't
available.
In a monorepo, the script's scope is the parent of wherever it sits:
packages/renderer/scripts/ validates that package, the repo root validates all of
them. Ask which the user wants — per-package when one package has shaders, root
when several do — and put the npm entry in whichever package.json sits beside it.
The hook needs no such choice; one at the repo root covers every package.
Don't declare victory on a config write. Prove both halves:
node scripts/validate-shaders.mjs # expect ok/FAIL lines for the repo's real shadersThen test the hook by writing a deliberately broken shader — let x: f32 = ; —
with the Write tool. Use a temp path outside the repo (/tmp/naga-hook-check.wgsl);
the hook matches on the tool, not the location, so it fires just the same and
nothing lands in the user's tree. Expect it to block with naga's parse error.
Delete the file after.
Hook silent? Usual causes, in order: settings not loaded yet (hooks load at session
start — restart the session or run /hooks to reload), jq missing, or naga not
on the PATH the hook's shell sees.
If there's an AGENTS.md / CLAUDE.md with a commands section, add a line so
future agents know the check exists and can use it instead of a browser round-trip:
- `npm run validate:shaders` — validate every `**/*.wgsl` with `naga`. Install via
`brew install naga-cli` (not `brew install naga`). Single file:
`node scripts/validate-shaders.mjs <file>`.naga compiles one WGSL file standalone. That covers syntax, types, and bad
builtins — the bulk of shader mistakes — but it knows nothing about the host side:
bind group layouts, vertex buffer formats, uniform struct field names the JS
expects. A shader can validate clean and still render nothing. Say so plainly if
the user seems to expect a correctness guarantee.
The standalone part also cuts the other way: a .wgsl file that's a fragment
meant to be concatenated into a larger shader will fail validation on its own,
which is a false alarm rather than a bug. Repos with a shader-chunk system either
want those paths in the script's SKIP set or want the hook narrowed — worth
raising before the user concludes the setup is broken.
© oframe, Unlicense. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (assets) in .claude/skills/naga-setup of oframe/ogpu.
Open the folder on GitHubat commit 65e0a1a
Naga Setup next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Naga Setup this skilloframe/ogpu | 151 | — | ~1.9k | Automated safety check: Pass | Unlicense | |
| PixijsRSamaium/CanvasEngine | 401 | 2 repos | ~1.6k | Automated safety check: Pass | MIT | |
| New ExperimentTresjs/tres | 3.8k | — | ~782 | Automated safety check: Pass | MIT | |
| Assets Shader List AllIvanMurzak/Unity-MCP | 4.4k | — | ~435 | Automated safety check: Pass | Apache-2.0 | |
| Handle Sdr Tonemap Lutclshortfuse/renodx | 4.4k | — | ~7.3k | Automated safety check: Pass | MIT | |
| Unreal Material and VFX Workflowflopperam/unreal-engine-mcp | 1.1k | — | ~927 | Automated safety check: Pass | None |
RSamaium/CanvasEngine
Use this skill first for ANY PixiJS v8 task; it routes to the right specialized skill for the job.
Tresjs/tres
Create a new experiment in TresJS Lab with all necessary files
IvanMurzak/Unity-MCP
List all shaders available in the project assets and packages, sorted by name.
clshortfuse/renodx
RenoDX HLSL/Slang shader workflow for proven shader-side SDR tonemap, hard clip, LUT, color grade, and HDR bridge changes.
flopperam/unreal-engine-mcp
Walks an Unreal Engine MCP agent through building materials, Niagara particle systems, Chaos destruction, and curve assets with inspect-then-edit steps.
BANANASJIM/rdc-cli
A skill your agent uses when working with RenderDoc capture files (.rdc), analyzing GPU frames, tracing shaders, inspecting draw calls, or running CI assertions against GPU captures.
oframe/ogpu
Scaffold a new simple WGSL shader for the OGPU engine, wired for a RenderPipeline + Mesh.
oframe/ogpu
Scaffold a new OGPU example/app from scratch — a Renderer + Camera + Orbit + update loop and a single spinning cube wired through the vanilla Box primitive - RenderPipeline - Mesh setup.
oframe/ogpu
Ground any answer about the webgpu-utils library (greggman/webgpu-utils) in its actual API before responding.
oframe/ogpu
Ground any answer about the WebGPU platform itself — browser support/compatibility, feature availability, limits, what's shipping or behind a flag, and exact spec behavior — in the live Chrome…
oframe/ogpu
Fold PBR/IBL shading into a RenderPipeline in the OGPU engine.
oframe/ogpu
Fold real-time shadow mapping into an existing RenderPipeline/shader in the OGPU engine.
Categories
Get naga WGSL validation working in a repo — installs the naga/jq toolchain, a PostToolUse hook that compiles every .wgsl on write, and a batch validate-shaders script, so shader checking then…. Naga Setup is an agent skill from oframe/ogpu.wgsl on write, and a batch validate-shaders script, so shader checking then happens automatically with no skill involved.
Naga Setup fits situations like: the setup act: set up naga here; add the shader validation hook; wire up WGSL checking in my new repo; port my naga setup over.
Run `npx skills add oframe/ogpu --skill naga-setup -a claude-code`. Or copy the skill folder (.claude/skills/naga-setup in oframe/ogpu) into .claude/skills/naga-setup in your project. Claude Code loads it when a task matches its description.
Run `npx skills add oframe/ogpu --skill naga-setup -a codex`. Or copy the skill folder (.claude/skills/naga-setup in oframe/ogpu) into .agents/skills/naga-setup in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add oframe/ogpu --skill naga-setup -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/naga-setup, .gemini/skills/naga-setup, .github/skills/naga-setup and .opencode/skills/naga-setup in your project.
Going by SKILL.md and its folder, Naga Setup needs JavaScript for the scripts in its folder and the command-line tools its instructions call (jq, brew, node, cargo and git). Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Naga Setup is published under the Unlicense licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.9k tokens (SKILL.md is roughly 7.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Naga Setup: Pixijs (RSamaium/CanvasEngine, 401 stars), New Experiment (Tresjs/tres, 3.8k stars), Assets Shader List All (IvanMurzak/Unity-MCP, 4.4k stars) and Handle Sdr Tonemap Lut (clshortfuse/renodx, 4.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
oframe (a GitHub organization) maintains it in oframe/ogpu, which has 151 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on September 26, 2026.
Source: oframe/ogpu on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.