Help us improve
Share bugs, ideas, or general feedback.
From sjh-skills
Picks the next executable task from project-root TODO.md by priority and dependency, marks it in-progress, and executes it. Uses a structured task format with priority, ID, and dep fields.
npx claudepluginhub jiahao-shao1/sjh-skills --plugin sjh-skillsHow this skill is triggered — by the user, by Claude, or both
Slash command
/sjh-skills:todo-workerThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Pick the next executable task from project-root `TODO.md` by priority + dependency, atomically mark it `[~]` (in-progress), then start executing it.
Marks tasks ongoing in TASKS.md and begins execution. Triggers on 'start', 'work on', task slugs like #fix-auth, or /starting-task.
Creates and manages structured Markdown todos for code reviews, technical debt, work items, and findings in .context/compound-engineering/todos/, handling lifecycle from pending to complete.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Share bugs, ideas, or general feedback.
Pick the next executable task from project-root TODO.md by priority + dependency, atomically mark it [~] (in-progress), then start executing it.
The skill assumes this canonical task-line format:
- `[STATE]` [PRIORITY] [ID] (dep: ID1,ID2) Title text
Where:
| Field | Values | Example |
|---|---|---|
STATE | (todo), ~ (in-progress), x (done), ! (blocked) | [ ] |
PRIORITY | P0 (must) / P1 (important) / P2 (optional) | [P0] |
ID | T + digits, project-unique | [T01] |
dep: | comma-separated IDs, omitted if no deps | (dep: T02,T03) |
Task-line regex:
^- `\[(.)\]` \[(P\d)\] \[(T\d+)\](?:\s*\(dep:\s*([^)]+)\))?\s*(.+)
A project that doesn't already follow this format should adopt it before using the skill (or run a migration). Status markers alone are not enough — dependency-aware picking needs the full schema.
| Marker | Meaning |
|---|---|
[ ] | Pending |
[~] | In progress (claimed by a worker) |
[x] | Done |
[!] | Blocked (needs human) |
Read project-root TODO.md. Parse every task line. Extract state, priority, id, deps[], title.
Filter and sort:
state == "[ ]"dep: IDs resolve to a task with state == "[x]"P0 < P1 < P2), then by numeric ID ascendingIf nothing qualifies (everything done / blocked by deps / [!]), report to user and stop.
Claim before confirming. Rewrite the matched line from [ ] to [~] and write TODO.md back. This shrinks the race window with other sessions to a single file write.
Concise format:
🎯 Next task: [T01] [P0] <title>
Dependencies: none
Unblocks: T03, T04, T13
Confirm start? (y / n / skip)
y → proceed to step 5 (already claimed)skip → revert to [ ], loop back to step 2n → revert to [ ], stop entirelyRead the title and figure out what to do. Titles in a well-maintained TODO usually say enough:
.claude/todo-worker-config.md), read itSuccess:
- `[x]` [P0] [T01] <title>
> done YYYY-MM-DD: <one-line outcome / artifact pointer>
Blocked / failed:
- `[!]` [P0] [T01] <title>
> blocked YYYY-MM-DD: <reason + what unblocks it>
Only add a single > done <date>: or > blocked <date>: continuation line. Don't bloat the task line itself with retrospective spec.
TODO.md is the single source of truth. No lock files.[~], skip it (another session has it) and continue scanning.The skill body stays generic. Per-project conventions live in the project, not in this skill:
.claude/todo-worker-config.md (optional, project-defined)YYYY-MM-DD)If the project violates the format contract above, fix the project — don't fork the skill.