GTD with Claude Code
This is the Getting-Things-Done setup I use today: a CLAUDE.md plus a flat folder of plain
markdown, driven by Claude Code in the terminal.
It works — but it's a manual scaffolding around a general-purpose agent. Keppt will go further:
capture from anywhere, sync without prompt acrobatics, no rules to enforce by hand. Read this as the
model behind the app, not a substitute for it.
CLAUDE.md
below. Client names and amounts anonymized; the German UI is my own.
Drop this CLAUDE.md into any directory along with the files below, then point your assistant at it. Works with Claude Code or any LLM agent with file access.
Folder Structure
gtd/
├── CLAUDE.md # this file
├── inbox.md
├── focus.md
├── next-actions.md
├── waiting.md
├── someday-maybe.md
└── daily/
└── YYYY-MM-DD.md
Flat, plain markdown, no special tooling required.
Files
- inbox.md — Unprocessed tasks and thoughts. Everything lands here first.
- focus.md — The 3–5 most important things for this week. Refilled during the Weekly Review. When asked “What’s up?”, show Focus first.
- next-actions.md — Concrete next steps, grouped by area (e.g. Work, Home, Finances, Personal — adapt to your life).
- waiting.md — Things being waited on (replies, deliveries, other people).
- someday-maybe.md — Ideas without time pressure. Reviewed weekly.
- daily/YYYY-MM-DD.md — One file per day, with three sections: Plan, Log, Notes.
Task Flow: No Duplicates
A task lives in exactly one place. Move it, don’t copy it:
- New task → Inbox
- Processed → Next Actions (remove from Inbox)
- Prioritized → Focus (remove from Next Actions)
- Blocked → Waiting (remove from Focus / Next Actions)
- No time pressure → Someday Maybe (remove from Next Actions)
- Done → check off or remove from Focus / Next Actions
Task Format
Tasks are markdown checkboxes:
- [ ] Open task- [x] Completed task
Add context, links, or tags inline as you see fit, e.g. - [ ] Send invoice (Acme project).
Daily Note ↔ Task System
The single source of truth for tasks is always Focus / Next Actions / Waiting. Daily Notes are day plans and logs, not task management.
Important: tasks and the Daily Note are one unit. Whenever tasks are touched (new, done, moved, etc.), also check the Daily Note for the affected day and keep it in sync. If an urgent task lands in Focus, it also belongs in today’s/tomorrow’s Daily Note plan — and vice versa.
- Day planning: Copy task text from Focus / Next Actions into the Daily Note Plan. The task stays in Focus / Next Actions.
- Transient tasks: Ephemeral day-only tasks (e.g. “email X”) that don’t need to live in the task system may be created and live entirely in the Daily Note.
- Closing the day / Sync: When the user says “sync my Daily Note” or similar, the assistant reconciles the Daily Note plan with Focus / Next Actions:
- Done tasks → check off / remove in Focus / Next Actions
- Not-done tasks → stay in Focus / Next Actions (no action needed)
- New tasks that appeared in the Plan/Log → add to Inbox / Next Actions if appropriate
- The Daily Note itself is not rebuilt into a primary task list during sync — it remains a daily log. However: if the Daily Note is factually wrong or stale (task was actually done, moved, or skipped), the assistant should correct it so the note reflects reality.
MANDATORY: Active Sync Check
For every task operation (new, completed, moved, status update, waiting change, etc.) the assistant MUST run the following protocol — even if it costs more tokens. The user has explicitly accepted this cost in exchange for consistency.
Step 1 — Load context: Before any task change, read today’s Daily Note (daily/YYYY-MM-DD.md) AND every affected task list (Focus, Next Actions, Waiting, etc.). Don’t work from memory; actually open the files.
Step 2 — Apply the change: Perform the actual task operation (move, check off, new entry, etc.).
Step 3 — Cross-check (Focus ↔ Next Actions ↔ Waiting ↔ Daily Note): After the change, actively verify:
- The task is in exactly ONE place (no duplicates, no orphan)
- Moved to Waiting → removed from Focus / Next Actions
- Completed → removed from Focus / Next Actions / Waiting
- Completed/moved in Next Actions → check Focus and update there
- Completed/moved in Focus → check Next Actions and update there
- New urgent task → does it belong in today’s Daily Note plan?
- Removed from Focus → does today’s plan need editing?
- Someday Maybe is NOT included in the daily cross-check — only during the Weekly Review.
- Inbox is NOT included in the cross-check — it only holds unprocessed items.
Step 4 — Keep the Daily Note in sync:
- If today’s Daily Note has a plan, check whether the change affects the plan and tell the user.
- If tasks in the Daily Note plan no longer exist in the task system, inform the user.
- If tasks in Focus do NOT appear in today’s plan, point that out.
- Past or in-progress Daily Notes with objectively wrong checkboxes/entries should be corrected so the note reflects what actually happened.
Step 5 — Surface inconsistencies: Examples:
- “Note: task X is still in your Daily Note today but is now in Waiting — should I mark that in the plan?”
- “Note: Focus contains Y, but it’s not in today’s plan — want me to add it?”
- “Note: completed task Z is still in Next Actions — I’m removing it there.”
- “Note: task X is checked off in Focus but still open in Next Actions — I’m reconciling that.”
Rule of thumb: Better to check and flag once too often than let an inconsistency slip through silently.
Daily Notes Workflow
Each Daily Note has three sections:
- Plan — What’s planned for today (tasks copied from Focus / Next Actions + transient day tasks). Sub-tasks are indented.
- Log — What actually happened.
- Notes — Free-form notes for the day.
Routine:
- Evening or morning: build the plan — pull relevant tasks from Focus / Next Actions and add today-specific items.
- Throughout the day: capture what happened in the Log.
- Evening: say “sync” to the assistant — it reconciles the Daily Note with the task system.
Weekly Review
The Weekly Review (Fridays, or whatever day works) follows this order — and runs interactively, with status questions, not as a passive listing. Core principle: group and propose, do NOT walk every single entry past the user (it wastes tokens at the wrong end).
- Process the Inbox completely — every entry moved (Next Actions / Waiting / Someday / Focus) or deleted.
- Walk Waiting in groups — one status question per group. Cluster entries by theme (e.g. outreach, money, home, authorities) and ask once per group: “What’s done, what’s still pending, what needs a nudge?” The user replies in a block; the assistant executes the consequences (check off, move to Next Actions, generate a follow-up, keep waiting). Not item by item.
- Delete checked
[x]entries from Focus, Next Actions, and Waiting. History lives in Daily Notes. - Scan Someday Maybe — propose only items that current triggers / life situation make worth reactivating. Full list only on request.
- Evaluate Next Actions — propose, don’t walk through. Read Next Actions and make a concrete proposal: 3–5 items for the new Focus + a leitmotif for the week, derived from current pressures, deadlines, and stale items. One or two lines of justification per item. The user reacts with veto / swap / addition — not item-by-item evaluation.
- Clean up stale Next Actions items — remove obviously obsolete entries (with a short note in the review output); ambiguous cases as a brief question.
- Finalize Focus with the prioritized items + leitmotif in the header.
- Prepare the next workday’s Daily Note — plan slot with top Focus items + day-specific appointments. A full week plan would be over-engineering; one day is enough.
- Set the marker in the Focus header (see below).
Mandatory closing check: At the end of the review, briefly reflect whether steps 2 and 5 actually happened interactively with the user or only as a passive listing. If it was passive, it wasn’t a complete review.
Review marker: After every completed Weekly Review, write the date at the top of focus.md in the format **Last Weekly Review: YYYY-MM-DD (Weekday)**. Before actively proposing a review, read this marker and compute by date:
- Marker date falls within the current ISO calendar week (Mon–Sun of the same ISO week number) → do NOT propose again (a brief mention is enough).
- Marker date > 8 days ago, or marker missing → propose actively.
This avoids duplicate proposals across parallel sessions. The marker is intentionally date-only — the comparison is purely date-based and independent of any week-numbering convention.
Chat Commands
The user drives the system via chat. Examples:
- “New task: X” → inbox.md
- “What’s up?” → show Focus, then Next Actions
- “Task done: X” → check off / remove (with sync check)
- “Move X to Someday” → re-sort (with sync check)
- “Weekly Review” → run the review flow above
- “Sync my Daily Note” → reconcile today’s plan with the task system