.claude/skills/run-todos/SKILL.md
Implement [ready]-tagged TODO items with commits. Use after /list-todos has clarified requirements and marked items as ready.
npx skillsauth add benjaminshoemaker/ai_coding_project_base run-todosInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Implement TODO items that have been marked as [ready] in TODOS.md.
Copy this checklist and track progress:
Run TODOs Progress:
- [ ] Step 1: Directory guard check
- [ ] Step 2: Find [ready] items
- [ ] Step 3: User selection
- [ ] Step 4: Git workflow setup
- [ ] Step 5: Implementation loop (per item)
- [ ] Step 6: Update TODOS.md with completion
- [ ] Step 7: Generate summary report
Before starting, confirm TODOS.md exists in the current working directory.
cd into their project directory.Before starting: If context is below 40% remaining, run /compact first. This ensures the full command instructions remain in context throughout execution.
[ready] tag- [x]) or have — DONEIf no [ready] items found:
NO READY ITEMS
==============
No items tagged [ready] found in TODOS.md.
To mark items as ready:
1. Run /list-todos
2. Go through Q&A to clarify requirements
3. Confirm readiness when asked
Or manually add [ready] tag to items you want to implement.
Show the list of [ready] items and let user select:
READY ITEMS
===========
Found {N} items tagged [ready]:
1. {item title 1}
2. {item title 2}
3. {item title 3}
Which items would you like to implement?
Use AskUserQuestion:
Question: "Which items would you like to implement?"
Header: "Selection"
Options:
- Label: "All items"
Description: "Implement all {N} ready items in sequence (Recommended)"
- Label: "Select specific items"
Description: "Choose which items to implement"
- Label: "Cancel"
Description: "Exit without implementing"
If "Select specific items", use AskUserQuestion with multiSelect:
Question: "Select items to implement:"
Header: "Items"
Options:
- Label: "1. {item 1 title}"
Description: "{priority if present}"
- Label: "2. {item 2 title}"
Description: "{priority if present}"
... (up to 4 items per question, use multiple questions if more)
multiSelect: true
If "Cancel", exit the command.
Before creating a branch:
CURRENT_BRANCH=$(git branch --show-current)
UNPUSHED=$(git rev-list --count @{upstream}..HEAD 2>/dev/null || echo "no-upstream")
If UNPUSHED > 0, use AskUserQuestion:
Question: "You have {UNPUSHED} unpushed commit(s) on `{CURRENT_BRANCH}`. Push before creating todo branch?"
Header: "Unpushed"
Options:
- Label: "Yes, push first"
Description: "Push current commits before starting (Recommended)"
- Label: "No, continue anyway"
Description: "Create branch from unpushed state"
# If working tree is dirty, stage and commit tracked changes first
git add -u && git diff --cached --quiet || git commit -m "wip: uncommitted changes before todo implementation"
# Create todo implementation branch
git checkout -b todo-impl-$(date +%Y-%m-%d)
Note: Use git add -u (tracked files only) to avoid accidentally staging secrets,
build artifacts, or other untracked files. If untracked files need to be included,
stage them by name.
Verify branch creation: Run git branch --show-current and confirm it matches
todo-impl-{date}. If the checkout failed (e.g., branch already exists), append
a suffix: todo-impl-{date}-2.
For each selected item:
IMPLEMENTING: {item title}
===========================
{Full item text from TODOS.md}
{If clarifications exist:}
Clarifications:
- {Q1}: {A1}
- {Q2}: {A2}
Before implementing, verify the item has sufficient detail. Check for both:
**Clarifications (from Q&A ...)** block exist for this item in TODOS.md?If the item has NEITHER a multi-sentence description NOR a clarifications section, flag it to the user:
⚠ THIN REQUIREMENTS
This item has no clarifications and a minimal description:
"{item title}"
Implementing without clear requirements risks building the wrong thing.
Use AskUserQuestion:
Question: "'{item title}' has minimal requirements. How should we proceed?"
Header: "Thin reqs"
Options:
- Label: "Clarify now"
Description: "Ask questions before implementing (Recommended)"
- Label: "Implement anyway"
Description: "Proceed with best judgment based on available context"
- Label: "Skip this item"
Description: "Move to the next item"
If the item has a description or clarifications, proceed directly to Step 3.
Implement the TODO item following project conventions:
If the item has acceptance criteria or testable requirements:
After successful implementation:
- [ ] → - [x]— DONE ({short_commit_hash})Before:
- [ ] **[P1 / Medium]** Add user auth endpoint [ready]
After:
- [x] **[P1 / Medium]** Add user auth endpoint [ready] — DONE (a1b2c3d)
Use the Edit tool to make this update.
Stage the specific files changed during implementation, plus TODOS.md:
git add {files created or modified during implementation} TODOS.md
git commit -m "todo: {item title (shortened if needed)}"
Do NOT use git add -A or git add . — stage files by name to avoid
committing secrets (.env), credentials, or unintended artifacts.
Verify commit succeeded: Check exit code of git commit. If it fails (e.g.,
pre-commit hook rejection), fix the issue and create a new commit — do NOT use
--amend.
Get the commit hash for the TODOS.md update:
COMMIT_HASH=$(git rev-parse --short HEAD)
If implementation fails (tests don't pass, errors occur), use AskUserQuestion:
Question: "Implementation of '{item title}' failed. What would you like to do?"
Header: "Failed"
Options:
- Label: "Skip this item"
Description: "Continue with the next item (Recommended if blocked)"
- Label: "Retry"
Description: "Try implementing again with a different approach"
- Label: "Abort session"
Description: "Stop and leave remaining items for later"
After all items are processed (or aborted):
RUN-TODOS COMPLETE
==================
Branch: todo-impl-{date}
Completed: {N} items
{For each completed item:}
✓ {item title} ({commit_hash})
{If any skipped:}
Skipped: {N} items
{For each skipped item:}
✗ {item title} — {reason}
{If aborted early:}
Remaining: {N} items not attempted
TODOS.md updated with completion status.
Next: Review changes, then run:
git push origin todo-impl-{date}
Ready to open a PR? Create one using your preferred workflow.
After the summary report, count the total number of completed items (- [x]) in
TODOS.md (including items completed in previous sessions).
If 10 or more completed items exist, offer to archive:
Question: "TODOS.md has {N} completed items. Archive them to keep the file manageable?"
Header: "Archive"
Options:
- Label: "Yes, archive (Recommended)"
Description: "Move completed items to TODOS-ARCHIVE.md"
- Label: "No, keep as-is"
Description: "Leave completed items in TODOS.md"
If "Yes, archive":
TODOS-ARCHIVE.md in the project root- [x] items (and their clarifications blocks) from TODOS.md to
TODOS-ARCHIVE.md under a dated heading:
## Archived {YYYY-MM-DD}
- [x] **[P1 / Medium]** Item title [ready] — DONE (a1b2c3d)
- [x] **[P2 / Low]** Another item [ready] — DONE (e4f5g6h)
git add TODOS.md TODOS-ARCHIVE.md
git commit -m "chore: archive completed TODO items"
If fewer than 10 completed items, skip this step silently.
| Situation | Action |
|-----------|--------|
| TODOS.md does not exist in working directory | STOP and tell user to create TODOS.md or cd into their project directory |
| No [ready]-tagged items found in TODOS.md | Report "No ready items" with instructions on how to mark items as ready via /list-todos |
| Git branch creation fails (branch name already exists) | Append an incrementing suffix (e.g., todo-impl-2026-02-22-2) and retry |
| git commit fails due to pre-commit hook rejection | Fix the flagged issue (e.g., lint errors), re-stage, and create a new commit; do NOT use --amend |
| Implementation fails (tests do not pass or runtime errors) | Present failure details via AskUserQuestion with options: skip item, retry with different approach, or abort session |
testing
Audit project alignment with VISION.md, identify SDLC gaps, and generate feature proposals. Use when reviewing strategic direction or planning new features.
development
Run code-verification on a specific task. Use to verify a single task's acceptance criteria after implementation.
testing
Resolve Vercel preview deployment URL for the current git branch. Invoked by browser-verification when deployment.enabled is true, or directly to check deployment status. Use to check deployment status or when browser verification needs a URL.
tools
Discover and sync all toolkit-using projects with the latest skills. Use when skills are modified, after the post-commit hook reminds you, or to batch-sync multiple projects.