* feat(api): installable accounted-api agent skill + openapi-to-skill generator
Three layers, per the July/August 2026 agent-skills ecosystem (skills.sh /
npx skills add, as used by Stripe/Cloudflare/Supabase for their APIs):
- skills/openapi-to-skill/: generic, installable skill that turns any
OpenAPI spec into a consumer-side integration skill, with a portable
stdlib-only inventory/condenser tool and an output template + quality
checklist encoding the distill-not-restate methodology.
- skills/accounted-api/: the installable skill for our own API, rendered
deterministically by scripts/api-skill/generate.ts from the v1 endpoint
registry + hand-authored overlays (auth, conventions, domain gotchas).
CI gate: npm run apiskill:check (core-build.yml).
- lib/api/v1/registry.ts: generateOpenApiSpec now emits requestBody (incl.
multipart binary parts) and path parameters, and the Zod converter learned
.default()/z.record()/.pipe()/.transform(), so the public spec carries
request contracts instead of prose-only.
Docs: /docs/api landing + /llms.txt now point agents at the skill install;
corrected the stale test-key description in the landing (test keys read
real data and force dry-run writes; they are not sandbox-company bound).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(skills): escape backslashes in markdown table cells (CodeQL js/incomplete-sanitization)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Jakob Wennberg <311770904+jakobwennberg-oss@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>