
Local Explorer
- 12 installs
- 4.4k repo stars
- Updated August 4, 2026
- cloudflare/workers-sdk
local-explorer skill documents How to add products/resources to the local explorer or local API.
About
local-explorer skill documents 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.. name: local-explorer description: 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.
- How to add products/resources to the local explorer or local API.
- Platform-specific setup patterns for local-explorer.
- Evidence-backed steps from upstream SKILL.md.
- When-to-use criteria for local-explorer versus alternatives.
Local Explorer by the numbers
- 12 all-time installs (skills.sh)
- Ranked #836 of 1,039 Cloud & Infrastructure skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
local-explorer capabilities & compatibility
- Capabilities
- local explorer quick start · local explorer when to use guidance · local explorer integration patterns
- Use cases
- devops
What local-explorer says it does
Use this skill when adding a new product or resource type to the local API and/or local explorer.
Read these files before editing:
npx skills add https://github.com/cloudflare/workers-sdk --skill local-explorerAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 12 |
|---|---|
| repo stars | ★ 4.4k |
| Last updated | August 4, 2026 |
| Repository | cloudflare/workers-sdk ↗ |
How do I use local-explorer correctly?
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.
Who is it for?
Teams implementing local-explorer workflows from the catalog.
Skip if: Skip when requirements clearly match a different specialized stack.
When should I use this skill?
User asks about local-explorer, how to add products/resources to the local explorer or local api. use when implementing ne.
What you get
Working local-explorer setup with validated configuration and next steps.
Files
Cloudflare Local Explorer Products
Use this skill when adding a new product or resource type to the local API and/or local explorer.
Start Here
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.ts- One existing resource implementation in
packages/miniflare/src/workers/local-explorer/resources/, preferably the product most similar to the new one - One matching test in
packages/miniflare/test/plugins/local-explorer/
If there are UI changes, also read:
packages/local-explorer-ui/src/components/Sidebar.tsx- Existing route files under
packages/local-explorer-ui/src/routes/ - Existing product e2e tests under
packages/local-explorer-ui/src/__e2e__/
Workflow
1. Add the API surface to packages/miniflare/scripts/openapi-filter-config.ts. 2. Generate Miniflare's filtered spec and backend types from a full Cloudflare OpenAPI spec:
OPENAPI_INPUT_PATH=<path-to-full-openapi-spec> pnpm --dir packages/miniflare generate:api3. Inspect 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. 4. The explorer worker should have access to all user resource bindings. Ensure 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. 5. Add or extend resource binding metadata in packages/miniflare/src/plugins/core/types.ts. 6. Implement handlers in packages/miniflare/src/workers/local-explorer/resources/<product>.ts. Make sure to account for cross-instance aggregation, if applicable. 7. Register Hono routes in packages/miniflare/src/workers/local-explorer/explorer.worker.ts. 8. Validate request bodies and query params with generated Zod schemas from generated/zod.gen.ts using validateRequestBody() and validateQuery(). 9. Return Cloudflare API envelope responses using 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 build12. 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.
OpenAPI Rules
- Do not edit generated files like
packages/miniflare/src/workers/local-explorer/openapi.local.jsonorpackages/miniflare/src/workers/local-explorer/generated/directly. - Prefer upstream Cloudflare API paths when a public API exists.
- Use
extensions.pathsinopenapi-filter-config.tsonly for local-only APIs or APIs that do not exist in the public Cloudflare API. - Add ignores for unsupported params, headers, request body properties, and response fields rather than pretending to support them.
Backend Patterns
- Local list endpoints such as listing KV namespaces should not implement pagination as this may require cross-instance aggregation. Pagination should be supported when targeting individual resources, such as listing KV keys within a specific namespace.
- For cross-worker aggregation, use
aggregateListResults(),getPeerUrlsIfAggregating(), andfetchFromPeer()fromaggregation.ts; do not hand-roll peer discovery. Add tests for both local-only behavior and aggregated behavior when the product can span multiple instances. - If an API needs direct filesystem access, call through the loopback service (
c.env.MINIFLARE_LOOPBACK) to a Node.js endpoint. The local explorer API runs inside workerd, so it cannot access the host filesystem directly. - If an endpoint needs metadata that is not available on the runtime binding itself, put that metadata in
BindingIdMapand pass it throughCoreBindings.JSON_LOCAL_EXPLORER_BINDING_MAP. - If a product should appear in
/api/local/workers, add it toWorkerResourceBindingsand populate it inconstructExplorerWorkerOpts().
UI Patterns
- The UI API client is generated from
packages/miniflare/src/workers/local-explorer/openapi.local.jsonintopackages/local-explorer-ui/src/api/generated/. - Sidebar resources come from
/api/local/workers; updateLocalExplorerWorkerBindingsusage andSidebar.tsxwhen the product should appear in navigation. - Add route files under
packages/local-explorer-ui/src/routes/. TanStack Router regeneratessrc/routeTree.gen.tsduring UI build/dev. - Preserve worker selection by carrying the
workersearch param through product links when following sidebar patterns. - Use Kumo for new UI components wherever possible. Do not introduce a parallel component system.
- Do not use tailwindCSS color tokens, use Kumo color tokens instead.
flowchart TB
Client["client"] --> Incoming["incoming request"]
Incoming --> EntryA["entry worker"]
EntryA -->|/cdn-cgi/explorer| ExplorerA["explorer worker<br/>(Hono)"]
subgraph Runtime["running Miniflare instances"]
direction LR
subgraph A["miniflare A"]
direction TB
EntryA
ExplorerA
Frontend["frontend<br/>(TanStack Router + React)"]
UserWorker["user worker"]
KV["KV, R2, D1"]
Wrapper["wrapped<br/>DO/Workflow class"]
EntryA --> UserWorker
ExplorerA -->|disk service to serve assets| Frontend
ExplorerA -->|binding| KV
ExplorerA -->|binding| Wrapper
UserWorker -->|binding| KV
UserWorker -->|binding| Wrapper
end
subgraph B["miniflare B"]
direction TB
EntryB["entry worker"]
ExplorerB["explorer worker"]
Etc["etc."]
EntryB --> ExplorerB
ExplorerB --> Etc
end
end
Frontend -->|fetch /cdn-cgi/explorer/api| Incoming
ExplorerA -->|fetch /cdn-cgi/explorer/api/resource with NO_AGGREGATE_HEADER| EntryB
subgraph FS["filesystem"]
Registry["dev registry"]
DOState[".wrangler/state/durable-objects<br/>(list DOs, delete workflows, etc.)"]
end
ExplorerA -->|node loopback binding| FS
classDef miniflareA stroke:#f08c00,fill:#fff7ed,color:#1e1e1e;
classDef userResource stroke:#1971c2,fill:#eff6ff,color:#1e1e1e;
classDef entry stroke:#e03131,fill:#fff5f5,color:#1e1e1e;
classDef neutral stroke:#1e1e1e,fill:#ffffff,color:#1e1e1e;
class EntryA entry;
class ExplorerA,Frontend,Wrapper miniflareA;
class UserWorker,KV userResource;
class Client,Incoming,Runtime,FS,Registry,DOState,EntryB,ExplorerB,Etc neutral;Related skills
FAQ
What does local-explorer do?
local-explorer skill documents How to add products/resources to the local explorer or local API.
When should I use local-explorer?
User asks about local-explorer, how to add products/resources to the local explorer or local api. use when implementing ne.
Is this skill safe to install?
Review the Security Audits panel on this page before installing in production.