| name | orca-feature-implementation |
| description | Implement an ORCA feature spanning one or more engine, plugin, UI, renderer, XML, or Lua subsystems. Use for behavior changes that require architecture routing, handwritten implementation, generated API decisions, build wiring, and focused verification rather than a single isolated API declaration. |
ORCA Feature Implementation
Route the change to the owning subsystem before reading implementation files.
Keep one coherent owner for the feature and delegate only independent parts.
Workflow
- Read
docs/PROJECT_MAP.md, then the one subsystem document named there.
- Identify the owning module and split the request into API shape,
handwritten behavior, Lua exposure, XML authoring, assets/scenes,
controller binding, and tests.
- Read the relevant generated API reference under
.opencode/generated/{c,lua,xml}/<module>/. Fall back to the owning .cgen
only when the generated reference is unavailable.
- Read one nearest implementation and one focused test at most.
- State the smallest change that preserves subsystem boundaries.
- Use
$orca-api-codegen before implementation if public API shape changes.
- Implement behavior in handwritten sources and add build/Xcode wiring for
any new C file by following its nearest peer.
- Use
$orca-lua-exposure, $orca-xml-authoring,
$orca-xml-assets-scenes, or $orca-controller-binding for those surfaces.
- Add focused coverage with
$orca-testing.
- Run generation when needed, then build and test the narrowest touched
surface. Broaden only when shared behavior changes.
Architecture rules
- Add reusable behavior as a component instead of growing
Object.
- Keep core free of plugin-header dependencies.
- Communicate across modules with messages, properties, or generic interfaces.
- Keep XML/package declarations declarative and runtime behavior in C or Lua.
- Remove the superseded singleton or global access path when ownership moves
to a component; do not leave two authorities.
- Avoid unrelated cleanup and refactoring.
Verification
Use docs/BUILD.md and docs/TESTING.md to select commands. Prefer:
make modules
make unite
make test-headless
Use xvfb-run make test only for display-backed behavior.