Imported from Policarp-wq/Orchid (
AGENTS.md). Install upstream withnpx skills add Policarp-wq/Orchid. Copyright stays with the author.
Orchid Development Rules
- Keep all project-facing text in English, including console output, documentation, comments, and identifiers where applicable.
- Do not add MIDI domain logic to
Orchid.CoreorOrchid.Applicationunless explicitly requested. - Prefer abstractions and dependency injection for new services when the requested scope requires them.
- Keep platform-specific code in the relevant presentation or infrastructure project.
- Keep
Programlimited to the composition root. Put application behavior in named classes. - Give each class one clear responsibility. Split unrelated responsibilities into separate files.
- Keep methods small and focused. Extract meaningful private methods instead of accumulating procedural logic in one method.
- Do not introduce a new layer, service, interface, or abstraction without an explicit task requirement.
- Build and run the affected project after each implementation task when the environment supports it.
- The repository is shared between Windows and WSL. Do not change the host-specific output paths in
Directory.Build.props; Windows usesbin/Windowsandobj/Windows, while WSL uses/tmp/orchid-buildto avoid ownership conflicts on the WSL network share. - Run MIDI device detection on Windows or macOS. The current DryWetMidi live input implementation does not enumerate devices on Linux/WSL.
- Never commit or push code directly to
main. Work on a dedicated branch and merge changes through a pull request after required checks pass.