{
  "markdown": "# Upstash Agent Skills\n\nConnect your AI coding agent to Upstash. This repo ships **skills** (per-SDK instruction packs your agent loads on demand) and the **plugin manifests** that install them — and now the **Upstash MCP server** — into Claude Code, Codex, Cursor, Gemini CLI, OpenCode, Zed, and any Agent Skills–compatible client.\n\n## The Upstash agent surface\n\n- **Skills** — packaged instructions and CLI references for each Upstash SDK (Redis, QStash, Workflow, Vector, Search, Box, Ratelimit). No credentials needed. → [docs](https://upstash.com/docs/agent-resources/skills)\n- **MCP server** — live tools to query, debug, and manage your account. Two ways to run it:\n  - **Remote (hosted)** — `https://mcp.upstash.com/mcp`, streamable HTTP, authenticated with OAuth (browser consent, on first use) or a developer API key header. Nothing to install.\n  - **Local (stdio)** — [`@upstash/mcp-server`](https://www.npmjs.com/package/@upstash/mcp-server) run with `npx`, authenticated with your account email + a developer API key.\n\n  → [docs](https://upstash.com/docs/agent-resources/mcp)\n- New here? Start with the [AI Tools overview](https://upstash.com/docs/agent-resources/overview), and see [Install by agent](https://upstash.com/docs/agent-resources/clients) for full per-client setup.\n\n## What's in this repo\n\n- **`skills/upstash-*/`** — the per-SDK skill sources (each has a `SKILL.md`). Edit these.\n- **`skills/upstash/`** — the combined skill, **generated** from all the sources by `npm run build`. Never hand-edit it (see [`AGENTS.md`](AGENTS.md)).\n- **Plugin manifests** — `.claude-plugin/`, `.codex-plugin/`, `.cursor-plugin/`, `gemini-extension.json`, and the portable [Agent Plugins](https://agent-plugins.org) `plugin.json` + `mcp.json`. They make the repo installable as a plugin/extension. **These plugins now bundle the remote Upstash MCP server (OAuth), so installing the plugin sets up the skills *and* the MCP in one step** — no separate MCP configuration for Claude Code, Codex, Cursor, or Gemini CLI.\n- **`zed-extension/`** — a Zed MCP server extension (Rust → Wasm).\n- **`assets/`** — branding used on the plugin card, read by Codex (`interface.logo` / `interface.composerIcon`) and Cursor (`logo`). Claude Code, Gemini CLI and the Agent Plugins schema have no icon field.\n\n## Available Skills\n\n| Skill | Description |\n|-------|-------------|\n| [upstash](skills/upstash/) | Combined skill covering all Upstash SDKs and CLIs. |\n| [upstash-blob-js](skills/upstash-blob-js/) | S3-compatible object storage with direct browser uploads and signed URLs. |\n| [upstash-box-cli](skills/upstash-box-cli/) | Drive a sandboxed cloud container from the terminal with the `box` CLI. |\n| [upstash-box-js](skills/upstash-box-js/) | Sandboxed cloud containers with AI agents, shell, filesystem, and git. |\n| [upstash-box-py](skills/upstash-box-py/) | The same sandboxed cloud containers, from the Python SDK. |\n| [upstash-cli](skills/upstash-cli/) | Drive the Upstash Developer API from the terminal with the `upstash` CLI. |\n| [upstash-qstash-js](skills/upstash-qstash-js/) | Serverless messaging and scheduling via HTTP endpoints. |\n| [upstash-ratelimit-js](skills/upstash-ratelimit-js/) | Rate limiting with the Redis Rate Limit TypeScript SDK. |\n| [upstash-redis-js](skills/upstash-redis-js/) | Serverless Redis — caching, sessions, leaderboards, full-text search. |\n| [upstash-redis-start](skills/upstash-redis-start/) | Provision a zero-config, no-signup scratch Redis database for an agent. |\n| [upstash-search-js](skills/upstash-search-js/) | Full-text search quick starts, core concepts, and TypeScript SDK. |\n| [upstash-vector-js](skills/upstash-vector-js/) | Vector database features, SDK usage, and framework integrations. |\n| [upstash-workflow-js](skills/upstash-workflow-js/) | Durable workflows — define, trigger, and manage multi-step processes. |\n\n## Install\n\nInstalling through a **plugin** (Claude Code, Codex, Cursor, Gemini CLI) sets up both the skills and the remote MCP server — approve the MCP's OAuth consent on first use. The skills-only installers (Agent Skills CLI, OpenCode, Zed) install skills; add the [MCP server](#mcp-server) separately if you want live account access.\n\nFor the full, up-to-date per-client instructions, see [Install by agent](https://upstash.com/docs/agent-resources/clients).\n\n### Claude Code (skills + MCP)\n\n```bash\n# Add the marketplace\n/plugin marketplace add upstash/skills\n\n# Install the plugin\n/plugin install upstash@upstash\n```\n\n### OpenAI Codex (skills + MCP)\n\n```bash\n# Add the marketplace\ncodex plugin marketplace add upstash/skills\n\n# Install the plugin\ncodex plugin add upstash@upstash\n```\n\n### Cursor (skills + MCP)\n\nWe are waiting for this plugin to be accepted to the official\n[Cursor Marketplace](https://cursor.com/marketplace). Once listed, it can be installed\nfrom **Customize** in the Cursor sidebar, and it brings both the skills and the MCP server.\n\n### Gemini CLI (skills + MCP)\n\nGemini CLI loads this repo as an [extension](https://geminicli.com/docs/extensions/) — the manifest is `gemini-extension.json` at the repo root; every skill under `skills/` and the remote MCP server are picked up automatically:\n\n```bash\ngemini extensions install https://github.com/upstash/skills\n```\n\n### OpenCode\n\nOpenCode loads [Agent Skills](https://opencode.ai/docs/skills) from `.agents/skills/` in a project\nand `~/.config/opencode/skills/` globally, which is where the Agent Skills CLI writes them for\nOpenCode:\n\n```bash\n# Available in every project\nnpx skills add upstash/skills --agent opencode --global\n\n# Or just this project\nnpx skills add upstash/skills --agent opencode\n```\n\nOpenCode exposes the installed skills to the agent through its native `skill` tool, so the\nagent loads only the sub-skill relevant to the task at hand. For live access to your account\n(create databases, inspect QStash logs, and so on), add the [MCP server](#mcp-server) as well.\n\n### Zed\n\nZed loads [Agent Skills](https://zed.dev/docs/ai/skills) from `.agents/skills/` in a project\nand `~/.agents/skills/` globally, which is exactly where the Agent Skills CLI writes them:\n\n```bash\n# Available in every project\nnpx skills add upstash/skills --agent zed --global\n\n# Or just this project\nnpx skills add upstash/skills --agent zed\n```\n\nThe skills then show up in Zed's Agent Panel, and the agent can load them on its own or via\n`/upstash`. Zed's extension marketplace carries languages, themes, debuggers, snippets, and MCP\nservers, but has no channel for skills, so the CLI is the only way to install them. The Zed\nextension in `zed-extension/` covers the [MCP server](#mcp-server) instead.\n\n### Context7 CLI\n\n```bash\nnpx ctx7 skills install upstash/skills\n```\n\n### Agent Skills CLI\n\n```bash\nnpx skills add upstash/skills\n```\n\n### DeepSeek Harness\n\nInstalls the skills **and** the [Upstash MCP server](#mcp-server) in one step. Requires\n`pnpm` on your `PATH`.\n\n```bash\n# Install into a profile (`web` is the one `dsh web` boots)\ndsh plugin --profile web add github:upstash/skills\n\n# Start the harness\ndsh web\n```\n\nThen store your Upstash credentials from inside a session:\n\n```\n/upstash-login YOUR_EMAIL YOUR_API_KEY\n```\n\nCredentials are stored in `~/.dsh/.credentials.yaml` and the MCP server connects as\nsoon as both are set. The skills work without them.\n\n## MCP Server\n\nInstalling a plugin above already wires up the remote MCP server. Set it up on its own when you\nuse a skills-only installer (OpenCode, Zed) or a client without a plugin.\n\n**Remote (recommended)** — no install; OAuth on first use, or pass a developer API key header\n(`email:API_KEY`) for headless/CI. Create a key at\n[Console → Account → API Keys](https://console.upstash.com/account/api).\n\n<details>\n<summary>Claude Code</summary>\n\n```bash\n# OAuth (browser consent on first /mcp use)\nclaude mcp add --transport http upstash https://mcp.upstash.com/mcp\n\n# Or a developer API key, no browser\nclaude mcp add --transport http upstash https://mcp.upstash.com/mcp \\\n  --header \"Authorization: Bearer you@example.com:YOUR_API_KEY\"\n```\n\n</details>\n\n<details>\n<summary>Cursor</summary>\n\nAdd to `~/.cursor/mcp.json` (add `headers` with the `Authorization` line for the API-key path):\n\n```json\n{\n  \"mcpServers\": {\n    \"upstash\": { \"url\": \"https://mcp.upstash.com/mcp\" }\n  }\n}\n```\n\n</details>\n\n<details>\n<summary>OpenCode</summary>\n\nAdd to `opencode.json`, or `~/.config/opencode/opencode.json` to make it available everywhere.\nSee the [OpenCode MCP docs](https://opencode.ai/docs/mcp-servers).\n\n```json\n{\n  \"$schema\": \"https://opencode.ai/config.json\",\n  \"mcp\": {\n    \"upstash\": {\n      \"type\": \"remote\",\n      \"url\": \"https://mcp.upstash.com/mcp\",\n      \"enabled\": true\n    }\n  }\n}\n```\n\n</details>\n\nScope which product tools the agent sees by appending `?features=` to the URL — comma-separated\nfrom `redis`, `qstash_workflow`, `vector`, `search` (omitted means all), e.g.\n`https://mcp.upstash.com/mcp?features=redis,qstash_workflow`.\n\n**Local (stdio)** — run [`@upstash/mcp-server`](https://www.npmjs.com/package/@upstash/mcp-server)\nyourself, authenticated with your email + API key. Read-only keys are supported (the server then\ndisables every state-changing tool).\n\n<details>\n<summary>Claude Code</summary>\n\n```bash\nclaude mcp add upstash -- npx -y @upstash/mcp-server@latest --email YOUR_EMAIL --api-key YOUR_API_KEY\n```\n\n</details>\n\n<details>\n<summary>Cursor</summary>\n\nAdd to `.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"upstash\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@upstash/mcp-server@latest\", \"--email\", \"YOUR_EMAIL\", \"--api-key\", \"YOUR_API_KEY\"]\n    }\n  }\n}\n```\n\n</details>\n\n<details>\n<summary>OpenCode</summary>\n\n```json\n{\n  \"$schema\": \"https://opencode.ai/config.json\",\n  \"mcp\": {\n    \"upstash\": {\n      \"type\": \"local\",\n      \"command\": [\"npx\", \"-y\", \"@upstash/mcp-server@latest\", \"--email\", \"YOUR_EMAIL\", \"--api-key\", \"YOUR_API_KEY\"],\n      \"enabled\": true\n    }\n  }\n}\n```\n\n</details>\n\n<details>\n<summary>Zed</summary>\n\nThis repo ships a Zed MCP extension in [`zed-extension/`](zed-extension/). Once it is accepted\ninto the [Zed extension registry](https://github.com/zed-industries/extensions), install\n**Upstash Redis MCP Server** from **Settings → AI → MCP Servers → Add Server → Install from\nExtensions**, and Zed will prompt for `upstash_email` and `upstash_api_key`. Until then, install\nit as a dev extension (`zed: install dev extension`, then pick the `zed-extension/` directory).\n\nTo skip the extension entirely, add the server to your Zed settings by hand\n(`zed: open settings file`):\n\n```json\n{\n  \"context_servers\": {\n    \"upstash\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@upstash/mcp-server@latest\", \"--email\", \"YOUR_EMAIL\", \"--api-key\", \"YOUR_API_KEY\"]\n    }\n  }\n}\n```\n\n</details>\n\n## Making changes\n\n### Updating an existing skill\n\n1. Edit the files in the individual skill folder (e.g. `skills/upstash-qstash-js/`).\n2. Run `npm run build` to regenerate `skills/upstash/`.\n3. Commit both the source changes and the regenerated output.\n\n### Adding a new skill\n\n1. Create a new folder under `skills/` (e.g. `skills/upstash-redis-js/`).\n2. Add a `SKILL.md` with the standard frontmatter (`name` and `description`) and any supporting files.\n3. Run `npm run build` — the new skill will be picked up automatically.\n4. Commit everything.\n\n### Changing the combined skill header\n\nThe frontmatter and introductory text for `skills/upstash/SKILL.md` comes from `scripts/header.md`. Edit that file, then run `npm run build`.\n\n### Updating the plugin version\n\nWhen making a release, bump the `version` field in every manifest that carries one: `plugin.json` (the portable [Agent Plugins](https://agent-plugins.org) manifest), `.claude-plugin/plugin.json`, `.cursor-plugin/plugin.json`, `.codex-plugin/plugin.json`, and `gemini-extension.json`.\n\n### The Zed extension\n\n`zed-extension/` is a Zed MCP server extension that runs [`@upstash/mcp-server`](#mcp-server).\nIt is a Rust crate compiled to WebAssembly, and it is only about the MCP server — Zed extensions\ncannot carry skills.\n\n```bash\ncd zed-extension\nrustup target add wasm32-wasip2   # once\ncargo build --release --target wasm32-wasip2\n```\n\nTest a local build with `zed: install dev extension` and point Zed at `zed-extension/`.\nOpen Zed on a folder while testing — context servers are project-scoped, so with no project\nopen (or one whose worktree fails to open) the server never starts and the panel sits on\n\"Connecting Server...\" until Zed's 60s timeout.\n\nTo publish or update it, open a PR against\n[`zed-industries/extensions`](https://github.com/zed-industries/extensions) that adds this repo\nas a submodule under `extensions/mcp-server-upstash` and an entry in `extensions.toml`:\n\n```toml\n[mcp-server-upstash]\nsubmodule = \"extensions/mcp-server-upstash\"\npath = \"zed-extension\"\nversion = \"0.1.0\"\n```\n\nThe `version` there has to match `version` in `zed-extension/extension.toml`, so bump both\ntogether. `zed-extension/LICENSE` is a symlink to the repo's MIT license — Zed requires a\nlicense at the extension path, not just at the repo root, and rejects the PR in CI without one.\n\n> Zed [plans to deprecate MCP server extensions](https://zed.dev/docs/extensions/mcp-extensions)\n> in favor of the official MCP registry. If that lands, publishing `@upstash/mcp-server` to\n> [registry.modelcontextprotocol.io](https://registry.modelcontextprotocol.io/) replaces this\n> extension.\n\n## Scripts\n\n| Script | Command | Description |\n|--------|---------|-------------|\n| `build` | `npm run build` | Regenerates `skills/upstash/` from all individual skills. |\n| `check` | `npm run check` | Runs the build, then fails if there is a git diff — used in CI to ensure the generated output is committed. |\n\n## CI\n\nThe GitHub Actions workflow (`.github/workflows/check.yml`) runs `npm run check` on every push and PR. If you forget to run `npm run build` before pushing, CI will fail.\n",
  "bytes": 13891,
  "sha": "dc48141d5fe50da26e7b5254f8f16eb1bf25880588d0447d299be3b58e350daa",
  "repo_slug": "upstash/skills",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_upstash_skills_70460725/readme"
}