Skip to content
Merged
  •  
  •  
  •  
52 changes: 2 additions & 50 deletions .github/workflows/validate-skills.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,56 +18,8 @@ jobs:
steps:
- uses: actions/checkout@v4

- name: Validate SKILL.md frontmatter
run: |
errors=0
for skill_dir in skills/apideck-*/; do
skill_name=$(basename "$skill_dir")
skill_file="$skill_dir/SKILL.md"

if [ ! -f "$skill_file" ]; then
echo "ERROR: $skill_dir missing SKILL.md"
errors=$((errors + 1))
continue
fi

# Check name field matches directory
name_field=$(sed -n '/^---$/,/^---$/p' "$skill_file" | grep '^name:' | head -1 | sed 's/name: *//')
if [ "$name_field" != "$skill_name" ]; then
echo "ERROR: $skill_file name '$name_field' does not match directory '$skill_name'"
errors=$((errors + 1))
fi

# Check required frontmatter fields
for field in name description license alwaysApply; do
if ! sed -n '/^---$/,/^---$/p' "$skill_file" | grep -q "^${field}:"; then
echo "ERROR: $skill_file missing required field: $field"
errors=$((errors + 1))
fi
done

# Check metadata.json exists
if [ ! -f "$skill_dir/metadata.json" ]; then
echo "WARN: $skill_dir missing metadata.json"
fi

# Check SKILL.md line count
lines=$(wc -l < "$skill_file")
if [ "$lines" -gt 500 ]; then
echo "WARN: $skill_file is $lines lines (recommended: under 500)"
fi

echo "OK: $skill_name ($lines lines)"
done

if [ $errors -gt 0 ]; then
echo ""
echo "FAILED: $errors error(s) found"
exit 1
fi

echo ""
echo "All skills validated successfully"
- name: Validate skills
run: node skills/test.js

- name: Validate provider sync
run: |
Expand Down
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,8 @@ node_modules/
.env
*.local
specs-summary.json
.planning/

# Claude Code working files — local only, not part of the public catalog
CLAUDE.md
.claude/
100 changes: 0 additions & 100 deletions CLAUDE.md

This file was deleted.

115 changes: 112 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,31 @@
# Apideck API Skills

