Back to browse
GitHub Repository

Enforce deadlines on TODO / FIXME comments

5 starsGo

Todo or else, a CLI for enforcing Todo deadlines

by jbreckmckye·Mar 16, 2026·2 points·3 comments

AI Analysis

●●SolidSolve My ProblemShip It

Fails CI builds when TODO deadlines expire, using Tree-sitter instead of fragile regex patterns.

Strengths
  • Tree-sitter parsing ensures accurate code structure analysis unlike regex-based TODO scanners.
  • Homebrew installation and multi-language support make adoption frictionless for engineering teams.
  • Configurable staleness thresholds allow flexibility for different project lifecycles and teams.
Weaknesses
  • Requires cultural buy-in; teams might delete TODOs to pass builds instead.
  • No integration with project management tools like Jira or Linear yet.
Target Audience

Engineering teams, Tech leads, CI/CD maintainers

Similar To

todo-to-issue · eslint-plugin-todo · grep

Post Description

The problem with TODO comments is that nothing actually forces you to resolve them. Developers agree to take shortcuts they will revisit, but never actually get around to it.

A good example is feature flags... how often do you go back and actually clean up old flag code?

*The tool*

Todo or Else is a small CLI written in Go but supporting multiple languages. Add it to your project and then annotate your TODOs with "tags" like so:

``` TODO (by:2027-03, owner:Fran) do something ```

You can specify a date by either

- using `by:YYYY-MM` or `by:YYYY-MM-DD` to set a deadline

- using `from:YYYY-MM-DD` to set a created date (default staleness threshold is 90 days, configurable)

*Building it with Golang*

I used Go for a few reasons. Firstly: the performance is really solid, on my newish MBP the scanner can process a few thousand source files in just under two seconds.

Secondly: the cross compilation story is still really good, even with CGO. Zig handles the tree sitter compilation for MacOS and Linux. In principle I could even use the WASM builds of tree sitter + Wazero to make this completely Go-native.

*Use of AI*

I used AI (Gemini) to produce the project logo, and some of the config files (golangci-lint, GitHub actions). But the code was all by hand

Similar Projects