Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add rules/common-ka/ai-agent-unity-rules/unity-performancegit clone --depth 1 https://github.com/Common-ka/ai-agent-unity-rulesWhat 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 | $0.00002 | $0.01227 |
| Opus 5 | $0.00001 | $0.00613 |
| Sonnet 5 | $0.00000 | $0.00245 |
| Haiku 4.5 | $0.00000 | $0.00123 |
Grade A, and why
unity-performance 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 yesterday.
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 — 221 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Unity Performance Rules
Update/FixedUpdate/LateUpdate
Usage Rules
using UnityEngine;
public class PerformanceExample : MonoBehaviour
{
private Rigidbody _rigidbody;
// ✅ DO: Cache components in Awake/Start
private void Awake()
{
_rigidbody = GetComponent<Rigidbody>();
}
// ❌ DON'T: Frequent GetComponent calls in Update
/*
private void Update()
{
GetComponent<Rigidbody>().AddForce(Vector3.up); // Bad! Expensive call every frame.
}
*/
private void FixedUpdate()
{
// ✅ DO: Physics calculations in FixedUpdate
_rigidbody.AddForce(Vector3.up);
}
private void Update()
{
// ✅ DO: Input processing and frame-logic in Update
ProcessInput();
}
private void LateUpdate()
{
// ✅ DO: Camera following logic in LateUpdate (after player moves)
UpdateCameraPosition();
}
private void ProcessInput() { /* ... */ }
private void UpdateCameraPosition() { /* ... */ }
}
Object Pooling (UnityEngine.Pool)
Unity 6.2 Note: Do not write custom Queue-based pools. Use the native UnityEngine.Pool API.
using UnityEngine;
using UnityEngine.Pool;
public class BulletManager : MonoBehaviour
{
[SerializeField] private Bullet _bulletPrefab;
// Native Unity Pool interface
private IObjectPool<Bullet> _bulletPool;
private void Awake()
{
// Initialize the pool
_bulletPool = new ObjectPool<Bullet>(
createFunc: CreateBullet,
actionOnGet: OnGetBullet,
actionOnRelease: OnReleaseBullet,
actionOnDestroy: OnDestroyBullet,
collectionCheck: true, // Checks for double-return errors (debug only)
defaultCapacity: 50,
maxSize: 100
);
}
private Bullet CreateBullet()
{
Bullet bullet = Instantiate(_bulletPrefab, transform);
bullet.SetPool(_bulletPool); // Inject pool reference into the bullet
return bullet;
}
private void OnGetBullet(Bullet bullet) => bullet.gameObject.SetActive(true);
private void OnReleaseBullet(Bullet bullet) => bullet.gameObject.SetActive(false);
private void OnDestroyBullet(Bullet bullet) => Destroy(bullet.gameObject);
public void FireBullet(Vector3 position, Vector3 direction)
{
Bullet bullet = _bulletPool.Get();
bullet.transform.position = position;
bullet.Fire(direction);
}
}
public class Bullet : MonoBehaviour
{
private IObjectPool<Bullet> _pool;
public void SetPool(IObjectPool<Bullet> pool) => _pool = pool;
public void Fire(Vector3 direction) { /* Physics logic */ }
private void DisableSelf()
{
// ✅ DO: Return to pool instead of Destroy()
_pool.Release(this);
}
}
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.
- yesterday First seen · 221 lines · 2 tokens per session scan A dd51199f2138
unity-performance is a cursor rule published in the GitHub repository Common-ka/ai-agent-unity-rules (39 stars, last pushed 8mo ago), licensed MIT. It adds 2 tokens to every session and 1,227 once invoked, about $0.0000 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-08-30.
Other cursor rules, from other repositories
component-development
Modern React + TypeScript component patterns — hooks, typed props, performance optimization, forms, and testing.
webdriver-management
Selenium WebDriver lifecycle management — driver factory, explicit waits, browser options, and teardown.
api-testing
Cypress network interception and API testing patterns (cy.intercept, service mocking, request/response validation).
app-router-patterns
Next.js 14+ App Router patterns — Server Components, Client Components, Route Handlers, Server Actions, and metadata API.
page-object-patterns
Page Object Model patterns for Selenium — BasePage, component objects, and fluent interfaces.
test-patterns
Selenium pytest test patterns — data-driven tests, fixtures, error handling, and performance checks.