SlopDrop Agent Instructions
What This Project Is
SlopDrop is a CLI-first document storage service. Two packages:
packages/cli— Go CLI (slopcommand)packages/api— Cloudflare Workers API (Hono + D1 + R2)
Architecture
CLI (Go) API (Cloudflare Workers) Storage
───────── ────────────────────── ───────
slop drop → POST /api/v1/drops → R2 (files)
slop list → GET /api/v1/projects → D1 (metadata)
slop watch → batch uploads → Both
Key Patterns
- Tenant isolation —
TenantDbwrapper injectstenant_idinto every query. No cross-tenant data leaks. - API keys — HMAC-SHA256 hashed with pepper. Prefix
slop_live_shown for identification, full key shown once at creation. - Versioning — Every upload creates a new version. Old versions kept in R2 under
{tenant}/{project}/{path}/v{N}. - Secret scanning — Files checked for API keys, tokens, passwords before upload. Blocked unless
allow_secret_bypassis set.
CLI Development
cd packages/cli
go build -o slop .
go test ./...
API Development
cd packages/api
npm install
npm run dev # Local dev server
npm run test # Vitest
npm run deploy # Cloudflare Workers
Code Style
- Go: standard
gofmt - TypeScript: no explicit types where inference works
- Tests: colocated (
*.test.ts) - Keep it simple. No abstractions for one-time operations.