unity-component-design
Use when designing new Unity components (MonoBehaviours, ScriptableObjects, systems). Ensures proper architecture before writing code.
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
Unity Component Design
Overview
Design Unity components properly BEFORE writing code. Good architecture prevents rewrites.
When to Use
- Creating new MonoBehaviour classes
- Designing ScriptableObject data structures
- Building new game systems
- Refactoring existing components
The Process
Phase 1: Requirements Gathering
Ask these questions:
- What problem does this component solve?
- What data does it need?
- What other systems does it interact with?
- What events should it emit/receive?
- Does similar functionality exist already?
Phase 2: Architecture Decision
Choose the right type:
| Use Case | Type |
|---|---|
| Needs lifecycle (Update, Start) | MonoBehaviour |
| Static game data (monster stats) | ScriptableObject |
| Pure logic, no Unity dependencies | C# class |
| Shared state across scenes | Singleton MonoBehaviour |
| One-off data container | [System.Serializable] class |
Phase 3: Design the Component
Use the unity-architect agent:
Task: Launch unity-architect agent with:
"Design a [component type] for [purpose] that [requirements]"
The agent will provide:
- Namespace and file location
- Fields with types and attributes
- Methods and their signatures
- Events to emit
- Dependencies to inject
- Inspector setup requirements
Phase 4: Validate Design
Checklist before coding:
- Follows VeilBreakers namespace convention
- Uses [SerializeField] private, not public fields
- Has [RequireComponent] for dependencies
- Events have corresponding unsubscribe logic
- No Find() or GetComponent() in hot paths
- ScriptableObjects for config, not hardcoded values
Phase 5: Create Implementation Plan
Break into tasks:
- Create the file with class skeleton
- Add fields and serialization
- Implement lifecycle methods
- Add public API
- Wire up events
- Write tests (if applicable)
- Create prefab (if applicable)
Quick Reference
| VeilBreakers System | Namespace | Base Class |
|---|---|---|
| Combat | VeilBreakers.Combat | MonoBehaviour or ScriptableObject |
| UI | VeilBreakers.UI | MonoBehaviour |
| Data | VeilBreakers.Data | ScriptableObject |
| Core | VeilBreakers.Core | MonoBehaviour (singleton) |
| Utils | VeilBreakers.Utils | Static class |
Related Skills
-
superpowers:brainstorming- For exploring requirements -
superpowers:writing-plans- For implementation planning
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-01-26
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!