Skip to content

Agent Workbench

Tools for working with coding agents without losing track of them.

The backlog stays a schema, the commit says what changed, the test says what it actually observed, and the usage stays on screen. Each tool does one of those, and the method page shows how they fit.

Windows · Tray app

Claude Code Tray

Your Claude Code rate-limit percentage, always in the tray, as a crisp DPI-aware icon.

  • .NET 10
  • Windows 10 / 11
  • Apache 2.0
Product page →
Docs · CLI

roadkeep

Owns the writes to your ROADMAP, CHANGELOG and IMPROVEMENTS, so the format is a schema at insertion instead of a convention you remember.

  • Python ≥3.11
  • Claude Code plugin
  • Zero deps
Product page →
Desktop · Backlog reader

roadkeep-gui

Every roadkeep backlog on your machine in one window: read what each project owes, file or ship a line, hand a task to Claude Code.

  • Electron
  • Windows · Linux
  • MIT
Product page →
Git · CLI

commitclerk

Reads your staged diff, asks an LLM for a Conventional Commits message, shows it to you, and commits.

  • ~230 lines
  • One file
  • Apache 2.0
Product page →
Testing · .NET library

winwright

Drives a Windows desktop app from a test — four verdicts rather than two, so a check that never ran never reads as one that passed.

  • .NET 10
  • Windows only
  • Zero deps
Product page →
3D · Claude Code plugin

polyweave

Makes 3D assets by declaring what they must satisfy and searching for the parameters that do, on Blender, Godot and a mesh service.

  • Python ≥3.11
  • Claude Code plugin
  • Blender · Godot
Product page →
Music · Desktop app

Piano

A piano Claude Code can write scores for, play and teach from: the notes fall onto the keys and you learn to play them.

  • Electron
  • In development
  • Claude Code plugin
Product page →

Recently shipped in Agent Workbench

The line's changelog →
  1. winwright
    A case cannot drive the common Open or Save dialog, so choosing a file through it has no case

    'choose file' fills the common Open or Save dialog's name box by id and confirms; a read absent proves it closed, and pick sets the type (design recorded in src/Winwright/Acting/Act.cs).

    WW551 · e826dc4
  2. winwright
    A case cannot drop a file from Explorer onto the application, so a drop zone has no case

    'drop file' drops a file onto the app by a real drag carrying CF_HDROP; a target that answers no effect is a named hole (design recorded in src/Winwright/Acting/FileDrop.cs).

    WW550 · e6c2602
  3. winwright
    A case first in its run cannot type: the window it launched never comes forward before any synthesised input

    A launch hands the started process the foreground first, so a case first in its run or soaked alone comes forward (design recorded in src/Winwright/Windowing/ForegroundLock.cs).

    WW549 · da0d785
  4. winwright
    A case cannot claim a window covers its monitor, so a full-screen mode that leaves a border or a pixel uncovered passes

    A step claims fillsMonitor: its element covers the whole monitor it is on, so a full screen leaving a border fails naming both rectangles and each edge left uncovered in pixels.

    WW548 · 7c853f3
  5. winwright
    Typing into a terminal substitutes the last character for an earlier one about once a send in fifty, unrepaired

    Typing into a terminal repairs the last-character substitution before Enter, proven by quickshell's tab case passing 300 of 300 guest runs on 1.1.2, the repair firing on two.

    WW545 · d87820d
  6. polyweave
    A flattened sphere creases at its rim whatever its steps

    A sphere's rings and meridians follow its normal, so a squashed or oval sphere reads no crease at its rim at the steps it declares (design recorded in src/polyweave/layers/geometry/solid.py).

    PW565 · 0b75d59