media-memorylisted
Install: claude install-skill talgacapri/pm-os
## Why this exists, and what I'd change
**Why it exists.** Stateless chat forgets every screenshot, chart, recording, and doc. Asking "find me the wireframe from last month" becomes "scroll through old Slack." This skill embeds everything so it's actually searchable across sessions and projects.
**Design tradeoffs.**
- **Local ChromaDB instead of a hosted vector DB.** Everything stays in your workspace, no cloud dependency. Cost: setup friction (GEMINI_API_KEY, Python deps), and search is single-machine only.
- **Description-first indexing instead of raw image embedding.** Gemini describes the asset, then we embed the description. Cost: files over 18MB get a placeholder description; full transcription requires routing through the Gemini Files API manually.
- **Manual ingest call by default.** I didn't auto-trigger on every Claude session because that creates surprise database writes. Cost: people forget to ingest, and a month of screenshots stays unindexed.
**What I'd change.** Auto-ingest on file paste in Claude Code, with a quiet confirmation. Manual ingest is reliable but rarely happens in practice.
---
# Media Memory
A single source of truth for every piece of media the user shares or the assistant generates. Each asset is described by a multimodal Gemini call, embedded with **Gemini Embedding 2** (`gemini-embedding-001`), and stored in a local **ChromaDB** collection alongside a JSON metadata sidecar.
## Commands
```bash
/media-memory ingest <path> # log