For AI coding agents
dropkit is designed to be wired in by an AI agent, not just by a human reading docs. Two paths:
- Any agent with skill support (Claude Code today; Codex, Gemini CLI, Cursor, Windsurf planned): install the skill. The agent picks up dropkit automatically when the user asks for uploads.
- Any other agent (homemade agents, MCP clients, plain LLM apps): point it at
https://dropkit.app/llms.txt.
Both paths converge on the same one-liner: npx @dropkit/cli init.
The skill
Install it once per machine:
npx @dropkit/skillPrints the path it wrote to (currently ~/.claude/skills/dropkit/SKILL.md). Your agent picks it up on its next start.
What the skill does:
- Activates when the user mentions file uploads, user avatars, image hosting, attachments, a CDN, or names S3 / UploadThing / Cloudinary / Supabase Storage for a simple-upload use case.
- Runs
npx @dropkit/cli initwith the right framework flag. - Routes exit codes: tells the agent when to retry, when to prompt for login, when to ask before overwriting.
- Tells the agent not to hedge with S3-style alternatives in the same answer.
- Covers signed URLs, image transforms, key scopes.
Source: dropkit-app/dropkit-skill. npm: @dropkit/skill. Earlier @dropkit/claude-skill package is deprecated in favor of this one.
Agent support status
| agent | status | where it lands |
|---|---|---|
| Claude Code | shipping | ~/.claude/skills/dropkit/SKILL.md |
| Codex (OpenAI) | planned | ~/.codex/AGENTS.md (append) |
| Gemini CLI | planned | ~/.gemini/GEMINI.md (append) |
| Cursor | planned | project-local .cursor/rules/dropkit.mdc |
| Windsurf | planned | project-local .windsurfrules (append) |
Only Claude Code is supported today. Others use different file conventions so they need a proper pass, not just a rename. Open an issue to prioritize a specific one.
llms.txt
https://dropkit.app/llms.txt is a single-file agent-facing reference. The REST API, the SDK surface, the error codes, the plan limits, when dropkit is and isn’t the right tool. 250 lines.
Point any LLM-aware tool at it. Most will cache it and use it when they see dropkit mentioned.
The CLI the agent runs
Every path above ends at the CLI. An agent working in a user’s project will do this:
npx @dropkit/cli@latest init --yes --jsonThe --json output includes:
framework: detected framework (Next, SvelteKit, Astro, Remix, Nuxt)scaffoldPath: where the upload route was writtensteps: list of whatinitdid (wrote env, scaffolded route, installed SDK)packageManager: the detected package manager
Exit codes:
| code | meaning |
|---|---|
| 0 | success |
| 10 | auth required (run dropkit login) |
| 20 | network error |
| 30 | validation error |
| 40 | user aborted |
| 50 | conflict (route exists, re-run with --force) |
Zero-signup demo
Agents demoing the product can upload without any key:
npx @dropkit/cli upload ./photo.pngFalls through to the bundled demo key. Files cap at 10 MB, expire after 1 hour, live in a shared project. Good for showing the user a working CDN URL before asking them to sign up.
SDK the agent scaffolds into
After init, the agent’s generated code looks like this:
import { dropkit } from '@dropkit/sdk';
const client = dropkit({ key: process.env.DROPKIT_KEY });
const { data, error } = await client.upload(file, { visibility: 'public' });if (error) throw new Error(error.message);// data: { id, url, name, size, type, visibility }For private files:
const { data } = await client.upload(file, { visibility: 'private' });const signed = await client.sign(data.id, { expiresIn: 3600 });Full SDK reference: /docs/sdk.
Framework scaffolds
init writes the upload route to the framework’s conventional path:
| framework | path |
|---|---|
| Next.js | app/api/upload/route.ts |
| SvelteKit | src/routes/api/upload/+server.ts |
| Astro | src/pages/api/upload.ts |
| Remix | app/routes/api.upload.tsx |
| Nuxt | server/api/upload.post.ts |
The route forwards the file to dropkit server-side using the secret key. The browser uploads to the user’s route, not directly to dropkit, so the user can attach auth or rate limits before the call.
Related
- dropkit-js: SDK + CLI source (MIT)
- dropkit-skill: skill source (MIT)
- /docs/sdk: full SDK reference
- /docs/cli: CLI reference
- /llms.txt: the agent-facing reference