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/instructa/viber3d/005-traitsgit clone --depth 1 https://github.com/instructa/viber3dWhat 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.00000 | $0.00419 |
| Opus 5 | $0.00000 | $0.00210 |
| Sonnet 5 | $0.00000 | $0.00084 |
| Haiku 4.5 | $0.00000 | $0.00042 |
Grade A, and why
005-traits 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.
What it actually says
Trait Definitions
Core Practices
- Keep trait data minimal. Place logic in systems.
- Use schema-based (SoA) traits for numeric or frequently-updated data.
- Use callback-based (AoS) traits for complex or class objects (e.g. THREE.Mesh).
- Use tag traits (with no fields) as flags to identify entities (like
IsPlayer).
Examples
import { trait } from 'koota'
import * as THREE from 'three'
// Schema-based (SoA)
export const Health = trait({ amount: 100, max: 100 })
// Callback-based (AoS)
export const Transform = trait(() => ({
position: new THREE.Vector3(),
rotation: new THREE.Euler()
}))
// Tag trait
export const IsEnemy = trait()
Relationships
- Use
relation()when entities need references to each other. - Pass additional fields if you need extra data in the relationship.
- Use
exclusive: trueorautoRemoveTarget: trueif needed for parenting or single-target constraints.
import { relation } from 'koota'
// Simple relation with no fields
export const ChildOf = relation()
// Relationship with data
export const Contains = relation({ store: { amount: 0 } })
Best Practices
- Store only essential data in traits. Do not add large logic blocks.
- Check for existence before adding a trait:
if (!entity.has(Health)) entity.add(Health()). - Prefer
entity.set(Trait, (prev) => ({ ...prev, ...changes }))for updates so Koota can handle events.
Anti-Patterns
- Do not share the same mutable object across multiple entities (like a single shared Vector3).
- Do not store React refs, DOM elements, or large external objects in traits.
- Do not combine unrelated data in one trait. Keep them cohesive and small.
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 · 61 lines · 0 tokens per session scan A b73e417ded59
005-traits is a cursor rule published in the GitHub repository instructa/viber3d (623 stars, last pushed 1y ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 419 tokens. 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
webkit-browser
Cursor rule "webkit-browser" from duckduckgo/apple-browsers, covering webkit & browser development guidelines, webview configuration, basic webview setup, user scripts management and tab management.
cypress-e2e-testing-cursorrules-prompt-file
Cursor rules for Cypress development with E2E testing.
vasu-playwright-utils
../../templates/cursor-rules/vasu-playwright-utils.mdc.
dev-browser
Fallback browser automation with persistent Chrome state. Use only when Browser Use is unavailable or blocked.
node-dependencies
Enforce Node.js versioning and package management best practices.
security-standards
Cursor rule "security-standards" from wjgogogo/cursor-rules, covering 安全规范, 核心原则 [p0], 输入验证, xss 防护 and csrf 防护.