# vercel-labs-emulate

Spins up local HTTP servers that stand in for Vercel, GitHub and Google APIs. Useful when CI or a sandbox has no network but tests still need real state.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 916 installs · ★ 88
- Author: reason-machines
- License: not stated · policy=link-only · description only; the file stays with the author
- Source: https://github.com/reason-machines/trending-skills/tree/HEAD/skills/vercel-labs-emulate/SKILL.md
- Updated: 2026-10-09
- HTML: https://affpapa.org/en/nevibecode/skills/vercel-labs-emulate

## What it does

The skill covers `emulate`, a set of local servers that take the place of Vercel, GitHub and Google APIs. State lives in memory, and pagination, OAuth, webhooks and cascading deletes behave the way they do in production. Your tests get real responses instead of stubs.

Start it from the CLI: `npx emulate` brings up every service, `npx emulate --service vercel,github` picks two, `npx emulate --port 3000` sets the base port. Vercel listens on `http://localhost:4000`, GitHub on `http://localhost:4001`, Google on `http://localhost:4002`. You can also set the port through `EMULATE_PORT` or `PORT`. A programmatic API exists too: `createEmulator({ service: 'github', port: 4001 })` hands back an object with `url`, `reset()` and `close()`.

Seed data comes from `emulate.config.yaml` at the project root, or from an inline `seed` object. Run `npx emulate init` to generate the file. Leave `oauth_apps` out of the config and any `client_id` is accepted; configure the apps and validation becomes strict. For GitHub Apps, sign the JWT with RS256 and `iss` set to `app_id` — the emulator checks the signature.

## Requirements
- Works with: GitHub

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add reason-machines/trending-skills --skill vercel-labs-emulate -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/vercel-labs-emulate/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/vercel-labs-emulate/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add reason-machines/trending-skills --skill vercel-labs-emulate -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/vercel-labs-emulate/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add reason-machines/trending-skills --skill vercel-labs-emulate -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/vercel-labs-emulate/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install reason-machines/trending-skills vercel-labs-emulate
```

2. **Manually: put the files in place**
- File: `.github/skills/vercel-labs-emulate/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add reason-machines/trending-skills --skill vercel-labs-emulate -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/reason-machines/trending-skills --path skills/vercel-labs-emulate
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/vercel-labs-emulate/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add reason-machines/trending-skills --skill vercel-labs-emulate -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/reason-machines/trending-skills/tree/HEAD/skills/vercel-labs-emulate/SKILL.md

## When to use it
- run GitHub client tests without hitting api.github.com
- bring up a Vercel API inside a CI job with no outbound traffic
- exercise an OAuth redirect against a local server
- wipe state between tests with `reset()`
- seed repos and orgs before a test run

## Example prompts
- Start local GitHub and Vercel emulation for the test suite
- Generate `emulate.config.yaml` for the github service
- Wire `vitest.setup.ts` so the emulator boots before all tests

## Similar
- [improve-codebase-architecture](https://affpapa.org/en/nevibecode/skills/improve-codebase-architecture.md) — skill · 1163035 installs
- [design-taste-frontend](https://affpapa.org/en/nevibecode/skills/design-taste-frontend.md) — skill · 678700 installs
- [tdd](https://affpapa.org/en/nevibecode/skills/tdd.md) — skill · 1141062 installs
- [skill-creator](https://affpapa.org/en/nevibecode/skills/skill-creator.md) — skill · 414180 installs
- [agent-browser](https://affpapa.org/en/nevibecode/skills/vercel-labs-agent-browser.md) — skill · 1200000 installs
- [prototype](https://affpapa.org/en/nevibecode/skills/prototype.md) — skill · 986201 installs

From the same set: [reason-machines/trending-skills](https://affpapa.org/en/nevibecode/by/reason-machines/trending-skills.md) — 186 cards

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
