
Todo Tracker
- 170 installs
- 638 repo stars
- Updated March 7, 2026
- sundial-org/awesome-openclaw-skills
Use todo-tracker for development tasks
About
todo-tracker: A skill for development. This provides functionality for development workflows.
- todo-tracker
Todo Tracker by the numbers
- 170 all-time installs (skills.sh)
- Ranked #2,259 of 4,347 Backend & APIs skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/sundial-org/awesome-openclaw-skills --skill todo-trackerAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 170 |
|---|---|
| repo stars | ★ 638 |
| Last updated | March 7, 2026 |
| Repository | sundial-org/awesome-openclaw-skills ↗ |
What it does
Use todo-tracker for development tasks
Files
TODO Tracker
Maintain a persistent TODO.md scratch pad in the workspace.
File Location
TODO.md in workspace root (e.g., /Users/nuthome/nuri-bot/TODO.md)
Commands
View TODO
When user asks: "what's on the TODO?", "show TODO", "pending tasks?"
cat TODO.mdThen summarize the items by priority.
Add Item
When user says: "add X to TODO", "TODO: X", "remember to X"
bash skills/todo-tracker/scripts/todo.sh add "<priority>" "<item>"Priorities: high, medium, low (default: medium)
Examples:
bash skills/todo-tracker/scripts/todo.sh add high "Ingest low-code docs"
bash skills/todo-tracker/scripts/todo.sh add medium "Set up Zendesk escalation"
bash skills/todo-tracker/scripts/todo.sh add low "Add user memory feature"Mark Done
When user says: "mark X done", "completed X", "finished X"
bash skills/todo-tracker/scripts/todo.sh done "<item-pattern>"Matches partial text. Moves item to ✅ Done section with date.
Remove Item
When user says: "remove X from TODO", "delete X from TODO"
bash skills/todo-tracker/scripts/todo.sh remove "<item-pattern>"List by Priority
bash skills/todo-tracker/scripts/todo.sh list high
bash skills/todo-tracker/scripts/todo.sh list medium
bash skills/todo-tracker/scripts/todo.sh list lowHeartbeat Integration
On heartbeat, check TODO.md: 1. Count high-priority items 2. Check for stale items (added >7 days ago) 3. If items exist, include brief summary in heartbeat response
Example heartbeat check:
bash skills/todo-tracker/scripts/todo.sh summaryTODO.md Format
# TODO - Nuri Scratch Pad
*Last updated: 2026-01-17*
## 🔴 High Priority
- [ ] Item one (added: 2026-01-17)
- [ ] Item two (added: 2026-01-15) ⚠️ STALE
## 🟡 Medium Priority
- [ ] Item three (added: 2026-01-17)
## 🟢 Nice to Have
- [ ] Item four (added: 2026-01-17)
## ✅ Done
- [x] Completed item (done: 2026-01-17)Response Format
When showing TODO:
📋 **TODO List** (3 items)
🔴 **High Priority** (1)
• Ingest low-code docs
🟡 **Medium Priority** (1)
• Zendesk escalation from Discord
🟢 **Nice to Have** (1)
• User conversation memory
⚠️ 1 item is stale (>7 days old)📋 TODO Tracker Skill
A persistent TODO scratch pad for Clawdbot that tracks tasks across sessions with priorities, completion tracking, and heartbeat reminders.
Installation
# Clone to your skills folder
git clone https://github.com/jdrhyne/todo-tracker-skill.git skills/todo-trackerOr copy SKILL.md and scripts/ to your Clawdbot workspace.
Usage
Just talk naturally to your agent:
| Say this... | What happens |
|---|---|
| "Add X to TODO" | Adds item (default: medium priority) |
| "Add X to high priority TODO" | Adds as high priority |
| "What's on the TODO?" | Shows the list |
| "Mark X done" | Moves item to Done section |
| "Remove X from TODO" | Deletes the item |
Priorities
- 🔴 High — Urgent items
- 🟡 Medium — Normal priority (default)
- 🟢 Nice to Have — Low priority / future ideas
TODO.md Format
The skill maintains a TODO.md file in your workspace:
# TODO - Scratch Pad
*Last updated: 2026-01-17*
## 🔴 High Priority
- [ ] Important task (added: 2026-01-17)
## 🟡 Medium Priority
- [ ] Regular task (added: 2026-01-17)
## 🟢 Nice to Have
- [ ] Future idea (added: 2026-01-17)
## ✅ Done
- [x] Completed task (done: 2026-01-17)CLI Commands
The skill includes a bash script for direct use:
# Add items
bash scripts/todo.sh add high "Urgent task"
bash scripts/todo.sh add medium "Normal task"
bash scripts/todo.sh add low "Nice to have"
# Mark done (matches partial text)
bash scripts/todo.sh done "Urgent"
# Remove item
bash scripts/todo.sh remove "old task"
# List all
bash scripts/todo.sh list
# Quick summary (great for heartbeats)
bash scripts/todo.sh summaryHeartbeat Integration
Add this to your HEARTBEAT.md to get reminders:
## Active Monitoring Tasks
### Daily TODO Check
On each heartbeat:
- Run: bash skills/todo-tracker/scripts/todo.sh summary
- If high-priority items exist, mention them
- Flag stale items (>7 days old)Example Summary Output
📋 TODO: 7 items (2 high, 2 medium, 3 low)
🔴 High priority items:
• Ingest low-code docs
• Fix critical bug
⚠️ 1 stale item (>7 days old)License
MIT — use freely!
---
Made for Clawdbot 🤖
#!/bin/bash
# TODO Tracker Script
# Usage: todo.sh <command> [args]
# add <priority> <item> - Add item (priority: high|medium|low)
# done <pattern> - Mark matching item as done
# remove <pattern> - Remove matching item
# list [priority] - List items, optionally by priority
# summary - Quick summary for heartbeat
set -e
TODO_FILE="${TODO_FILE:-TODO.md}"
DATE=$(date +%Y-%m-%d)
# Ensure TODO.md exists with proper structure
init_todo() {
if [[ ! -f "$TODO_FILE" ]]; then
cat > "$TODO_FILE" << 'EOF'
# TODO - Nuri Scratch Pad
*Last updated: DATE_PLACEHOLDER*
## 🔴 High Priority
## 🟡 Medium Priority
## 🟢 Nice to Have
## ✅ Done
---
## Notes
EOF
sed -i '' "s/DATE_PLACEHOLDER/$DATE/" "$TODO_FILE" 2>/dev/null || \
sed -i "s/DATE_PLACEHOLDER/$DATE/" "$TODO_FILE"
fi
}
# Update the "Last updated" date
update_date() {
sed -i '' "s/\*Last updated:.*\*/*Last updated: $DATE*/" "$TODO_FILE" 2>/dev/null || \
sed -i "s/\*Last updated:.*\*/*Last updated: $DATE*/" "$TODO_FILE"
}
# Add an item
add_item() {
local priority="$1"
local item="$2"
init_todo
local section=""
case "$priority" in
high) section="## 🔴 High Priority" ;;
medium) section="## 🟡 Medium Priority" ;;
low) section="## 🟢 Nice to Have" ;;
*) section="## 🟡 Medium Priority"; item="$priority $item" ;;
esac
# Find the section and add item after it
local entry="- [ ] $item (added: $DATE)"
# Use awk to insert after the section header
awk -v section="$section" -v entry="$entry" '
$0 == section { print; print entry; next }
{ print }
' "$TODO_FILE" > "$TODO_FILE.tmp" && mv "$TODO_FILE.tmp" "$TODO_FILE"
update_date
echo "✅ Added to $priority priority: $item"
}
# Mark item as done
mark_done() {
local pattern="$1"
# Find and move the item
if grep -q "\- \[ \].*$pattern" "$TODO_FILE"; then
# Extract the item text
local item=$(grep -m1 "\- \[ \].*$pattern" "$TODO_FILE" | sed 's/- \[ \] //' | sed 's/ (added:.*//')
# Remove from current location
sed -i '' "/\- \[ \].*$pattern/d" "$TODO_FILE" 2>/dev/null || \
sed -i "/\- \[ \].*$pattern/d" "$TODO_FILE"
# Add to Done section
local done_entry="- [x] $item (done: $DATE)"
awk -v section="## ✅ Done" -v entry="$done_entry" '
$0 == section { print; print entry; next }
{ print }
' "$TODO_FILE" > "$TODO_FILE.tmp" && mv "$TODO_FILE.tmp" "$TODO_FILE"
update_date
echo "✅ Marked done: $item"
else
echo "❌ No matching item found for: $pattern"
exit 1
fi
}
# Remove item completely
remove_item() {
local pattern="$1"
if grep -q "\- \[.\].*$pattern" "$TODO_FILE"; then
sed -i '' "/\- \[.\].*$pattern/d" "$TODO_FILE" 2>/dev/null || \
sed -i "/\- \[.\].*$pattern/d" "$TODO_FILE"
update_date
echo "🗑️ Removed item matching: $pattern"
else
echo "❌ No matching item found for: $pattern"
exit 1
fi
}
# List items
list_items() {
local priority="$1"
init_todo
if [[ -z "$priority" ]]; then
cat "$TODO_FILE"
else
local section=""
case "$priority" in
high) section="High Priority" ;;
medium) section="Medium Priority" ;;
low) section="Nice to Have" ;;
done) section="Done" ;;
esac
awk -v section="$section" '
$0 ~ section { found=1 }
found && /^## / && $0 !~ section { found=0 }
found { print }
' "$TODO_FILE"
fi
}
# Summary for heartbeat
summary() {
init_todo
# Count by section
local high_count=$(awk '/🔴 High/,/^## 🟡/' "$TODO_FILE" | grep -c "^- \[ \]" 2>/dev/null || echo 0)
local med_count=$(awk '/🟡 Medium/,/^## 🟢/' "$TODO_FILE" | grep -c "^- \[ \]" 2>/dev/null || echo 0)
local low_count=$(awk '/🟢 Nice/,/^## ✅/' "$TODO_FILE" | grep -c "^- \[ \]" 2>/dev/null || echo 0)
local total=$((high_count + med_count + low_count))
# Check for stale items (>7 days old)
local stale=0
local week_ago=$(date -v-7d +%Y-%m-%d 2>/dev/null || date -d "7 days ago" +%Y-%m-%d)
while IFS= read -r line; do
if [[ "$line" =~ added:\ ([0-9]{4}-[0-9]{2}-[0-9]{2}) ]]; then
local added="${BASH_REMATCH[1]}"
if [[ "$added" < "$week_ago" ]]; then
((stale++))
fi
fi
done < <(grep "^- \[ \]" "$TODO_FILE")
echo "📋 TODO: $total items ($high_count high, $med_count medium, $low_count low)"
if [[ $stale -gt 0 ]]; then
echo "⚠️ $stale stale items (>7 days old)"
fi
if [[ $high_count -gt 0 ]]; then
echo "🔴 High priority items:"
awk '/🔴 High/,/^## 🟡/' "$TODO_FILE" | grep "^- \[ \]" | head -3 | sed 's/- \[ \] / • /' | sed 's/ (added:.*//' | sed 's/\*\*//g'
fi
}
# Main
case "$1" in
add)
add_item "$2" "$3"
;;
done)
mark_done "$2"
;;
remove)
remove_item "$2"
;;
list)
list_items "$2"
;;
summary)
summary
;;
*)
echo "Usage: todo.sh <command> [args]"
echo " add <priority> <item> - Add item (priority: high|medium|low)"
echo " done <pattern> - Mark matching item as done"
echo " remove <pattern> - Remove matching item"
echo " list [priority] - List items"
echo " summary - Quick summary"
exit 1
;;
esac