feat: add capability-matrix maintenance skill - #73
Conversation
Adds a repo-local Claude Code skill (.claude/skills/capability-matrix/) that helps contributors keep capabilities/*.yaml and specs/ internally consistent: semantic duplicate detection, naming-convention drift within a group, grouping fit, spec-file suggestions, and platform-scope notes. It's advisory only and defers to `npm run validate` for anything mechanical. Carves out .claude/skills/ from the repo-wide .claude/ gitignore rule so committed skills are tracked while session/worktree state stays ignored. Supersedes the CI-bot / PR-review-comment scope in SDK-994.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughSummary by CodeRabbit
WalkthroughThe change adds the Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.claude/skills/capability-matrix/SKILL.md:
- Around line 20-32: Update the capability-matrix validation workflow trigger so
pull requests modifying specs/** also run the validator job. Add specs/** to the
paths in validate-capabilities.yml, ensuring spec-only changes cannot bypass the
mandatory validation check.
- Around line 29-31: Update the capability-matrix path guidance so spec
directories use the feature ID namespace: place an ID such as auth.mfa.challenge
under auth/mfa/, regardless of the optional group value. Rename the path
placeholders to <group_namespace> and <method_stem>, and preserve the existing
validation requirements.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: ff30d5a6-1a54-440f-ab3f-8eaaa0d7da8b
📒 Files selected for processing (2)
.claude/skills/capability-matrix/SKILL.md.gitignore
Two review findings on the capability-matrix skill, both still valid: - validate-capabilities.yml's PR trigger didn't include specs/**, so a spec-only change (e.g. a typo'd path that orphans a spec) could merge without ever running the validator that catches exactly that. - SKILL.md described spec paths as specs/<area>/<group>/<method>.md, implying the current `group` field. The directory is actually derived from the feature id's own segments (<group_namespace>/<method_stem> per the schema), which can now diverge from `group` since SDK-1439 regrouped several features without renaming their ids. Reworded to match the schema's own terminology and call out the divergence.
🤖 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>
Summary
.claude/skills/capability-matrix/SKILL.mdthat helps contributors keepcapabilities/*.yamlandspecs/internally consistent: semantic duplicate detection, naming-convention drift within a group, grouping fit, spec-file suggestions, and platform-scope notes. It's advisory only — always defers tonpm run validatefor anything mechanical (schema, exact duplicate IDs, orphaned specs)..claude/gitignore rule (.claude/* + !.claude/skills/) so committed skills are tracked while session/worktree state stays ignored.Ran the skill as a full audit against the current matrix; findings are tracked separately in SDK-1439 since they're judgment calls for area owners, not part of this PR.
Test plan
npm run validatepasses (mechanical checks unaffected)git check-ignore .claude/skills/capability-matrix/SKILL.mdconfirms the file is tracked, other.claude/state stays ignoredcapabilities/*.yamlas a manual audit to confirm the instructions produce sensible, non-filler output