/echoes
Manage Rune Echoes — project-level agent memory stored in .rune/echoes/. View memory state, prune stale entries, reset all echoes, manage doc packs, or audit global echoes. <example> user: "/rune:echoes show" assistant: "Displaying echo state across all roles..." </example> <example> user: "/rune:echoes prune" assistant: "Calculating Echo Scores and pruning stale entries..." </example>
From runenpx claudepluginhub vinhnxv/rune --plugin rune/rune:echoes — Manage Rune Echoes
Manage the project-level agent memory stored in .rune/echoes/.
Usage
/rune:echoes show # Display current echo state
/rune:echoes prune # Prune stale entries (with confirmation)
/rune:echoes reset # Clear all echoes (with confirmation)
/rune:echoes init # Initialize echo directories for this project
/rune:echoes promote # Promote echoes to Remembrance docs
/rune:echoes migrate # Migrate echo names after upgrade
/rune:echoes remembrance # View Remembrance knowledge docs
/rune:echoes doc-packs install <stack> # Install a bundled doc pack to global echoes
/rune:echoes doc-packs list # List available and installed doc packs
/rune:echoes doc-packs update <stack> # Update installed pack to latest bundled version
/rune:echoes doc-packs status # Show staleness for installed packs
/rune:echoes audit # List all global echoes with provenance
Execution
Load and execute the rune-echoes skill (skills/rune-echoes/SKILL.md) with all arguments passed through.
The skill contains echo lifecycle logic, scoring algorithms, and subcommand dispatch.
Subcommands
show — Display Echo State
Scan .rune/echoes/ and display statistics per role.
# Find all MEMORY.md files
Glob(".rune/echoes/**/MEMORY.md")
Output format:
Rune Echoes — Memory State
══════════════════════════
Role: reviewer
MEMORY.md: 45 lines, 12 entries
knowledge.md: 120 lines (compressed)
archive/: 3 files
Layers: 2 etched, 7 inscribed, 3 traced
Role: team
MEMORY.md: 18 lines, 5 entries
Layers: 1 etched, 4 inscribed
Total: 17 entries across 2 roles
Oldest entry: 2026-02-01
Newest entry: 2026-02-11
If no echoes exist: "No echoes found. Run /rune:appraise or /rune:echoes init to start building memory."
prune — Remove Stale Entries
Calculate Echo Score for each entry and archive low-scoring ones.
Steps:
- Read all MEMORY.md files across roles
- Parse entries and calculate Echo Score:
Score = (Importance × 0.4) + (Relevance × 0.3) + (Recency × 0.3) - Display candidates for pruning:
Prune candidates: reviewer/MEMORY.md: [0.15] [traced] [2026-01-05] Observation: Slow CI run [0.22] [traced] [2026-01-12] Observation: Flaky test in auth module auditor/MEMORY.md: [0.18] [inscribed] [2025-11-01] Pattern: Unused CSS classes 3 entries would be archived. Proceed? (y/n) - On confirmation:
- Backup: copy each MEMORY.md to
archive/MEMORY-{date}.md - Remove low-scoring entries from MEMORY.md
- Report: "Pruned 3 entries. Backups in archive/"
- Backup: copy each MEMORY.md to
Safety:
- Etched entries are not candidates for pruning
- Always backup before any modification
- User must confirm before pruning proceeds
reset — Clear All Echoes
Remove all echo data for this project.
Steps:
- Warn: "This will delete ALL echoes for this project. This cannot be undone."
- Require explicit confirmation: user must type "reset" or confirm
- On confirmation:
- Backup entire
.rune/echoes/to.rune/echoes-backup-{date}/ - Delete all MEMORY.md, knowledge.md, and findings files
- Preserve directory structure (empty directories remain)
- Report: "All echoes cleared. Backup at .rune/echoes-backup-{date}/"
- Backup entire
init — Initialize Echo Directories
Create the echo directory structure for a new project.
Steps:
-
Create directories:
mkdir -p .rune/echoes/planner mkdir -p .rune/echoes/workers mkdir -p .rune/echoes/reviewer/archive mkdir -p .rune/echoes/auditor/archive mkdir -p .rune/echoes/team -
Create initial MEMORY.md files with schema header:
<!-- echo-schema: v1 --> # {Role} Memory *No echoes yet. Run workflows to start building memory.* -
Check
.gitignorefor.rune/echoes/exclusion:- If project has
.gitignoreand it doesn't exclude echoes: warn user - Suggest adding
.rune/echoes/to.gitignore
- If project has
-
Report:
Rune Echoes initialized. Directories created: - .rune/echoes/planner/ - .rune/echoes/workers/ - .rune/echoes/reviewer/ - .rune/echoes/auditor/ - .rune/echoes/team/ Run /rune:appraise or /rune:audit to start building memory.
promote — Promote Echoes to Remembrance
Promote high-confidence echoes to human-readable knowledge docs in docs/solutions/.
Steps:
- If no args: list all Etched and high-confidence Inscribed entries with their echo refs
- If
--category <cat>: filter by category (e.g.,performance,security,patterns) - For each selected echo:
- Convert to Remembrance format (see
rune-echoesskill, Remembrance Commands section) - Write to
docs/solutions/{category}/{slug}.md - Mark echo as promoted (add
promoted_tofield)
- Convert to Remembrance format (see
- Report: "{count} echoes promoted to docs/solutions/"
migrate — Migrate Echo Names
Migrate echo role names and schema versions after a Rune upgrade.
Steps:
- Scan
.rune/echoes/for directories and MEMORY.md files - Check schema version in
<!-- echo-schema: vN -->headers - Rename directories if role names changed (e.g., legacy names to current convention)
- Update schema headers to current version
- Report: "{count} echoes migrated, {count} already current"
remembrance — View Remembrance Docs
View and search Remembrance knowledge documents.
Steps:
- If no args: list all docs in
docs/solutions/with categories and titles - If
<category>: list docs indocs/solutions/{category}/ - If
<search>: search across all Remembrance docs for keyword - Display matching documents with summaries
doc-packs install — Install Bundled Doc Pack
Install a curated doc pack (framework patterns, gotchas, recipes) to the global echo store.
Steps:
- Validate
<stack>against^[a-zA-Z][a-zA-Z0-9_-]{1,63}$(SEC-P3-001) - Read registry:
${CLAUDE_PLUGIN_ROOT}/data/doc-packs/registry.json - Verify
<stack>exists in registry — error if not - Set
CHOME="${CLAUDE_CONFIG_DIR:-$HOME/.claude}" - Create dirs:
mkdir -p "$CHOME/echoes/global/doc-packs/<stack>" "$CHOME/echoes/global/manifests" - Copy:
cp "${CLAUDE_PLUGIN_ROOT}/data/doc-packs/<stack>/MEMORY.md" "$CHOME/echoes/global/doc-packs/<stack>/" - Write manifest JSON to
$CHOME/echoes/global/manifests/<stack>.json - Write dirty signal:
touch "$CHOME/echoes/global/.global-echo-dirty" - Report: "Installed
<stack>(v1.0.0). Search withecho_search(query, scope='global')"
doc-packs list — List Available Packs
Show all available doc packs and their install status.
Steps:
- Read registry from
${CLAUDE_PLUGIN_ROOT}/data/doc-packs/registry.json - For each pack, check
$CHOME/echoes/global/manifests/<name>.json - Display:
✓ installed (version, date)or○ not installed
doc-packs update — Update Installed Pack
Update a doc pack to the latest bundled version.
Steps:
- Read installed manifest and bundled registry version
- Compare versions (string comparison — no
sort -Vfor macOS compat) - If newer: copy MEMORY.md, update manifest, write dirty signal
- If same: "Already up to date"
doc-packs status — Staleness Report
Show install age and staleness for all installed packs.
Steps:
- List manifests in
$CHOME/echoes/global/manifests/ - Calculate days since
installed_at - Flag stale packs (> 90 days, configurable via
echoes.global.staleness_days)
audit — Global Echo Provenance
List all global echoes grouped by source type.
Steps:
- Read manifests for doc pack metadata
- Parse
$CHOME/echoes/global/MEMORY.mdfor elevated echoes - Display grouped: doc packs (with entry counts, domains) + elevated echoes (with source project)
Notes
- Echo data is project-local (
.rune/echoes/in project root) - Global echoes are user-level (
$CHOME/echoes/global/) - Excluded from git by default (security: may contain code patterns)
- Opt-in to version control via
.rune/talisman.yml - See
rune-echoesskill for full lifecycle documentation