CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

ingest-season-book-match

Parse a photographed or scanned Tranmere Rovers season-book fixture row or complete season sheet and add its confirmed attendance, starting XI, substitutions and Rovers scorers to the Tranmere-Web D1 database. Use when supplied a season-book/team-sheet image that lists player surnames and shirt numbers, especially to fill historic line-ups for already-recorded matches.

76

Quality

95%

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

SKILL.md
Quality
Evals
Security

Quality

Content

88%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 strong, safety-first procedural skill: executable wrangler/SQL at every step, an explicit validation checkpoint before any D1 write, and thorough handling of both single-fixture and season-sheet flows. Its main weaknesses are mild redundancy (repeated no-insert warnings and dual-flow variants inside each section) and keeping a 225-line two-workflow body monolithic in SKILL.md when the season-sheet flow could live in a reference file.

Suggestions

Split the season-sheet workflow out of the numbered sections into a one-level-deep reference (e.g. references/season-sheet.md) covering the season-level validations, per-row requirements, and orchestrator spec, leaving SKILL.md's numbered steps to the single-fixture flow with a clearly signaled pointer to it.

State the 'never write to Games / attendance-only update' safety rule once in the preamble or Scope section and drop its two later repetitions in sections 4 and the orchestrator list.

Trim the near-duplicate 'For a season sheet...' sentences inside sections 1–3 by stating the season-sheet delta once (e.g. as a short table or a single 'Season-sheet differences' block) instead of restating each single-fixture rule twice.

DimensionReasoningScore

Conciseness

The body is dense with genuinely novel domain rules (asterisk = substituted by the player wearing 12, the August–December/January–July date-split rule, D1 target selection) and never explains concepts Claude already knows. It loses a point to repetition: the 'never insert into Games' safety rule is stated three times ('Never create or replace a game/result record', 'Never insert into `Games` from this skill', 'never insert or bulk-replace game records'), and every numbered section interleaves a near-duplicate 'For a season sheet...' variant of the single-fixture instruction. This fits anchor 4 ('efficient; minor instances of over-explanation that could be trimmed') rather than anchor 5's 'every token earns its place'.

4 / 5

Actionability

Guidance is fully executable: copy-paste-ready wrangler commands with the exact SELECT column lists, a preflight query, a parameterized UPDATE with a `changes()` guard, complete INSERT statements showing every Apps and Goals column with correct NULL/0 defaults, and explicit placeholder conventions (`<d1-target>`, `<appearance-inserts>.sql`). This matches anchor 5 ('fully executable; copy-paste ready code or commands covering the common cases'), not anchor 4 which would leave minor gaps in the command details.

5 / 5

Workflow Clarity

A clear five-step sequence (extract → resolve names → validate → write → verify) with explicit validation checkpoints throughout: preflight requiring exactly one matching game, stop-on-mismatch of summed scorer counts vs D1 home/away goals, existing Apps/Goals checks to prevent duplicates, a final user confirmation, dry-run mode, a `changes() == 1` post-update assertion, and post-write verification reads. For a database batch-writing skill this is exactly the anchor-5 pattern ('explicit validation steps; feedback loops...; checklists'), well above the cap-3 risk for missing validation.

5 / 5

Progressive Disclosure

There is no bundle (references/, scripts/, assets/ are absent) and the 225-line body is well organized into a preamble, Scope, and five numbered sections with clearly labeled SQL blocks, so navigation is easy. It sits at anchor 4 ('good structure; most content is appropriately placed; minor organization gaps') rather than 5 because the skill is well over 50 lines and carries two full interleaved workflows — the season-sheet variant threaded through every section (and a season-level orchestrator spec) is a natural candidate for a one-level-deep reference file, which is precisely the minor organization gap anchor 4 describes; it is not anchor 3 since no content is buried or misfiled.

4 / 5

Total

18

/

20

Passed

Description

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

An exemplary description: concrete third-person actions covering all write targets, an explicit 'Use when...' clause with natural niche trigger phrases, and zero overlap risk with other skills. Every token earns its place.

DimensionReasoningScore

Specificity

The description lists multiple concrete actions — 'Parse a photographed or scanned... fixture row or complete season sheet and add its confirmed attendance, starting XI, substitutions and Rovers scorers to the Tranmere-Web D1 database' — which is comprehensive coverage of the skill's actual writes (Games, Apps, Goals). It stays in third person ('Parse', 'add') with no fluff or over-claims, fitting the anchor-5 example of multiple specific concrete actions rather than the anchor-4 'minor gaps' case.

5 / 5

Completeness

Both what and when are explicitly answered: the what is the concrete parse-and-write pipeline above, and the when is a full 'Use when supplied a season-book/team-sheet image that lists player surnames and shirt numbers, especially to fill historic line-ups for already-recorded matches' clause. This mirrors the anchor-5 example structure (actions + explicit 'Use when...' with concrete triggers); anchor 4 would require a vaguer or less specific 'when' clause.

5 / 5

Trigger Term Quality

Natural trigger phrases cover the niche thoroughly: 'season-book/team-sheet image', 'photographed or scanned', 'player surnames and shirt numbers', 'historic line-ups', 'already-recorded matches'. These are exactly the words a user of this niche would say, with synonym variants (season-book/team-sheet, fixture row/season sheet) present, matching the anchor-5 'comprehensive coverage of natural terms including synonyms'.

5 / 5

Distinctiveness Conflict Risk

The niche is highly specific (Tranmere Rovers season-book ingestion into the Tranmere-Web D1 database), so it cannot plausibly trigger for a wrong skill; triggers like 'season-book image listing surnames and shirt numbers' are distinct from generic image/OCR/data-entry skills. This matches anchor 5 ('clear niche with distinct triggers; minimal conflict risk') rather than anchor 4's 'minor overlap risk with closely related skills'.

5 / 5

Total

20

/

20

Passed

Validation

100%

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

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository

chrisowen491/tranmere-web

Path

.agents/skills/ingest-season-book-match/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.