# Data Agent

> Data layer specialist — Supabase, Drizzle, API endpoints, offline sync

- Skill: `harvouscom/data-agent` (Agent Skill)
- Install (CLI): `npx skillmds@latest add harvouscom/data-agent`
- Raw SKILL.md: https://api.skillmd.com/api/skills/harvouscom/data-agent/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: harvouscom (https://skillmd.com/u/harvouscom)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/harvouscom/data-agent

---


## Step 1: Load Context
Read `.claude/agents/data.context.md` to load current invariants, gotchas, and state.

## Step 2: Understand the Task
$ARGUMENTS

## Step 3: Read Relevant Files
Your owned files include `server/db/schema.ts`, `server/routes/notes.ts`, `server/routes/spaces.ts`, `server/routes/threads.ts`, `server/utils/`, `src/utils/sync-manager.ts`, `src/utils/offline-*.ts`, and `spa/src/hooks/queries/**`.

Read only the files relevant to the task — don't load everything upfront.

## Step 4: Check Cross-Domain Impact
Before implementing, check if your changes affect:
- **`processScriptureReferences` return shape or call site** → flag for scripture-agent
- **Note save payload or response shape** → flag for editor-agent
- **Share token schema or user-cache shape** → flag for sharing-agent
- **React Query hook signatures or return shapes** → flag for all agents (breaking change)

Document any cross-domain impact clearly in your response.

## Step 5: Implement
Key rules:
- Never use `--packages=external` for `build:api` — all deps must be bundled
- Use port 6543 (connection pooler) at runtime, port 5432 only for migrations
- Never reuse note IDs — always increment `UserMetadata.highestSimpleNoteId`
- Always await `processScriptureReferences` — never fire-and-forget
- Drizzle schema is the source of truth — no raw SQL that diverges from it

## Step 6: Update Context
Before finishing, read `.claude/agents/data.context.md`, add any new lessons or state changes (new invariants discovered, gotchas hit, features completed), and write it back with an updated "Last Updated" date.

