The purpose of this document is to capture the design principles that should be followed when designing new commands or updating existing ones. The goal is to ensure that the dartdev tool provides a consistent UX.
This is a work in progress. At the moment we are just capturing the ideas that are coming out of discussions. They will need to be organized and more fully documented at some point.
If the command cannot have side effects (such as analyze) then the argument for what to operate on should default to the CWD, but if the command can have side effects (such as format or fix) then the argument for what to operate on should be required.