TRIGGER when the user asks to delegate to or integrate an external/third-party REST API, import an OpenAPI/Swagger document, or generate a microservice from an OpenAPI spec (by URL or pasted…
Install the "import-openapi-microservice" agent skill from https://github.com/microbus-io/fabric/tree/main/.claude/skills/microbus/import-openapi-microservice into .claude/skills/import-openapi-microservice/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "import-openapi-microservice", then confirm the skill loads.
Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
Type this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
skills CLI
$ npx skills add microbus-io/fabric --skill import-openapi-microservice -a codex
Project install goes to .agents/skills/; add -g for ~/.codex/skills/.
Install the "import-openapi-microservice" agent skill from https://github.com/microbus-io/fabric/tree/main/.claude/skills/microbus/import-openapi-microservice into .agents/skills/import-openapi-microservice/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "import-openapi-microservice", then confirm the skill loads.
Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
skills CLI
$ npx skills add microbus-io/fabric --skill import-openapi-microservice -a cursor
Project install goes to .agents/skills/; add -g for ~/.cursor/skills/.
Install the "import-openapi-microservice" agent skill from https://github.com/microbus-io/fabric/tree/main/.claude/skills/microbus/import-openapi-microservice into .cursor/skills/import-openapi-microservice/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "import-openapi-microservice", then confirm the skill loads.
Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
skills CLI
$ npx skills add microbus-io/fabric --skill import-openapi-microservice -a gemini-cli
Project install goes to .agents/skills/; add -g for ~/.gemini/skills/.
Install the "import-openapi-microservice" agent skill from https://github.com/microbus-io/fabric/tree/main/.claude/skills/microbus/import-openapi-microservice into .gemini/skills/import-openapi-microservice/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "import-openapi-microservice", then confirm the skill loads.
Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
Installs for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
skills CLI
$ npx skills add microbus-io/fabric --skill import-openapi-microservice -a github-copilot
Project install goes to .agents/skills/; add -g for ~/.copilot/skills/.
Install the "import-openapi-microservice" agent skill from https://github.com/microbus-io/fabric/tree/main/.claude/skills/microbus/import-openapi-microservice into .github/skills/import-openapi-microservice/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "import-openapi-microservice", then confirm the skill loads.
GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
skills CLI
$ npx skills add microbus-io/fabric --skill import-openapi-microservice -a opencode
OpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
Install the "import-openapi-microservice" agent skill from https://github.com/microbus-io/fabric/tree/main/.claude/skills/microbus/import-openapi-microservice into .opencode/skills/import-openapi-microservice/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "import-openapi-microservice", then confirm the skill loads.
OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
Facts
Skill name
import-openapi-microservice
GitHub stars
172
Token cost
~4k tokens
SKILL.md length
1,505 words
Files
1
Skills in repo
32
Repo updated
First seen
Licence
Apache-2.0
At a glance
TRIGGER when the user asks to delegate to or integrate an external/third-party REST API, import an OpenAPI/Swagger document, or generate a microservice from an OpenAPI spec (by URL or pasted…
Works in 12 steps: Locate or Scaffold the Microservice → Acquire the OpenAPI Document → Generate openapispecs.json → …
The user asks to delegate to
Calls go and curl; reaches petstore3.swagger.io
Integrate an external/third-party REST API
What it does
Import Openapi Microservice is an agent skill from microbus-io/fabric. TRIGGER when the user asks to delegate to or integrate an external/third-party REST API, import an OpenAPI/Swagger document, or generate a microservice from an OpenAPI spec (by URL or pasted JSON/YAML). Produces a one-for-one delegating microservice and stores openapispecs.json in its directory so more endpoints can be imported later.
Its SKILL.md is about 4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Backend & APIs, covering OpenAPI specifications and Microservices. It works with OpenAPI. The repository describes itself as: Microbus is the only fabric where every agentic workflow runs on a true microservice substrate - giving your workflows security, scale, observability, and prompt-driven authoring. The licence is Apache-2.0.
When your agent uses it
The user asks to delegate to
Integrate an external/third-party REST API
Import an OpenAPI/Swagger document
Generate a microservice from an OpenAPI spec (by URL
Example prompts
“/import-openapi-microservice”
Workflow steps
12 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit fb98098. It shows what the files ask for, not the result of running them.
Tool permissions
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Runs code
Shell commands in SKILL.md call:
go
curl
From the folder's file list and the shell code blocks in SKILL.md.
Network
Hosts in commands or code, which the agent is likely to contact:
petstore3.swagger.io
From URLs in SKILL.md, links to its own repository left out.
Credentials
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Context cost
Import Openapi Microservice loads about 4k tokens when it runs. Until then it costs about 91 tokens; SKILL.md has 1,505 words of instructions outside code blocks.
Always· name and description, kept in context so the agent knows when to use it
~91
When it runs· the whole SKILL.md, loaded when a task matches
~4k
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
Safety
Auto-check passed
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
Download SKILL.mdSave it as .claude/skills/import-openapi-microservice/SKILL.md (or your agent's skills folder).
name
import-openapi-microservice
description
TRIGGER when the user asks to delegate to or integrate an external/third-party REST API, import an OpenAPI/Swagger document, or generate a microservice from an OpenAPI spec (by URL or pasted JSON/YAML). Produces a one-for-one delegating microservice and stores openapispecs.json in its directory so more endpoints can be imported later.
CRITICAL: This skill does NOT define the shape of generated code. It delegates every feature to the
add-microservice, add-function, add-web, and add-config skills, the single source of truth for code
shape. This skill only scaffolds the microservice, produces the specs file, picks endpoints, and fills the
one-line delegation body.
CRITICAL: The microservice is a faithful one-for-one delegator. Do NOT reshape the remote API: never
split a request body into separate arguments, rename routes, or collapse status codes. Body-bearing
operations use the magic HTTP arguments so the microservice is byte-transparent to its callers.
CRITICAL: openapispecs.json lives in the microservice's directory and is tracked in source control
(never git-ignored). It is the durable record of the remote API. Re-running this skill imports more
endpoints from the present specs without re-fetching, and skips endpoints already scaffolded.
Workflow
Copy this checklist and track your progress:
- [ ] Step 1: Locate or scaffold the microservice
- [ ] Step 2: Acquire the OpenAPI document
- [ ] Step 3: Generate openapispecs.json
- [ ] Step 4: Add the base-URL and credential configs
- [ ] Step 5: Add the shared request helpers (once)
- [ ] Step 6: Select which endpoints to import
- [ ] Step 7: Generate the complex types
- [ ] Step 8: Declare the endpoints in definition.go
- [ ] Step 9: Generate the boilerplate
- [ ] Step 10: Implement the handler bodies
- [ ] Step 11: Wire the HTTP egress proxy into the app
- [ ] Step 12: Housekeeping
The placeholders myservice, MyService, myserviceapi stand for the microservice being generated.
Step 1: Locate or Scaffold the Microservice
If a delegator for this API already exists, its openapispecs.json and local CLAUDE.md record what is
already imported. If the user only wants more endpoints, skip to Step 6 (the specs are already present;
do not re-fetch unless the user wants a newer version of the document).
Otherwise follow the add-microservice skill. Name the microservice after the remote API itself
(petstore, not petstorewrap/petstoreproxy/petstoreclient): in the mesh this microservice is that
API's representation, and a suffix leaks an implementation detail into a hostname every caller sees.
"Delegator" describes what it does, never what it is named. Give it a one-line description
(MyService delegates to the Petstore API.); Step 3 appends the API's own overview.
Step 2: Acquire the OpenAPI Document
Place the document in the microservice directory as myservice/openapi.src:
By URL: curl -fsSL '<url>' -o myservice/openapi.src. Remember the URL for Step 3.
Pasted: write the pasted content verbatim to myservice/openapi.src.
Do not hand-edit it. JSON and YAML are both accepted.
Step 3: Generate openapispecs.json
shell
go run github.com/microbus-io/fabric/cmd/genopenapispecs -base-url 'ORIGIN' < myservice/openapi.src > myservice/openapispecs.json
rm myservice/openapi.src
The tool is a pure offline filter (stdin to stdout; never touches the network).
-base-url is optional and defaults to the document's first servers URL. Real documents often declare a
relative server (e.g. /api/v3); the tool then warns on stderr. Set -base-url to that URL's origin
(scheme://host) joined with the relative server path, e.g. https://petstore3.swagger.io/api/v3. If the
document was pasted with no absolute server and you have no URL, ask the user for the base URL.
The specs file has info, remote{baseURL,security}, types{} (raw JSON Schema keyed by name), and
endpoints[] (each with name, feature, method, route, summary, description, params, requestBody, response).
feature is function (JSON or empty body) or web (non-JSON body); trust it unless an endpoint is obviously misclassified.
If the specs info.description is non-empty, append it to the Service godoc and svc.SetDescription
after the one-line summary from Step 1, separated by a blank line so it renders as a second godoc
paragraph.
Step 4: Add the Base-URL and Credential Configs
Follow the add-config skill:
RemoteBaseURL: default remote.baseURL from the specs, validation url.
Credential, secret: true, no default. Only when remote.security is present. Name it for the scheme: APIKey (apiKey), BearerToken (http-bearer/oauth2), or BasicAuth (http-basic, value is the user:password pair).
Step 5: Add the Shared Request Helpers (Once)
Add these helpers to service.go exactly once, not per endpoint. They are the only delegation logic;
every handler becomes a single call into them. Add imports bytes, context, encoding/json, io,
net/http, strings, errors, github.com/microbus-io/fabric/httpx, and the httpegressapi package.
go
// remoteURL joins the configured base with an operation path, tolerating a configured base that
// has (or lacks) a trailing slash. path must start with "/".
func (svc *Service) remoteURL(path string) string {
return strings.TrimRight(svc.RemoteBaseURL(), "/") + path
}
// authenticate injects the remote credential per the specs remote.security. Write its body once,
// keeping only the line for this API's scheme:
// apiKey header -> req.Header.Set("<name>", svc.APIKey())
// apiKey query -> q := req.URL.Query(); q.Set("<name>", svc.APIKey()); req.URL.RawQuery = q.Encode()
// http-bearer/oauth2 -> req.Header.Set("Authorization", "Bearer "+svc.BearerToken())
// http-basic -> u, p, _ := strings.Cut(svc.BasicAuth(), ":"); req.SetBasicAuth(u, p)
func (svc *Service) authenticate(req *http.Request) {
req.Header.Set("Authorization", "Bearer "+svc.BearerToken())
}
// makeFunctionRequest forwards a typed call to the remote API: it sends method+url with an optional
// JSON-encoded in body, decodes a JSON response into out when out is non-nil, and returns the remote
// status code unchanged.
func (svc *Service) makeFunctionRequest(ctx context.Context, method, rawURL string, in, out any) (status int, err error) {
var body io.Reader
if in != nil {
b, err := json.Marshal(in)
if err != nil {
return 0, errors.Trace(err)
}
body = bytes.NewReader(b)
}
req, err := http.NewRequest(method, rawURL, body)
if err != nil {
return 0, errors.Trace(err)
}
if in != nil {
req.Header.Set("Content-Type", "application/json")
}
svc.authenticate(req)
resp, err := httpegressapi.NewClient(svc).Do(ctx, req)
if err != nil {
return 0, errors.Trace(err)
}
defer resp.Body.Close()
if out != nil {
err = json.NewDecoder(resp.Body).Decode(out)
if err != nil {
return resp.StatusCode, errors.Trace(err)
}
}
return resp.StatusCode, nil
}
// makeWebRequest forwards a raw web call (caller's query string and body included) and relays the
// remote response to w unchanged. httpx.Copy transfers the body buffer without copying its bytes.
func (svc *Service) makeWebRequest(w http.ResponseWriter, r *http.Request, method, rawURL string) (err error) {
req, err := http.NewRequest(method, rawURL, r.Body)
if err != nil {
return errors.Trace(err)
}
req.URL.RawQuery = r.URL.RawQuery
req.Header = r.Header.Clone()
svc.authenticate(req)
resp, err := httpegressapi.NewClient(svc).Do(r.Context(), req)
if err != nil {
return errors.Trace(err)
}
defer resp.Body.Close()
return errors.Trace(httpx.Copy(w, resp))
}
The status code is passed through unchanged. Do not add retries, caching, or reshaping; cross-cutting
concerns belong in the caller.
Step 6: Select Which Endpoints to Import
Read the candidate endpoints from myservice/openapispecs.json (endpoints[]; each has name, feature,
method, route, summary). This is the entry point when Step 1 sent you straight here for an existing
delegator. Large APIs have hundreds of endpoints; import only the curated subset the project needs.
Agent-relevant (default mid-task): select the endpoints the task requires, list them to the user with
one-line justifications, and proceed. More can be added later from the same specs.
Interactive (default for a bare "import this API"): present the endpoints grouped by route with
method, name, summary and ask the user to choose. Offer "all" for small APIs.
Skip endpoints already scaffolded (their // MARKER comment, keyed by the endpoint name, is in
myserviceapi/definition.go); re-import is additive. Record the imported names under a ## Imported Endpoints heading in the local CLAUDE.md.
Step 7: Generate the Complex Types
For every type a selected endpoint references via $ref: 'Name' in its params, requestBody, or
response, define a Go struct from types['Name'] in the specs (a $ref value is the bare type name and
keys the types map directly; nested $refs inside a type schema work the same way). Follow the
add-function skill's "Define Complex Types" conventions (one file per type under myserviceapi/, json
camelCase omitzero, jsonschema_description:"..." from the schema's description) for the Go mapping.
For oneOf/anyOf/allOf or free-form objects with no properties, fall back to json.RawMessage and
note the fallback in the type's godoc.
Show full SKILL.md (673 more words)Show less
Step 8: Declare the Endpoints in definition.go
Declare every selected endpoint in myserviceapi/definition.go before generating, so a single genservice
pass in Step 9 scaffolds all their handlers. Do NOT hand-write any service.go handler here: genservice
projects each handler's signature and godoc from the declaration, and you fill only the body in Step 10.
Every endpoint's method and route come from the specs verbatim (already in Microbus {arg} syntax). The
endpoint godoc is the specs summary/description only.
A {arg} must span a whole route segment. Microbus rejects a route where an argument shares its segment
with literal text (e.g. /{provider}.json), failing at subscription time - not at cmd/genservice or
go vet. When a remote route has this shape, adjust only the Microbus-facing route so each argument is a full
segment, splitting the suffix off: /specs/{provider}/{api}.json -> /specs/{provider}/{api}/api.json. The
Step 10 handler still builds the original remote URL via svc.remoteURL(...), so delegation stays
byte-transparent; only the route callers use to reach this microservice changes. This is the sole sanctioned
exception to "never rename routes".
Security (decide per endpoint, do not skip). This microservice injects a stored secret credential
server-side, so it is exactly the confused-deputy case in microbus.md (Ports, Authentication and
Authorization): default to closed. Per endpoint, gate it with RequiredClaims and/or an internal port
(prefix the route with :444); leave it open on the default :443 without RequiredClaims only when the
endpoint is genuinely public. Both RequiredClaims and the port are fields of the declaration below, so
decide them now.
Function endpoints (feature: function): follow the add-function skill. Append the define.Function
var and its In/Out structs. The In struct holds one field per params entry (path, query, header alike;
spec name, first letter uppercased for the Go field, camelCase json tag) typed from the param's goType
when present, else its schema mapped per add-function conventions; a path-arg field's json tag matches
its {arg} segment. The Out struct returns httpResponseBody of the response type plus httpStatusCode.
Put per-argument descriptions on the In/Out fields as jsonschema_description:"..." tags (from the spec
param/property description). The magic Go field names HTTPRequestBody, HTTPResponseBody,
HTTPStatusCode are matched by reflection; renaming them silently disables the magic, and each takes a
json:"-" tag (types are bare because definition.go is in the myserviceapi package):
go
/*
RemoteFunction does X.
*/
var RemoteFunction = define.Function{ // MARKER: RemoteFunction
Host: Hostname, Method: "GET", Route: "/things/{id}",
In: RemoteFunctionIn{}, Out: RemoteFunctionOut{},
}
// RemoteFunctionIn are the input arguments of RemoteFunction.
type RemoteFunctionIn struct { // MARKER: RemoteFunction
ID int64 `json:"id,omitzero" jsonschema_description:"ID is the thing identifier"`
Status string `json:"status,omitzero" jsonschema_description:"Status filters the result"`
}
// RemoteFunctionOut are the output arguments of RemoteFunction.
type RemoteFunctionOut struct { // MARKER: RemoteFunction
HTTPResponseBody []Thing `json:"-"`
HTTPStatusCode int `json:"-"`
}
For a body-bearing operation (requestBody present, e.g. a POST create), the In struct instead carries an
HTTPRequestBody field of the body type (HTTPRequestBody *Thing with a json:"-" tag), alongside any path
or query fields; the Step 10 handler passes it as the in argument to makeFunctionRequest.
Web endpoints (feature: web): follow the add-web skill. Append the define.Web var (a raw web
handler has no In/Out structs):
go
/*
RemoteWeb does X.
*/
var RemoteWeb = define.Web{ // MARKER: RemoteWeb
Host: Hostname, Method: "POST", Route: "/things/{id}/upload",
}
Step 9: Generate the Boilerplate
From the microservice's directory, run the generator. It regenerates myserviceapi/client.go,
intermediate.go, mock.go, mock_test.go, and manifest.yaml, and scaffolds a placeholder handler in
service.go for every endpoint declared in Step 8 (its signature and godoc projected from definition.go,
holding a // TODO body).
shell
go run github.com/microbus-io/fabric/cmd/genservice .
Then verify the microservice compiles with go vet ./... from the project root.
Step 10: Implement the Handler Bodies
For each scaffolded handler in service.go, replace only its // TODO body with a single delegation call.
Leave the generated signature and godoc as they are: they are the contract from definition.go, so if a
signature is wrong, fix definition.go and regenerate rather than editing service.go.
Function handlers: fill with a single makeFunctionRequest call. Build the URL with svc.remoteURL(...),
the route with path arguments substituted, and any query parameters. Pass httpRequestBody as the in
argument for a body-bearing operation, or nil when there is none, and nil for out when there is no
typed response:
go
func (svc *Service) RemoteFunction(ctx context.Context, id int64, status string) (httpResponseBody []myserviceapi.Thing, httpStatusCode int, err error) { // MARKER: RemoteFunction
u, err := url.Parse(svc.remoteURL("/things/" + url.PathEscape(fmt.Sprint(id))))
if err != nil {
return nil, 0, errors.Trace(err)
}
q := u.Query()
q.Set("status", status) // one line per query parameter
u.RawQuery = q.Encode()
httpStatusCode, err = svc.makeFunctionRequest(ctx, "GET", u.String(), nil, &httpResponseBody)
return httpResponseBody, httpStatusCode, errors.Trace(err)
}
Web handlers: fill with a single makeWebRequest call:
Ensure the HTTP egress proxy is in main/main.go (add the import and app.Add entry if missing). This
skill generates no endpoint tests, so there is no test app to wire: a delegator's behavioral tests would
only exercise the egress mock and assert a tautology. The add-microservice scaffold's service_test.go
stays as generated (import guards only).
Import Openapi Microservice next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
Import Openapi Microservice compared with similar skills
Skill
Stars
Used in
Tokens
Auto-check
Licence
Repo updated
Import Openapi Microservice this skillmicrobus-io/fabric
Discover and inventory shadow API endpoints that operate outside documented OpenAPI/Swagger specs, using traffic analysis against API gateways (Kong, AWS API Gateway, Envoy), cloud configuration…
Turns an API description, such as an OpenAPI file or a Postman collection, into a connector plugin for ToolJet's marketplace and checks it with the repo's validator.
Find, evaluate, and download common purchasable CAD parts from step.parts, including named off-the-shelf actuators, servos, motors, electronics boards, connectors, screws, bolts, nuts, washers…
TRIGGER when the user asks to delegate to or integrate an external/third-party REST API, import an OpenAPI/Swagger document, or generate a microservice from an OpenAPI spec (by URL or pasted…. Import Openapi Microservice is an agent skill from microbus-io/fabric. TRIGGER when the user asks to delegate to or integrate an external/third-party REST API, import an OpenAPI/Swagger document, or generate a microservice from an OpenAPI spec (by URL or pasted JSON/YAML).
When should I use Import Openapi Microservice?
Import Openapi Microservice fits situations like: the user asks to delegate to; integrate an external/third-party REST API; import an OpenAPI/Swagger document; generate a microservice from an OpenAPI spec (by URL.
How do I install Import Openapi Microservice in Claude Code?
Run `npx skills add microbus-io/fabric --skill import-openapi-microservice -a claude-code`. Or copy the skill folder (.claude/skills/microbus/import-openapi-microservice in microbus-io/fabric) into .claude/skills/import-openapi-microservice in your project. Claude Code loads it when a task matches its description.
How do I install Import Openapi Microservice in Codex?
Run `npx skills add microbus-io/fabric --skill import-openapi-microservice -a codex`. Or copy the skill folder (.claude/skills/microbus/import-openapi-microservice in microbus-io/fabric) into .agents/skills/import-openapi-microservice in your project. Codex loads it when a task matches its description.
Can I use Import Openapi Microservice in Cursor, Gemini CLI or GitHub Copilot?
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add microbus-io/fabric --skill import-openapi-microservice -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/import-openapi-microservice, .gemini/skills/import-openapi-microservice, .github/skills/import-openapi-microservice and .opencode/skills/import-openapi-microservice in your project.
What does Import Openapi Microservice need to run?
Going by SKILL.md and its folder, Import Openapi Microservice needs the command-line tools its instructions call (go and curl).
Does Import Openapi Microservice access the network?
SKILL.md names 1 domain. In commands or code: petstore3.swagger.io; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Is Import Openapi Microservice safe to install?
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
What licence does Import Openapi Microservice use?
Import Openapi Microservice is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
How many tokens does Import Openapi Microservice use?
About 4k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
What are the alternatives to Import Openapi Microservice?
Skills that share tags, products or a category with Import Openapi Microservice: Detecting Shadow API Endpoints (mukul975/Anthropic-Cybersecurity-Skills, 34k stars), API Contract Testing (secondsky/claude-skills, 227 stars), API Security Review (OWASP/secure-agent-playbook, 187 stars) and ToolJet Marketplace Plugin Builder (ToolJet/ToolJet, 41k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Who maintains Import Openapi Microservice?
microbus-io (a GitHub organization) maintains it in microbus-io/fabric, which has 172 GitHub stars. The repository holds 32 skills in this directory. The repository was last updated on September 28, 2026.
Source: microbus-io/fabric on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.