integrate-new-providerlisted
Install: claude install-skill amikai/openings-mcp
# Integrate a New Provider
## Overview
Every provider follows the same pipeline: **recon** (find and rank the
site's real data surface) → capture fixtures → build a client that matches
that surface → provider package with fixture-replaying tests → debug CLI →
MCP surface (ATS adapter or dedicated tools, wired into the server).
For **JSON REST**, the client path is: minimal OpenAPI spec → ogen-generated
client. For **GraphQL, HTML, SSR-embedded state, RSS/Atom, or JSON Feed**,
write a hand-rolled client instead — do not force ogen. Work the stages in
order; each builds on the previous one's verified output. The integration is
done when the provider is reachable through the MCP server, not when the
debug CLI works — if a session stops before the surface stage, hand off the
remaining stages explicitly.
SmartRecruiters (`internal/provider/smartrecruiters`, `cmd/smartrecruiters`)
is the most recent ogen/JSON worked example. Spec-less hand-written clients
in-tree: LinkedIn, jobindex, join, iCIMS, SuccessFactors, UltiPro (HTML /
GraphQL / `__NEXT_DATA__`).
## Pick the MCP Surface
- **Multi-company ATS** (one API, many tenants/boards): implement
`internal/ats.Adapter` so companies join the unified
`search_jobs_by_company` tools. Examples: workday, greenhouse, lever, ashby.
- **Single site or job board**: dedicated `<name>_search_jobs` /
`<name>_get_job_detail` MCP tools in `internal/openingsmcp/<name>.go`.
Examples: job104, cake, google, nvidia, tsmc, linkedin.
RSS/Ato