Recall Init Ids
Scannednpx machina-cli add skill davegoldblatt/total-recall/recall-init-ids --openclawAdd ^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.
What To Do
1. Identify Managed Files
Scan these locations for single-line list item entries:
CLAUDE.local.md(working memory)memory/registers/*.md(all register files)memory/archive/**/*.md(archived entries, if they exist as list items)
Do NOT scan memory/daily/*.md - daily logs are not managed by the remove gate.
2. Parse Entries
An entry is exactly:
- A line starting with
-(dash + space) - Single line only (the entire entry is on one line)
- NOT inside a fenced code block (``` markers)
- NOT a placeholder like
- [None captured yet]or- [None yet]or- [not yet set]
Already tagged: If the line ends with ^tr followed by exactly 10 lowercase hex characters, it already has an ID. Skip it.
Malformed tag: If the line ends with ^ followed by other text that doesn't match the tr[0-9a-f]{10} pattern, warn and skip it. Do not attempt to repair.
3. Show Preview
Before making any changes, show the user what will happen:
recall-init-ids — preview
━━━━━━━━━━━━━━━━━━━━━━━━━
Files scanned: [N]
Entries found: [N] total
Already tagged: [N]
Will be tagged: [N]
Skipped (malformed): [N]
Examples:
CLAUDE.local.md:
Before: - Don't blast into writing code unless explicitly told to
After: - Don't blast into writing code unless explicitly told to ^tr8f2a1c3d7e
registers/preferences.md:
Before: - Prefers tabs over spaces
After: - Prefers tabs over spaces ^tra4b2c1d9e0
Apply? [y]es / [c]ancel
Show up to 5 before/after examples, spread across different files.
If no untagged entries are found, report that and exit:
All [N] entries already have IDs. Nothing to do.
4. Generate IDs
For each entry to be tagged:
- Generate an ID:
tr+ 10 random lowercase hex characters (use crypto-secure randomness) - Check for collisions against:
- All existing inline IDs found during parsing
- All IDs already generated in this run
- All keys in
memory/.recall/metadata.json(if it exists)
- If collision, regenerate. (Extremely unlikely with 10 hex chars, but be safe.)
- Append
^[id]to the end of the line
5. Apply Changes
Only after user confirms:
-
Rewrite each file with IDs appended to eligible entry lines. Do not modify any other lines in the file.
-
Create or update
memory/.recall/metadata.json:- Create
memory/.recall/directory if it doesn't exist - For each new ID, add an entry:
{ "tr8f2a1c3d7e": { "created_at": "2026-02-12T10:15:30Z", "last_reviewed_at": "2026-02-12T10:15:30Z", "pinned": false, "snoozed_until": null, "status": "active", "tier": "working" } } - Set
tierbased on file location:CLAUDE.local.md->"working"memory/registers/*->"register"memory/archive/*->"archive"
- For entries with existing inline IDs that are missing from metadata.json, add them without changing the file
- Write JSON with sorted keys for readable diffs
- Create
6. Summary
recall-init-ids — complete
━━━━━━━━━━━━━━━━━━━━━━━━━━
Tagged: [N] entries across [M] files
Metadata: [N] entries in memory/.recall/metadata.json
Files modified:
CLAUDE.local.md [N] entries tagged
registers/preferences.md [N] entries tagged
...
You can now run /recall-maintain for pressure-based memory cleanup.
Important Notes
- This command is idempotent. Running it again will only tag NEW untagged entries.
- If a user manually removes an ID from an entry, running this command will re-tag it with a NEW ID (losing pin/snooze/review history for that entry).
- Metadata.json is the source of truth for pin/snooze/review state. The inline ID is the link between the entry text and its metadata.
Source
git clone https://github.com/davegoldblatt/total-recall/blob/main/skills/recall-init-ids/SKILL.mdView on GitHub Overview
Recall Init Ids adds durable IDs to memory entries to enable reliable recall maintenance. It scans managed files, tags only entries that lack IDs, and updates a memory metadata store for traceability. The operation is idempotent and safe to run multiple times.
How This Skill Works
The tool scans CLAUDE.local.md, memory/registers/*.md, and memory/archive/**/*.md for single-line list items. It ignores already tagged lines and malformed tags, previews changes, then generates a unique tr<10hex> ID for each new entry, appending it to the line and updating memory/.recall/metadata.json with timestamps and status.
When to Use It
- Before running /recall-maintain to ensure all eligible memory entries have durable IDs
- After adding new entries to CLAUDE.local.md, memory/registers/*.md, or memory/archive/** to assign IDs
- During an audit of managed files to identify untagged or malformed entries
- If a user manually removes an inline ID, to re-tag with a new durable ID
- As part of routine maintenance to keep memory metadata in sync with tagged entries
Quick Start
- Step 1: recall-init-ids — preview
- Step 2: Review the preview output and confirm changes
- Step 3: recall-init-ids — complete
Best Practices
- Limit scanning to managed files: CLAUDE.local.md, memory/registers/*, memory/archive/**; exclude memory/daily/*.md
- Always run a preview first to verify which entries will be tagged and how they’ll look
- Ensure IDs are generated with crypto-secure randomness and check for collisions
- Do not modify non-entry lines during the apply step; preserve file structure
- Update memory/.recall/metadata.json with a record for each new ID and keep keys sorted
Example Use Cases
- CLAUDE.local.md: Before: - Don't blast into writing code unless explicitly told to After: - Don't blast into writing code unless explicitly told to ^tr8f2a1c3d7e
- registers/preferences.md: Before: - Prefers tabs over spaces After: - Prefers tabs over spaces ^tra4b2c1d9e0
- memory/archive/2025/january.md: Before: - Completed project milestone After: - Completed project milestone ^tr9a1b2c3d4e
- memory/archive/notes/ops.md: Before: - Check system health weekly After: - Check system health weekly ^tr5f6e7d8c9b
- memory/registers/tasks.md: Before: - Review quarterly goals After: - Review quarterly goals ^tr1a2b3c4d5