ワンクリックで
memory-index-sync
// Detect and heal index.md drift — finds memory files on disk not registered in index.md and registers them. Run when /gaai-status reports unregistered files, after batch memory operations, or as a post-delivery gate.
// Detect and heal index.md drift — finds memory files on disk not registered in index.md and registers them. Run when /gaai-status reports unregistered files, after batch memory operations, or as a post-delivery gate.
Identify and formalize durable product and technical decisions from agent outputs into long-term memory. Activate after Discovery produces artefacts, Delivery resolves trade-offs, or product direction materially changes.
Compact verbose memory index / registry files to pointer-only form. Activate when an index file (index.md, index-decisions.md, or any sibling registry table) breaches the file-size budget OR shows substance-duplication drift. Distinct from memory-compact (which targets content categories) and memory-archive-superseded (which migrates superseded rows to archive).
Takes surface scan results, optional LLM synthesis open-question entries, and optional tree-sitter AST signals to score project ambiguities (1-10). Outputs structured ambiguity_feed for smart-question-generator. Pure heuristic — no LLM calls. Designed for Stage 3.5 of the /gaai:bootstrap pipeline (between LLM synthesis and Q&A).
Construct the LLM synthesis prompt from project surface scan + optional tree-sitter context + optional Q&A answers. Call the LLM. Parse and validate the response into 6-8 structured memory entries with clarity tags and source traceability. Used as Stage 3 of the /gaai:bootstrap pipeline.
Write structured memory entries to the Cloud workspace via gaai_memory.store MCP tool with source='bootstrap'. Loops over entries from bootstrap-llm-synthesis, calls the tool per entry, collects success/fail counts. Used as Stage 5 of the /gaai:bootstrap pipeline (Cloud path only).
Maintain a canonical i18n glossary file — sync new terms across all language pairs, detect drift, flag missing translations, and enforce consistent terminology across the codebase.
| name | memory-index-sync |
| description | Detect and heal index.md drift — finds memory files on disk not registered in index.md and registers them. Run when /gaai-status reports unregistered files, after batch memory operations, or as a post-delivery gate. |
| license | ELv2 |
| compatibility | Works with any filesystem-based AI coding agent |
| metadata | {"author":"gaai-framework","version":"1.0","category":"cross","track":"cross-cutting","id":"SKILL-MEMORY-INDEX-SYNC-001","updated_at":"2026-05-08T00:00:00.000Z","status":"stable"} |
| inputs | ["contexts/memory/ (full scan — read-only except index.md)"] |
| outputs | ["contexts/memory/index.md (registry updated if drift found)","sync_report (inline summary of changes applied and anomalies flagged)"] |
Activate when:
/gaai-status reports files on disk not registered in index.mddecision-extraction skillmemory-refresh or memory-compact (ensures index accuracy first)This skill heals drift — it does NOT create new knowledge. It only registers things that already exist on disk but are missing from index.md.
contexts/memory/ root (index.md + any index-*.md siblings such as index-decisions.md when Decision Registry has been extracted per file-size budget) — extract all registered DEC IDs from any of themarchive/superseded-decisions.archive.md "Superseded DEC entries" table — extract all archived DEC IDs (column 1)decisions/DEC-*.md — list all files on disk, extract IDs from filenamesid, domain, level, title, status, superseded_by, archived_to (coordinated with memory-archive-superseded skill)archived_to: field is set (e.g. archive/superseded-decisions.archive.md) AND the DEC ID is present in the archive index: SKIP active registration. The DEC's active home is the archive. Do NOT add a row to the active Decision Registry. (Prevents undo of archive operation by memory-archive-superseded skill.)archived_to: is set BUT no matching archive row: flag ⚠️ ARCHIVE INCONSISTENCY: DEC-{N} frontmatter declares archived_to but no row in archive index — escalate, do NOT auto-add either wayarchived_to: is NOT set AND DEC is not in any active registry: add a row to the appropriate Decision Registry — prefer index-decisions.md if it exists (Decision Registry has been extracted there) ; otherwise add to index.md Decision Registry as before. Row form is pointer-only (per memory-index-compact skill): | DEC-{N} | {domain} | {level} | {≤30-word topic from frontmatter title or essence ; never copy from DEC body §s} | {status} {YYYY-MM-DD} |. HARD CAP : ≤ 200 chars. If the frontmatter title alone exceeds 200 chars (rare), use first clause + truncate. If frontmatter status: superseded and superseded_by is set: append ⚠️ SUPERSEDED by DEC-{M} AND flag in report : "consider invoking memory-archive-superseded for DEC-{N}".⚠️ MISSING FILE in the sync report — do NOT delete registry rows (possible archive situation)Re-count all DEC-*.md files on disk. Update the Shared Categories table file count in index.md to match.
index.md Summaries section — extract registered summary filenamessummaries/*.summary.md — list all files on diskindex.md: read its frontmatter, add entry to Summaries section⚠️ MISSING FILE — update pointer or delete entry in sync reportstatus: superseded in frontmatter:
⚠️ SUPERSEDED by DEC-{M} markerindex.md is consistent with the Decision Registry (no contradictions)Update index.md frontmatter updated_at field:
{YYYY-MM-DD} ({N} entries synced, {M} anomalies flagged) — or (no drift — confirmed clean) if nothing changedarchive/superseded-decisions.archive.md "Superseded DEC entries" table : verify there is exactly one matching pointer row in index.md § "Superseded (archived)" pointer table. Dangling archive row (no active pointer) = anomaly.index.md § "Superseded (archived)" : verify there is exactly one matching archive row. Orphan pointer (no archive backing) = anomaly.memory-index-lint for full discoverability invariant validation. If memory-index-lint is invokable (shell available), run python3 scripts/validate-memory-index.py and require CLEAN exit before declaring DRIFT_HEALED ; otherwise perform the L3 prompt-based check from memory-index-lint/SKILL.md.# Memory Index Sync — {date}
## Changes Applied
- Registered: DEC-{A}, DEC-{B}, ..., DEC-{Z} (10 entries added to registry)
- Supersession markers added: DEC-{X} (→ DEC-{Y})
- File count updated: N → M
## Anomalies Flagged (requires human review)
- ⚠️ MISSING FILE: DEC-{N} registered but no file on disk
- ⚠️ ORPHAN SUMMARY: decisions-80-89.summary.md on disk, not in index
## Result: CLEAN | DRIFT_HEALED | ANOMALIES_FOUND
CLEAN)index.mdThis skill must NOT:
decision-extraction)memory-ingest)memory-compact or memory-refresh)Memory-index-sync heals the registry. It does not create or delete knowledge.