cloudflare/local-explorer
How to add products/resources to the local explorer or local API. Use when implementing new local APIs, or UI routes under packages/miniflare/src/workers/local-explorer or packages/local-explorer-ui.
npx skills add https://github.com/cloudflare/workers-sdk --skill local-explorer
Use this skill when adding a new product or resource type to the local API and/or local explorer.
Read these files before editing:
packages/miniflare/src/workers/local-explorer/explorer.worker.tspackages/miniflare/src/plugins/core/explorer.tspackages/miniflare/src/plugins/core/types.tspackages/miniflare/src/workers/local-explorer/resources/, preferably the product most similar to the new onepackages/miniflare/test/plugins/local-explorer/If there are UI changes, also read:
packages/local-explorer-ui/src/components/Sidebar.tsxpackages/local-explorer-ui/src/routes/packages/local-explorer-ui/src/__e2e__/packages/miniflare/scripts/openapi-filter-config.ts.OPENAPI_INPUT_PATH=<path-to-full-openapi-spec> pnpm --dir packages/miniflare generate:api
packages/miniflare/src/workers/local-explorer/openapi.local.json and generated types. If the generated schemas include fields local explorer will not support, add ignores in openapi-filter-config.ts and regenerate.proxyBindings include bindings to the new product and that getExplorerServices() exposes any extra bindings the explorer worker needs. Wire product bindings through constructExplorerBindingMap() and constructExplorerWorkerOpts() in packages/miniflare/src/plugins/core/explorer.ts.packages/miniflare/src/plugins/core/types.ts.packages/miniflare/src/workers/local-explorer/resources/<product>.ts. Make sure to account for cross-instance aggregation, if applicable.packages/miniflare/src/workers/local-explorer/explorer.worker.ts.generated/zod.gen.ts using validateRequestBody() and validateQuery().wrapResponse() and errorResponse() from common.ts unless an existing endpoint for that product uses a different response shape.10. Add Miniflare tests in packages/miniflare/test/plugins/local-explorer/<product>.spec.ts.
11. Regenerate the UI API client:
pnpm --dir packages/local-explorer-ui build
12. Add UI routes/components. Use Kumo components for new UI. See https://github.com/cloudflare/kumo/blob/main/AGENTS.md.
13. Add Playwright e2e tests under packages/local-explorer-ui/src/__e2e__/<product>/ for new visible product flows.
packages/miniflare/src/workers/local-explorer/openapi.local.json or packages/miniflare/src/workers/local-explorer/generated/ directly.extensions.paths in openapi-filter-config.ts only for local-only APIs or APIs that do not exist in the public Cloudflare API.aggregateListResults(), getPeerUrlsIfAggregating(), and fetchFromPeer() from aggregation.ts; do not hand-roll peer discovery. Add tests for both local-only behavior and aggregated behavior when the product can span multiple instances.c.env.MINIFLARE_LOOPBACK) to a Node.js endpoint. The local explorer API runs inside workerd, so it cannot access the host filesystem directly.BindingIdMap and pass it through CoreBindings.JSON_LOCAL_EXPLORER_BINDING_MAP./api/local/workers, add it to WorkerResourceBindings and populate it in constructExplorerWorkerOpts().packages/miniflare/src/workers/local-explorer/openapi.local.json into packages/local-explorer-ui/src/api/generated/./api/local/workers; update LocalExplorerWorkerBindings usage and Sidebar.tsx when the product should appear in navigation.packages/local-explorer-ui/src/routes/. TanStack Router regenerates src/routeTree.gen.ts during UI build/dev.worker search param through product links when following sidebar patterns.Take cloudflare/local-explorer from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.