CtrlK
BlogDocsLog inGet started
Tessl Logo

ax-java-llm

Use when writing Java code with `dev.axllm:ax` for using the generated Ax package, factory functions, package docs, examples, and API reference.

52

Quality

65%

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/java/.well-known/agent-skills/ax-java-llm/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

53%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 is well-sectioned and token-efficient with one genuinely copy-paste-ready code example, but it functions as a stub: the detailed API docs and examples it directs the agent to are missing from the bundle, and everything beyond client creation is a bare symbol list with no usage. The dangling references and inlined API surface undermine both actionability and navigation.

Suggestions

Ship the referenced files (API.md, examples/, axir-capabilities.json) in the bundle — or remove the references — so the skill's pointers to package truth actually resolve.

Move the "Relevant API Surface" symbol list to a references file (e.g. references/api-surface.md) and keep only the handful of entrypoints (Ax.ai, Ax.s, Ax.agent, Ax.flow, Ax.optimize) inline with one-line usage each.

Add a second executable snippet covering a common case beyond client creation, such as building a signature and running a generator with Ax.s/Ax.runControl, so the core workflow is actionable from SKILL.md alone.

DimensionReasoningScore

Conciseness

The body is lean with no explanations of concepts Claude already knows, but the ~40-symbol "Relevant API Surface" dump (the AxAI bullet alone lists over 30 names) and redundant facts ("Language: Java", "Package: `dev.axllm:ax`") are tokens that could be trimmed or offloaded. Fits "Efficient; minor instances of over-explanation that could be trimmed"; not 5 because the symbol list doesn't earn its place against an API.md that is already cited.

4 / 5

Actionability

The Core Pattern snippet ("Ax.ai("openai", java.util.Map.of("apiKey", System.getenv("OPENAI_API_KEY")))") is executable, but every other area — signatures, agents, flows, optimizers — gets only bare symbol names, and the pointed-to examples and API docs are absent from the bundle. Fits "Some concrete guidance but incomplete... missing key details"; not 4 because coverage beyond client creation cannot be executed from what's written.

3 / 5

Workflow Clarity

A rough order is implied (start from examples → choose native entrypoints → apply guardrails) and the Guardrails section supplies implicit checkpoints like "Start from package examples for exact native syntax before inventing a new call shape", but there is no explicit sequence or validation loop. Fits "Steps listed but validation gaps; sequence present but checkpoints... implicit"; not 4 because no ordered, checkpointed workflow is laid out.

3 / 5

Progressive Disclosure

The body cites "API.md", "axir-api.json", "axir-capabilities.json", and "examples/" as the package's docs and runnable examples, but none of these files exist in the bundle (no references/, scripts/, or assets/), so navigation dead-ends — while the long inline API symbol list is content that belongs in a separate reference file. This matches "Minimal structure; content that clearly belongs in separate files is inlined" in effect; not 3 because the referenced paths, though signaled, cannot actually be followed.

2 / 5

Total

12

/

20

Passed

Description

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

The description has an explicit and appropriately scoped "Use when" trigger and a highly distinctive package identifier, but the capability side is a vague resource list ("for using the generated Ax package, factory functions, package docs, examples, and API reference") with no concrete actions. It reads as awkward and repetitive rather than informative about what the skill actually helps do.

Suggestions

Replace the resource list with concrete capabilities, e.g. "Write Java code against the generated Ax package `dev.axllm:ax`: create LLM clients, signatures, generators, agents, flows, and optimizers using its factory functions."

Add natural trigger synonyms users of this domain would say — "LLM app", "AI agent", "Ax program", "Ax Java SDK" — so the skill fires when users describe tasks rather than name the package.

Fix the repetitive "Use when writing Java code with X for using X..." construction so the sentence states what the skill does in one clause and when to use it in another.

DimensionReasoningScore

Specificity

The domain is named ("Java code with `dev.axllm:ax`") but the action side is a resource inventory — "for using the generated Ax package, factory functions, package docs, examples, and API reference" — with the generic verb "using" rather than concrete capabilities, matching the "names the domain but actions are minimal or generic" anchor. Not 3 because, unlike "Processes PDF files and extracts content", no specific action beyond "writing Java code" is stated.

2 / 5

Completeness

Both elements are explicitly present: the 'when' via "Use when writing Java code with `dev.axllm:ax`" and the 'what' as using the package's factory functions, docs, examples, and API reference. Not 5 because the 'what' is a list of resources rather than concrete capabilities; not 3 because the 'when' clause is explicit, not weakly implied.

4 / 5

Trigger Term Quality

"Java code" and "`dev.axllm:ax`" are natural terms a user of this package would say, but coverage misses the domain's common vocabulary ("LLM", "AI", "agent", "flow", "optimizer") that a user building an Ax program would naturally mention. Fits "some relevant keywords but missing common variations or synonyms"; not 4 because keyword coverage stops at the package coordinate.

3 / 5

Distinctiveness Conflict Risk

"`dev.axllm:ax`" combined with "Java" is a clear niche with distinct triggers — no generic skill would collide with this package coordinate. Minimal conflict risk, matching the anchor for a clear niche.

5 / 5

Total

14

/

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
ax-llm/ax
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.