contribute-spec-fix
Fix a broken OpenAPI spec in jentic-public-apis with an OpenAPI Overlay, validate it (spectral lint + idempotency check), and…
Import an API that is not yet in jentic-public-apis end to end — generate or find an OpenAPI spec from the vendor's docs, optionally import it into the local Jentic registry so the agent is unblocked immediately, publish it to the user's reusable public import-openapi-specs
$ npx -y skills add jentic/jentic-one --skill import-new-api --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/import-new-apiContext preview
The summary Claude sees to decide when to auto-load this skill.
Import an API that is not yet in jentic-public-apis end to end — generate or find an OpenAPI spec from the vendor's docs, optionally import it into the local Jentic registry so the agent is unblocked immediately, publish it to the user's reusable public import-openapi-specs
name: import-new-api description: Import an API that is not yet in jentic-public-apis end to end — generate or find an OpenAPI spec from the vendor's docs, optionally import it into the local Jentic registry so the agent is unblocked immediately, publish it to the user's reusable public import-openapi-specs repo, and open the import issue that drives it into the community catalog. Use when the user says "import the <vendor> API", "add <vendor> — it's not in the catalog yet", "generate a spec for <company> and open an import issue", or gives a docs URL to import. For fixing a spec already in the catalog, use contribute-spec-fix instead. metadata: kind: freeform argument-hint: "[vendor name or API docs URL]"
Import an API that is **not yet in [jentic-public-apis](https://github.com/jentic/jentic-public-apis)**: generate an OpenAPI spec from the vendor's docs, optionally import it into the **local Jentic registry first** (so the user's agent can execute it immediately), then publish it to the user's single reusable public repo `import-openapi-specs` and open the import issue that drives it into the community catalog.
This is the greenfield counterpart to `contribute-spec-fix` (which fixes a spec already in the catalog). Use `contribute-spec-fix` when the vendor already exists; use this skill when it does not.
Target: `$ARGUMENTS` (a vendor name like `firecrawl`, or a URL to the vendor's API docs). If only a company name is given, find its public API docs by searching for `<company> API documentation`.
the spec repo is created there and its raw links must resolve publicly.
via `gh`.
identity (`jentic doctor` confirms a resolvable identity with a usable token; `jentic api GET /me` shows what you can do).
Check the live repo, not a local checkout:
gh api "repos/jentic/jentic-public-apis/contents/apis/openapi" --paginate \ --jq '.[].name' | grep -i '<vendor-guess>'
Try the real domain (`firecrawl.dev`), bare name (`firecrawl`), and obvious variants (with and without subdomains: `api.foo.com` vs `foo.com`). **If a matching vendor directory exists, STOP** and tell the user — re-importing produces a duplicate, and the import workflow hard-fails on an existing version directory anyway. Point them at `contribute-spec-fix` if they meant to fix the existing spec, or offer a genuinely-absent alternative.
Two paths, in strict priority order:
1. **Path 1 — look for an official spec first.** Probe `https://{domain}/openapi.json`, `/swagger.json`, `api.{domain}/openapi.json`, and the vendor's GitHub org (`raw.githubusercontent.com/{org}/{repo}/main/.../openapi.json`). Vendors often ship a spec in-repo (Firecrawl publishes one at `firecrawl/firecrawl/apps/api/openapi.json`). If found, download it, validate it has a top-level `openapi`/`swagger` key, and **add `info.x-jentic-source-url`** pointing at where it came from. Done — do not hand-generate. 2. **Path 2 — generate from docs** only if no official spec exists. Extract every endpoint, method, path/query/body param, and auth scheme; build valid OpenAPI 3.0.3 with response/error schemas referenced via `$ref`, root-level `security`, and `securitySchemes` under `components`.
In both paths, embed **`info.x-vendor`** = the vendor domain (e.g. `firecrawl.dev`) next to `info.x-jentic-source-url` — the local registry's ingest resolves vendor from `x-vendor` (falling back to `contact.name`) and fails with `missing vendor` without it.
**Validate** before moving on: parses as JSON/YAML, has `openapi`, `info.title`, and `paths` with ≥1 path; note the server URL.
**Private-host refusal (do not skip).** If any `servers[].url` points at a private or internal host, **refuse to publish and stop after the local-first step**:
python3 -c "
import json,sys,re
spec=json.load(open('<spec>.json'))
bad=re.compile(r'localhost|127\.|10\.|172\.(1[6-9]|2[0-9]|3[01])\.|192\.168\.|\.(internal|local|corp|lan)([/:]|$)')
hosts=[s.get('url','') for s in spec.get('servers',[])]
print('PRIVATE' if any(bad.search(h) for h in hosts) else 'OK', hosts)"`PRIVATE` means this looks like an internal API — publishing it to a public repo would disclose it. Tell the user why you stopped; only continue if they explicitly confirm the API is public.
Decide the layout parts (used verbatim as the repo path, deterministically):
scheme, no `www.`, no API subdomain (`api.foo.com` → `foo.com`). Not a slug.
is not `[a-z0-9-]`, collapse repeats (`Firecrawl API` → `firecrawl-api`).
names); `1.0.0` only when the spec has none.
If a local jentic-one instance is running, import the spec there **before** contributing upstream — the user's agent can execute the API immediately instead of waiting on catalog review. Skip this step if `jentic doctor` reports the control plane unreachable.
Local import needs the `apis:write` permission, which is not granted by default — ask your operator to grant it to this agent in the dashboard. Granted permissions bake into your token at mint time, so once they confirm run `jentic logout` (it clears only the cached token, not your identity) and the next call
Self-hosted execution layer for AI agents: connect any agent to real APIs, scope exactly what it can touch, and keep credentials out of the agent's hands.
Fix a broken OpenAPI spec in jentic-public-apis with an OpenAPI Overlay, validate it (spectral lint + idempotency check), and…
Set up and carry out a new design in `docs/design/designs/<name>/`. Follows the conventions established in `platform-actors` — a…