Files
Skald-Circle/commands/memory-cleanup/COMMAND.md
T
2026-07-10 15:02:09 +01:00

65 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
You have been invoked with /memory-cleanup.
Your task is to restore `data/memory/` to a clean, well-structured state: repair the index, remove dead and stale references, surface orphan files, split a bloated index, and rebalance the directory tree when it has grown disorganised. You do not know the user — learn the language and conventions from the files themselves.
## Scope
**Structural integrity only.** Your unit of work is *references and paths*, not the merit of each note. You are not doing a per-file content review, not writing a profile summary, and not editing note bodies. The goal is an index the user can trust and a tree that is easy to navigate.
## Workflow
### 1. Discover conventions
Read the root `data/memory/index.md` and skim 12 subdirectory indexes if present. Infer and record:
- **Language** — match it for all replies and for any text you write into files.
- **Header block** — whatever sits at the top of an index before the link sections (e.g. `_Updated:` date, a profile/about line, a title). **Preserve it byte-for-byte**; only bump the `_Updated:` date at the very end.
- **Section style** — how sections are headed (emoji + title? plain markdown `##`?), how links are listed (bullet with a `—` gloss?). Mirror this style in any index you create or edit.
- **Naming convention** — kebab-case, snake_case, etc. Note any drift between files.
- **Subdirectory convention** — do subdirectories carry their own `index.md`? Follow the same pattern for new ones.
### 2. Integrity scan
Scan every `.md` file under `data/memory/` (not just indexes). Report findings grouped by severity. Use compact tables.
**A. Dead links** — every internal Markdown link (relative path resolving inside `data/memory/`) whose target file does not exist on disk. Output `[source file] → [missing target]`.
**B. Orphan files** — every note file under `data/memory/` that no `.md` anywhere in the tree links to. Exclude `index.md` files themselves and anything already under `archived/`.
**C. Stale references** — index entries whose target file signals it is no longer active: clear completion / superseded markers (`✅`, `done`, `completed`, `finito`, `terminé`, `archived`, `superseded by`, `migrated to`), or a last-updated date inside the file far older than the index's own `_Updated:`. These are candidates for moving the **entry** (and optionally the file) into `archived/`. Do not delete the file.
**D. Duplicate / conflicting entries** — the same file linked twice in an index, or two index entries pointing to files with overlapping purpose.
### 3. Structure analysis
Assess the tree shape and flag what is structurally unhealthy:
- **Index bloat** — if root `index.md` exceeds ~150 lines or ~40 link entries, or any single section is markedly larger than the others, propose splitting that section out: move its links into the relevant subdirectory's `index.md` and leave a single pointer line in the root. Apply the same test recursively to subdirectory indexes.
- **Flatness** — too many loose files at level-1 (rule of thumb: more than ~8) → propose grouping into themed subdirectories. Cluster by name and topic; only create a subdirectory when 3+ sibling files share a clear theme. Never create a subdirectory for a single file.
- **Imbalance** — existing subdirectories containing a single file → propose folding the file back into the parent, or merging with a sibling subdirectory of the same theme.
- **Naming drift** — mixed casing/separator conventions within the same level → propose a unification pass that renames files *and* rewrites every link pointing to them.
### 4. Propose a target layout
Present **one** concrete target: the final tree (directories + which files land where), the repaired index outline (entries added, removed, moved to a sub-index), and the full list of dead links to drop. Group every action under one of:
- 🔧 **Repair** (mechanical, safe) — drop dead links, add discovered orphans to the appropriate section, fix path typos, normalise names + their inbound links.
- 📦 **Archive** — move stale-reference entries into `archived/index.md` with a dated one-line reason; optionally move the file under `archived/` too.
- ♻️ **Restructure** — split a bloated index, create or merge subdirectories, relocate files between levels.
-**Confirm** — anything genuinely ambiguous (an orphan that may be intentionally unlinked; a rename of a well-known path; a file whose staleness is uncertain).
Wait for explicit user approval of the plan before touching anything. ❓ items always require a per-item answer; 🔧/📦/♻️ can be approved wholesale ("yes, do all repairs").
### 5. Execute
Apply the approved plan in this order to keep paths consistent at every step:
1. **Moves and renames first** — relocate files into their target directories; rename for convention consistency.
2. **Rewrite link targets** across every `.md` that pointed at a moved/renamed file, so no new dead links are introduced.
3. **Create/rewrite subdirectory `index.md`** files for any new or restructured subdirectory, in the user's detected section style.
4. **Rewrite root `index.md`**: drop dead links, fold split-out sections into single pointer lines, add pointers to any new subdirectory indexes, and add one pointer to `archived/index.md` if it was created.
5. **Append dated entries** to `data/memory/archived/index.md` (create the directory and file if missing) for every archived file, with a one-line reason.
6. **Bump `_Updated:`** to today's date in every index you touched.
## Rules
- **Never delete** a file without explicit confirmation. Prefer archiving.
- **Never edit note bodies** — you move files and rewrite indexes/links only.
- **Preserve the header block** of each index unchanged (only the `_Updated:` date moves).
- **Reply in the user's detected language**, not English, unless the user writes to you in English.
- **Trust the user's conventions** over imposing your own; propose unification only where drift is actually causing broken links or confusion.
- Be concise — compact tables and lists, no narration of individual tool calls.