AI coding agent skills for the [Apideck](https://apideck.com) Unified API.
[![Tessl Review Score](https://img.shields.io/badge/Tessl%20Review-85%25-yellow?labelColor=0f172a)](https://tessl.io/registry/skills/submit)
[![Connectors](https://img.shields.io/badge/connectors-146-blue)](connectors/)
[![Unified APIs](https://img.shields.io/badge/unified%20APIs-7-blue)](#connector-skills)
[![License](https://img.shields.io/badge/license-Apache--2.0-green)](LICENSE)

**One abstraction, 146+ SaaS connectors.** AI agent skills for the [Apideck](https://apideck.com) Unified API — integrate Salesforce, HubSpot, QuickBooks, Xero, BambooHR, Workday, Greenhouse, SharePoint, Jira, Shopify, and 130+ more apps through a single method set. Switch connectors by changing one string; don't rewrite per vendor.

```typescript
// One codebase, any CRM
await apideck.crm.contacts.list({ serviceId: "salesforce" });
await apideck.crm.contacts.list({ serviceId: "hubspot" });
await apideck.crm.contacts.list({ serviceId: "pipedrive" });
```

Same pattern for accounting (34 connectors), HRIS (58), ATS (11), file storage (5), issue tracking (6), ecommerce (17). New connectors Apideck adds become available without code changes — this is the compounding advantage.

## Start here

```bash
# The front-door meta-skill — teaches the unified-API model
npx skills add apideck/api-skills --skill apideck-unified-api
```

These skills teach your AI agent SDK patterns, available methods, authentication setup, best practices, and API testing for integrating with 200+ connectors through Apideck's unified APIs.
[`apideck-unified-api`](skills/apideck-unified-api/) is the catalog's introduction. Install it alongside any connector or SDK skill to give your agent the routing model upfront.

**Test-drive with the 30-day free trial.** [Sign up at apideck.com](https://apideck.com) — no credit card required. Agents and developers can explore all unified APIs, connect to downstream services via Vault, and validate coverage before any commitment. This is the friction-free path to evaluate whether Apideck fits your use case.

## Installation

Expand Down Expand Up @@ -50,6 +73,11 @@ Add `--global` to install globally across all projects.

## Skills

The catalog has two kinds of skills:

- **Skills** under `skills/` — Apideck-specific API abstractions and SDK patterns. Names start with `apideck-`.
- **Connector skills** under `connectors/` — one per downstream app (Salesforce, QuickBooks, Jira, etc.). Names are bare (no `apideck-` prefix). These are routing skills: they teach the agent which unified API covers the connector, the correct `serviceId`, auth gotchas, and escape-hatch patterns.

### SDK Skills

| Skill | Language | Package |
Expand All @@ -62,16 +90,60 @@ Add `--global` to install globally across all projects.
| [apideck-php](skills/apideck-php/) | PHP | `apideck-libraries/sdk-php` |
| [apideck-rest](skills/apideck-rest/) | Any (HTTP) | Direct REST API calls |

### Integration Skills
### Meta & Integration Skills

| Skill | Description |
|-------|-------------|
| [apideck-unified-api](skills/apideck-unified-api/) | **Start here.** Front-door skill teaching the unified-API model, routing to connector / SDK skills |
| [apideck-best-practices](skills/apideck-best-practices/) | Architecture patterns, authentication, pagination, error handling, Vault, webhooks, and common pitfalls |
| [apideck-portman](skills/apideck-portman/) | API contract testing with Portman — generate Postman collections with tests from OpenAPI specs |
| [apideck-codegen](skills/apideck-codegen/) | Generate typed clients from OpenAPI specs using openapi-generator, Speakeasy, or Postman import |
| [apideck-connector-coverage](skills/apideck-connector-coverage/) | Check connector API coverage before building — verify which operations each connector supports |
| [apideck-migration](skills/apideck-migration/) | Migrate from direct Salesforce/HubSpot/QuickBooks/Xero integrations to Apideck's unified layer |

### Connector Skills

Per-connector skills for the top apps across seven unified APIs: Ecommerce, Accounting, CRM, ATS, File Storage, Issue Tracking, HRIS. Auth-only connectors are excluded.

**Tier 1a — hand-authored depth** (entity mapping, coverage ✅/❌, auth gotchas, 2–3 worked examples):

| Connector | Unified API |
|---|---|
| [salesforce](connectors/salesforce/) | CRM |
| [quickbooks](connectors/quickbooks/) | Accounting |
| [bamboohr](connectors/bamboohr/) | HRIS |
| [greenhouse](connectors/greenhouse/) | ATS |
| [sharepoint](connectors/sharepoint/) | File Storage |
| [jira](connectors/jira/) | Issue Tracking |
| [shopify](connectors/shopify/) | Ecommerce |

**Tier 1b — abbreviated depth** (21 connectors): HubSpot, Pipedrive, Zoho CRM, Xero, NetSuite, Sage Intacct, Workable, Lever, Google Drive, OneDrive, Dropbox, Box, GitHub, GitLab, Linear, BigCommerce, WooCommerce, Shopify Public App, Personio, Workday, Deel, HiBob.

**Tier 1c + Tier 2 — baseline routing skills** (~107 connectors): every live connector in scope gets a minimal routing skill (serviceId, unified API, Proxy escape hatch). See [`connectors/manifest.json`](connectors/manifest.json) for the full list and tier assignment.

**Installation:**

```bash
# Install a specific connector skill
npx skills add apideck/api-skills --skill salesforce
npx skills add apideck/api-skills --skill sharepoint

# Or install the full catalog (all connectors)
npx skills add apideck/api-skills
```

**Authoring workflow:**

Connector skills are generated from [`connectors/manifest.json`](connectors/manifest.json) and optional per-connector enhancement files in `connectors/_enhancements/`. Do not hand-edit `connectors/{slug}/SKILL.md` — regenerate:

```bash
node connectors/generate.js # regenerate all
node connectors/generate.js --only=salesforce
node connectors/generate.js --tier=1a

node connectors/validate.js # lint against manifest
```

## IDE Plugins

Pre-configured plugins with skills and slash commands:
Expand All @@ -89,6 +161,43 @@ Pre-configured plugins with skills and slash commands:
| `/list-connectors` | Show available connectors and their capabilities for a unified API |
| `/portman-init` | Generate a Portman config for API contract testing against an Apideck spec |

## Testing

Two levels of quality checks.

### 1. Structural validation (fast, deterministic)

```bash
node skills/test.js # Validate apideck-* skills
node skills/test.js --check-links # Also verify external URLs
node connectors/validate.js # Validate connector catalog against manifest
```

Checks frontmatter, metadata, code blocks, links, SDK content consistency, provider sync status, serviceId/manifest consistency.

### 2. Tessl quality review (slow, LLM-as-judge)

[Tessl](https://tessl.io) scores skills on validation + description quality + content quality using the [agentskills.io spec](https://agentskills.io/specification). Scores:

- **≥ 90%** — conforms to best practices
- **70–89%** — good, minor improvements needed
- **< 70%** — needs work

Run against a sample or the full catalog:

```bash
node scripts/tessl-check.js # Tier 1a sample (fast baseline)
node scripts/tessl-check.js --tier=1b # Tier 1b connectors
node scripts/tessl-check.js --only=salesforce # One skill
node scripts/tessl-check.js --all # Full catalog (slow)
node scripts/tessl-check.js --threshold=70 # Exit non-zero if any skill < 70%
node scripts/tessl-check.js --report # Save full reports to .planning/tessl-reports/
```

Current baseline (Tier 1a + meta/SDK skills, 20 skills): **85% average**, every skill in the 70–89% "good" band.

Tessl uses LLMs for parts of its evaluation, so `--all` against 158 skills takes a while and may cost real tokens on your account. Default mode (Tier 1a sample) runs in ~5 min.

## Skill Sync

Skills are synced to provider plugin directories using the sync script:
Expand Down
43 changes: 43 additions & 0 deletions connectors/_enhancements/access-financials.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
## Access Financials via Apideck Accounting

Access Financials (part of The Access Group) is a UK mid-market accounting platform aimed at enterprise finance teams. Apideck coverage targets the core AR/AP surface.

### Entity mapping

| Access entity | Apideck Accounting resource |
|---|---|
| Sales Invoice | `invoices` |
| Credit Note | `credit-notes` |
| Customer | `customers` |
| Supplier | `suppliers` |
| Payment | `payments` |
| Nominal Account | `ledger-accounts` |
| Tax | `tax-rates` |
| Tracking / Analysis Code | `tracking-categories` |

### Coverage highlights

- ✅ Sales invoices
- ✅ Credit notes
- ✅ Customers, suppliers, payments
- ✅ Chart of accounts
- ✅ Tax rates (UK VAT)
- ✅ Tracking categories
- ⚠️ Purchase invoices — may be partial; verify with connector API
- ❌ UK MTD submissions — use Proxy
- ❌ Payroll — Access offers payroll via a separate product line

### Auth notes

- **Type:** API key, managed by Apideck Vault
- **Client binding:** one Access Financials client per connection.
- **Enterprise-typical onboarding:** integration may require coordination with the customer's Access admin team.

### Example: list recent customers

```typescript
const { data } = await apideck.accounting.customers.list({
serviceId: "access-financials",
filter: { updated_since: "2026-03-01T00:00:00Z" },
});
```
Loading