Knosh 0.2.0 and koverGate 0.4.0
In Which the Author Keeps the Releases Flowing
Knosh 0.2.0 is out — brew upgrade should give you access to the new version. In case you forget, Knosh is my one-shot CLI coding agent, designed to work with local and hosted models.
Primarily, Knosh 0.2.0 adds a way for you to create your own commands. Modeled after OpenCode's commands, file-defined Knosh commands are Markdown with some YAML frontmatter, located in the commands/ subdirectory of your Knosh configuration (e.g., ~/.config/knosh/). Commands that you create there are available to you through Knosh the same way as compiled-in commands. So, just as knosh kdocs runs the compiled kdocs command, if you create a file-based command in a file named foo.md, knosh foo will run that command.
You can even describe command-line options that then become available to you. The Markdown is really a template language, using Mustache-style macros ({ { something } }) to pull from the options. You then provide those options on the command-line (e.g., knosh foo --something=another), and they customize the prompt that Knosh sends to the model, based on your Markdown.
(note: my sample macro has spaces between the braces, because Buttondown — my newsletter host — seems to be consuming the macro when I write it correctly...)
There are two proof-of-concept file-defined commands that are part of Knosh 0.2.0: review-plan.md and review-gradle-licenses.md. Both are very much proofs of concept and need further refinement. But, if you want to use them, knosh init --global installs them, or knosh update updates them if you have already initialized Knosh.
I expect to have a steady stream of Knosh releases over the next few months. Since Qwen 3.6 is really close to being useful as a local model for agentic coding, I will be working to try to build Knosh up enough that it, paired with Qwen, can get meaningful work done.
Also new is koverGate 0.4.0. This release:
- Tries to make it less likely that the coverage gap report is based on stale Kover data
- Provides more detail in the JSON to help the agent know what coverage is lacking
- Adds a
koverGateDoctorGradle task to help agents diagnose issues with the koverGate setup
- Adds
attributeCoverageFrom()to the koverGate DSL, to let you merge the coverage results from multiple modules
attributeCoverageFrom() stems from some work I am doing on another library, which contains a conformance test suite. That suite is used both in unit tests and from a CLI, but it is not needed for the actual use of the library. The conformance suite contributes heavily towards the coverage of the library, so attributeCoverageFrom() lets me have the library's coverage be determined not only by its own tests but also those from the conformance suite.
koverGate is likely to get more updates in the coming months, but mostly they are triggered now by problems I run into when using it.
Note that both Knosh and koverGate, along with detektifier, have read-only GitHub mirrors of their Codeberg repositories:
Mostly, this is to help discoverability, though there may be some developers who will have an easier time using the code if they can get it through GitHub (e.g., corporate firewall restrictions).
Coming soon: a series of posts diving into JetBrains' Koog and how I use it to power Knosh!
Add a comment: