Every repo's TODO backlog, one nightly email. A GitHub Action that pulls the ## TODO section of .claude/CLAUDE.md from every repo you track, compresses each entry to its title, and emails you a single digest — so the backlogs your Claude Code sessions maintain actually get read instead of rotting per-repo.
Zero LLM calls, zero cost beyond Actions minutes: the summarizer is pure regex.
- Grouped by repo, one
<h2>each. - Each
- [ ] **Title** — long context...entry becomes just its title (the multi-paragraph context your agent wrote for its future self stays in the repo). - Non-action sections (brainstorm / icebox / someday / reference) fold to one
▸ section name (see repo)line. - Staleness sentinel: items blocked on you (marked
🔥or anyBLOCKED_MARKERSstring) get flagged⚠️ no dateif undated and⚠️ stale N daysafter a week — the email calls out its own rot instead of presenting old asks as fresh.
- Copy
summarize_todos.py(repo root) and.github/workflows/todo-digest.ymlinto a repo of your own. - Secrets:
RESEND_API_KEY(Resend free tier is plenty),NOTIFY_EMAIL(recipient),GH_PAT(token with read access to the tracked repos). - Variables:
REPOS(comma-separatedowner/repolist),FROM_EMAIL(a sender on your verified Resend domain). - Adjust the cron hour (UTC) in the workflow.
Run it once by hand via Actions → TODO Digest → Run workflow to verify delivery.
| Env var | Default | Meaning |
|---|---|---|
TODO_HEADING |
TODO|Backlog|待办 |
Which ## heading starts the todo section |
BLOCKED_MARKERS |
🔥 |
Substrings marking "blocked on the human" items (staleness flags apply only to these) |
FOLD_SECTIONS |
brainstorm|icebox|someday|reference|watch(list)? |
Section headings folded to a one-line pointer |
python3 summarize_todos.py --selfcheck runs the built-in assertions.
An agent that maintains TODO lists across five repos produces five backlogs nobody opens. The fix that stuck: push, don't pull — one email, every evening, titles only, with staleness called out. What gets surfaced gets done.
- claude-code-cron — run Claude Code unattended on a schedule
- claude-code-safety-hooks — guardrail PreToolUse hooks
- claude-code-session-sharing — hand off in-progress sessions across machines
MIT