| name | neo-program |
| description | Shape modules, interfaces, types, invariants, ownership, data structures, dependency direction, and main or failure call paths for an active Neo task. Use only with a program-stage handoff generated by $neo. Do not use directly, emit production code, or substitute a file inventory for program design. |
Resolve Program Design
Work only on the active Neo program stage.
Use the <neo-cli> already resolved by the active $neo router. If it is not
present in the handoff context, resolve
scripts/neo.py from the installed neo skill's
source location.
- Validate the handoff with
neo.py handoff <slug> --expect program.
- Load approved upstream artifacts and inspect repository-native conventions.
- Read
interaction.md,
program-design.md, and
prototype.md.
- Define module knowledge, interfaces, types, contracts, errors, invariants,
ownership, mutation, data operations, resource lifetime, dependency
direction, test seams, and representative success and failure call paths.
- For consequential boundaries, compare two materially different
decompositions. Prefer the smallest interface that hides useful complexity
and localizes likely changes.
- Use a logical prototype only for a named uncertainty that code or discussion
cannot settle. Keep its code disposable.
- Present compact decision cards and record only approved choices.
- Write
.neo/tasks/<slug>/program.md and gate it with
neo.py gate <slug> --stage program --artifact <path>.
If no user input is required, return control to $neo to continue the next
handoff in this context. Do not write implementation code.