Skip to content

feat: canonical SDK capability matrix (KPI 5 data source) - #8

Merged
grdsdev merged 17 commits into
mainfrom
claude/capability-matrix
Jun 5, 2026
Merged

feat: canonical SDK capability matrix (KPI 5 data source)#8
grdsdev merged 17 commits into
mainfrom
claude/capability-matrix

Conversation

@grdsdev

@grdsdev grdsdev commented Jun 4, 2026

Copy link
Copy Markdown
Collaborator

Introduces the canonical feature/capability matrix for all official Supabase SDKs — the foundational data source for KPI 5 (Cross-SDK Feature Parity Rate).

What's in this PR

  • schema/capability-matrix.schema.json — JSON Schema contract. Canonical SDK set (7 languages: javascript, flutter, python, swift, csharp, go, kotlin) and status vocabulary (implemented / not_implemented / not_applicable) are enums in the schema. Enforces all 7 languages per feature and references required iff a status is implemented.
  • capabilities/*.yaml — one file per product area. auth.yaml is a fully worked example (3 features); database, storage, realtime, functions are skeleton stubs establishing the pattern. Each feature has a stable dotted id, human-facing name/description, per-SDK status, and code references (repo + path + optional symbols).
  • scripts/capability-matrix/ — TypeScript/Node validator:
    • Tier 1 (offline, always): schema conformance + cross-file rules (area==filename, id prefix, global id uniqueness, semver since, not_applicable-without-notes warning).
    • Tier 2 (online): confirms each implemented reference's path exists in its repo and that listed symbols appear in the file (missing path or symbol = error).
    • report mode: computes the parity score (overall, per-area, per-language).
  • docs/capability-matrix.md — schema fields, allowed values, conventions, and the parity-score definition.
  • .github/workflows/validate-capabilities.yml — CI: Tier 1 on every push/PR; Tier 2 on PRs and a nightly drift sweep.

Parity score (KPI 5)

  • A feature's applicable SDKs = languages whose status is not not_applicable.
  • Feature parity = implemented / applicable; the cross-SDK rate is the mean across features (also reported per area and per language).

Test plan

  • npm test — 29 unit tests pass (schema rules, structural checks, parity math, Tier 2 path/symbol logic, CLI)
  • npm run typecheck — clean
  • npm run validate — Tier 1 passes on the shipped data
  • npm run validate:online — Tier 2 passes against live upstream repos
  • npm run report — parity output verified by hand

This PR is additive; existing repo contents are untouched.

🤖 Generated with Claude Code

grdsdev and others added 17 commits June 4, 2026 17:20
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Adds full auth surface area sourced from auth-js and supabase-js:
sign-in flows (13), passkeys (2), session/user (10), identities (3),
MFA (7), WebAuthn MFA (7), OAuth server (5), admin API (16).

All 63 features are implemented in JavaScript with verified references.
All other SDKs (flutter, python, swift, csharp, go, kotlin) are
marked not_implemented as the baseline for parity tracking.

New features vs monorepo (supabase/supabase-js) not yet in the
standalone supabase/auth-js release are referenced via the monorepo path.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…supabase/supabase-js monorepo

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- scripts/capability-matrix/src/generate-site.ts: reads capabilities/
  YAML files and generates a self-contained index.html with a parity
  table per area, per-SDK parity bars, group sub-headers, and colour-
  coded status cells (✅/⬜/➖)
- npm run build-site: generates site/index.html (~57 KB, no deps)
- .github/workflows/deploy-pages.yml: builds and deploys on push to
  main; manual trigger via workflow_dispatch
- site/ added to .gitignore (generated artifact, not committed)

NOTE: GitHub Pages must be enabled in repo Settings → Pages →
Source: GitHub Actions before the deploy job will succeed (requires
the repository to be public or on a paid plan).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@grdsdev
grdsdev merged commit 215bc3e into main Jun 5, 2026
2 checks passed
@grdsdev
grdsdev deleted the claude/capability-matrix branch June 5, 2026 10:32
grdsdev pushed a commit that referenced this pull request Aug 12, 2026
🤖 I have created a release *beep* *boop*
---


## [1.0.0](v1.0.0...v1.0.0)
(2026-08-12)


### ⚠ BREAKING CHANGES

* reconcile capability matrix inconsistencies from skill audit
([#74](#74))

### Features

* add capabilities based on supabase-js public methods
([#19](#19))
([8b07e38](8b07e38))
* add capability-matrix maintenance skill
([#73](#73))
([070e2c9](070e2c9))
* add review-spec and review-spec-compliance skills
([#6](#6))
([b2646c1](b2646c1))
* add SDK implementation status matrix to README and skill
([#4](#4))
([753f06c](753f06c))
* **api-check:** include file path and line number in compliance failure
messages ([#45](#45))
([2f4be47](2f4be47))
* **auth:** add sign-out reason capability
([#47](#47))
([51a3abd](51a3abd))
* canonical SDK capability matrix
([#8](#8))
([215bc3e](215bc3e))
* **capability-matrix:** strict cross-SDK parity score + coverage scope
([#63](#63))
([de1abe1](de1abe1))
* CI check 1 — block PRs adding public API not in capability matrix
([#31](#31))
([293440c](293440c))
* **compliance:** list undeclared features after validation
([#48](#48))
([29f396a](29f396a))
* **compliance:** list undeclared features as notes after validation
([29f396a](29f396a))
* **compliance:** split symbol evidence from symbol coverage
([#75](#75))
([abc8e71](abc8e71))
* initial SDK specs, skills, and install script
([e662b17](e662b17))
* move SDK compliance to per-repo files
([#15](#15))
([4d32675](4d32675))
* **parsers:** add Dart public API parser via package:analyzer
(alternative to [#35](#35))
([#41](#41))
([e3ba07a](e3ba07a))
* **parsers:** add griffe-based Python public API surface parser
([#36](#36))
([c44f836](c44f836))
* **parsers:** replace Swift regex parser with swift-symbolgraph-extract
([#38](#38))
([80529a7](80529a7))
* **realtime:** add multiple postgres_changes filters capability
([#70](#70))
([825ab0c](825ab0c))
* reconcile capability matrix inconsistencies from skill audit
([#74](#74))
([9c53a70](9c53a70))
* rename sdk-parse-ignore to .sdk-parse-ignore
([#37](#37))
([4f4ab61](4f4ab61))
* render symbol names as clickable links in capability matrix
([#14](#14))
([dcaf122](dcaf122))
* show feature description as visible sub-text in capability matrix
([#13](#13))
([3a750ab](3a750ab))
* **site:** serve compliance.json with precomputed parity from GitHub
Pages ([#46](#46))
([0d9106c](0d9106c))
* **storage:** add purge_cache and purge_bucket_cache canonical
capabilities ([#44](#44))
([9a6f864](9a6f864))
* **storage:** add storage.errors.error_codes capability
([#71](#71))
([fabb9a7](fabb9a7))
* **storage:** add the five missing Iceberg catalog capabilities
([#76](#76))
([c3c8f9e](c3c8f9e))


### Bug Fixes

* **aggregate:** point csharp and go SDKs at correct repo slugs
([#62](#62))
([8b7320f](8b7320f))
* **aggregate:** point kotlin SDK at supabase-community/supabase-kt
([#61](#61))
([b1a99e9](b1a99e9))
* **capability-matrix:** correct coverage scope metric description
([#64](#64))
([5daeaf5](5daeaf5))
* **ci:** repair python pipeline and simplify sdk-compliance workflow
([#42](#42))
([2140f44](2140f44))
* **ci:** use nx to run docs:json so workspace deps are built first
([#56](#56))
([9b449bb](9b449bb))
* **dart-extractor:** exclude
[@internal-annotated](https://github.com/internal-annotated) symbols
from the public API surface
([9bd358e](9bd358e))
* **dart-extractor:** exclude [@internal](https://github.com/internal)
symbols from the public API surface
([#54](#54))
([9bd358e](9bd358e))
* remove broken sticky thead, add scroll-margin-top and group-row
borders ([#10](#10))
([68761cd](68761cd))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: supabase-releaser[bot] <223506987+supabase-releaser[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant