| Crates.io | rusty-todo-md |
| lib.rs | rusty-todo-md |
| version | 1.9.1 |
| created_at | 2025-03-04 19:49:05.541264+00 |
| updated_at | 2025-08-24 17:56:26.35763+00 |
| description | A multi-language TODO comment extractor for source code files. |
| homepage | https://github.com/simone-viozzi/rusty-todo-md |
| repository | https://github.com/simone-viozzi/rusty-todo-md |
| max_upload_size | |
| id | 1577724 |
| size | 348,614 |
Rusty TODO MD helps you find, centralize, and maintain all your TODO comments across your codebase.
It can run as a pre-commit hook or from the CLI, automatically extracting TODO-style comments into a structured TODO.md file.
Supports a wide range of languages and file types, with sectioned formatting, multi-line support, and smart sync.
When pre-commit installs a hook from a Git repo, it runs pip install . from that repo — which would normally build Rusty TODO MD from source (requiring a Rust toolchain).
The shim repository (rusty-todo-md-pre-commit) solves this by depending on the rusty_todo_md PyPI package, ensuring prebuilt wheels are used.
Add this to your .pre-commit-config.yaml:
repos:
- repo: https://github.com/simone-viozzi/rusty-todo-md-pre-commit
rev: v1.7.5 # Use the latest upstream tag (shim mirrors upstream)
hooks:
- id: rusty-todo-md
Then install the hook:
pre-commit install
✅ No Rust toolchain is required when using the shim and a supported platform.
You can also install Rusty TODO MD directly for manual CLI use:
pip install rusty_todo_md
Then run:
rusty-todo-md --help
Automatic TODO Collection
By default, Rusty TODO MD scans your staged files (or all tracked files using the --all-files flag) for markers like TODO and FIXME, and updates your TODO.md with any new entries.
Sectioned TODO.md Format
The TODO.md file is now organized into sections, grouped first by marker (e.g., # TODO, # FIXME), then by file. Each marker section begins with a header (# <MARKER>), each file with a sub-header (## <file-path>), followed by a list of extracted TODO items.
Multi-line TODO Support Handles multi-line and indented TODO comments, merging them into a single entry.
Sync Mechanism
Language-Aware Parsing Supports precise parsing for Python, Rust, JavaScript, and Go out-of-the-box, with plans for additional languages such as TypeScript, PHP, and Java.
Seamless Pre-Commit Integration
Easily integrate Rusty TODO MD into your workflow by adding it to your .pre-commit-config.yaml.
rusty-todo-md
rusty-todo-md --all-files
rusty-todo-md --markers TODO FIXME HACK
rusty-todo-md --todo-path docs/TODOS.md
Rusty TODO MD detects comment syntax based on file extension:
| Language / Type | Extensions |
|---|---|
| Python | py |
| Rust | rs |
| JavaScript / JSX | js, jsx, mjs |
| TypeScript | ts, tsx |
| Java | java |
| C / C++ headers | cpp, hpp, cc, hh |
| C# | cs |
| Swift | swift |
| Kotlin | kt, kts |
| JSON | json |
| Go | go |
| Shell | sh |
| YAML | yml, yaml |
| TOML | toml |
| Dockerfile | dockerfile |
| Markdown | md |
Many extensions share the same parser (e.g., JS-style comment parsing for TS, Java, C-like languages).
Entries in TODO.md use this format:
* [path/to/file.ext:LINE](path/to/file.ext#L{LINE}): MESSAGE
This format is stable and designed for easy linking to code in hosted repos.
Example:
# TODO
## src/main.rs
* [src/main.rs:10](src/main.rs#L10): Refactor initialization logic
Prebuilt wheels are published for:
| OS / libc | Architectures |
|---|---|
| Linux (manylinux) | x86_64, x86, aarch64, armv7, ppc64le |
| Linux (musllinux) | x86_64, x86, aarch64, armv7 |
| Windows | x64, x86 |
| macOS | x86_64 (macOS 13), aarch64 (macOS 14) |
pip will try to build from source — which requires a Rust toolchain.If you want to run Rusty TODO MD directly from the main repo via pre-commit (building from source):
repos:
- repo: https://github.com/simone-viozzi/rusty-todo-md
rev: v1.7.5
hooks:
- id: rusty-todo-md
⚠️ This will compile the Rust source and requires a working Rust toolchain.
Contributions are welcome!
Licensed under the MIT License.
If you find Rusty TODO MD helpful, please consider giving it a ⭐ on GitHub to help others discover the project.