# Guiding principles for ick Pithily, * First, corrupt no source code. * Second, don't reinvent what works. ## Explicit goals * Always give the user an "undo" (default to an informative dry run) * Be something that one person on a team can adopt, if they're the only one that cares * Be something that you can run infrequently (say, before a release or in a tech debt week), while resepcting the amount of time you have available * Don't be tied to any one {language,os,etc}: Be agnostic to what tools people want to use * Give you a heads-up about recommendations that you don't need to apply yet (but can if you have spare time or want to be an early adopter) By accomodating a wide range of levels of effort, we can apply automation where it makes sense, especially on the low end of complexity. If you haven't wanted to write a custom linter plugin because it's hard, and resorted to a `grep` somewhere, this framework is for you. ## Ease of adoption Using `ick` (generally) doesn't require any in-repo configuration, doesn't require all committers to use it, and doesn't require using any third-party services. You can try it, and if it's not useful for you, just don't run it again.