tickgit

module
v0.0.17 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 21, 2026 License: MIT

README

tests Go Report Card release license

tickgit 🎟️

tickgit is a tool to help you manage latent work in a codebase. Use the tickgit command to view pending tasks, progress reports, completion summaries and historical data (using git history).

It's not meant to replace full-fledged project management tools such as JIRA or Trello. It will, hopefully, be a useful way to augment those tools with project management patterns that coexist with your code. As such, it's primary audience is software engineers.

TODOs

tickgit will scan a codebase and identify any TODO items in the comments. It will output a report like so:

# tickgit ~/Desktop/facebook/react
...
TODO:
  => packages/scheduler/src/__tests__/SchedulerBrowser-test.js:85:9
  => added 1 month ago by Andrew Clark <git@andrewclark.io> in a2e05b6c148b25590884e8911d4d4acfcb76a487

TODO: Scheduler no longer requires these methods to be polyfilled. But
  => packages/scheduler/src/__tests__/SchedulerBrowser-test.js:77:7
  => added 1 month ago by Andrew Clark <git@andrewclark.io> in a2e05b6c148b25590884e8911d4d4acfcb76a487

TODO: Scheduler no longer requires these methods to be polyfilled. But
  => packages/scheduler/src/forks/SchedulerHostConfig.default.js:77:7
  => added 1 month ago by Andrew Clark <git@andrewclark.io> in a2e05b6c148b25590884e8911d4d4acfcb76a487

TODO: useTransition hook instead.
  => fixtures/concurrent/time-slicing/src/index.js:110:11
  => added 3 weeks ago by Sebastian Markbåge <sebastian@calyptus.eu> in 3ad076472ce9108b9b8a6a6fe039244b74a34392

128 TODOs Found 📝

Check out an example of the TODOs tickgit will surface for the Kubernetes codebase.

Coming Soon
  • Blame - get a better sense of how old TODOs are, when they were introduced and by whom
  • Context - use --context-lines <n> for visibility into the lines of code around a TODO
  • More TODO type phrases to match, such as FIXME, XXX, HACK, or customized alternatives.
  • More configurability (e.g. custom ignore paths and color output)
  • Markdown parsing
  • More thorough historical stats

Installation

GitHub Releases

Download prebuilt binaries from the latest release.

Usage

The most up to date usage will be the output of tickgit --help.

Historical stats

Use tickgit stats to summarize current findings by phrase, age bucket, and directory, plus the oldest findings according to Git blame metadata.

tickgit stats
tickgit stats --json
Match phrases

By default, tickgit matches TODO, FIXME, OPTIMIZE, HACK, XXX, WTF, and LEGACY, plus the @lowercase form for each phrase. Use --match-phrase to override that list.

tickgit --match-phrase TODO --match-phrase FIXME
tickgit --match-phrase TODO,FIXME --csv-output
tickgit stats --match-phrase TODO --json
Ignore paths and color

Tickgit skips common repository metadata, dependency, and build paths by default, including .git, node_modules, vendor, dist, build, target, bin, obj, .terraform, virtual environment folders, and coverage output. Use --ignore-path to add repository-specific patterns.

tickgit --ignore-path fixtures --ignore-path generated
tickgit stats --ignore-path docs/generated

Human-readable output is colorized by default unless NO_COLOR is set. Use --color auto, --color always, or --color never to choose explicitly.

NO_COLOR=1 tickgit
tickgit --color never
Issue candidates

Use tickgit candidates to turn tickgit CSV output into issue-candidate markdown with stable duplicate keys. This command is intended for scheduled curation workflows; it does not create issues or mutate repositories.

tickgit --csv-output > .github/tickgit-current.csv
tickgit candidates --repo MTG-Thomas/tickgit --csv-file .github/tickgit-current.csv > .github/tickgit-candidates.md

GitHub Action

This fork includes a read-only GitHub Action that compares current tickgit CSV output to a committed baseline. It is intended for scheduled and pull request checks that fail only when a repository introduces new latent-work comments.

Create a baseline:

tickgit --csv-output > .github/tickgit-baseline.csv

Then add a workflow:

name: tickgit TODO guard

on:
  pull_request:
  schedule:
    - cron: "17 13 * * 1-5"
  workflow_dispatch:

permissions:
  contents: read

jobs:
  todo-guard:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: MTG-Thomas/tickgit@main
        with:
          baseline-file: .github/tickgit-baseline.csv
          fail-on-new: "true"
          match-phrases: TODO,FIXME,HACK
          ignore-paths: fixtures,docs/generated

The Action does not create issues, comments, commits, or other mutations. It builds tickgit from the pinned Action ref and exits with status 2 when new findings appear relative to the baseline.

API

To find information about using the tickgit API, see this file.

Directories

Path Synopsis
cmd
tickgit command
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL