/recall-promote
Review recent daily logs and surface candidates for promotion to registers or CLAUDE.local.md.
$ npx -y skills add davegoldblatt/total-recall --agent claude-codeShips with recall. Installing the plugin gets this command.
How it fires
How this command gets triggered: by you, by Claude, or both.
- Fires itselfClaude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/recall-promote
Context preview
What this command does when you run it.
Review recent daily logs and surface candidates for promotion to registers or CLAUDE.local.md.
Command definition
recall-promote.mdReview recent daily logs and surface candidates for promotion to registers or CLAUDE.local.md.
What To Do
1. Gather Recent Logs
Read all daily log files from the last 7 days (memory/daily/YYYY-MM-DD.md).
If no daily logs exist, tell the user:
No daily logs found. Use /recall-write or /recall-log to start capturing.
2. Identify Promotion Candidates
Scan each entry and evaluate:
**Promote to CLAUDE.local.md if:**
- Active commitment or deadline that affects every session
- Behavioral preference that changes default output
- Current project state that's essential context
**Promote to a register if:**
- Decision with rationale → decisions.md
- Person context → people.md
- Technical choice → tech-stack.md
- Preference with staying power → preferences.md
- Project milestone or state change → projects.md
**Skip if:**
- Already captured in a register or CLAUDE.local.md
- One-off observation with no future impact
- Debugging detail or transient state
3. Present Candidates
For each candidate, show:
Candidates for promotion:
1. [2026-02-03] "Project deadline moved to March 15"
→ Suggest: CLAUDE.local.md (active commitment)
2. [2026-02-02] "Prefers tabs over spaces, 2-space indent"
→ Suggest: registers/preferences.md
3. [2026-02-01] "Decided to use Postgres over SQLite for scale"
→ Suggest: registers/decisions.md
4. Ask User
For each candidate, ask the user what to do:
- **Promote** — write to the suggested destination
- **Register** — write to a different register (ask which one)
- **Skip** — don't promote, leave in daily log
- **Promote all** — accept all suggestions at once
5. Execute
For each promoted item: 1. Write to the destination with proper metadata (claim, confidence, evidence, last_verified) 2. Do NOT remove from daily log (daily logs are append-only history) 3. Check for contradictions with existing entries before writing 4. **Assign a durable ID**: For single-line list items promoted to CLAUDE.local.md or registers, append a `^tr` ID (10 random lowercase hex chars). Create or update `memory/.recall/metadata.json` with an entry for the new ID (`created_at`, `last_reviewed_at` = now, `pinned: false`, `snoozed_until: null`, `status: "active"`, `tier` from destination file). Create `memory/.recall/` directory if needed. Write metadata.json with sorted keys.
6. Summary
Promotion complete:
→ 2 entries promoted to registers
→ 1 entry promoted to CLAUDE.local.md
→ 1 entry skipped
CLAUDE.local.md word count: [N]/1500
Warn if CLAUDE.local.md is approaching the 1500 word limit.
Read more
Review recent daily logs and surface candidates for promotion to registers or CLAUDE.local.md.
What To Do
1. Gather Recent Logs
Read all daily log files from the last 7 days (memory/daily/YYYY-MM-DD.md).
If no daily logs exist, tell the user:
No daily logs found. Use /recall-write or /recall-log to start capturing.
2. Identify Promotion Candidates
Scan each entry and evaluate:
**Promote to CLAUDE.local.md if:**
- Active commitment or deadline that affects every session
- Behavioral preference that changes default output
- Current project state that's essential context
**Promote to a register if:**
- Decision with rationale → decisions.md
- Person context → people.md
- Technical choice → tech-stack.md
- Preference with staying power → preferences.md
- Project milestone or state change → projects.md
**Skip if:**
- Already captured in a register or CLAUDE.local.md
- One-off observation with no future impact
- Debugging detail or transient state
3. Present Candidates
For each candidate, show:
Candidates for promotion: 1. [2026-02-03] "Project deadline moved to March 15" → Suggest: CLAUDE.local.md (active commitment) 2. [2026-02-02] "Prefers tabs over spaces, 2-space indent" → Suggest: registers/preferences.md 3. [2026-02-01] "Decided to use Postgres over SQLite for scale" → Suggest: registers/decisions.md
4. Ask User
For each candidate, ask the user what to do:
- **Promote** — write to the suggested destination
- **Register** — write to a different register (ask which one)
- **Skip** — don't promote, leave in daily log
- **Promote all** — accept all suggestions at once
5. Execute
For each promoted item: 1. Write to the destination with proper metadata (claim, confidence, evidence, last_verified) 2. Do NOT remove from daily log (daily logs are append-only history) 3. Check for contradictions with existing entries before writing 4. **Assign a durable ID**: For single-line list items promoted to CLAUDE.local.md or registers, append a `^tr` ID (10 random lowercase hex chars). Create or update `memory/.recall/metadata.json` with an entry for the new ID (`created_at`, `last_reviewed_at` = now, `pinned: false`, `snoozed_until: null`, `status: "active"`, `tier` from destination file). Create `memory/.recall/` directory if needed. Write metadata.json with sorted keys.
6. Summary
Promotion complete: → 2 entries promoted to registers → 1 entry promoted to CLAUDE.local.md → 1 entry skipped CLAUDE.local.md word count: [N]/1500
Warn if CLAUDE.local.md is approaching the 1500 word limit.
A memory system for Claude Code that remembers what matters and forgets what doesn't.
Other commands on recall.
- /recall-context
Show what memory context is currently available in this session.
Open command - /recall-forget
Mark memory entries matching a query as superseded. Does not delete — preserves history.
Open command - /recall-init-ids
Add `^tr` IDs to untagged memory entries in managed files. This is safe to run multiple times - it only tags entries that don't already have IDs.
Open command - /recall-init
Initialize the Total Recall memory system in this project.
Open command - /recall-log
Quick append to today's daily log. No write gate — raw capture.
Open command - /recall-maintain
Run maintenance on the memory system. Primary function: pressure-based demotion when working memory exceeds the word budget. Secondary: stale entry verification, contradiction checks, open loop review.
Open command

