pma 0.1.0

Lint TODO.md files across many git repositories and rank their tasks in an Eisenhower matrix
pma-0.1.0 is not a library.

pma

Maintenance across many repositories from one place.

Status: stages 1 and 2 of the design: lint, scan, matrix and health. Agent dispatch is not built yet.

Install

cargo install pma

From a clone: make install.

Requirements:

  • macOS or Linux. The database location is derived from HOME.
  • Rust 1.88 or later, and a C compiler: SQLite is compiled in.
  • git on PATH.
  • gh, authenticated, for CI status. Without it, CI is recorded as unknown and left out of health; pma scan --offline skips GitHub on purpose.

TODO.md format

# TODO

## Critical

- [ ] segfault on empty input #bug gh:42

## High

- [ ] support ggml 0.9 due:2026-10-01

## Medium

## Low

## Done

- [x] drop python 3.9

The section gives the priority. A ### heading inside a section groups the items below it. Trailing #tag, due:YYYY-MM-DD and gh:N (a linked issue) are optional. The full rules are in the design.

Commands

pma lint                        # ./TODO.md
pma lint ~/projects/*/          # every project; a directory means its TODO.md

Output is path:line: severity: message. Exit status is 1 when any file has an error or cannot be read. Warnings alone exit 0.

pma root add ~/projects/          # git repos directly under it are projects
pma tier cyllama 1                # 1 (most important) to 5, or none
pma scan                          # TODO.md, git state, CI via gh; about 15s for 95 repos
pma scan --offline cyllama        # one project, without GitHub
pma matrix                        # tiered projects' tasks in the Eisenhower matrix
pma matrix -q q1 --all
pma status --explain              # projects by health, with each signal's share
pma config                        # every setting; `pma config tiers.2 0.7`, `--reset`

matrix and status read the last scan; they do not rescan. Only tiered projects appear in them.

The database is ~/.config/pma/projects.db, or $PMA_HOME/projects.db. Dates are compared as UTC calendar days.

Development

make test     # cargo test, then pytest on scripts/
make check    # fmt check, clippy -D warnings, test