It's here to be exact:
https://github.com/scotws/tinkasm/tree/master/tinkfmt . Let me know if anything in the code is unclear.
Cudos go to the Go (golang) people behind the gofmt tool, who decided that they'd had it once and for all with endless formatting discussions. They decided on rules, set them down in the tool, and now every single (serious) Go program on the planet is formatted in the exact same way. The feeling seems to be that everybody hates the format, but loves the formatter. It certainly made a difference learning the language, because your brain seems to expect stuff in certain places after a while, and it is quicker to type, because you just hack it in and let the machine move everything around when you save the file (on vim, at least).
Tinkfmt now is very simple. Whitespace lines and full-comment lines are trivial; all directives start with a dot and come before their arguments; all mnemonics are known; everything else should be a label. Then, labels start at the beginning of the line, directives are indented by one tab worth of spaces (in other words, eight), mnemonics by two. What this means is that everything usually gets its own line (except for in-line comments), though the Tinkasm assembler itself will tolerate stuff on one line (and break it up internally). The only slightly complicated detail is that some things like
.equ have their parameters justified.
Put differently, I cheated by creating my own notation where the directive comes before its parameters. You'll probably have to go to a bit more effort if you're using another notation where the directives are "infix". What I haven't done yet - next step - is to create a vim plug-in based on this so I can use tinkfmt just like gofmt is used, while you type.