Expert blueprint for GPU particle systems (explosions, magic effects, weather, trails) using GPUParticles2D/3D, ParticleProcessMaterial, gradients, sub-emitters, and custom shaders. Use when creating VFX, environmental effects, or visual feedback. Keywords GPUParticles2D, ParticleProcessMaterial, emission_shape, color_ramp, sub_emitter, one_shot.
npx skills add https://github.com/thedivergentai/GD-Agentic-Skills --skill godot-particles
GPU-accelerated VFX with material-driven emission, recyclers, and MultiMesh swarms — not beginner effect recipes.
amount_ratio to optimize performance dynamically — It does not save GPU memory or improve processing; the full amount is still allocated. Change the amount property directly instead.preprocess to extremely high values — High values (e.g., 60s) will force the GPU to simulate thousands of frames in a single render tick, potentially causing an immediate GPU crash.visibility_aabb unconfigured for large systems — Incorrect AABBs cause frustum culling errors (particles popping out) and break LOD calculations. Generate AABBs using the editor toolbar.finished + restart(), or queue_free() only on truly disposable instances.local_coords = true for trails — Smoke or fire left behind by a projectile MUST use global space (local_coords = false) or the trail will follow the projectile like a stiff stick.CPUParticles2D with fract_delta = true for high-speed 2D movement.emitting = true immediately after a finished signal — Async GPU state delays can cause the restart to fail. Use the restart() method instead.EMISSION_SHAPE_POINT for volumentric explosions — Spawning all particles at a single point looks flat. Use a Sphere or Box shape for natural 3D spread.emitting = false initially for one-shot VFX — This prevents unwanted emission at the scene origin before you've had a chance to position the node via script.> MANDATORY for the chosen row. Do NOT Load unused particle scripts for a single effect.
| Goal | Prefer | Script |
|------|--------|--------|
| Burst / one-shot VFX (hit, muzzle, explode) | GPUParticles* + recycle | MANDATORY particle_burst_emitter.gd + smart_oneshot_recycler.gd |
| Trails behind movers | local_coords = false | MANDATORY local_vs_global_coords.gd |
| Weather (rain/snow) heightfield | camera-snapped collision | MANDATORY screenspace_weather_heightfield.gd |
| Million-entity swarms | MultiMesh, not GPUParticles | MANDATORY massive_swarm_multimesh.gd |
| Custom GPU motion / userdata | process material shader | custom_particle_logic.gdshader, dynamic_userdata_modulation.gd |
| Impact sub-emitters | collision subparticle | sub_emitter_impact.gdshader |
| Attractors without global cost | cull_mask isolation | particle_attractor_opt.gd |
| Distant env VFX LOD | visibility_range | particle_lod_manager.gd |
| 2D physics-parented trails stutter | CPUParticles2D + fract_delta | MANDATORY 2d_physics_interpolation_fix.gd |
| Shader param orchestration | material helpers | vfx_shader_manager.gd |
GPUParticles vs CPUParticles vs MultiMesh
Golden path for one-shot lifecycle: finished + restart() — never Timer-based free.
One-shot bursts wired to the recycler.
Aura vs trail coordinate space + teleport restart().
Global weather via camera-snapped heightfield collision.
Million-entity path with set_buffer_interpolated().
Procedural GPU particle motion with CUSTOM/USERDATA.
Collision-driven emit_subparticle() impacts.
Attractor cull_mask isolation.
Runtime USERDATA without breaking GPU batches.
visibility_range hierarchy for env VFX.
CPUParticles2D + fract_delta for physics-parented 2D trails.
Custom shader integration helpers for particle materials.
emitting = false at scene origin → place → restart() (smart_oneshot_recycler.gd).local_coords = false or the trail sticks to the projectile.> Progressive disclosure: open Official Documentation links only when researching a specific API; load Related Skills when routing to a peer domain — do not preload the whole lattice.
local_coords = false).shader_type particles, CUSTOM/USERDATA, COLLIDED/emit_subparticle(), and keep_data process loops.finished handlers, and safe restart()/await patterns used by pools and burst spawners.shader_type particles process logic.finished and one-shot connection hygiene for pooled recyclers that must not leak ghost callbacks.A set of resources to help me write all kinds of internal communications, using the formats that my company likes to use. Claude should use this skill whenever asked to write some sort of internal communications (status reports, leadership updates, 3P updates, company newsletters, FAQs, incident reports, project updates, etc.).
Extracts and analyzes competitors' ads from ad libraries (Facebook, LinkedIn, etc.) to understand what messaging, problems, and creative approaches are working. Helps inspire and improve your own ad campaigns.
Identifies high-quality leads for your product or service by analyzing your business, searching for target companies, and providing actionable contact strategies. Perfect for sales, business development, and marketing professionals.
Analyzes your recent Claude Code chat history to identify coding patterns, development gaps, and areas for improvement, curates relevant learning resources from HackerNews, and automatically sends a personalized growth report to your Slack DMs.
Complete App Store Optimization (ASO) toolkit for researching, optimizing, and tracking mobile app performance on Apple App Store and Google Play Store
NGS analysis toolkit. BAM to bigWig conversion, QC (correlation, PCA, fingerprints), heatmaps/profiles (TSS, peaks), for ChIP-seq, RNA-seq, ATAC-seq visualization.
Materials science toolkit. Crystal structures (CIF, POSCAR), phase diagrams, band structure, DOS, Materials Project integration, format conversion, for computational materials science.
Transforms vague UI ideas into polished, Stitch-optimized prompts. Enhances specificity, adds UI/UX keywords, injects design system context, and structures output for better generation results.
Take thedivergentai/godot-particles from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.