wave8-ecb-system-group-mismatch

Match ECB system singletons to enclosing ECS system groups.

6|Updated Apr 2, 2026
One-click install
npx skills add https://github.com/dyCuong03/unity-agent-team --skill wave8-ecb-system-group-mismatch
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: wave8-ecb-system-group-mismatch
Source: https://github.com/dyCuong03/unity-agent-team/tree/main/.claude/skills/unity-dots/wave8-ecb-system-group-mismatch
Command: npx skills add https://github.com/dyCuong03/unity-agent-team --skill wave8-ecb-system-group-mismatch

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This Skill helps you identify and fix one-frame-late or mis-timed structural change bugs caused by creating an EntityCommandBuffer from the wrong ECS system group for the code that enqueues commands.

Core Features & Use Cases

  • Correct ECB system selection: Guides you to match the enclosing system group (e.g., FixedStep vs Simulation) with the corresponding Begin/End ECB system singleton.
  • Debugging structural-change timing issues: Targets issues like components appearing/disappearing unexpectedly and structural commands executing at the wrong frame boundary.
  • Avoiding common ECS ECB anti-patterns: Prevents mistakes such as always using EndSimulation ECB in FixedStep systems or mixing ECB Begin/End systems within a system.

Use case example: When a system inside FixedStepSimulationSystemGroup spawns or destroys entities using an ECB but the effects appear one rendered frame late, this Skill helps you switch to EndFixedStepSimulationEntityCommandBufferSystem so the commands play back at the correct fixed-step boundary.

Quick Start

Ask the AI to review your ECS system’s UpdateInGroup attribute and your ECBSystem singleton choice, then explain which ECB Begin/End system to use and why for the current enclosing system group.

Frequently Asked Questions about wave8-ecb-system-group-mismatch

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
Why do my Unity DOTS structural changes execute one frame late inside FixedStepSimulationSystemGroup?

Your EntityCommandBufferSystem singleton must match the enclosing system group exactly. Using EndSimulationEntityCommandBufferSystem inside FixedStepSimulationSystemGroup causes structural commands to play back at the wrong frame boundary, creating a one-frame delay.

How do I choose the right EntityCommandBufferSystem for my ECS system group?

Match the ECB system singleton to your system's UpdateInGroup attribute. Systems inside FixedStepSimulationSystemGroup require EndFixedStepSimulationEntityCommandBufferSystem, while Simulation systems need EndSimulationEntityCommandBufferSystem, ensuring playback aligns with the correct frame boundary.

What is the correct ECB playback timing for Unity DOTS FixedStep systems?

Correct ECB playback timing for Unity DOTS FixedStep systems occurs when you enqueue commands into EndFixedStepSimulationEntityCommandBufferSystem. This ensures structural changes execute exactly at the fixed-step boundary rather than the next rendered frame.

Can I use EndSimulationEntityCommandBufferSystem inside a FixedStep system in Unity DOTS?

No, using EndSimulationEntityCommandBufferSystem inside a FixedStep system is an ECB anti-pattern. It causes structural changes to execute at the wrong frame boundary, delaying effects by one rendered frame due to the system group mismatch.

How to debug ECS component changes happening at the wrong frame boundary?

Debug ECS component frame boundary issues by reviewing your UpdateInGroup attribute and ECB system singleton. Fixing Begin or End mismatches and avoiding cross-world ECB usage ensures your structural commands execute at the correct frame-of-effect.

What are common ECB anti-patterns when reviewing Unity DOTS code?

Common ECB anti-patterns include always using EndSimulation ECB in FixedStep systems, mixing Begin and End ECB systems within a single system, and cross-world ECB usage. These mistakes cause structural changes to execute at incorrect frame boundaries.