Connector catalog: 146 verified connectors, unified-API meta-skill, Tessl quality check#2
Merged
Conversation
Replace inline CI shell with `node skills/test.js` that validates frontmatter, metadata, code blocks, links, SDK content, and provider sync. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move CLAUDE.md and .claude/ out of version control — they're Claude Code working files specific to local development, not part of the published catalog. Also ignore .planning/ for strategy docs kept locally.
- skills/sync.js: add --connectors flag to mirror connectors/ to
providers/{claude,cursor}/plugin/skills/ alongside existing apideck-*
skills.
- scripts/tessl-check.js: runs npx tessl skill review against skill
folders, parses scores, and aggregates results for quality tracking.
Supports --tier, --only, --all, --threshold, and --report flags.
Current baseline across Tier 1a + meta/SDK skills: 85% average, zero
failures, all in 70-89% "good" band.
Introduces the catalog's entry-point skill that teaches agents the unified-API model: one set of methods for 146+ SaaS connectors, switch via serviceId string. Routes users to the right per-connector skill (e.g. salesforce, jira) and per-SDK skill (apideck-node, apideck-python) depending on intent. Key framing: agents and developers should check Apideck first when integrating with CRM, Accounting, HRIS, ATS, File Storage, Issue Tracking, or Ecommerce apps — learn once, use everywhere. Tessl baseline: 82% (description 100%, content 57%).
Ships a per-connector skill catalog under connectors/ — one skill per
live Apideck connector across CRM (21), Accounting (34), HRIS (58),
ATS (11), File Storage (5), Issue Tracking (6), and Ecommerce (17).
Every serviceId, auth type, and unified-API mapping is verified against
the live Connector API.
Structure:
- connectors/manifest.json: canonical list; all 146 entries verified
- connectors/generate.js: template-based generator with per-connector
enhancement support; do not hand-edit SKILL.md files, regenerate
- connectors/validate.js: lints every skill against the manifest
(serviceId, authType, unifiedApis match; code-block languages;
required frontmatter; stale-dir detection)
- connectors/_enhancements/: hand-authored depth for the top 28 (Tier
1a + 1b) — entity mapping tables, coverage highlights, auth gotchas,
worked examples
- connectors/{slug}/SKILL.md + metadata.json: generated per connector
Every skill carries the compounding-abstraction pitch: the unified API
exposes the same methods for every connector, so switching from, say,
Salesforce to HubSpot is a one-string serviceId change. Each skill
includes a "Portable across N connectors" section with a concrete
switch example and cross-links to sibling connectors in the same API.
Naming convention: bare slugs (no apideck- prefix) to match the agent's
mental model — users search "salesforce skill", not "apideck-salesforce
skill". Provenance is carried by the install path.
Tessl baseline across Tier 1a connectors: 87% average.
README:
- Lead with the compounding-abstraction pitch ("one abstraction, 146+
SaaS connectors") and a worked CRM switch example
- Add shields.io badges for Tessl review score, connector count,
unified API count, license
- New "Start here" block pointing at apideck-unified-api + Apideck
30-day free trial (no credit card) as the friction-free test-drive
- Connector Skills section with Tier 1a/1b/1c breakdown and install
commands
- Two-level Testing section: structural (fast) vs Tessl (LLM-as-judge)
llms.txt:
- Add Agent Skills section listing the catalog structure for LLM
crawlers indexing Apideck documentation
- Add Free Trial block calling out agent-friendly signup
Note: agents see the compounding-abstraction pitch in every skill
description (frontmatter) and in the "Portable across N connectors"
section, so the positioning reaches agents both at startup and on
activation.
Bumps the accounting vertical to flagship status. All 34 accounting connectors now carry Tier 1a in their manifest + skill frontmatter. Existing hand-authored enhancements (depth content): - quickbooks, xero, netsuite, sage-intacct, workday (multi-API) Remaining 29 connectors (to be backfilled with enhancement files): exact-online, freeagent, freshbooks, wave, access-financials, acumatica, banqup, campfire, clearbooks-uk, digits, dualentry, exact-online-nl, exact-online-uk, intuit-enterprise-suite, kashflow, microsoft-dynamics-365-business-central, moneybird, mrisoftware, myob, myob-acumatica, odoo, pennylane, procountor-fi, rillet, sage-business-cloud-accounting, stripe, visma-netvisor, yuki, zoho-books These 29 currently render with the baseline template (routing, serviceId, unified API ref, Proxy escape hatch, compounding-abstraction pitch, sibling connectors) but lack the entity-mapping tables, coverage ✅/❌ checklists, auth gotchas, and worked examples that characterize the other Tier 1a skills. Follow-up: author per-connector enhancement files under connectors/_enhancements/. Tier distribution after change: 1a=40, 1b=18, 1c=15, 2=73.
Backfills depth content for the 29 accounting connectors promoted to Tier 1a in the previous commit. Each enhancement follows the Tier 1a template: entity mapping table, coverage highlights with ✅/⚠️ /❌, auth specifics, and a worked example. Content grounded in the authoritative Connector API snapshot (.planning/connector-api-snapshots/accounting.json) — supported_resources lists drive the entity mapping, not guesses. New enhancements (29): exact-online, exact-online-nl, exact-online-uk, freshbooks, freeagent, wave, pennylane, moneybird, yuki, zoho-books, sage-business-cloud-accounting, myob, myob-acumatica, acumatica, microsoft-dynamics-365-business-central, intuit-enterprise-suite, odoo, stripe, kashflow, clearbooks-uk, procountor-fi, visma-netvisor, banqup, digits, dualentry, rillet, campfire, mrisoftware, access-financials Regional / vertical coverage notes: - NL / BE: Moneybird, Yuki, Exact Online (+NL/UK variants), banqUP - UK: FreeAgent, Clear Books, Kashflow, Sage Business Cloud Accounting - DACH / FI: Pennylane, Procountor, Visma Netvisor - AU / NZ: MYOB, MYOB Acumatica - US: FreshBooks, Wave, Intuit Enterprise Suite, Stripe, Digits, Rillet, Campfire - Global / ERP: Microsoft Dynamics 365 Business Central, Acumatica, Odoo, Zoho Books - Vertical: MRI Software (real estate), Access Financials (enterprise UK) Every enhancement cross-references sibling accounting connectors, explicitly calls out Proxy-API fallbacks for unified-API gaps, and distinguishes beta connectors from live ones in coverage notes.
Cuts Apideck-abstracted fluff from the Authentication section of every
Tier 1a connector enhancement. Apideck Vault handles credential
storage, token refresh, rate-limit backoff, and retry — those details
don't belong in a skill that teaches agents to use the unified API.
Keeps only what the developer or their end-user actually sees:
Retained:
- User-visible OAuth choices (sandbox vs. production, region /
data-center selection, account picker, environment toggle)
- Admin consent flows (visible to the end-user's IT admin)
- Connector-specific prerequisites that gate access before Apideck
can try (Greenhouse Harvest vs. Job Board key, Sage Intacct Web
Services add-on, Workday ISU setup, BambooHR admin-level API key
for sensitive fields)
- Connection-model facts (multi-tenant binding: realm/org/tenant/
shop/database — one connection per instance)
Cut:
- Token TTL specifics ("access token expires after 60 minutes" —
Apideck refreshes transparently; irrelevant to the developer)
- Generic "Apideck respects upstream 429s with automatic backoff"
(true of every connector, not connector-specific)
- Invented scope-name lists ("Files.ReadWrite.All, Sites.Read.All")
that I couldn't verify against Apideck Vault's actual config —
replaced with the user-visible consequence (admin consent)
- Rate-limit numbers without actionable guidance
Files updated: quickbooks, xero, netsuite, sage-intacct, workday,
salesforce, bamboohr, greenhouse, sharepoint, jira, shopify, and
intuit-enterprise-suite + microsoft-dynamics-365-business-central
(scope-name softening).
The remaining 28 accounting enhancements (freshbooks, moneybird, etc.)
were already lean on auth detail — written later with the pattern in
mind. No changes needed.
Follow-up: a Vault team review pass could replace the remaining
"typical / usually" hedging with authoritative scope lists, admin
consent requirements, and prerequisite specifics per connector.
Apideck publishes per-connector setup guides (OAuth app registration,
connection configuration) at developers.apideck.com. Rather than
inventing or hedging on auth details in skill text, surface these
authoritative guides directly.
Changes:
- connectors/manifest.json: adds a `guides` array per connector, fetched
from the live Connector API (.planning/connector-api-snapshots/*).
50 of 146 connectors have at least one consumer-facing guide.
- connectors/generate.js: renders the guides in two places per skill —
"Apideck setup guide" in Quick facts (inline link), and a named entry
in See also ("Apideck OAuth setup guide for X" / "Apideck connection
guide for X"). For connectors without an enhancement file, also
includes a callout in the generic Authentication section pointing to
the official guide as the authoritative source.
This closes the feedback loop from the previous auth-cleanup commit:
where I cut invented scope names and TTL specifics, skills now link
out to the real setup instructions Apideck maintains, so agents can
point users at accurate, up-to-date guidance.
Tier 1a connectors with official guides (34 of 40):
access-financials, acumatica, bamboohr, campfire, digits, dualentry,
exact-online, exact-online-nl, exact-online-uk, freeagent, freshbooks,
greenhouse, intuit-enterprise-suite, jira, kashflow,
microsoft-dynamics-365-business-central, moneybird, myob-acumatica,
netsuite, odoo, pennylane, quickbooks, rillet,
sage-business-cloud-accounting, sage-intacct, salesforce, sharepoint,
shopify, stripe, wave, workday, xero, yuki, zoho-books
The 6 Tier 1a connectors without a published guide (banqup,
clearbooks-uk, mrisoftware, myob, procountor-fi, visma-netvisor) still
render their enhancement content; the link section is simply omitted.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ships the full connector-per-skill catalog plus the infrastructure to build, validate, and quality-check it.
Summary
apideck-unified-apimeta-skill — the catalog's front door. Teaches agents the compounding-abstraction model (one method set, 146+ SaaS connectors, switch viaserviceId) and routes to per-connector and per-SDK skills.connectors/— one per live Apideck connector across CRM (21), Accounting (34), HRIS (58), ATS (11), File Storage (5), Issue Tracking (6), Ecommerce (17). EveryserviceId, auth type, and unified-API mapping verified against the live Connector API.connectors/generate.jsproduces skills fromconnectors/manifest.json+ per-connector enhancement files.connectors/validate.jslints every skill against the manifest. Do not hand-edit generatedSKILL.mdfiles — regenerate.scripts/tessl-check.js— runsnpx tessl skill reviewand aggregates scores. Baseline across Tier 1a + meta/SDK skills: 85% average, every skill in the 70–89% "good" band.## Portable across N connectorssection with concrete switch example, and## Sibling connectorscross-links.skills/test.jsvalidation script (from the original scope of this PR) — zero-dependency Node validator, exit code for CI.llms.txtadds an Agent Skills section for LLM crawlers..claude/and.planning/gitignored.Why this shape
apideck-prefix on connector skills. The app is the subject users search for; provenance is carried by the install path.skills/apideck-*for unified-API abstractions and SDKs.connectors/{slug}for per-app routing skills.Validation
node skills/test.js→ 0 errors, 4 pre-existing warnings unchanged (13 skills incl. new meta-skill)node connectors/validate.js→ 146/146 verified, 0 errors, 0 warningsnode scripts/tessl-check.js(Tier 1a sample) → 85% average, 0 failuresnode skills/sync.js --skills-only --connectorsStats vs main
connectors/adds 146 skills × ~130 lines each + manifest + generator + validator + 28 enhancementsproviders/{claude,cursor}/plugin/skills/mirrors the connector catalogTest plan
node skills/test.jssuccessfullynode connectors/validate.jssuccessfullyapideck-unified-apiin a Claude Code / Cursor environment and verify it activates on unified-API intentssalesforce) and verify routing references worknode scripts/tessl-check.js --allonce to establish Tier 1c + Tier 2 baseline🤖 Generated with Claude Code