Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/bullish0x/GameStudionpx agentmods add skills/bullish0x/gamestudio/r3f-ecs-integrationWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/bullish0x/gamestudio/r3f-ecs-integration)<a href="https://agentmods.dev/skills/bullish0x/gamestudio/r3f-ecs-integration"><img src="https://agentmods.dev/badge/skills/bullish0x/gamestudio/r3f-ecs-integration/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/bullish0x/gamestudio/r3f-ecs-integration"><img src="https://agentmods.dev/badge/skills/bullish0x/gamestudio/r3f-ecs-integration.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00027 | $0.03150 |
| Opus 5 | $0.00014 | $0.01575 |
| Sonnet 5 | $0.00005 | $0.00630 |
| Haiku 4.5 | $0.00003 | $0.00315 |
Grade A, and why
r3f-ecs-integration scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 8d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 476 lines — stays where its author put it; the contents beside it link to each section on GitHub.
R3F ECS Integration
When to Use
Use this skill when:
- Building complex games with R3F and ECS
- Managing many game entities efficiently
- Separating data (ECS) from presentation (React)
- Optimizing React Three Fiber performance
- Creating data-driven game architectures
Core Principles
- ECS for Logic: Use ECS for game state and systems
- React for Rendering: Use R3F components for 3D presentation
- Unidirectional Flow: ECS → React, not React → ECS
- Minimal Re-renders: Update ECS data without triggering React
- Sync Strategy: Batch updates from ECS to React
Implementation
1. ECS React Context
// contexts/ECSContext.tsx
import React, { createContext, useContext, useEffect, useRef } from 'react';
import { World } from '../ecs/World';
import { EntityManager } from '../ecs/EntityManager';
import { ComponentManager } from '../ecs/ComponentManager';
interface ECSContextValue {
world: World;
entityManager: EntityManager;
componentManager: ComponentManager;
}
const ECSContext = createContext<ECSContextValue | null>(null);
export function ECSProvider({ children }: { children: React.ReactNode }) {
const worldRef = useRef<World>();
if (!worldRef.current) {
worldRef.current = new World();
}
useEffect(() => {
return () => {
worldRef.current?.clear();
};
}, []);
const value: ECSContextValue = {
world: worldRef.current,
entityManager: worldRef.current.getEntityManager(),
componentManager: worldRef.current.getComponentManager(),
};
return <ECSContext.Provider value={value}>{children}</ECSContext.Provider>;
}
export function useECS(): ECSContextValue {
const context = useContext(ECSContext);
if (!context) {
throw new Error('useECS must be used within ECSProvider');
}
return context;
}
export function useWorld(): World {
return useECS().world;
}
2. ECS-Driven Rendering
// components/EntityRenderer.tsx
import { useEffect, useState } from 'react';
import { useFrame } from '@react-three/fiber';
import { useECS } from '../contexts/ECSContext';
import { Transform, Renderable } from '../ecs/components';
import { EntityId } from '../ecs/types';
interface EntityRendererProps {
entity: EntityId;
}
export function EntityRenderer({ entity }: EntityRendererProps) {
const { componentManager } = useECS();
const [, forceUpdate] = useState({});
// Get components
const transform = componentManager.get(entity, Transform);
const renderable = componentManager.get(entity, Renderable);
if (!transform || !renderable || !renderable.visible) {
return null;
}
// Update mesh position from transform component
useFrame(() => {
if (renderable.mesh) {
renderable.mesh.position.set(transform.x, transform.y, transform.z);
renderable.mesh.rotation.y = transform.rotation;
renderable.mesh.scale.setScalar(transform.scale);
}
});
return <primitive object={renderable.mesh} />;
}
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 8d ago First seen · 476 lines · 27 tokens per session scan A d6b211f6f907
r3f-ecs-integration is a skill published in the GitHub repository bullish0x/GameStudio (12 stars, last pushed 3mo ago), licensed MIT. It adds 27 tokens to every session and 3,150 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other skills, from other repositories
game-development
Game development with Unity, Unreal Engine, and Godot. Use when building games, implementing game mechanics, physics, AI, or working with game engines.
ar-vr-xr
AR/VR/XR development with Unity XR, WebXR, ARKit, ARCore, Meta Quest SDK, and spatial computing. Use when building augmented reality, virtual reality, mixed reality applications, or spatial experiences.
sdf
SDFormat/SDF model and world authoring, validation, and simulator handoff. Use for .sdf files, SDFormat XML, models, worlds, links, joints, poses, frames, inertials, visual/collision geometry, mesh URIs, sensors, lights, physics, plugins, includes, Gazebo, static SDF review, or simulator-specific metadata. Do not use…
unity-agent-workflows
Use for AI-assisted Unity work that needs live repo discovery, project-derived routing, runtime-owner proof, runtime-visible output hard stops, runtime numeric proof for repeated visible-output failures, state-step guards, multi-agent scope ownership, modular C#/asmdef safety, UI/scene/visual asset gates, data-first…
using-bgs-archive
Use when the user wants to inspect, list, extract, unpack, or repack Bethesda BA2/BSA archives; determine archive format/version/compression; or build archive assets for an MO2 overlay. Triggers - "unpack BA2", "extract BSA", "pack archive", "inspect archive", "bgs-archive".
ai-ml-development
AI and machine learning development with PyTorch, TensorFlow, and LLM integration. Use when building ML models, training pipelines, fine-tuning LLMs, or implementing AI features.