CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

ai-core

Entry point for TanStack AI skills. Routes to chat-experience, tool-calling, media-generation, structured-outputs, adapter-configuration, ag-ui-protocol, middleware, locks, custom-backend-integration, and debug-logging, plus the skills shipped by companion packages (@tanstack/ai-persistence, @tanstack/ai-code-mode), and computer use (@tanstack/ai-computer-use). Use chat() not streamText(), openaiText() not createOpenAI(), toServerSentEventsResponse() not manual SSE, middleware hooks not onEnd callbacks.

Quality

77%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

Fix and improve this skill with Tessl

tessl review fix ./packages/ai/skills/ai-core/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

75%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A well-structured router skill: terse lookup tables, concrete API corrections, an executable computer-use example, and disciplined delegation to sub-skills and package skills. The main weaknesses are the duplicated decision tree, inline persistence/computer-use detail that could live one level deeper, and a couple of reference rows lacking concrete entry paths.

Suggestions

Merge the Quick Decision Tree into the Sub-Skills table (or drop it) — the two sections duplicate the same routing information across ~25 lines.

Give @tanstack/ai-code-mode an explicit entry path like node_modules/@tanstack/ai-code-mode/skills/... the way the persistence and ai-skills sections do.

Move the store-contract type list and the full computer-use implementation example into the referenced sub-skill/package skills, keeping only the routing rows and the critical warnings inline.

DimensionReasoningScore

Conciseness

The body is dense — routing tables, terse bullets, executable code, and library-specific facts with no padding or explanations of concepts Claude already knows. It matches anchor 4 rather than 5 because the Quick Decision Tree largely duplicates the Sub-Skills table and the persistence section inlines contract-level types ("RunStatus, RunRecord, RunStore, defineRunStore, InMemoryRunStore") that could be pushed one level down.

4 / 5

Actionability

Guidance is concrete and mostly executable: copy-paste bash install commands, a complete executable computer-use TypeScript example with exact imports, precise API corrections with code ("useChat({ tools: clientTools(myTool.client(...)) })"), and exact sub-skill paths. It misses anchor 5 only through small gaps, e.g. the @tanstack/ai-code-mode section says just "See the ai-code-mode skill in that package" with no entry path, unlike the other two companion packages.

4 / 5

Workflow Clarity

Routing decisions are unambiguous via two lookup structures plus a fallback ("Debugging mistakes? → Check Common Mistakes in the relevant sub-skill"), and companion-package setup is sequenced (pnpm add → "npx @tanstack/intent@latest install" → explicit entry path). It is anchor 4 rather than 5 because setup flows lack explicit validation checkpoints (e.g., confirming the skills actually wired in after the intent install).

4 / 5

Progressive Disclosure

References are consistently one level deep and well signaled — a "Need to... | Read..." table of sub-skill SKILL.md paths, explicit node_modules entry points for companion packages, and four linked computer-use docs pages. It matches anchor 4 rather than 5 because no actual bundle files ship alongside this SKILL.md (the referenced sub-skill paths resolve outside it), and the ~50-line inline computer-use example plus persistence contract detail could be split one level deeper.

4 / 5

Total

16

/

20

Passed

Description

70%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A strong router description: it names a specific SDK, enumerates ten sub-skill areas plus companion packages, and states concrete API correctives. Its main weaknesses are the absence of an explicit 'Use when...' trigger clause (capping completeness) and reliance on sub-skill names rather than natural user phrasings for triggering.

Suggestions

Add an explicit trigger clause, e.g. "Use when working with TanStack AI (@tanstack/ai), its framework hooks (@tanstack/ai-react, etc.), or any of its companion packages."

Include natural user phrasings such as "build a streaming chat UI", "generate images or speech", or "pick a provider adapter" so common requests match the description's trigger terms.

Briefly state what routing yields for the reader (e.g., "Each sub-skill contains working code and a Common Mistakes section") to sharpen the 'what'.

DimensionReasoningScore

Specificity

The description names ten concrete capability areas ("Routes to chat-experience, tool-calling, media-generation, structured-outputs, adapter-configuration, ag-ui-protocol, middleware, locks, custom-backend-integration, and debug-logging") plus concrete API directives ("Use chat() not streamText(), openaiText() not createOpenAI()"). It matches anchor 4 — several specific items with minor gaps — rather than 5 because most 'actions' are routing targets rather than a comprehensive set of concrete operations, and clearly exceeds anchor 3 (domain plus only 1-2 actions).

4 / 5

Completeness

It has a clear 'what' (an entry point that routes to named sub-skills and corrects API usage) but no 'Use when...' clause or equivalent explicit trigger guidance, so 'when' is only weakly implied. Per the judging guidelines, a missing explicit trigger clause caps completeness at 3 — it is not a 2 because the 'what' is specific and multi-faceted.

3 / 5

Trigger Term Quality

Natural terms users would say are present — "TanStack AI", "tool calling", "computer use", "middleware", "debug logging", "persistence" — giving good keyword coverage (anchor 4). It falls short of anchor 5 because common user phrasings and synonyms like "generate images", "streaming chat UI", "pick a provider", or package file extensions are missing.

4 / 5

Distinctiveness Conflict Risk

"Entry point for TanStack AI skills" ties the description to a clearly named SDK with a well-defined niche, and every listed capability is prefixed by that library context, giving minimal conflict risk with unrelated skills. Overlap with its own sub-skills is the intended routing behavior, so anchor 5 (clear niche with distinct triggers) fits better than anchor 4.

5 / 5

Total

16

/

20

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

Total

15

/

16

Passed

Repository

TanStack/ai

Path

packages/ai/skills/ai-core/SKILL.md

Reviewed

Table of Contents

Is this your skill?

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.