Game Development Coordinator
Use this skill when the hard part is not event topology, command execution flow, or behavior selection, but how one scene or subsystem should coordinate collaboration across a bounded internal surface without turning into a manager soup monster.
This skill is for designing, reviewing, or refactoring a coordinator layer in gameplay, UI, quest, encounter, cutscene, or scene-root flows. Its job is to decide whether a bounded coordinator is justified at all, where the coordination boundary lives, what the outside world may ask of it, what stays hidden behind it, and how to prevent the coordinator from quietly becoming a god object.
If the engine is unspecified, keep the recommendation engine-agnostic first. Only use engine-native guidance when the task explicitly depends on runtime features such as Godot scene-root gateways, bubbled signals, and child-node encapsulation, Unity MonoBehaviour/service/ScriptableObject coordination surfaces, or equivalent framework constraints.
For reusable heuristics covering coordinator fit, mediator-vs-facade tradeoffs, boundary design, public surface discipline, lifecycle rules, and god-object avoidance, see references/coordinator-design-guide.md.
Purpose
This skill is used to:
- determine whether a bounded coordinator is justified at all
- define a clear scene or subsystem coordination boundary
- choose the coordinator shape deliberately
- design a minimal public surface and explicit ownership map
- keep direct calls, events, and commands on the right side of the boundary
- return a structured coordination design or review artifact another agent can implement incrementally
Use this skill when
Invoke this skill for requests such as:
- a scene root, feature root, or subsystem entry point is accumulating ad-hoc coordination logic
- multiple external systems need access to one volatile internal scene or subsystem surface
- a project has growing reference forwarding, node-path lookup, callback tangles, or "just pass it through one more layer" architecture
- a UI, quest, encounter, inventory, vehicle, ship, or cutscene system needs one safe entry point instead of many direct internals references
- the team needs to decide whether a root object should act as a gateway, mediator, or coordinator for a bounded area
- the project already has a scene manager, service object, or orchestrator-like class and needs design cleanup before it becomes the office kitchen junk drawer
- requests that explicitly mention
coordinator, mediator, orchestrator, scene root gateway, subsystem gateway, encounter coordinator, quest flow coordinator, or scene facade
Trigger examples
- "Should this scene root coordinate the inventory and world interactions instead of exposing child nodes everywhere?"
- "This encounter flow has too many direct references between spawner, UI, rewards, and state"
- "Do I need a coordinator here, or would events and commands be cleaner?"
- "Please review this quest manager before it becomes a god object"
Do not use this skill when
Do not use this skill when:
- the hard problem is notification topology, publisher/subscriber ownership, or signal lifecycle; use
game-development-events-and-signals
- the hard problem is request-versus-execution boundaries, action queues, undo/redo, or replay; use
game-development-command-flow
- the hard problem is still choosing FSM, BT, Utility AI, or GOAP; use
game-development-behavior-architecture first
- one direct dependency is already the honest and stable relationship
- the task is only wrapping a third-party API with a simpler interface and does not involve bounded in-game collaboration ownership
- the task is a localized runtime bug investigation rather than coordinator design or review
Pattern
- Primary pattern: Tool Wrapper
- Secondary pattern: Generator
Related skills and routing notes
- Start with
game-development-events-and-signals if the actual pain is notification topology rather than one bounded gateway owning collaboration.
- Start with
game-development-command-flow if the real question is request execution, queuing, or history rather than coordination surface design.
- Pair with
game-development-entity-reference-boundary when the coordinator exists partly to shield callers from volatile child references, handles, or lookup rules.
- Pair with
game-development-state-change-notification when the coordinator must expose meaningful invalidation, bubbled state changes, or change aggregation at the boundary.
- Pair with
game-development-world-state-facts when the coordinator owns or brokers shared observed truth instead of just forwarding calls.
- Hand off to
game-development-behavior-architecture when the coordinator is being asked to own AI or decision structure that should live in a behavior model instead.
Diagnostic checklist
Evaluate these questions before recommending or refining a coordinator design:
| Question |
Healthy sign |
Warning sign |
| Is there a real coordination boundary? |
One scene or subsystem has volatile internals and a stable external seam |
The class is just a renamed utility bag |
| Are multiple collaborators involved? |
Several internal or external participants must collaborate through one authority point |
One honest direct reference would solve it |
| Is ownership explicit? |
You can say what the coordinator owns and what it only forwards |
The coordinator slowly owns everything nearby |
| Is the public surface minimal? |
Only necessary getters, helpers, and signals are exposed |
The coordinator mirrors every child API blindly |
| Is lifecycle safer through a coordinator? |
Refactors, scene churn, or runtime registration become easier to contain |
The coordinator adds ceremony without reducing fragility |
| Is god-object risk manageable? |
The boundary can be scoped, split, or layered if it grows |
"We’ll just put it in the coordinator" keeps winning every argument |
Decision rules
Before recommending a coordinator, ask whether the smaller honest answer is:
- a direct method call between legitimate collaborators
- an events/signals topology if the hard part is who needs to hear about something
- a command-flow design if the hard part is request dispatch or execution timing
- a simpler facade over one subsystem API if collaboration rules are not the real issue
- a behavior architecture decision if the hard part is AI/gameplay decision structure
Reject a coordinator if it mostly centralizes naming, references, and anxiety without clarifying ownership.
Prefer a direct call when
- there is one clear client and one clear callee
- the dependency is stable and honest
- no bounded internal seam needs protection
- inserting a coordinator would mostly rename an existing path
Prefer a bounded coordinator when
- one scene or subsystem should expose a stable public seam while hiding volatile internals
- several collaborators need one authority point for cross-component coordination
- refactors should be absorbed at one boundary instead of breaking many external callers
- the outside world should not know which child nodes, components, or services actually do the work
Prefer events or signals instead when
- the hard part is one-to-many notification topology
- collaborators should remain loosely coupled without a central authority deciding the whole collaboration
- the main surface is subscriptions and payloads, not a bounded gateway
Prefer command flow instead when
- the hard part is request execution, queues, validation, or history
- producers and executors need a stable action contract more than a bounded scene/subsystem gateway
Escalate to split or layered coordinators when
- one coordinator starts mixing unrelated domains such as encounter flow, inventory, quest, UI, and save logic at once
- a public surface keeps growing because the boundary is too broad
- separate sub-coordinators would clarify ownership better than one large root object
Workflow
Follow this sequence every time.
1. Identify the coordination boundary
State which scene, subsystem, or feature boundary the coordinator would own before you name the class.
2. Map inside versus outside collaborators
List which collaborators are internal to the boundary, which are external clients, and who should be allowed to know about whom.
3. Choose the coordinator shape
For the candidate boundary, decide whether the right shape is:
- a scene-root coordinator or gateway
- a subsystem service coordinator
- a ScriptableObject or asset-backed coordination surface
- a small facade-like entry surface with a few coordination rules
- split or layered coordinators instead of one large object
4. Define the public surface
Specify what the coordinator may expose, such as:
- forwarded getters
- helper functions
- bubbled signals or events
- registration hooks
- narrow action entry points
Anything not clearly justified should stay internal.
5. Define ownership and routing rules
Specify:
- what the coordinator owns directly
- what children or collaborators still own themselves
- which calls are forwarded unchanged
- which calls are coordinated across multiple internals
- which flows should stay direct, evented, or command-driven instead
6. Define lifecycle and reference policy
Specify how the coordinator handles:
- child lookup or dependency capture
- registration and unregistration
- scene reloads, enable/disable cycles, or prefab/instance churn
- refactor resilience when internal structure changes
7. Add observability and god-object guards
Useful hooks include:
- public surface inventory tables
- internal ownership maps
- forwarding or routing logs where needed
- growth warnings such as "split when unrelated domains accumulate"
8. Plan the rollout
Migrate incrementally: isolate one boundary, introduce one stable public seam, move one collaboration path behind it, verify that internals are less exposed, and split if the coordinator starts swelling during rollout.
Output contract
Return the result using assets/coordinator-design-brief.md in this section order.
If the best answer is not a coordinator, still use the template and say that explicitly instead of promoting a root object to office manager of the entire game.
Return the result in these sections:
- Coordination boundary
- Why coordinator is justified
- Coordinator shape recommendation
- Public surface design
- Internal ownership map
- Direct vs event vs command split
- Lifecycle and reference policy
- Engine integration notes
- Migration plan
- Verification notes
Keep the section order stable so coordinator recommendations are easy to compare across reviews and refactor passes.
Engine-specific notes
Godot / .NET
- A scene root can act as a gateway to its internals by forwarding narrow getters, helper functions, and bubbled child signals.
- Prefer exported or captured references inside the coordinator over making outside systems walk fragile child paths.
- Keep scene-specific coordination local; do not autoload a scene-bound coordinator just because it has become popular.
- If the coordinator re-emits child signals, keep signal names and payload meaning stable at the boundary.
Unity
- The coordinator may be a
MonoBehaviour, plain C# service, or ScriptableObject coordination surface depending on scene ownership and authoring needs.
- Prefer one clear runtime owner over scattered
MonoBehaviour cross-callback coordination.
- Keep inspector wiring intentional; do not turn serialized references into a hidden dependency spiderweb.
- If using
ScriptableObject coordination surfaces, make registration lifecycle explicit for runtime-created participants.
Generic C# / engine-neutral
- Prefer stable interfaces and explicit ownership maps over letting the coordinator expose every dependency directly.
- Keep the public surface small enough that future subsystem changes stay local.
- Split unrelated coordination responsibilities early instead of waiting for a large-class obituary.
Common pitfalls
- turning the coordinator into a god object that owns every nearby decision
- mirroring every child API instead of exposing a bounded surface
- using a coordinator where one direct dependency is already the honest design
- confusing coordinator boundaries with global event bus design
- confusing coordinator entry points with full command-flow architecture
- mixing gameplay logic, UI logic, save logic, quest logic, and diagnostics in one root object
- autoloading a scene-specific coordinator and accidentally making it global
- hiding ownership problems behind a nicer class name instead of actually clarifying them
Companion files
references/coordinator-design-guide.md — reusable heuristics for choosing coordinator fit, bounding the public surface, separating coordinator vs mediator vs facade vs event bus vs command flow, and avoiding god-object growth
assets/coordinator-design-brief.md — reusable output template for returning the coordinator design or review artifact
Validation
A good result should satisfy all of the following:
- a simpler direct-call or non-coordinator alternative was considered first
- the coordination boundary is explicit
- the public surface and internal ownership map are concrete enough to review
- direct vs event vs command splits are intentional
- lifecycle and refactor-resilience rules are explicit
- the design reduces exposure to volatile internals without becoming a god object
- rollout steps are incremental enough to verify safely
Completion rule
This skill is complete when the agent has:
- decided whether a bounded coordinator is justified at all
- identified the scene/subsystem boundary and collaboration seam
- chosen the coordinator shape and public surface
- defined internal ownership, routing, and lifecycle rules
- separated coordinator concerns from events, commands, and behavior architecture
- returned a concrete migration and verification brief
1---2name: game-development-coordinator3description: Use when a cross-engine gameplay task needs a Layer 2 shared-runtime coordination boundary for brittle reference chains, root-node god scripts, scattered cross-system callbacks, or unclear scene ownership, and the agent must design or review a bounded coordinator layer with an explicit public surface, internal ownership map, forwarding rules, collaboration boundaries, and god-object safeguards.4---56# Game Development Coordinator78Use this skill when the hard part is not event topology, command execution flow, or behavior selection, but **how one scene or subsystem should coordinate collaboration across a bounded internal surface without turning into a manager soup monster**.910This skill is for designing, reviewing, or refactoring a coordinator layer in gameplay, UI, quest, encounter, cutscene, or scene-root flows. Its job is to decide whether a bounded coordinator is justified at all, where the coordination boundary lives, what the outside world may ask of it, what stays hidden behind it, and how to prevent the coordinator from quietly becoming a god object.1112If the engine is unspecified, keep the recommendation engine-agnostic first. Only use engine-native guidance when the task explicitly depends on runtime features such as Godot scene-root gateways, bubbled signals, and child-node encapsulation, Unity `MonoBehaviour`/service/ScriptableObject coordination surfaces, or equivalent framework constraints.1314For reusable heuristics covering coordinator fit, mediator-vs-facade tradeoffs, boundary design, public surface discipline, lifecycle rules, and god-object avoidance, see `references/coordinator-design-guide.md`.1516## Purpose1718This skill is used to:1920- determine whether a bounded coordinator is justified at all21- define a clear scene or subsystem coordination boundary22- choose the coordinator shape deliberately23- design a minimal public surface and explicit ownership map24- keep direct calls, events, and commands on the right side of the boundary25- return a structured coordination design or review artifact another agent can implement incrementally2627## Use this skill when2829Invoke this skill for requests such as:3031- a scene root, feature root, or subsystem entry point is accumulating ad-hoc coordination logic32- multiple external systems need access to one volatile internal scene or subsystem surface33- a project has growing reference forwarding, node-path lookup, callback tangles, or "just pass it through one more layer" architecture34- a UI, quest, encounter, inventory, vehicle, ship, or cutscene system needs one safe entry point instead of many direct internals references35- the team needs to decide whether a root object should act as a gateway, mediator, or coordinator for a bounded area36- the project already has a scene manager, service object, or orchestrator-like class and needs design cleanup before it becomes the office kitchen junk drawer37- requests that explicitly mention `coordinator`, `mediator`, `orchestrator`, `scene root gateway`, `subsystem gateway`, `encounter coordinator`, `quest flow coordinator`, or `scene facade`3839### Trigger examples4041- "Should this scene root coordinate the inventory and world interactions instead of exposing child nodes everywhere?"42- "This encounter flow has too many direct references between spawner, UI, rewards, and state"43- "Do I need a coordinator here, or would events and commands be cleaner?"44- "Please review this quest manager before it becomes a god object"4546## Do not use this skill when4748Do not use this skill when:4950- the hard problem is notification topology, publisher/subscriber ownership, or signal lifecycle; use `game-development-events-and-signals`51- the hard problem is request-versus-execution boundaries, action queues, undo/redo, or replay; use `game-development-command-flow`52- the hard problem is still choosing FSM, BT, Utility AI, or GOAP; use `game-development-behavior-architecture` first53- one direct dependency is already the honest and stable relationship54- the task is only wrapping a third-party API with a simpler interface and does not involve bounded in-game collaboration ownership55- the task is a localized runtime bug investigation rather than coordinator design or review5657## Pattern5859- Primary pattern: **Tool Wrapper**60- Secondary pattern: **Generator**6162## Related skills and routing notes6364- Start with `game-development-events-and-signals` if the actual pain is notification topology rather than one bounded gateway owning collaboration.65- Start with `game-development-command-flow` if the real question is request execution, queuing, or history rather than coordination surface design.66- Pair with `game-development-entity-reference-boundary` when the coordinator exists partly to shield callers from volatile child references, handles, or lookup rules.67- Pair with `game-development-state-change-notification` when the coordinator must expose meaningful invalidation, bubbled state changes, or change aggregation at the boundary.68- Pair with `game-development-world-state-facts` when the coordinator owns or brokers shared observed truth instead of just forwarding calls.69- Hand off to `game-development-behavior-architecture` when the coordinator is being asked to own AI or decision structure that should live in a behavior model instead.7071## Diagnostic checklist7273Evaluate these questions before recommending or refining a coordinator design:7475| Question | Healthy sign | Warning sign |76| --- | --- | --- |77| Is there a real coordination boundary? | One scene or subsystem has volatile internals and a stable external seam | The class is just a renamed utility bag |78| Are multiple collaborators involved? | Several internal or external participants must collaborate through one authority point | One honest direct reference would solve it |79| Is ownership explicit? | You can say what the coordinator owns and what it only forwards | The coordinator slowly owns everything nearby |80| Is the public surface minimal? | Only necessary getters, helpers, and signals are exposed | The coordinator mirrors every child API blindly |81| Is lifecycle safer through a coordinator? | Refactors, scene churn, or runtime registration become easier to contain | The coordinator adds ceremony without reducing fragility |82| Is god-object risk manageable? | The boundary can be scoped, split, or layered if it grows | "We’ll just put it in the coordinator" keeps winning every argument |8384## Decision rules8586Before recommending a coordinator, ask whether the smaller honest answer is:8788- a direct method call between legitimate collaborators89- an events/signals topology if the hard part is who needs to hear about something90- a command-flow design if the hard part is request dispatch or execution timing91- a simpler facade over one subsystem API if collaboration rules are not the real issue92- a behavior architecture decision if the hard part is AI/gameplay decision structure9394Reject a coordinator if it mostly centralizes naming, references, and anxiety without clarifying ownership.9596### Prefer a direct call when9798- there is one clear client and one clear callee99- the dependency is stable and honest100- no bounded internal seam needs protection101- inserting a coordinator would mostly rename an existing path102103### Prefer a bounded coordinator when104105- one scene or subsystem should expose a stable public seam while hiding volatile internals106- several collaborators need one authority point for cross-component coordination107- refactors should be absorbed at one boundary instead of breaking many external callers108- the outside world should not know which child nodes, components, or services actually do the work109110### Prefer events or signals instead when111112- the hard part is one-to-many notification topology113- collaborators should remain loosely coupled without a central authority deciding the whole collaboration114- the main surface is subscriptions and payloads, not a bounded gateway115116### Prefer command flow instead when117118- the hard part is request execution, queues, validation, or history119- producers and executors need a stable action contract more than a bounded scene/subsystem gateway120121### Escalate to split or layered coordinators when122123- one coordinator starts mixing unrelated domains such as encounter flow, inventory, quest, UI, and save logic at once124- a public surface keeps growing because the boundary is too broad125- separate sub-coordinators would clarify ownership better than one large root object126127## Workflow128129Follow this sequence every time.130131### 1. Identify the coordination boundary132133State which scene, subsystem, or feature boundary the coordinator would own before you name the class.134135### 2. Map inside versus outside collaborators136137List which collaborators are internal to the boundary, which are external clients, and who should be allowed to know about whom.138139### 3. Choose the coordinator shape140141For the candidate boundary, decide whether the right shape is:142143- a scene-root coordinator or gateway144- a subsystem service coordinator145- a ScriptableObject or asset-backed coordination surface146- a small facade-like entry surface with a few coordination rules147- split or layered coordinators instead of one large object148149### 4. Define the public surface150151Specify what the coordinator may expose, such as:152153- forwarded getters154- helper functions155- bubbled signals or events156- registration hooks157- narrow action entry points158159Anything not clearly justified should stay internal.160161### 5. Define ownership and routing rules162163Specify:164165- what the coordinator owns directly166- what children or collaborators still own themselves167- which calls are forwarded unchanged168- which calls are coordinated across multiple internals169- which flows should stay direct, evented, or command-driven instead170171### 6. Define lifecycle and reference policy172173Specify how the coordinator handles:174175- child lookup or dependency capture176- registration and unregistration177- scene reloads, enable/disable cycles, or prefab/instance churn178- refactor resilience when internal structure changes179180### 7. Add observability and god-object guards181182Useful hooks include:183184- public surface inventory tables185- internal ownership maps186- forwarding or routing logs where needed187- growth warnings such as "split when unrelated domains accumulate"188189### 8. Plan the rollout190191Migrate incrementally: isolate one boundary, introduce one stable public seam, move one collaboration path behind it, verify that internals are less exposed, and split if the coordinator starts swelling during rollout.192193## Output contract194195Return the result using `assets/coordinator-design-brief.md` in this section order.196197If the best answer is **not** a coordinator, still use the template and say that explicitly instead of promoting a root object to office manager of the entire game.198199Return the result in these sections:2002011. **Coordination boundary**2022. **Why coordinator is justified**2033. **Coordinator shape recommendation**2044. **Public surface design**2055. **Internal ownership map**2066. **Direct vs event vs command split**2077. **Lifecycle and reference policy**2088. **Engine integration notes**2099. **Migration plan**21010. **Verification notes**211212Keep the section order stable so coordinator recommendations are easy to compare across reviews and refactor passes.213214## Engine-specific notes215216### Godot / .NET217218- A scene root can act as a gateway to its internals by forwarding narrow getters, helper functions, and bubbled child signals.219- Prefer exported or captured references inside the coordinator over making outside systems walk fragile child paths.220- Keep scene-specific coordination local; do not autoload a scene-bound coordinator just because it has become popular.221- If the coordinator re-emits child signals, keep signal names and payload meaning stable at the boundary.222223### Unity224225- The coordinator may be a `MonoBehaviour`, plain C# service, or `ScriptableObject` coordination surface depending on scene ownership and authoring needs.226- Prefer one clear runtime owner over scattered `MonoBehaviour` cross-callback coordination.227- Keep inspector wiring intentional; do not turn serialized references into a hidden dependency spiderweb.228- If using `ScriptableObject` coordination surfaces, make registration lifecycle explicit for runtime-created participants.229230### Generic C# / engine-neutral231232- Prefer stable interfaces and explicit ownership maps over letting the coordinator expose every dependency directly.233- Keep the public surface small enough that future subsystem changes stay local.234- Split unrelated coordination responsibilities early instead of waiting for a large-class obituary.235236## Common pitfalls237238- turning the coordinator into a god object that owns every nearby decision239- mirroring every child API instead of exposing a bounded surface240- using a coordinator where one direct dependency is already the honest design241- confusing coordinator boundaries with global event bus design242- confusing coordinator entry points with full command-flow architecture243- mixing gameplay logic, UI logic, save logic, quest logic, and diagnostics in one root object244- autoloading a scene-specific coordinator and accidentally making it global245- hiding ownership problems behind a nicer class name instead of actually clarifying them246247## Companion files248249- `references/coordinator-design-guide.md` — reusable heuristics for choosing coordinator fit, bounding the public surface, separating coordinator vs mediator vs facade vs event bus vs command flow, and avoiding god-object growth250- `assets/coordinator-design-brief.md` — reusable output template for returning the coordinator design or review artifact251252## Validation253254A good result should satisfy all of the following:255256- a simpler direct-call or non-coordinator alternative was considered first257- the coordination boundary is explicit258- the public surface and internal ownership map are concrete enough to review259- direct vs event vs command splits are intentional260- lifecycle and refactor-resilience rules are explicit261- the design reduces exposure to volatile internals without becoming a god object262- rollout steps are incremental enough to verify safely263264## Completion rule265266This skill is complete when the agent has:267268- decided whether a bounded coordinator is justified at all269- identified the scene/subsystem boundary and collaboration seam270- chosen the coordinator shape and public surface271- defined internal ownership, routing, and lifecycle rules272- separated coordinator concerns from events, commands, and behavior architecture273- returned a concrete migration and verification brief