Install the "pixijs-scene-particle-container" agent skill from https://github.com/netaart/cohub/tree/main/.agents/skills/pixijs-scene-particle-container into .claude/skills/pixijs-scene-particle-container/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pixijs-scene-particle-container", 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.
Type 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.
skills CLI
$ npx skills add netaart/cohub --skill pixijs-scene-particle-container -a codex
Project install goes to .agents/skills/; add -g for ~/.codex/skills/.
Install the "pixijs-scene-particle-container" agent skill from https://github.com/netaart/cohub/tree/main/.agents/skills/pixijs-scene-particle-container into .agents/skills/pixijs-scene-particle-container/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pixijs-scene-particle-container", 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.
skills CLI
$ npx skills add netaart/cohub --skill pixijs-scene-particle-container -a cursor
Project install goes to .agents/skills/; add -g for ~/.cursor/skills/.
Install the "pixijs-scene-particle-container" agent skill from https://github.com/netaart/cohub/tree/main/.agents/skills/pixijs-scene-particle-container into .cursor/skills/pixijs-scene-particle-container/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pixijs-scene-particle-container", 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.
--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
skills CLI
$ npx skills add netaart/cohub --skill pixijs-scene-particle-container -a gemini-cli
Project install goes to .agents/skills/; add -g for ~/.gemini/skills/.
Install the "pixijs-scene-particle-container" agent skill from https://github.com/netaart/cohub/tree/main/.agents/skills/pixijs-scene-particle-container into .gemini/skills/pixijs-scene-particle-container/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pixijs-scene-particle-container", 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.
Installs 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).
skills CLI
$ npx skills add netaart/cohub --skill pixijs-scene-particle-container -a github-copilot
Project install goes to .agents/skills/; add -g for ~/.copilot/skills/.
Install the "pixijs-scene-particle-container" agent skill from https://github.com/netaart/cohub/tree/main/.agents/skills/pixijs-scene-particle-container into .github/skills/pixijs-scene-particle-container/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pixijs-scene-particle-container", 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.
skills CLI
$ npx skills add netaart/cohub --skill pixijs-scene-particle-container -a opencode
OpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
Install the "pixijs-scene-particle-container" agent skill from https://github.com/netaart/cohub/tree/main/.agents/skills/pixijs-scene-particle-container into .opencode/skills/pixijs-scene-particle-container/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pixijs-scene-particle-container", 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.
Facts
Skill name
pixijs-scene-particle-container
GitHub stars
572
Used in
1 other repo
Token cost
~3.9k tokens
SKILL.md length
1,179 words
Files
1
Skills in repo
30
Repo updated
First seen
Licence
MIT
At a glance
A skill your agent uses when rendering thousands of lightweight sprites in PixiJS v8.
Rendering thousands of lightweight sprites in PixiJS v8
SKILL.md covers Quick Start, Constructor options, Core Patterns and Common Mistakes, plus 1 more section
Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md
: ParticleContainer
What it does
Pixijs Scene Particle Container is an agent skill from netaart/cohub. Use this skill when rendering thousands of lightweight sprites in PixiJS v8. Covers ParticleContainer with Particle instances, addParticle/removeParticle, particleChildren array, dynamicProperties (vertex, position, rotation, uvs, color), boundsArea, roundPixels, update. Triggers on: ParticleContainer, Particle, IParticle, addParticle, particleChildren, dynamicProperties, boundsArea, particle effects, constructor options, ParticleContainerOptions, ParticleOptions.
Its SKILL.md is about 3.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
The repository describes itself as: A living space where people and agents create, play, and build together. The licence is MIT.
When your agent uses it
Rendering thousands of lightweight sprites in PixiJS v8
: ParticleContainer
ParticleChildren
DynamicProperties
Example prompts
“/pixijs-scene-particle-container”
What it can do on your machine
Read from SKILL.md and the folder at commit 40b557f. It shows what the files ask for, not the result of running them.
Tool permissions
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.
Runs code
No scripts in the folder and no shell commands in SKILL.md (its code samples are typescript).
From the folder's file list and the shell code blocks in SKILL.md.
Network
Links to these hosts (documentation or services it may open):
pixijs.download
From URLs in SKILL.md, links to its own repository left out.
Credentials
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Context cost
Pixijs Scene Particle Container loads about 3.9k tokens when it runs. Until then it costs about 125 tokens; SKILL.md has 1,179 words of instructions outside code blocks.
Always· name and description, kept in context so the agent knows when to use it
~125
When it runs· the whole SKILL.md, loaded when a task matches
~3.9k
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.
Safety
Auto-check passed
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.
Download SKILL.mdSave it as .claude/skills/pixijs-scene-particle-container/SKILL.md (or your agent's skills folder).
name
pixijs-scene-particle-container
description
Use this skill when rendering thousands of lightweight sprites in PixiJS v8. Covers ParticleContainer with Particle instances, addParticle/removeParticle, particleChildren array, dynamicProperties (vertex, position, rotation, uvs, color), boundsArea, roundPixels, update. Triggers on: ParticleContainer, Particle, IParticle, addParticle, particleChildren, dynamicProperties, boundsArea, particle effects, constructor options, ParticleContainerOptions, ParticleOptions.
license
MIT
disable-model-invocation
true
ParticleContainer is a specialized container for rendering hundreds to tens of thousands of lightweight sprites in a single draw call. Use it for particle effects, bullet patterns, or any case where you need a large number of similar-looking objects with minimal per-object overhead. Particles share a single base texture and have a restricted transform set; they are not full Container children.
Assumes familiarity with pixijs-scene-core-concepts. ParticleContainer is a special leaf in a different sense: it contains Particle instances in its own particleChildren array and rejects normal PixiJS children. Use addParticle, not addChild, and wrap the whole ParticleContainer in a Container if you need to group it with other scene objects.
The Particle API is new in v8 but is stable for production use.
Quick Start
ts
const texture = await Assets.load("particle.png");
const container = new ParticleContainer({
texture,
boundsArea: new Rectangle(0, 0, app.screen.width, app.screen.height),
dynamicProperties: {
position: true,
rotation: false,
color: false,
},
});
for (let i = 0; i < 10000; i++) {
container.addParticle(
new Particle({
texture,
x: Math.random() * app.screen.width,
y: Math.random() * app.screen.height,
}),
);
}
app.stage.addChild(container);
Related skills:pixijs-scene-core-concepts (scene graph basics), pixijs-scene-sprite (when you need full features per object), pixijs-assets (shared textures, atlases), pixijs-performance (batching, texture optimization), pixijs-scene-container (wrap with other display objects).
Constructor options
ParticleContainerOptions
All Container options (position, scale, tint, label, filters, zIndex, etc.) are also valid here — see skills/pixijs-scene-core-concepts/references/constructor-options.md. Note that children is omitted: use particles instead.
Option
Type
Default
Description
texture
Texture
null
Shared base texture for all particles. If omitted, the container falls back to the texture of the first particle added; every particle must share the same base texture source.
particles
T[]
[]
Initial array of Particle (or IParticle) instances. Equivalent to calling addParticle for each, but skips per-call view updates.
Flags for which particle attributes re-upload to the GPU every frame. Only position is dynamic by default; mark what you animate, leave the rest static for speed.
roundPixels
boolean
false
Rounds particle positions to the nearest pixel. Produces crisper rendering for pixel-art styles at the cost of smooth sub-pixel motion.
shader
Shader
default particle shader
Replaces the default particle shader. The custom shader must declare aPosition, aUV, aColor, plus any dynamic-only attributes enabled via dynamicProperties.
boundsArea is inherited from Container but is effectively required on ParticleContainer: the container returns empty bounds (0, 0, 0, 0) by default for performance, so without boundsArea it is culled as invisible when culling is active and containsPoint always misses.
ParticleOptions
Particle is a lightweight struct, not a Container subclass — none of the ContainerOptions fields apply. The full option list:
Option
Type
Default
Description
texture
Texture
—
Required. Texture used to render this particle. All particles in the same ParticleContainer must share the same base texture source.
x
number
0
X position in the container's local space.
y
number
0
Y position in the container's local space.
scaleX
number
1
Horizontal scale factor.
scaleY
number
1
Vertical scale factor.
anchorX
number
0
Horizontal anchor in 0–1 range; 0 is left, 0.5 is center, 1 is right.
anchorY
number
0
Vertical anchor in 0–1 range; 0 is top, 0.5 is center, 1 is bottom.
rotation
number
0
Rotation in radians.
tint
ColorSource
0xffffff
Tint color as hex number or CSS color string. Combined with alpha into the internal color field.
alpha
number
1
Transparency (0–1). Values outside the range are clamped. Combined with tint into the internal color field.
The constructor also accepts a bare Texture as its sole argument (new Particle(texture)), which is shorthand for new Particle({ texture }) using the defaults above.
Particle.defaultOptions is a static object you can reassign to change defaults globally; see the "Particle creation" section below.
Particle is a lightweight struct with flat numeric fields: x, y, scaleX, scaleY, anchorX, anchorY, rotation, color, texture. It also exposes tint (hex/CSS color) and alpha (0-1) as setters that combine into the internal color field. No transform hierarchy, no events, no filters.
You can pass a Texture directly as the sole argument: new Particle(texture).
Override Particle.defaultOptions to change defaults globally:
Passing particles in the constructor is equivalent to creating the container empty and calling addParticle for each one, but avoids per-call view updates.
dynamicProperties controls which particle attributes re-upload to the GPU every frame. The defaults on ParticleContainer.defaultOptions.dynamicProperties are:
You only need to override the properties you are animating; the rest inherit the defaults (position dynamic, everything else static). Five properties in total:
addParticle, addParticleAt, removeParticle, removeParticleAt, and removeParticles all trigger view updates per call. For large batch operations, direct array manipulation plus a single update() is faster.
Texture and shader options
texture in ParticleContainerOptions is optional. If omitted, the container falls back to the texture of the first particle added; every subsequent particle must share the same base texture source. Set it explicitly when you want to declare the atlas up front, or when the first particle might change mid-run:
ts
const container = new ParticleContainer({ texture });
shader lets you replace the default particle shader with any Shader instance. The custom shader must declare the attributes the particle pipe uploads (aPosition, aUV, aColor, plus any dynamic-only attributes enabled via dynamicProperties). Use this for custom blending math, distance-field sprites, or non-standard effects:
ts
const container = new ParticleContainer({ texture, shader: myCustomShader });
Limitations
ParticleContainer intentionally sacrifices features for speed:
No filters, masks, or per-particle blend modes. Blend modes apply at the container level: set blendMode on the ParticleContainer or let it inherit from a parent Container (the default "inherit" resolves to the ancestor's blend mode, like Sprite and Mesh). The whole particle batch shares one blend mode.
No nested children on particles.
No automatic bounds calculation.
All particles must share the same base texture source (atlases work; multiple unrelated textures do not).
Custom shaders are supported via the shader option.
Container method migration
ParticleContainer uses a separate child management API optimized for GPU buffer updates. The standard Container child methods throw when called on a ParticleContainer.
Standard Container method
ParticleContainer equivalent
addChild(child)
addParticle(particle)
removeChild(child)
removeParticle(particle)
addChildAt(child, index)
addParticleAt(particle, index)
removeChildAt(index)
removeParticleAt(index)
removeChildren(begin, end)
removeParticles(begin, end)
getChildAt(index)
Access container.particleChildren[index] directly
swapChildren()
Not available
reparentChild()
Not available
Common Mistakes
[CRITICAL] Adding Sprites to ParticleContainer
Wrong:
ts
const container = new ParticleContainer();
const sprite = new Sprite(texture);
container.addChild(sprite);
Correct:
ts
const container = new ParticleContainer();
const particle = new Particle(texture);
container.addParticle(particle);
ParticleContainer does not accept Sprite children. addChild throws an error. Particles must be Particle instances (or any object implementing IParticle), added via addParticle. This is a complete rework from v7, where ParticleContainer accepted Sprite children.
[HIGH] Not setting boundsArea on ParticleContainer
Wrong:
ts
const container = new ParticleContainer();
// bounds is always (0, 0, 0, 0) — culling and hit testing fail
Correct:
ts
const container = new ParticleContainer({
boundsArea: new Rectangle(0, 0, 800, 600),
});
ParticleContainer returns empty bounds (0, 0, 0, 0) by default for performance. Without boundsArea, the container is culled as invisible when culling is active, and containsPoint always misses. Set boundsArea to the region your particles occupy.
Particles are stored in the particleChildren array, not children. The standard Container.children array is empty on a ParticleContainer. All particle enumeration, counting, and manipulation must use particleChildren plus the *Particle methods.
[MEDIUM] Do not use ParticleContainer as a normal container
ParticleContainer contains particles, not display objects. If you need to group a particle system with a background sprite or UI overlay, wrap the ParticleContainer itself inside a plain Container:
ts
const world = new Container();
world.addChild(backgroundSprite, particleContainer, uiLayer);
We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in netaart/cohub, which our catalogue first saw on October 7, 2026.
Pixijs Scene Particle Container 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.
Pixijs Scene Particle Container compared with similar skills
Skill
Stars
Used in
Tokens
Auto-check
Licence
Repo updated
Pixijs Scene Particle Container this skillnetaart/cohub
Build a PixiJS v8 render layer: create the async Application, load textures with Assets, compose the scene graph with Container and Sprite, drive the ticker loop, wire pointer events, and group…
Build, run, and manage OCI/Linux containers as lightweight per-container VMs on Apple-silicon macOS using Apple's open-source container CLI, no Docker daemon required.
Harden Docker/container images and runtime deployments with secure base images, non-root users, CVE scanning, SBOM/signing, seccomp/AppArmor, and Kubernetes pod security controls.
A skill your agent uses when understanding how PixiJS v8 renders frames: the systems-and-pipes renderer, the render loop, and how the library adapts to different environments.
572 GitHub stars~1.7k tokensUpdated today
Auto-check passed
Questions about Pixijs Scene Particle Container
What does Pixijs Scene Particle Container do?
A skill your agent uses when rendering thousands of lightweight sprites in PixiJS v8. Pixijs Scene Particle Container is an agent skill from netaart/cohub. Use this skill when rendering thousands of lightweight sprites in PixiJS v8.
When should I use Pixijs Scene Particle Container?
Pixijs Scene Particle Container fits situations like: rendering thousands of lightweight sprites in PixiJS v8; : ParticleContainer; particleChildren; dynamicProperties.
How do I install Pixijs Scene Particle Container in Claude Code?
Run `npx skills add netaart/cohub --skill pixijs-scene-particle-container -a claude-code`. Or copy the skill folder (.agents/skills/pixijs-scene-particle-container in netaart/cohub) into .claude/skills/pixijs-scene-particle-container in your project. Claude Code loads it when a task matches its description.
How do I install Pixijs Scene Particle Container in Codex?
Run `npx skills add netaart/cohub --skill pixijs-scene-particle-container -a codex`. Or copy the skill folder (.agents/skills/pixijs-scene-particle-container in netaart/cohub) into .agents/skills/pixijs-scene-particle-container in your project. Codex loads it when a task matches its description.
Can I use Pixijs Scene Particle Container in Cursor, Gemini CLI or GitHub Copilot?
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add netaart/cohub --skill pixijs-scene-particle-container -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pixijs-scene-particle-container, .gemini/skills/pixijs-scene-particle-container, .github/skills/pixijs-scene-particle-container and .opencode/skills/pixijs-scene-particle-container in your project.
What does Pixijs Scene Particle Container need to run?
SKILL.md names no scripts, command-line tools or credentials: Pixijs Scene Particle Container is instructions for the agent only.
Does Pixijs Scene Particle Container access the network?
SKILL.md names 1 domain. As links in the text: pixijs.download. This is read from the text; nothing was executed.
Is Pixijs Scene Particle Container safe to install?
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.
What licence does Pixijs Scene Particle Container use?
Pixijs Scene Particle Container is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
How many tokens does Pixijs Scene Particle Container use?
About 3.9k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
What are the alternatives to Pixijs Scene Particle Container?
Skills that share tags, products or a category with Pixijs Scene Particle Container: Pixijs Rendering (gamedev-skills/awesome-gamedev-agent-skills, 1.4k stars), Apple Container (sickn33/agentic-awesome-skills, 47k stars), Render Blocking (thedaviddias/Front-End-Checklist, 74k stars) and Container Security Hardening (sickn33/agentic-awesome-skills, 47k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Who maintains Pixijs Scene Particle Container?
netaart (a GitHub organization) maintains it in netaart/cohub, which has 572 GitHub stars. The repository holds 30 skills in this directory. The repository was last updated on October 11, 2026.
Source: netaart/cohub on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.