CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

ax-ai

This skill helps an LLM generate correct AI provider setup and configuration code using @ax-llm/ax. Use when the user asks about ai(), providers, models, routing, adaptive balancing, presets, embeddings, batch audio with ai.transcribe() or ai.speak(), extended thinking, context caching, or mentions OpenAI/Anthropic/Google/Azure/DeepSeek/Meta/Mistral/Cohere/Reka/Grok/Typesafe/Jev with @ax-llm/ax.

Quality

78%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

Fix and improve this skill with Tessl

tessl review fix ./website/static/typescript/.well-known/agent-skills/ax-ai/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

57%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.

The body delivers exceptional actionability — dense, executable TypeScript patterns with exact option names, error classes, and model IDs — but it is a ~1,267-line monolithic reference that buries per-provider minutiae, pricing, and duplicated rules in SKILL.md instead of splitting them into the nearly empty references/ directory. Organization is by topic with no task-oriented workflow or validation checkpoint for the codegen task it supports.

Suggestions

Split per-provider reference detail (Sampling Parameters, DeepSeek Notes, Meta Muse, AWS Bedrock, GPT-6 Astra/sessions, OpenAI Decisions) into files under references/ and keep short decision-oriented summaries with clearly signaled links in SKILL.md, mirroring the existing ax-typesafe.md pattern.

Deduplicate the Bedrock/GPT-6 rules that currently appear in three sections (Quick Setup, AWS Bedrock, GPT-6 Astra) and move time-sensitive pricing and model-generation details (Haiku 5.5 and GPT-6.1 Sol token rates) out of the always-loaded body into a versioned reference file.

Add a brief task-oriented workflow at the top (identify the provider and capability → confirm the profile name via axAIProfiles()/axGetAIProfile() → generate the ai() setup → check the result against 'Critical Rules' and 'Do Not Generate') so the codegen task has an explicit sequence with a validation checkpoint.

DimensionReasoningScore

Conciseness

The ~1,267-line body inlines per-model minutiae (Haiku 5.5 pricing "$0.10/$0.50 through 100K input tokens", GPT-6.1 Sol token rates), repeats Bedrock/GPT-6 rules across the "Quick Setup", "AWS Bedrock", and "GPT-6 Astra" sections, and restates generated-package parity notes many times. It is not a 1 because it never explains concepts Claude already knows and the prose is dense rather than padded, but 'noticeably verbose; several unnecessary ... padded sections' fits better than 'mostly efficient'.

2 / 5

Actionability

Code is copy-paste ready with imports for the common cases ("import { ai } from '@ax-llm/ax'; const openai = ai({ name: 'openai', apiKey: 'sk-...' })" plus complete presets, chat, transcribe/speak, balancer, caching, and decisions examples), and guidance names exact options, error classes ("AxMediaNotSupportedError", "AxAIServiceAbortedError"), and model IDs. A few advanced snippets build on variables from earlier sections, but coverage of common cases is comprehensive, matching the fully-executable anchor.

5 / 5

Workflow Clarity

The body is organized by topic rather than by task: there is no explicit sequence for the codegen workflow and no validation checkpoint (e.g., nothing instructs verifying generated code against "Critical Rules" or "Do Not Generate" after drafting). Decision guidance like "Choose the primitive by responsibility" and the "Do Not Generate" checklist exist but serve as implicit rather than explicit checkpoints, matching the 'sequence present but checkpoints missing or implicit' anchor.

3 / 5

Progressive Disclosure

Section headers are clear and the one bundle reference is valid and clearly signaled ("See the [decision evidence guide](references/ax-typesafe.md#decision-evidence-and-reranking)" — the file and the 'Decision evidence and reranking' heading both exist in references/), but ~1,200 lines of per-provider/per-model reference detail (sampling rules, reasoning-effort mappings, pricing) are inlined in SKILL.md while references/ contains only a single file. This matches 'some structure ... content that should be separate is inline'.

3 / 5

Total

13

/

20

Passed

Description

91%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 description with an explicit what, an explicit 'Use when' trigger clause, and comprehensive natural keywords including the package name, factory function, and twelve provider names. The only weaknesses are the slightly narrow action verbs in the what-statement and a few unqualified generic trigger terms that could pull in generic LLM-coding requests.

DimensionReasoningScore

Specificity

"generate correct AI provider setup and configuration code using @ax-llm/ax" names a concrete action, and the enumerated capabilities ("routing, adaptive balancing, presets, embeddings, batch audio with ai.transcribe() or ai.speak(), extended thinking, context caching") list several specific capability areas. It is not a 5 because the action verbs stay limited to setup/configuration generation and several body capabilities (chat code, model catalog, telemetry) are absent.

4 / 5

Completeness

It explicitly answers both questions: the what is "generate correct AI provider setup and configuration code using @ax-llm/ax" and the when is an explicit "Use when the user asks about ... or mentions ..." clause with concrete trigger phrases. The explicit 'Use when' clause is present, so the completeness cap does not apply.

5 / 5

Trigger Term Quality

Natural trigger terms are comprehensive: "ai()", "providers", "routing", "adaptive balancing", "embeddings", "ai.transcribe()", "ai.speak()", "extended thinking", "context caching", twelve provider names (OpenAI/Anthropic/Google/Azure/DeepSeek/Meta/Mistral/Cohere/Reka/Grok/Typesafe/Jev), and the package identifier "@ax-llm/ax". Only peripheral terms like "streaming" or "MCP" are missing, so it fits the comprehensive anchor rather than the good-coverage anchor.

5 / 5

Distinctiveness Conflict Risk

The niche is clear and anchored by distinct triggers ("@ax-llm/ax", "ai()", "ai.transcribe()"), but the first trigger clause includes unqualified generic terms ("providers, models, routing, embeddings") that create minor overlap risk with generic LLM-API coding skills, matching 'mostly distinct; minor overlap risk' rather than 'minimal conflict risk'.

4 / 5

Total

18

/

20

Passed

Validation

87%

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

Validation — 14 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

skill_md_line_count

SKILL.md is long (1268 lines); consider splitting into references/ and linking

Warning

frontmatter_unknown_keys

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

Warning

Total

14

/

16

Passed

Repository

ax-llm/ax

Path

website/static/typescript/.well-known/agent-skills/ax-ai/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.