_
| |_ ___ _____ _____
| _| _| _ |_| -|
|_| |_| |_____|_|___/ v0.2.5 — 24 modules, live-verified
One ~/.trove/ directory. Every AI coding agent — Claude Code, Codex, Cursor — in every project on your machine reuses the same API credentials and service playbooks.
No more re-pasting Stripe keys into a fresh .env for every project. No more re-explaining "this service has a quirk that bit me last time" to a fresh agent session. Add a service once at ~/.trove/<service>/; reference it from any project's CLAUDE.md / AGENTS.md / .cursorrules with one line:
@/Users/you/.trove/stripe/module.md
The AI loads the module on session start. It now knows your Stripe key, the gotchas (amounts in cents, restricted keys over secret keys, idempotency-key requirement), and — if a Stripe MCP server is wired up — calls it directly.
No inject step. No init step. No per-agent shims. Trove is a plain directory; the AI is the runtime.
Install the CLI
npm install -g @robozephyr/trove
Install a module + open the Web UI to fill credentials
trove install stripe trove ui # → http://127.0.0.1:7821
Reference it from any project
echo '@/Users/you/.trove/stripe/module.md' >> CLAUDE.md
Four new modules — all built from real API probing, with the gotchas baked into last_verified. The killer pattern: Seedream generates an image → volcengine-tos hosts it at a public URL → Seedance animates it with audio → volcengine-speech transcribes to verify the audio matches your script. Full Volcengine AI loop, no external dependencies.
Alibaba Bailian — CosyVoice TTS (150+ Chinese voice presets + free voice cloning) and Wanx image gen. WebSocket-based, char-billed.
Use dashscope CosyVoice to synthesize "你好世界" with voice longxing_v3 in mp3 22kHz.
S3-compatible object storage on Volcengine. The bridge module — upload images / audios to a public-read bucket so Seedance + Seedream can reference them at tos-cn-beijing.volces.com URLs.
Upload this image to my TOS bucket public-read and give me the URL to pass into Seedance as first_frame.
ByteDance Seed-ASR 2.0 — batch audio transcription with utterance + word timestamps. The QA companion: diff transcribed audio against your target script to catch divergence.
Transcribe this mp3 via Seed-ASR and tell me if the spoken words match my target subtitle text.
One-call publish to 14 social platforms via unified MCP (TikTok / YouTube / X / Bilibili / Douyin / WeChat / etc). OAuth relay borrows official platform credentials.
Publish my video to TikTok, YouTube, X, and Pinterest via aitoearn, with per-platform variants.
Plus: library/cloudflare extended with the CF Pages source-repo silent-PATCH trap + ordered delete+recreate runbook (real dogfood: PATCH /pages/projects/{name} returns success but doesn't update the source field). Site now lives at trove.robozephyr.com (brand-aligned with the @robozephyr/ npm scope) with SVG favicon, Apple touch icon, and auto-deploy on every push.
Per service, one folder holds three layers:
~/.trove/stripe/
├── module.md # YAML frontmatter + gotchas-first skill body
├── credentials.json # secret values — gitignored, mode 600
└── files/ # (optional) SA JSON / SSH key / cert
└── ...
On session start, the AI auto-loads the referenced modules (any agent supporting @-reference to an absolute path), reads credentials.json and files/ directly when calling the API, and consults the playbook body when it hits a known-gotcha code path. No tooling required to start — the directory convention IS the runtime.
| Tool | Why Trove isn't replacing it |
|---|---|
.env + direnv | Env files have no skill knowledge, no MCP config, and re-fragment per-project. Trove keeps creds but adds the two layers env can't carry. |
~/.claude/skills/ | Agent-specific — locked to Claude Code. Trove modules are referenced by absolute path from CLAUDE.md / AGENTS.md / .cursorrules, so the same module serves Claude Code / Codex / Cursor without re-authoring. |
1Password CLI / op run | Credentials only — no playbook, no MCP wiring. Use 1Password as the source-of-truth vault and pull values into trove if you want; the two compose. |
| Per-project skill files | Every project re-pays the authoring cost; trove de-duplicates across N projects, and the last_verified field makes "is this knowledge still correct?" auditable. |
| A SaaS / cloud sync | Local-first by design. Sync via git remote / iCloud Drive / rsync — whichever you already use. |
trove ui opens a local dashboard at 127.0.0.1:7821 (bound to localhost only — never public). Four views:
module.md into ~/.trove/last_verified tier dotMost modern services ship MCP servers — Stripe, Supabase, Google Analytics, npm, etc. Each agent has its own MCP config file (~/.claude.json, ~/.cursor/mcp.json, ~/.codex/...). Adding one service to three agents currently means editing three files.
Trove modules can carry an mcp: block declaring the canonical install — HTTP for hosted MCP servers, stdio for local pipx / npx / uvx servers. The ${credential.X} substitution resolves to the field's value (string fields) or absolute path (file fields). One place to declare, applies to every agent.
mcp:
type: stdio
command: pipx
args: ["run", "google-analytics-mcp"]
env:
GOOGLE_APPLICATION_CREDENTIALS: ${credential.GOOGLE_SERVICE_ACCOUNT_JSON}
Every module carries a last_verified field — what was actually tested, by whom, when. Dot color reflects current state. We'd rather ship 24 honest modules than 50 LLM-hallucinated ones.
Each module ships with a gotchas-first skill body — auth header quirks, billing pitfalls, error-code tables — so the AI doesn't have to rediscover the same trap that bit the last engineer.
trove init, no inject step, no SaaS — ever)v0.2.5 — the format spec is stable, all 24 modules are gated by last_verified, and the maintainer dogfoods trove daily across personal projects. AI-assisted module authoring (v0.3) and a marketplace for community modules (v1.0) are next.
The repo is github.com/RoboZephyr/trove — issues, PRs, and module additions welcome (see CONTRIBUTING.md for the quality bar).