Labsco
openai logo

micro

✓ Official4,081

by openai · part of openai/plugins

Expert guidance for micro — asynchronous HTTP microservices framework by Vercel. Use when building lightweight HTTP servers, API endpoints, or microservices using the micro library.

🧩 One of 7 skills in the openai/plugins package — works on its own, and pairs well with its siblings.

This is the playbook your agent receives when the skill activates — you don't need to read it to use the skill, but it's here to audit before installing.

micro — Asynchronous HTTP Microservices

You 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.

Core API

json(req) — Parse JSON Body

import { json } from 'micro'

export default async (req: IncomingMessage, res: ServerResponse) => {
  const body = await json(req)
  return { received: body }
}

text(req) — Parse Text Body

import { text } from 'micro'

export default async (req: IncomingMessage, res: ServerResponse) => {
  const body = await text(req)
  return `You said: ${body}`
}

buffer(req) — Parse Raw Body

import { buffer } from 'micro'

export default async (req: IncomingMessage, res: ServerResponse) => {
  const raw = await buffer(req)
  return `Received ${raw.length} bytes`
}

send(res, statusCode, data) — Send Response

import { send } from 'micro'

export default (req: IncomingMessage, res: ServerResponse) => {
  send(res, 200, { status: 'ok' })
}

createError(statusCode, message) — HTTP Errors

import { createError } from 'micro'

export default (req: IncomingMessage, res: ServerResponse) => {
  if (!req.headers.authorization) {
    throw createError(401, 'Unauthorized')
  }
  return { authorized: true }
}

Development with micro-dev

micro-dev provides hot-reloading for development:

npm install --save-dev micro-dev

# Run in dev mode
npx micro-dev index.js

Composition

Chain multiple handlers with function composition:

import { IncomingMessage, ServerResponse } from 'http'

const cors = (fn: Function) => async (req: IncomingMessage, res: ServerResponse) => {
  res.setHeader('Access-Control-Allow-Origin', '*')
  return fn(req, res)
}

const handler = async (req: IncomingMessage, res: ServerResponse) => {
  return { hello: 'world' }
}

export default cors(handler)

Key Points

  1. Return values are sent as responses — return strings, objects (auto-serialized to JSON), or Buffers
  2. Async by default — handlers can be async functions, errors are caught automatically
  3. Thrown errors become HTTP errors — use createError() for proper status codes
  4. No routing built-in — micro is a single-endpoint server; use a router like micro-router for multi-route services
  5. Body parsing is explicit — use json(), text(), or buffer() to parse request bodies
  6. Composable — wrap handlers with higher-order functions for middleware-like behavior

Official Resources