- Prefer immutable values and data structures. Use
letbindings, records, and pure functions; introduce mutation only when it is clearly necessary. - Use F# string interpolation for constructing and displaying strings:
Console.WriteLine $"Synced {skill} to {target}". - Do not use printf-style format strings such as
printfn "Synced %s to %s" skill target, except where an API specifically requires that formatting style.
Every feature must be designed for both human and AI-agent use.
- Make commands, subcommands, flags, defaults, and errors discoverable through
clear
--helpoutput. - Prefer explicit, composable non-interactive commands and flags over requiring prompts or terminal UI interaction.
- Keep output deterministic and actionable: report what happened, what did not, and how to correct an error.
- Preserve stable command and output behavior where practical; avoid requiring agents to infer hidden state or parse decorative text.
- Add or update documentation and tests for new user-facing behavior.