← VercelCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
changed
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.
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 JSONFull 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