new-work — Claude Code skill: todo docs for tasks
Keeps a markdown file per task with a checklist, decisions and links to issues and PRs. Useful when work spans more than one session.
npx skills add posit-dev/skills --skill new-work -a claude-codeWhat new-work does
The skill creates a todo note for each piece of work: a feature, a bug, a multi-step task. Notes live in _dev/todos/, split into pending/ for active items and done/ for finished ones. File names combine the date and a short slug, like 2026-02-18_add-oauth-support.md.
Each file holds YAML front matter plus a markdown body. Only status is required, with values pending, in progress, review, blocked, done. Below that come key files, a work-item checklist, design notes and a decision log. Issue and PR links get added once they exist.
If _dev/todos/ is missing from the repository root, the skill asks where to store notes before creating anything. After that the document stays current: update it after a decision, a newly found problem, a commit or a change of plan. Plans go into the file, not just the chat. To pick work back up later, run /working-on <path-to-todo>.
What it helps with
- keep one file per feature so context survives between sessions
- check off work items as you go
- record decisions with their rationale while you still remember it
- attach issue and pull request links to the task
- move finished work into
done/so it stops cluttering the active list
Example prompts for the agent
- start new work: add OAuth support and create a todo file for it
- update the todo: check off finished items and log the token scheme decision
- resume with
/working-on _dev/todos/pending/2026-02-18_add-oauth-support.md
How to install new-work
1Skills CLI (Vercel)
npx skills add posit-dev/skills --skill new-work -a claude-code2Manually: put the files in place
~/.claude/skills/new-work/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/new-work/
1Skills CLI (Vercel)
npx skills add posit-dev/skills --skill new-work -a codex2Manually: put the files in place
.agents/skills/new-work/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add posit-dev/skills --skill new-work -a cursor2Manually: put the files in place
.cursor/skills/new-work/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install posit-dev/skills new-work2Manually: put the files in place
.github/skills/new-work/SKILL.md1Skills CLI (Vercel)
npx skills add posit-dev/skills --skill new-work -a gemini-cli2Platform CLI
gemini skills install https://github.com/posit-dev/skills --path posit-dev/new-workManually: put the files in place
.devin/skills/new-work/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add posit-dev/skills --skill new-work -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about new-work
How do I install new-work in Claude?
Run npx skills add posit-dev/skills --skill new-work -a claude-code. The skill lands at ~/.claude/skills/new-work/SKILL.md.
What does new-work do?
It creates and maintains a todo document for a task: status, key files, a checklist and a decision log. The document stays live for the rest of the session.
Where are the todo files stored?
In _dev/todos/, with pending/ and done/ subdirectories. If that folder is not in the repository root, the skill asks where to put them.
Source text
SKILL.md · MIT
--- name: new-work description: "Create and manage todo tracking documents for features, bugs, and multi-step tasks. Use when starting new work that benefits from a persistent record of decisions, progress, and context." disable-model-invocation: true metadata: author: Garrick Aden-Buie (@gadenbuie) version: "1.0" license: MIT --- # New Work Todo notes track work items as markdown files with YAML front matter capturing status, context, and progress. ## Storage Location Use `_dev/todos/` if it exists in the repository root; otherwise ask the user where to store todo notes before creating anything. It contains two subdirectories: `pending/` (active) and `done/` (finished). ## File Naming `YYYY-MM-DD_short-kebab-slug.md`, e.g. `2026-02-18_add-oauth-support.md`. ## File Contents YAML front matter plus a markdown body. Only `status` is required. ```markdown --- status: pending # pending | in progress | review | blocked | done issue: https://github.com/org/repo/issues/123 # optional pr: https://github.com/org/repo/pull/456 # optional --- # Title Overview of what this is about and why it matters. ## Key Files - `src/relevant-file.ts` — what it does - `src/other-file.ts:functionName()` — why it matters ## Work Items - [ ] First thing to do - [ ] Second thing to do ## Design Decisions Context, constraints, or choices worth capturing. ## Decision Log <!-- ### YYYY-MM-DD — Short Decision Title **Decision:** What was decided? **Rationale:** Why? --> ``` ## Lifecycle - **Create:** make `pending/` if needed, create the date-prefixed file with `status: pending`, and write enough context to resume later. - **In progress:** update `status`; add `issue`/`pr` links when they exist; check off Work Items (`- [ ]` → `- [x]`); record significant decisions in the Decision Log. - **Complete:** set `status: done` and `mv` the file from `pending/` to `done/`. ## Keeping the Document Current Treat the todo as a living record for the rest of the session. Update it after any decision, newly discovered problem or requirement, issue raised/resolved, significant implementation work, or commit. When in doubt, update it. When you form a plan — whether in response to a user request or on your own initiative — write it to the todo document rather than presenting it only in chat. The document is the persistent record; the chat is not. To resume in a future session, use `/working-on <path-to-todo>` — same live-document behavior without re-creating the file.
© Garrick Aden-Buie (@gadenbuie) · MIT · posit-dev/skills