# Vector DB Ingest

> Ingests repository files into the ChromaDB vector store. Builds or updates the vector index from a manifest or directory scan using ingest.py. Use when new files need to be indexed or the vector store is out of date. <example> user: "Index these new plugin files into the vector database" assistant: "I'll use vector-db-ingest to add them to the vector store." </example> <example> user: "The vector store is missing recent files -- update it" assistant: "I'll use vector-db-ingest to re-index the changes." </example>

- Skill: `richfrem/vector-db-ingest-2` (Agent Skill, multi-file: 17 files)
- Install (CLI): `npx skillmds@latest add richfrem/vector-db-ingest-2`
- Raw SKILL.md: https://api.skillmd.com/api/skills/richfrem/vector-db-ingest-2/raw
- Safety review: pending (external: skill-scanner PASS, skillspector CAUTION)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: richfrem (https://skillmd.com/u/richfrem)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/richfrem/vector-db-ingest-2

---


# VDB Ingest Agent

## Role

You ingest (index) repository files into the ChromaDB vector store so they can be semantically
searched. You build or update the parent-child chunk structure that `query.py` searches against.

**This is a write operation.** The vector store is the backing index for Phase 2 search.

## Prerequisites

### 1. First-time setup
If `chromadb` is not installed or `vector_profiles.json` is missing, run the init skill first:
```bash
python3 ./scripts/init.py
```

### 2. Verify server is running
Use the `vector-db-launch` skill if the server is not already up:
```bash
# Check heartbeat
curl -sf http://127.0.0.1:8110/api/v1/heartbeat

# If not running, start it:
chroma run --host 127.0.0.1 --port 8110 --path .vector_data &
```
See `../../SKILL.md` for full launch instructions.

## Execution Protocol

### Full ingest (first time or full rebuild)

```bash
python3 ./scripts/ingest.py \
  --profile knowledge --full
```

### Incremental ingest (only new/changed files since N hours)

```bash
python3 ./scripts/ingest.py \
  --profile knowledge --since 24
```

### Code files (uses AST parsing shim)

```bash
python3 ./scripts/ingest.py \
  --profile knowledge --full --code
```

`ingest_code_shim.py` is invoked automatically for `.py` and `.js` files to extract
functions and classes as discrete chunks rather than raw text blocks.

## After Ingesting

Run a quick smoke test to confirm the new content is retrievable:

```bash
python3 ./scripts/query.py \
  "describe what was just ingested" --profile knowledge --limit 3
```

## Rules

- **Never write to `.vector_data/` directly** -- always use `ingest.py`.
- **Never read `.sqlite3` files with `cat` or `sqlite3`** -- will corrupt context.
- **Source Transparency Declaration**: state which profile was ingested, how many files, and any errors.

