The idea of a simple rule is great, but the suggested rule fails on sort -u which afaik came after sort | uniq for performance reasons.
Another idea on the same vein is that a flag should be added only when the job can be done inside the program and not with stdin/stdout (or no flag can be added if one can reproduce the same behavior using pipelines).
So, you need sort -u because only within sort can you get the performance needed to get the job done.
But you don't need -h in ls -lh. All the information to render a human readable number is present on stdout of ls -l. You could easily have a filter which renders numbers with options like adding commas, dots, scientific notation, precision, money, units, etc.
Tyler
After following this discussion, I guess that I have a simplistic way to
determine whether something should be a dash option or a filter. In
general, I'd make a filter if whatever it was doing was applicable to
more than one command, a dash option otherwise.
Jon