Biff 2.0.4: LLM Skills Jacob O'Bryant released Biff v2.0.4 on 25 October 2026, adding a set of LLM skills to the Clojure web framework, including biff-spec-review, biff-spec-dev, biff-code-review, biff-code-quality and biff-dev. The skills sync to a local project whenever a developer runs `clj -M:run dev` after upgrading the biff.tasks dependency to 2.0.4, and biff-code-review enforces a list of Biff-specific coding conventions by having the LLM copy a rules checklist into the project, mark violations with filenames and line numbers, then apply fixes. O'Bryant said the code generated with the rules is "definitely still a little weird in places, but it's crossed the 'good enough' threshold," and the checklist can be edited by hand before fixes are applied for human-in-the-loop review. Jacob O'Bryant https://obryant.dev | 25 Oct 2026 I've just released Biff v2.0.4 https://github.com/jacobobryant/biff/blob/master/CHANGELOG.md 204-2026-10-25 . This release has a hodge-podge of tweaks and fixes based on my own usage https://budgetswu.com . There is also one big addition: a set of LLM skills. From the starter project's README: biff-spec-review : reads spec/ and generates a plan to implement it. biff-spec-dev : implements the plan generated by biff-spec-dev . Calls biff-code-review afterward. biff-code-review : reviews recent code changes against a list of Biff-specific coding conventions. Invoked by biff-spec-dev automatically, or you can run it manually. biff-code-quality : instructions the agent to run clojure -M:run code-quality and fix any test/lint failures. biff-dev : instructions for using the REPL. Invoked by agents automatically when they write Clojure code. After upgrading your biff.tasks dependency to 2.0.4 , these skills will be synced to your local project whenever you run clj -M:run dev . The most important skill here is biff-code-review . It contains a list of rules https://github.com/jacobobryant/biff/blob/master/libs/tasks/resources/com/biffweb/tasks/skills/biff-code-review/rules.md for writing code that conforms to Biff conventions. The rules are the result of my own painstaking review of reams of crappy LLM-generated Biff code. From testing them out on a fresh project, I'm fairly pleased with the result. The code I've gotten is definitely still a little weird in places, but it's crossed the "good enough" threshold. My general flow for making Biff apps is now: biff-spec-review and then biff-spec-dev the latter of which calls biff-code-review . Sometimes I'll use a fancy model to review specs/code and a dumber model to do the implementation. I had some trouble figuring out a structure for getting LLMs to actually follow my rules. I've had success with this flow: I try to phrase each rule so it's very explicit/unambiguous/black and white. Either the rule is violated or it's not. biff-code-review instructs the LLM to copy a checklist for all the rules into your project. The LLM goes through your code and adds a bullet point with filename and line numbers to the checklist file whenever it finds a violation. After the code review, any checklist items without violations are checked off. The LLM then goes through the checklist and applies fixes. I structured this in a way so that if needed you can do a human-in-the-loop thing: you can edit the checklist before step 3 starts to add any violations the LLM may have missed. During step 3, the LLM doesn't edit the checklist file, so you can manually mark off/not mark off items and then redo step 3.