Install
$ agentstack add skill-coco-research-coco-media-memory ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
/media-memory — Multimodal Memory System
You have access to a persistent multimodal memory system at ~/.claude/media-memory/. It stores every piece of media (images, video, audio, files) with rich metadata and Gemini Embedding 2 vectors in ChromaDB.
Directory Layout
~/.claude/media-memory/
assets/ # stored media files
chroma/ # ChromaDB vector store
metadata.db # SQLite structured metadata
scripts/
ingest.py # ingestion + embedding
search.py # search with filters
schema.py # metadata models
Commands
All commands run from ~/.claude/media-memory/ using uv run.
Ingest (store + embed)
cd ~/.claude/media-memory && uv run scripts/ingest.py "" \
--source "user|generated|url|ingested" \
--description "Natural language description of the media" \
--tags "tag1,tag2,tag3" \
--type "image|video|audio|document|file" \
--text "Extracted text or transcript content"
Search (hybrid: semantic + metadata)
cd ~/.claude/media-memory && uv run scripts/search.py "search query" \
--type image \
--source user \
--tags "architecture,diagram" \
--from "2026-03-01" \
--to "2026-03-28" \
--limit 10 \
--mode hybrid|semantic|metadata \
--json
Recent items
cd ~/.claude/media-memory && uv run scripts/search.py --recent --limit 10
Stats
cd ~/.claude/media-memory && uv run scripts/search.py --stats
Behavior Rules
On Ingest (when user sends or generates media)
- Copy the file to
assets/viaingest.py - ALWAYS provide
--descriptionwith a rich natural language description of the content - ALWAYS provide relevant
--tagsfor semantic categorization - Set
--sourceaccurately:user(user sent it),generated(Claude/AI created it),url(downloaded),ingested(bulk import) - For screenshots: describe what's visible (UI elements, text, code, diagrams)
- For documents: extract key text into
--text - Report the result to the user: "Saved to media memory: {description}"
On Search (when user asks about past media)
- Use
--mode hybridby default (combines semantic + metadata) - Add
--typefilter when user specifies media kind - Add
--tagsfilter when user mentions categories - Add date filters when user references timeframes ("last week", "this month")
- Show results with descriptions and asset paths
- Offer to open/display the asset if it's an image
Proactive Recall
When a conversation topic overlaps with stored media:
- Run a quick semantic search with the current topic
- If relevant results found (similarity > 0.7), mention: "I found a related {type} in media memory: {description}"
- Don't be noisy — only surface genuinely relevant assets
Environment
- No API key needed — uses ChromaDB's built-in local embeddings (all-MiniLM-L6-v2 via onnxruntime)
- Everything runs locally, zero external calls
- ChromaDB: local persistent storage, cosine similarity
- Model cached at
~/.cache/chroma/onnx_models/(downloaded once on first use)
Metadata Schema
| Field | Type | Description | |-------|------|-------------| | id | string | Auto-generated: {type}_{hash}_{stem} | | filename | string | Original filename | | type | string | image, video, audio, document, file | | timestamp | ISO 8601 | When ingested | | source | string | user, generated, url, ingested | | description | string | Natural language description | | extractedtext | string | OCR / transcript / content | | tags | JSON array | Semantic tags | | originalpath | string | Where it came from | | asset_path | string | Path in assets/ | | embedded | boolean | Whether vector is in ChromaDB |
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: coco-research
- Source: coco-research/coco
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.