This document defines the canonical Agent System design,
Skill indexing protocol, and
vite-threejs framework-level skill architecture
for use by AI IDEs / LLM-based agents.
We are building an Agent System for software development with the following properties:
- Routing-based (planner + dispatcher)
- Skill-driven (capabilities are explicitly indexed)
- Project-aware (context-sensitive, not generic)
- Long-term maintainable (skills evolve, routing logic stays stable)
The system is designed primarily for: - Three.js-based applications - Built on vite + vue + pinia + tailwindcss - Including (but not limited to): - Third-person games - 3D scene editors - Interactive demos
A Skill is a declarative capability unit that: - Has a clearly defined scope - Declares what problems it solves - Declares what it must NOT do - Can be discovered by an Agent without reading implementation details
A Skill is discovered via
SKILL.md.
- Purpose: Capability discovery
- Answers: "What skills exist, and what are they for?"
- Mechanism: scanning
SKILL.mdfiles only - Must be:
- Lightweight
- Structured
- Stable
- Purpose: Decision making & task decomposition
- Answers: "Which skills should be used for this task, and in what order?"
- Depends on:
- Task intent
- Project context
- Skill index (not full docs)
Index ≠ Routing, but Routing depends on Index.
Framework Skills define: - The correct way to build applications inside the vite-threejs framework - Architectural constraints and invariants - Long-lived, stable rules
They answer: > "How should things be built in this framework?"
Examples: - Class-based 3D component model - Lifecycle management (init / update / dispose) - Three.js ↔ Vue integration rules - Pinia state ownership - Input → Intent mapping - Rendering & performance constraints
Framework Skills must not: - Encode game logic - Encode specific gameplay patterns - Depend on project-specific assumptions
Application Skills define: - Context-specific behavior - Replaceable strategies (FSM, ECS, physics engines, etc.)
They answer: > "What are we building this time?"
They are: - Less stable - Strongly contextual - Built on top of Framework Skills
Only SKILL.md is considered a valid skill index entry.
- README.md, FOUNDATION.md, or arbitrary markdown files
are not valid for routing or indexing.
If a capability is not declared in
SKILL.md,
the Agent must assume it does not exist.
Each Skill uses progressive disclosure:
SKILL.md→ discovery & routingreferences/*.md→ execution details
Agents must: 1. Read SKILL.md first 2. Decide relevance 3. Dive into
references only if needed
vite-threejs itself is treated as a Composite Skill.
It: - Has its own root SKILL.md - Governs a set of mandatory
sub-skills - Acts as the framework contract
skills/
└── vite-threejs/
├── SKILL.md
├── GENERATION.md
├── SYNC.md
├── conventions/
├── component-model/
├── lifecycle/
├── rendering/
├── scene-management/
├── resource-management/
├── state-management/
├── input-system/
├── camera-system/
├── animation-system/
├── physics-integration/
├── ui-integration/
├── performance/
└── anti-patterns/
name: component-model
layer: framework
framework: vite-threejs
type: atomic | composite
stability: high | medium | low
risk-level: low | medium | high
touches-config: true | false- Describe scope and responsibility
- Define when to use / when NOT to use
- Avoid implementation details
- Act as a capability declaration
- Be focused on one concept
- Include examples
- Include pitfalls and best practices
- Be safe to load selectively
GENERATION.md and SYNC.md are used to: - Track origin (experience vs
official docs) - Record framework / library versions - Allow Agents to
judge freshness & reliability
Agents operating in this system must follow:
- Always load
vite-threejs/SKILL.mdfirst - Apply framework constraints before application logic
- Use
SKILL.mdfor routing, not references - Prefer anti-pattern skills when task risk is high
- Never bypass framework rules using application skills
This system is considered successful if:
- Framework Skills can be reused across projects unchanged
- Application Skills can be swapped freely
- Routing logic remains stable over time
- Skill updates do not break discovery
- The Agent can reason without loading full documentation