stodo

Crates.iostodo
lib.rsstodo
version0.1.0
created_at2026-01-08 17:01:56.458509+00
updated_at2026-01-08 17:01:56.458509+00
descriptionCLI tool to manage TODO/FIXME comments directly from source code
homepage
repositoryhttps://github.com/julienif/stodo
max_upload_size
id2030703
size65,361
Julien Iffland (julienif)

documentation

README

stodo

stodo (for stuff to do) is a Rust CLI tool that scans your source code for TODO / FIXME comments and lets you manage them as tasks in any language that you like.

It keeps tasks in sync with your code: you can scan your project, list tasks, mark them as done, remove them, and clean up completed entries directly from the command line.


Features

  • ๐Ÿ” Scan source files for TODO / FIXME comments
  • ๐Ÿ“ Track tasks in a local stodo.json file
  • โœ… Mark tasks as done
  • โŒ Remove tasks from both the task list and the source code
  • ๐Ÿงน Clear completed tasks
  • โšก Fast and lightweight (written in Rust)
  • โ— Ignore or not the json file created in git
  • ๐Ÿงช Tested (unit, integration, and CLI end-to-end tests)

Installation

Install binary (recommended)

This requires having binstall installed. If not, see binstall

cargo binstall stodo

From source (cargo)

cargo install stodo

Usage

It is recommended to use this CLI from the root of your project.

Initialize a project

stodo init --comm-pat //

This creates a stodo.json file in the current directory and sets the comment pattern used to detect TODOs (for example // for Rust, C, C++, Java, etc.).

Scan your code for TODOs

stodo scan

This command:

  • scans the current directory
  • detects TODO / FIXME comments
  • adds them as tasks to stodo.json
  • updates the source files with unique task IDs

By default, scanned tasks are set to priority low.

List all the tasks

stodo list

This prints a list of all your tasks and their status.

Add a new task

stodo new

This command opens a dialoguer that asks you for:

  • Which function in the code you want to work on (multiple choices with paths if conflicting names)
  • What is the purpose of the task (message)
  • The type of the task (TODO / FIXME)
  • The priority (High / Medium / Low)

Then it adds it to your list and creates a comment in your code to remember it.

โš ๏ธ The function search feature works only for Rust and hence, adding the comment to the code. If a function name is not found in the code (by default with non-Rust languages), the task will only be added to the json list.

Mark task as done

stodo done [index]

This commands sets your task as done and ready to be cleared. Mind that tasks are 1 indexed.

You can also mark all entry as done.

stodo done --all

Clear done tasks

stodo clear

This command remove all tasks marked as done from your list and your code.

Remove tasks

stodo remove [index]

This commands remove from the list and the code the given task.

As for done, you can remove all tasks at once.

stodo remove --all

Ignoring stodo.json when pushing to git

stodo ignore

Adds stodo.json to the .gitignore file and avoid flooding your repositories.


Notes

stodo is a project mainly made to deepen my Rust understanding. It is likely to have bugs, so keep it in mind.

If you encounter any issues I would be happy to be aware of that and open to contribution :)

Commit count: 18

cargo fmt