CtrlK
BlogDocsLog inGet started
Tessl Logo

soccer-agent-toolbelt

Soccer analytics agent toolbelt. Gives Claude Code direct access to the Oracle-backed match data, ML predictions, and three-tier memory. Use when answering questions about football matches, building on the soccer agent, or exploring the World Cup dataset.

64

Quality

76%

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 ./workshops/soccer-analytics-agent/.claude/skills/soccer-agent-toolbelt/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

71%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 exceptionally actionable — every instruction is an exact command, JSON payload, or error-code-specific fix, and the observability and vector-refresh flows include genuine validation feedback loops. It loses points for token efficiency (the hybrid-vs-vector guidance is repeated three times) and for being a single 170-line file whose large pitfall catalog should be split into a bundled reference file for on-demand loading.

Suggestions

State the hybrid_retrieve-first rule once (in the retrieval section or the pitfalls, not both) and delete the duplicated rationale from the 'How to invoke' contrast example, keeping only the command pair.

Move the 'Pitfalls when building on Oracle AI Database' catalog into references/oracle-pitfalls.md and keep a one-line pointer plus the top 2-3 pitfalls inline, so the ~170-line body shrinks to an overview.

Add an explicit validation step to the 'Adding your own tool' workflow (e.g. re-run the dispatcher with the new tool and confirm the JSON output) so every multi-step flow ends in a checkpoint.

DimensionReasoningScore

Conciseness

The body is mostly dense, hard-won specifics (exact error codes like 'ORA-54426' and 'DPY-1001', env vars, SQL syntax) with no padding about concepts Claude already knows, but the hybrid_retrieve-vs-vector_search guidance is repeated across three sections — the opening 'Hybrid-first rule', the 'Contrast it with the semantic-only baseline' example block, and the 'Hybrid-first default' pitfall — which is unnecessary explanation that could be tightened into one place. That repetition is exactly the 'mostly efficient but could be tightened' profile of anchor 3, falling short of anchor 4's 'minor instances'.

3 / 5

Actionability

Everything is copy-paste executable: full dispatcher commands with JSON args ('uv run python .claude/skills/soccer-agent-toolbelt/tools/run_tool.py sql_query ...'), a runnable Python snippet for list_steps, an exact curl for observability, concrete remediation ('uv run python scripts/load_langchain_vectors.py --reset'), and even a full Python pattern for materializing CLOBs inside the connection block. This matches anchor 5's 'fully executable, copy-paste ready' with the common cases covered.

5 / 5

Workflow Clarity

Sequences are clear with validation checkpoints in the right places: the observability flow has an explicit feedback loop ('If this returns no rows after a real chat turn, run ... init_memory.py and ... verify.py; the verifier must report ...') and the vector-refresh pitfall gives an explicit ordered dependency ('Run ... load_langchain_vectors.py --reset after load_predictions.py'). However, most of the body is a pitfall catalog rather than sequenced workflows, and several flows (e.g. adding a 14th tool, verifying it) end without a validation step, so it sits at anchor 4 rather than the feedback-loops-everywhere bar of anchor 5.

4 / 5

Progressive Disclosure

The file is well-sectioned with clear headers, but it is a ~170-line monolith: no references/, scripts/, or assets/ directories exist in the bundle, and roughly half the body (the 50+ line 'Pitfalls when building on Oracle AI Database' catalog) is exactly the reference-grade material that belongs in a separate one-level-deep file loaded on demand. That matches anchor 3's 'some structure but content that should be separate is inline'; it is above anchor 2 only because the sections themselves are clean and navigable, and below anchor 4 because there is no split at all.

3 / 5

Total

15

/

20

Passed

Description

82%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, third-person description with an explicit 'Use when...' clause covering three concrete triggers and good synonym coverage (soccer/football, World Cup). Its main weakness is specificity of action: it names data domains the skill exposes but not what the agent actually does with them (query SQL, run XGBoost predictions, search vector memory), which is where it falls short of full marks.

Suggestions

Replace the generic 'Gives Claude Code direct access to' with concrete verbs, e.g. 'Query Oracle-backed match data, run 92-feature XGBoost match predictions, and search three-tier agent memory.'

Add one or two more natural trigger phrases users would say, such as 'predicting match outcomes' or 'team form and Elo ratings', to broaden trigger coverage.

DimensionReasoningScore

Specificity

The description names the domain ('Soccer analytics agent toolbelt') and three capability areas ('Oracle-backed match data, ML predictions, and three-tier memory'), but 'gives direct access to' is generic — it names resources rather than concrete actions like querying, predicting, or recalling, and never mentions the 13 tools. It sits between the 1-2 concrete actions of anchor 3 and the several-specific-actions coverage of anchor 4.

3 / 5

Completeness

It explicitly answers both questions: the 'what' is 'Gives Claude Code direct access to the Oracle-backed match data, ML predictions, and three-tier memory' and the 'when' is the explicit 'Use when answering questions about football matches, building on the soccer agent, or exploring the World Cup dataset' with three concrete trigger phrases. This matches anchor 5; it is not anchor 4 because the 'when' clause is already explicit and specific.

5 / 5

Trigger Term Quality

Good natural-keyword coverage: 'football matches', 'World Cup dataset', 'soccer agent', 'ML predictions', and both 'soccer' and 'football' variants appear — terms a user would naturally say. A few natural phrasings are still missing (e.g. 'match predictions', 'team stats', 'Elo ratings'), keeping it below the comprehensive-with-synonyms bar of anchor 5.

4 / 5

Distinctiveness Conflict Risk

'Soccer analytics agent toolbelt' carves out a clear niche with distinct triggers (football matches, World Cup, the soccer agent) that no general-purpose skill would claim, so conflict risk is minimal — a direct match for anchor 5. It is written in third person ('Gives Claude Code direct access'), so no voice penalty applies.

5 / 5

Total

17

/

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

referenced_paths_exist

Referenced path issues: 4 missing

Warning

Total

15

/

16

Passed

Repository
oracle-devrel/oracle-ai-developer-hub
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.