Audit TanStack AI provider adapters for feature parity gaps and outdated model lists. Triggered as /gap-analysis <provider|feature <name>|models|--all>. Produces a dated markdown report under .agent/gap-analysis/. Maintainer tool — does not edit feature-support.ts or model-meta.ts directly.
80
100%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
You are auditing TanStack AI's provider adapters against each provider's
upstream documentation. This is a maintainer tool. Your only output is a
markdown report under .agent/gap-analysis/. Do not edit source files.
| Args | Scope |
|---|---|
<provider> (e.g. openai) | One provider — all audit dimensions. |
feature <feature> (e.g. tts) | One feature row of the matrix across all providers. |
models | New-model diff for every provider. |
activities | Activity-coverage diff: which of the 7 core activity |
| kinds each provider ships an adapter for, vs. what | |
| upstream supports. (Dimension 6 only, all providers.) | |
--all | Full sweep (fan out subagents, one per provider). |
| (none) | Ask the user which scope via AskUserQuestion. |
testing/e2e/src/lib/feature-support.tstesting/e2e/src/lib/types.ts (Provider + Feature unions, ALL_PROVIDERS, ALL_FEATURES)packages/ai-<provider>/src/index.tspackages/ai-<provider>/src/model-meta.tspackages/ai/src/types.ts (Modality, ContentPart, ToolCall)context7 MCP server (mcp__plugin_context7_context7__resolve-library-id
then mcp__plugin_context7_context7__query-docs).activities scope; it's also rolled into --all.--all: launch one Explore subagent per provider, max 3
in parallel. Each subagent returns the multi-dimension findings for its
provider; you synthesise into the combined report. The activities scope
does not fan out — derive the provider×activity matrix centrally from
the adapter files (see dimension 6), since it's a fast mechanical diff..agent/gap-analysis/YYYY-MM-DD-<scope>.md using
references/report-template.md. Date is
today's ISO date. <scope> is openai / feature-tts / models /
activities / all.feature-support.ts or any model-meta.ts. The report is
read-only — the maintainer applies changes.feature-support.ts:57) so the maintainer can jump to them.feature-support.ts (e.g., aimock format limitation). Not
actionable code-wise; surface in "Out-of-scope" section.model-meta.ts declares a capability the
model no longer has, or omits one it now has.feature-support.ts when flagging a
parity gap, so the report is self-contained.openai, anthropic, gemini, ollama, grok, groq, openrouter,
bedrock (@tanstack/ai-bedrock; three-API surface — Converse default
(adapter name bedrock-converse), Chat Completions opt-in (api: 'chat',
adapter name bedrock), Responses opt-in (api: 'responses', adapter name
bedrock-responses)), fal (media-only), elevenlabs (TTS-only). The
feature matrix tracks openai, anthropic, gemini, ollama, grok,
groq, openrouter, bedrock, bedrock-converse, and bedrock-responses;
fal and elevenlabs only appear in model/media audits.
Canonical list is ALL_FEATURES in testing/e2e/src/lib/types.ts — always
re-read it; this list is a snapshot:
chat, one-shot-text, reasoning, multi-turn, tool-calling,
parallel-tool-calls, tool-approval, text-tool-text, structured-output,
structured-output-stream, agentic-structured, multimodal-image,
multimodal-structured, summarize, summarize-stream, image-gen, tts,
transcription, video-gen.
Features (above) are matrix rows about behaviours within an activity.
Activities are the coarser-grained core capability kinds in @tanstack/ai
— each has a Base<Kind>Adapter and a provider "supports" one only if its
package ships an adapter of that kind. Canonical list is the AdapterKind
union in packages/ai/src/activities/index.ts — always re-read it:
text, summarize, image, audio, video, tts, transcription.
A provider's activity surface is derived mechanically from its adapter files:
packages/ai-<provider>/src/adapters/. Filename → activity-kind map:
| Adapter file | Activity kind |
|---|---|
text.ts / text-chat-completions.ts / responses-text.ts | text |
summarize.ts | summarize |
image.ts | image |
audio.ts | audio |
video.ts | video |
speech.ts / tts.ts | tts |
transcription.ts | transcription |
(cost.ts is a helper, not an activity adapter.)
Before printing the summary:
git status shows only new files under .agent/gap-analysis/ — nothing
under packages/ or testing/ should have been modified. Run git status
and confirm.4ab149f
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.