← VercelCONTENT HISTORY

Update to Vercel

Snapshot Sep 30, 2026 · 23:18 UTC · version 0.21.4

Collection source: not recorded for this historical snapshot. These snapshots do not have a confirmed matching collection source. Differences in file lists alone do not establish changes to the package.

WHAT CHANGED · RULE-BASED ANALYSIS

Supporting file metadata differs

Newly listed paths: agents/openai.yaml. This compares saved file lists, not package contents; a different collection source can change the list.

Observed in package metadata. These changes alone do not establish a new customer-facing feature.

Supporting files

Before

[]

After

[{"relative_path":"agents/openai.yaml","size_in_bytes":140}]

Compare saved observations

Download comparison JSON
Full technical diff · 1 changed fields

changed /included_files

BEFORE
[]
AFTER
[
  {
    "relative_path": "agents/openai.yaml",
    "size_in_bytes": 140
  }
]
Full snapshot data
{
  "name": "micro",
  "description": "Expert guidance for micro — asynchronous HTTP microservices framework by Vercel. Use when building lightweight HTTP servers, API endpoints, or microservices using the micro library.",
  "included_files": [
    {
      "relative_path": "agents/openai.yaml",
      "size_in_bytes": 140
    }
  ],
  "skill_md_contents": "---\nname: micro\ndescription: Expert guidance for micro — asynchronous HTTP microservices framework by Vercel. Use when building lightweight HTTP servers, API endpoints, or microservices using the micro library.\nmetadata:\n  priority: 4\n  docs:\n    - \"https://github.com/vercel/micro\"\n  pathPatterns: []\n  importPatterns:\n    - 'micro'\n    - 'micro-dev'\n  bashPatterns:\n    - '\\bnpm\\s+(install|i|add)\\s+[^\\n]*\\bmicro\\b'\n    - '\\bpnpm\\s+(install|i|add)\\s+[^\\n]*\\bmicro\\b'\n    - '\\bbun\\s+(install|i|add)\\s+[^\\n]*\\bmicro\\b'\n    - '\\byarn\\s+add\\s+[^\\n]*\\bmicro\\b'\n    - '\\bnpx\\s+micro\\b'\n    - '\\bnpx\\s+micro-dev\\b'\n---\n\n# micro — Asynchronous HTTP Microservices\n\nYou are an expert in micro, Vercel's lightweight framework for building asynchronous HTTP microservices in Node.js. micro makes it easy to write single-purpose HTTP endpoints with minimal boilerplate.\n\n## Installation\n\n```bash\nnpm install micro\n```\n\n## Basic Usage\n\nCreate a module that exports a request handler:\n\n```ts\n// index.ts\nimport { serve } from 'micro'\n\nconst handler = (req: Request) => {\n  return new Response('Hello, World!')\n}\n\nserve(handler)\n```\n\nOr use the classic API:\n\n```ts\nimport { IncomingMessage, ServerResponse } from 'http'\n\nexport default (req: IncomingMessage, res: ServerResponse) => {\n  res.end('Hello, World!')\n}\n```\n\nRun with:\n\n```bash\nnpx micro\n```\n\n## Core API\n\n### `json(req)` — Parse JSON Body\n\n```ts\nimport { json } from 'micro'\n\nexport default async (req: IncomingMessage, res: ServerResponse) => {\n  const body = await json(req)\n  return { received: body }\n}\n```\n\n### `text(req)` — Parse Text Body\n\n```ts\nimport { text } from 'micro'\n\nexport default async (req: IncomingMessage, res: ServerResponse) => {\n  const body = await text(req)\n  return `You said: ${body}`\n}\n```\n\n### `buffer(req)` — Parse Raw Body\n\n```ts\nimport { buffer } from 'micro'\n\nexport default async (req: IncomingMessage, res: ServerResponse) => {\n  const raw = await buffer(req)\n  return `Received ${raw.length} bytes`\n}\n```\n\n### `send(res, statusCode, data)` — Send Response\n\n```ts\nimport { send } from 'micro'\n\nexport default (req: IncomingMessage, res: ServerResponse) => {\n  send(res, 200, { status: 'ok' })\n}\n```\n\n### `createError(statusCode, message)` — HTTP Errors\n\n```ts\nimport { createError } from 'micro'\n\nexport default (req: IncomingMessage, res: ServerResponse) => {\n  if (!req.headers.authorization) {\n    throw createError(401, 'Unauthorized')\n  }\n  return { authorized: true }\n}\n```\n\n## Development with micro-dev\n\n`micro-dev` provides hot-reloading for development:\n\n```bash\nnpm install --save-dev micro-dev\n\n# Run in dev mode\nnpx micro-dev index.js\n```\n\n## Composition\n\nChain multiple handlers with function composition:\n\n```ts\nimport { IncomingMessage, ServerResponse } from 'http'\n\nconst cors = (fn: Function) => async (req: IncomingMessage, res: ServerResponse) => {\n  res.setHeader('Access-Control-Allow-Origin', '*')\n  return fn(req, res)\n}\n\nconst handler = async (req: IncomingMessage, res: ServerResponse) => {\n  return { hello: 'world' }\n}\n\nexport default cors(handler)\n```\n\n## package.json Setup\n\n```json\n{\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"start\": \"micro\",\n    \"dev\": \"micro-dev\"\n  },\n  \"dependencies\": {\n    \"micro\": \"^10.0.0\"\n  },\n  \"devDependencies\": {\n    \"micro-dev\": \"^3.0.0\"\n  }\n}\n```\n\n## Key Points\n\n1. **Return values are sent as responses** — return strings, objects (auto-serialized to JSON), or Buffers\n2. **Async by default** — handlers can be async functions, errors are caught automatically\n3. **Thrown errors become HTTP errors** — use `createError()` for proper status codes\n4. **No routing built-in** — micro is a single-endpoint server; use a router like `micro-router` for multi-route services\n5. **Body parsing is explicit** — use `json()`, `text()`, or `buffer()` to parse request bodies\n6. **Composable** — wrap handlers with higher-order functions for middleware-like behavior\n\n## Official Resources\n\n- [micro GitHub](https://github.com/vercel/micro)\n"
}

SHA-256: 6547d60bd912c2a1a488cb158bd9a55d08977f3b7837377f401fd3c50946f4e3