This skill manages the file-based TODO tracking system in the todos/ directory. It provides workflows for creating TODOs, managing status and dependencies, conducting triage, and integrating with /review, /address-feedback, and /plan-feature commands.
The todos/ directory contains a file-based tracking system for managing code review feedback, technical debt, feature requests, and work items. TODOs are organized by branch, with each branch having its own subdirectory. Each TODO is a markdown file with YAML frontmatter and structured sections.
This skill should be used when:
TODOs are organized by git branch:
todos/
├── feature-auth/ # Branch: alice/feature-auth
│ ├── 001-pending-p1-fix-login.md
│ └── 002-ready-p2-add-tests.md
└── bugfix-query/ # Branch: bob/bugfix-query
└── 001-ready-p1-optimize-sql.md
Branch suffix extraction:
alice/feature-auth → feature-auth/bugfix-query → bugfix-query/main → Warns user to create a feature branchKey principle: Each branch is an isolated unit of work with its own sequential issue IDs (001, 002, 003...).
TODO files follow this naming pattern:
{issue_id}-{status}-{priority}-{description}.md
Components:
pending (needs triage), ready (approved), complete (done)p1 (critical), p2 (important), p3 (nice-to-have)Examples:
001-pending-p1-fix-auth-bug.md
002-ready-p2-optimize-database-query.md
005-complete-p3-add-type-hints.md
Each TODO is a markdown file with YAML frontmatter and structured sections. Use the template at assets/todo-template.md as a starting point when creating new TODOs.
Required sections:
YAML frontmatter fields:
---
status: ready # pending | ready | complete
priority: p1 # p1 | p2 | p3
issue_id: "002"
tags: [security, api, code-review]
dependencies: ["001"] # Issue IDs this is blocked by
---
Before any TODO operation, detect the current branch and set up the TODO directory:
# Get branch suffix (alice/feature-auth → feature-auth)
branch_suffix=$(git branch --show-current | sed 's|.*/||')
todo_dir="todos/$branch_suffix"
# Warn if on main branch
if [ "$branch_suffix" = "main" ] || [ "$branch_suffix" = "master" ]; then
echo "⚠️ Warning: You're on the $branch_suffix branch."
echo "TODOs should typically be associated with feature branches."
# Offer to create a new branch or continue anyway
fi
# Ensure directory exists
mkdir -p "$todo_dir"
Set up branch directory and determine next issue ID:
branch_suffix=$(git branch --show-current | sed 's|.*/||')
todo_dir="todos/$branch_suffix"
mkdir -p "$todo_dir"
next_id=$(ls "$todo_dir"/ 2>/dev/null | grep -o '^[0-9]\+' | sort -n | tail -1 | awk '{printf "%03d", $1+1}')
[ -z "$next_id" ] && next_id="001"
Copy template:
cp ~/.claude/skills/file-todos/assets/todo-template.md "$todo_dir/{NEXT_ID}-pending-{priority}-{description}.md"
Fill required sections:
Add relevant tags for filtering
When to create a TODO:
When to act immediately instead:
Use /triage command or manually:
branch_suffix=$(git branch --show-current | sed 's|.*/||')
todo_dir="todos/$branch_suffix"
ls "$todo_dir"/*-pending-*.mdpending → readystatus: readypending statusDependencies are tracked within the same branch only (no cross-branch dependencies).
Track dependencies:
dependencies: ["002", "005"] # Blocked by issues 002 and 005 in same branch
dependencies: [] # No blockers
Check what blocks a TODO:
branch_suffix=$(git branch --show-current | sed 's|.*/||')
grep "^dependencies:" "todos/$branch_suffix"/003-*.md
Find what a TODO blocks:
branch_suffix=$(git branch --show-current | sed 's|.*/||')
grep -l 'dependencies:.*"002"' "todos/$branch_suffix"/*.md
ready → completestatus: complete| Command | Creates TODOs | Uses TODOs |
| -------------- | ------------------------------- | ----------------------- |
| /dev.spec | No | No |
| /dev.plan | No | No |
| /dev.tasks | Yes - generates TODOs from plan | No |
| /dev.work | No | Yes - executes TODOs |
| /dev.triage | No | Yes - manages lifecycle |
| /dev.commits | No | No |
Setup (run before any TODO operation):
branch_suffix=$(git branch --show-current | sed 's|.*/||')
todo_dir="todos/$branch_suffix"
mkdir -p "$todo_dir"
Finding work (current branch):
# List highest priority unblocked work
ls "$todo_dir"/*-ready-p1-*.md
# List pending items needing triage
ls "$todo_dir"/*-pending-*.md
# Find next issue ID for this branch
next_id=$(ls "$todo_dir"/ 2>/dev/null | grep -o '^[0-9]\+' | sort -n | tail -1 | awk '{printf "%03d", $1+1}')
[ -z "$next_id" ] && next_id="001"
# Count by status (current branch)
for status in pending ready complete; do
echo "$status: $(ls -1 "$todo_dir"/*-$status-*.md 2>/dev/null | wc -l)"
done
Searching (current branch):
# Search by tag
grep -l "tags:.*security" "$todo_dir"/*.md
# Search by priority
ls "$todo_dir"/*-p1-*.md
# Full-text search
grep -r "user_id" "$todo_dir"/
Searching (all branches):
# Find all pending TODOs across branches
find todos -name "*-pending-*.md"
# Search all branches by tag
grep -r "tags:.*security" todos/
# List all branch directories
ls -d todos/*/
File-todos system (this skill):
todos/<branch>/ directoriesTodoWrite tool:
npx skills add BonJarber/基于文件的 TODO 管理(file-todos)下载完整 Skill 目录,包含 SKILL.md 及所有相关文件
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer