---
name: okojo-engine-development
description: Develop or debug Okojo ECMAScript engine internals. Use for parser, compiler, bytecode, VM, object-model, or built-in implementation work; use the linked specialist skill only when its task matches.
---

# Okojo Engine Development

Use this skill only for Okojo engine implementation or debugging. Read
`../../../AGENTS.md` for repository rules; this skill does not replace them.

## Route only when needed

- Language/compiler/VM investigation: use the V8 reference and read
  `../../../docs/performance/OKOJO_VM_DEEP_INSPECTION_METHOD.md` when the task is
  non-trivial.
- VM-loop optimization: also read
  `../../../docs/performance/OKOJO_VM_LOOP_OPTIMIZATION_FOUNDATION.md` (workflow) and
  `../../../docs/performance/OKOJO_VM_DISPATCH_REDUCTION_PROPOSALS.md` (active plan)
  only for that optimization work.
- Test262 campaigns: use [`okojo-test262`](../okojo-test262/SKILL.md), not this
  workflow.
- Okojo.Node/Ink debugging: use
  [`okojo-node-ink-debug`](../okojo-node-ink-debug/SKILL.md), not this workflow.

API/package/namespace migration, documentation-only edits, and mechanical
refactoring do not require this skill.

## Minimal default

Inspect the relevant code and tests, make the smallest correct change, and
follow the focused-test/full-suite workflow in `AGENTS.md`. Use V8 for
language/compiler/VM behavior and Node for built-in behavior when a semantic
reference is needed.

For compiler-only optimization experiments, compare the emitted Okojo
bytecode/opcodes with the target first; do not inspect C# IL/JIT for a change
that cannot affect them. Run the shortest representative benchmark only after
the opcode artifact reaches a plausible target or the comparison is
inconclusive. Use C# IL/JIT inspection only when the VM/runtime implementation
changed and that native code can be affected; use longer benchmark runs only
after the focused check warrants them.

Do not load the deep references or specialist skills unless the current task
actually needs them.
