Memo
Park a stray idea now so it isn't lost — without derailing the current task — or review the backlog and pick something up.
A memo is lighter than a GitHub issue: a half-formed thought worth keeping, not a tracked unit of work. The backlog lives in one file, .claude/memos.md, committed with the project. Open items resurface on their own at session start, at task completion, and during /commit.
Context
- Repo root: !
git rev-parse --show-toplevel 2>/dev/null || pwd - Now: !
date '+%Y-%m-%d %H:%M %Z' - Open memos: !
python3 ~/.claude/skills/memo/memos.py count
Arguments
$ARGUMENTS holds the memo text. It may be empty.
Process
The memo file is <Repo root>/.claude/memos.md — a Markdown checklist, one line per entry, newest at the bottom: - [ ] <YYYY-MM-DD HH:MM> — <idea> open (local time, 24-hour), - [x] … addressed. The memos.py helper owns the timestamp and the rendered, aligned listing (numbered, newest-first, wrapped so each memo's text lines up under its first line) — you hand-format neither.
If $ARGUMENTS is non-empty — record a memo
- Run
python3 ~/.claude/skills/memo/memos.py add "<the idea, lightly cleaned up>". The helper creates the file (and.claude/) if needed, stamps the local time, appends the entry, and prints the new counts. Preserve the user's intent and scope — don't expand a one-liner into a spec. - Confirm in a single line with the new open count (e.g. "Memo'd — 3 open."). Do not start working on the idea, switch tasks, or elaborate. The whole point is to offload it and keep going.
If $ARGUMENTS is empty — review the backlog
Detect the terminal width so the listing fills the screen — the helper's stdout is piped, which hides the real width, so determine it yourself:
- Windows: use the PowerShell tool to evaluate
$Host.UI.RawUI.WindowSize.Width(the PowerShell tool specifically —powershell.exefrom Bash reports the wrong console). - macOS/Linux: run
tput cols(or read$COLUMNS).
Subtract a 2-column gutter, then run
python3 ~/.claude/skills/memo/memos.py list --width <N>to render the backlog (drop--widthif you couldn't determine it — the helper falls back to ~100).- Windows: use the PowerShell tool to evaluate
Present that output verbatim, inside a fenced code block — it's numbered newest-first and wrapped so each memo's text lines up under its first line, and the code block preserves that alignment. If it shows "(no open memos)", say so and stop.
Offer two paths: address one now (the user gives a number), or leave them. If the user picks one, that begins a new task — find that memo's line in
.claude/memos.mdand flip its- [ ]to- [x](Edit in place) once it's genuinely done, and proceed with the work normally.If addressed (
- [x]) items have accumulated, offer to prune them in the same breath.If two entries capture the same idea, do the work once and delete the redundant line rather than marking both
- [x]— a duplicate checked off as done reads like two separate pieces of work in the backlog's history.
Out of scope
- Don't promote a memo to a GitHub issue unless asked — memos are deliberately lighter. (When one matures, offering to file it is fine.)
- Don't reword or reprioritize existing memos unprompted.