# Memory Processor

> Iva's daily-memory processor. Reads the day's two-sided transcript (daily/YYYY-MM-DD.md), distills noteworthy entities / decisions / ideas into typed autograph cards, links them into the graph, and produces a daily-summary card (topics + MOC) that navigates down to the raw transcript and up to the week. Model-agnostic — runs on any LLM driving the vault (Iva uses DeepSeek). Triggered by the daily rollup (scripts/memory/rollup.ts daily).

- Skill: `smixs/memory-processor` (Agent Skill, multi-file: 9 files)
- Install (CLI): `npx skillmds@latest add smixs/memory-processor`
- Raw SKILL.md: https://api.skillmd.com/api/skills/smixs/memory-processor/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: smixs (https://skillmd.com/u/smixs)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/smixs/memory-processor

---


# memory-processor — daily transcript → cards + summary

Turn one day of raw conversation into durable, navigable memory.

This skill is **judgment-first**: the model (you) does the classification, tagging,
and linking. The autograph Python scripts are used only for mechanical work
(enforce schema, repair links, generate MOCs, decay, touch). `enrich.py` is **never**
used — you are the enrichment.

## Inputs

- `daily/YYYY-MM-DD.md` — the day's raw two-sided transcript
  (`## HH:MM [text|voice|video|photo|forward from: …]` for the user,
  `## HH:MM [iva]` for Iva's replies; older days may use legacy `[eva]`).
  See `scripts/memory/instructions/rules/daily-format.md`.
- `schema.json` — the vault schema (types, domains, decay).
- Existing cards under `cards/**` and prior summaries under `summaries/`,
  `weekly|monthly|yearly/` — for linking and dedup.

## Outputs

1. Zero or more **entity/decision/idea cards** under `cards/<kind>/`.
2. One **daily-summary card** at `summaries/daily/YYYY-MM-DD.md`.
3. A processing marker appended to the raw daily file (never edit existing entries).

## Layout & types (from schema.json)

| What                              | Folder                           | type            |
| --------------------------------- | -------------------------------- | --------------- |
| Raw transcript (read-only log)    | `daily/YYYY-MM-DD.md`            | — (not a card)  |
| Daily summary                     | `summaries/daily/YYYY-MM-DD.md`  | `daily-summary` |
| Weekly / monthly / yearly summary | `weekly/`, `monthly/`, `yearly/` | `*-summary`     |
| Knowledge note / thought          | `cards/notes/`                   | `note`          |
| Person / org                      | `cards/contacts/`                | `contact`       |
| Project                           | `cards/projects/`                | `project`       |
| Idea / proposal                   | `cards/ideas/`                   | `idea`          |
| Decision                          | `cards/decisions/`               | `decision`      |

Always pick `type` and `status` from `schema.json` → `node_types`. Never invent a status.

## Flow (4 phases)

1. **CAPTURE** (`phases/capture.md`) — read the transcript, segment it, and decide
   what is noteworthy: which entities, decisions, ideas, and topics the day produced.
2. **PROCESS** (`phases/process.md`) — create / update cards for the noteworthy items,
   choosing exactly one `ADD | UPDATE | SUPERSEDE | NOOP` operation, then type +
   description-snippet + tags + status; dedup against existing cards.
3. **LINK** (`phases/link.md`) — wire every new card to its domain hub + 2–3 neighbors.
4. **SUMMARIZE** (`phases/summarize.md`) — write the daily-summary card: the day's
   TOPICS plus a MOC linking up to the week, down to the created cards, and down to
   the raw daily transcript. Then run the mechanical autograph pass.

## Mechanical pass (after writing cards & summary)

Run from the project root (Iva's working directory) — the scripts are part of the repo, not
of the vault, and take the vault directory as an argument (`vault` = `$ASSISTANT_VAULT_DIR`):

```bash
# dry-run first, then --apply
uv run scripts/autograph/cleanup.py vault --apply                         # bounded repair before whole-file readers
uv run scripts/autograph/enforce.py vault vault/schema.json --apply   # schema compliance + autofix
uv run scripts/autograph/graph.py fix vault vault/schema.json --apply # repair broken wiki-links
uv run scripts/autograph/engine.py touch vault/summaries/daily/YYYY-MM-DD.md
uv run scripts/autograph/moc.py generate vault vault/schema.json      # regenerate domain MOCs
uv run scripts/autograph/engine.py decay vault                        # recompute relevance/tiers
uv run scripts/autograph/graph.py health vault vault/schema.json      # confirm score
```

Read `.graph/enforce-report.json` after `enforce.py`. Every path in
`compile_candidates` needs semantic repair during the next rollup pass: reread the
card, decide its current truth, and use `write_card` to leave one coherent card.
The mechanical pass deliberately refuses to guess when duplicate `## Related`
sections contain prose.

If `uv` / Python is unavailable, still produce the cards and summary (they are plain
Markdown) and let the nightly Brain run the mechanical pass later.

## Hard rules

- **Never modify existing transcript entries.** Append only a processing marker (see
  `scripts/memory/instructions/rules/daily-format.md`).
- **No orphans.** Every card created here must link to a hub and ≥2 neighbors before
  you finish (`phases/link.md`).
- **description is a search snippet, not the title.** One line, what/why, ~150 chars.
- **tags:** 2–5, lowercase, kebab-case.
- **Idempotent.** If the daily file already carries a processing marker and a
  `summaries/daily/YYYY-MM-DD.md` exists, only reconcile new entries; do not duplicate cards.
- **One structure per card.** Exactly one `## Log` and one `## Related`; never emit
  dated `## Обновление` / `## Update` headings. Pass relations only through the
  `write_card.related` argument, never inside `body`.
- **Verify writes.** Reread every created or updated card before finishing. Confirm
  one Log, one Related, no empty/dated update headings, and that Compiled Truth says
  what is true now. A failed invariant keeps the rollup unfinished.
- **Quiet days are fine.** No noteworthy entities → still write a short daily-summary
  with topics and the MOC down to the raw transcript. Do not manufacture cards.

## References

- `references/classification.md` — what becomes a card vs. stays in the transcript.
- `references/card-templates.md` — frontmatter templates per type.
- `references/linking.md` — hub + neighbor linking protocol.
- `references/daily-summary.md` — the daily-summary card spec (topics + MOC).
- `scripts/autograph/docs/SKILL.md` — the typed vault engine (graph, decay, MOC, dedup).
- `scripts/memory/instructions/rules/{daily,weekly,monthly,yearly}-format.md` — format +
  rollup chain navigation rules.

