Get the FREE Ultimate OpenClaw Setup Guide →

Recall Init Ids

Scanned
npx machina-cli add skill davegoldblatt/total-recall/recall-init-ids --openclaw
Files (1)
SKILL.md
4.1 KB

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.

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:

  1. Generate an ID: tr + 10 random lowercase hex characters (use crypto-secure randomness)
  2. 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)
  3. If collision, regenerate. (Extremely unlikely with 10 hex chars, but be safe.)
  4. Append ^[id] to the end of the line

5. Apply Changes

Only after user confirms:

  1. Rewrite each file with IDs appended to eligible entry lines. Do not modify any other lines in the file.

  2. 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 tier based 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

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

  1. Step 1: recall-init-ids — preview
  2. Step 2: Review the preview output and confirm changes
  3. 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

Frequently Asked Questions

Add this skill to your agents
Sponsor this space

Reach thousands of developers