todo-audit
Skill0 starsChanged 9 days agoMITView on GitHub
Collect and assess TODO, FIXME, HACK, XXX and BUG comments in a codebase - with location, age and author from git blame - and flag very old ones, ones without context or owner, risky ones and ones that look already resolved. Use when asked to find/list/audit/clean up TODOs, FIXMEs, technical debt markers or open notes in code, in any language.
In this repository28 other files it gives its agents.
- accessibility-auditSkill
- api-design-reviewSkill
- architecture-reviewSkill
- complexity-checkSkill
- concurrency-reviewSkill
- config-reviewSkill
- cpp-google-styleSkill
- csharp-google-styleSkill
- dead-code-finderSkill
- dependency-auditSkill
- doc-comment-auditSkill
- error-handling-reviewSkill
- full-reviewSkill
- java-google-styleSkill
- logging-reviewSkill
- markdown-readme-google-styleSkill
- naming-reviewSkill
- owasp-security-reviewSkill
- performance-reviewSkill
- privacy-reviewSkill
- python-google-styleSkill
- regex-reviewSkill
- repo-hygieneSkill
- review-without-fixingSkill
- secrets-scanSkill
- shell-google-styleSkill
- sql-reviewSkill
- test-coverage-reviewSkill
The file
We split this skill into the rules it gives an agent
6 rules. About 0 are common, 3 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 11
Check the files/directories the user names, otherwise the whole repo.
- Very specific: line 14
Run (no pipe; output is capped): bash <skill-dir>/scripts/todos.sh <project-root> [maxHits=300]
- Very specific: line 17
Only matches tags inside comments (//, #, /* */, *, --, <!--, ;, REM).
- Distinctive: line 38
Every finding has a concrete location.
- Distinctive: line 40
Don't repeat the full TD1 inventory when it is large: show the counts, the TD2-TD7 findings and offer the full list.
- Distinctive: line 42
Do not change code. Remove or edit TODOs only when the user explicitly asks for it.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
TODO audit
Review only: report findings, never delete or edit TODO comments unless the user explicitly asks.
Scope
Check the files/directories the user names, otherwise the whole repo. Skip .git/, build output (build/, dist/, out/, target/, bin/, obj/), vendor/, node_modules/, .venv/, __pycache__/, minified and generated files. Third-party code copied into the repo is reported separately (count only).
Steps
- Run (no pipe; output is capped):
bash <skill-dir>/scripts/todos.sh <project-root> [maxHits=300]- Prints
path:line<TAB>TAG<TAB>age_days<TAB>author<TAB>text, then totals per tag. - Age/author come from
git blame; outside a git repo or withNO_BLAME=1they are?. For very large repos with thousands of hits, useNO_BLAME=1first and blame only the interesting ones. - Only matches tags inside comments (
//,#,/* */,*,--,<!--,;,REM).
- Prints
- For TD5 (possibly resolved), read the code around each TODO that names a concrete task, and check referenced issues (
#123, issue URLs) withgh issue view <n>ifghis available and the repo is on GitHub - never guess the issue status. - Report (format below).
Rules
- TD1 info: every TODO/FIXME/HACK/XXX/BUG (the inventory)
- TD2 warning: older than 365 days (info: older than 180 days) - old TODOs are usually forgotten, not planned
- TD3 warning: no context: only the tag, or text too short to act on (
// TODO,# FIXME later,TODO: fix) - TD4 info: no owner and no ticket (
TODO(name):,TODO: #123 -, an issue URL) - nobody feels responsible - TD5 warning: possibly resolved: the described task seems done in the code, the referenced function/file no longer exists, or the referenced issue is closed
- TD6 warning:
FIXME,BUG,HACK,XXXin production code (not tests) - known defects or workarounds that ship - TD7 error: release- or security-relevant: "remove before release", "temporary", "insecure", "disable auth", "hardcoded password", "skip validation", "don't commit"
False positives to drop
Tag words in strings or identifiers (TODO_LIST, "todo" in a todo app) · the literal word in docs explaining the TODO convention · XXX used as a placeholder in format strings or test data · vendored third-party code (count only).
Report
In the user's language, grouped by file:
path/to/file:line - error|warning|info - <ID> <rule> - <TAG> (<age> days, <author>) "<text>" - <why it matters>- Every finding has a concrete location. TD5 is always "possible" unless an issue status was actually checked.
- Combine all rules for one comment into one line (e.g.
TD2+TD3+TD4). - Don't repeat the full TD1 inventory when it is large: show the counts, the TD2-TD7 findings and offer the full list.
- End with a summary: count per tag, the 10 oldest, count per author, then the 3 most important ones to resolve or turn into tickets first.
- Do not change code. Remove or edit TODOs only when the user explicitly asks for it.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

