towl 🦉

A fast command-line tool that scans your codebase for TODO comments, lets you browse them in an interactive TUI, and optionally creates GitHub issues from them.
Features
- Interactive TUI: Browse, filter, sort, and peek at TODOs in a full-screen terminal interface
- GitHub Integration: Create GitHub issues from selected TODOs and replace comments with issue links
- Smart Detection: Finds TODO, FIXME, HACK, NOTE, and BUG comments
- Multiple Output Formats: JSON, CSV, Markdown, TOML, terminal table (non-interactive mode)
- Filtering & Sorting: Filter by TODO type, sort by file, line, type, or priority
- Fast: Async I/O, concurrent file scanning, compiled regex patterns
- Configurable: Customise file extensions, patterns, and exclusions via
.towl.toml - Context-Aware: Shows surrounding code lines and enclosing function names
Installation
Quick Start
# Scan current directory (opens interactive TUI)
# Scan in non-interactive mode (CI/scripting)
# Output to JSON file
# Filter by type
# Create GitHub issues from TODOs
# Preview GitHub issues without creating them
# Initialise config
# Show current config
Usage
)
)
)
Interactive TUI
By default, towl scan opens an interactive terminal interface:
| Key | Action |
|---|---|
j / Down |
Move cursor down |
k / Up |
Move cursor up |
Space |
Toggle selection |
a |
Select all visible |
n |
Deselect all |
f |
Cycle type filter |
s |
Cycle sort field (file, line, type, priority) |
r |
Reverse sort order |
p |
Peek at source code around the TODO |
Enter |
Confirm selection and create GitHub issues |
q / Esc |
Quit |
Use --non-interactive / -N to bypass the TUI for CI pipelines and scripting.
Configuration
Create a .towl.toml file in your project root (or run towl init):
[]
= ["rs", "toml", "json", "yaml", "yml", "sh", "bash"]
= ["target/*", ".git/*"]
= 3
[]
= "your-github-username"
= "your-repo-name"
The GitHub token can be set via the TOWL_GITHUB_TOKEN environment variable. Owner and repo are auto-detected from the git remote on towl init.
License
MIT