CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

kotlin-ktor-patterns

Ktor server patterns including routing DSL, plugins, authentication, Koin DI, kotlinx.serialization, WebSockets, and testApplication testing.

Quality

72%

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 ./skills/kotlin-ktor-patterns/SKILL.md

The canonical home for this skill is kotlin-ktor-patterns in affaan-m/ECC

SKILL.md
Quality
Evals
Security

Quality

Content

63%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 dense, highly actionable pattern reference with executable Kotlin covering all major Ktor server concerns, organized in a logical build order and ending with a useful quick-reference table. Its weaknesses are repetition (the userRoutes example recurs across four sections), undefined helper symbols in some snippets, and the absence of any progressive disclosure — everything is inlined in one large file rather than split into references.

Suggestions

Move specialized deep-dives (WebSockets chat server, JWT authentication details, testApplication recipes) into one-level-deep reference files (e.g., references/websockets.md, references/testing.md) and keep concise examples in SKILL.md.

Deduplicate the userRoutes snippets: show the full CRUD version once and reference it from the auth, Koin, and validation sections instead of repeating overlapping code.

Define or stub the helper symbols used in examples (generateTestJWT, DatabaseFactory, testModule, ChatMessage, exception types) so snippets are fully copy-paste runnable.

DimensionReasoningScore

Conciseness

The body is code-focused with almost no concept over-explanation, but at ~690 lines it repeats material: the userRoutes example appears in four sections (basic routes, authenticated routes, 'Using Koin in Routes', 'Request Validation') with overlapping snippets, and the full project directory tree adds bulk. Mostly efficient but could be tightened, matching the 'some unnecessary content / could be tightened' anchor rather than the 'minor instances' of the 4 anchor.

3 / 5

Actionability

Nearly all guidance is concrete, executable Kotlin: full route handlers, plugin installs (ContentNegotiation, Authentication, StatusPages, CORS, WebSockets), Koin modules, and testApplication tests. Minor gaps keep it from a 5 — several snippets depend on undefined supporting definitions (generateTestJWT, DatabaseFactory, testModule, ChatMessage, LoginRequest, AuthenticationException), so they are not fully copy-paste ready.

4 / 5

Workflow Clarity

The content follows a coherent build order (entry point -> routing -> serialization -> auth -> error handling -> CORS -> DI -> validation -> WebSockets -> testing -> configuration), with the Application.module() function making the setup sequence explicit and the testApplication section providing verification guidance. Not a 5 because there are no explicit validation checkpoints or feedback loops, though no destructive or batch operations require them.

4 / 5

Progressive Disclosure

Section headers, a quick-reference table, and a 'When to Activate' section give the file good internal structure, but all ~690 lines live inline in SKILL.md with no bundle files at all — specialized material (WebSocket chat server, JWT auth details, full testing recipes) that clearly belongs in separate reference files is inlined. This matches the 'content that should be separate is inline' anchor; the clear headers keep it above the 'minimal structure' anchor.

3 / 5

Total

14

/

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 specific, distinctive description that names the domain and its seven sub-areas with natural technical keywords, but it omits any explicit 'when to use' trigger clause, which both caps completeness and slightly weakens its usefulness for skill selection. Adding a 'Use when...' sentence would lift it to the top band.

Suggestions

Append an explicit trigger clause, e.g., 'Use when building or testing Ktor HTTP servers, configuring Ktor plugins, or wiring Koin dependency injection.'

Include a few natural synonyms or variations users might say, such as 'Kotlin REST API', 'JWT auth', or 'Ktor integration tests', to broaden trigger coverage.

Rephrase the topic list with action verbs (e.g., 'Build Ktor servers with routing DSL, configure authentication and CORS, wire Koin DI...') to strengthen the 'what does this do' answer.

DimensionReasoningScore

Specificity

The description enumerates seven concrete technical areas — "routing DSL, plugins, authentication, Koin DI, kotlinx.serialization, WebSockets, and testApplication testing" — which is specific and near-comprehensive for the domain. It falls short of a 5 because these are topic nouns rather than concrete actions (no verbs like build, configure, or test), leaving a minor gap versus the 'lists multiple specific concrete actions' anchor.

4 / 5

Completeness

The 'what' is clear (Ktor server patterns across seven named areas), but there is no 'Use when...' clause or equivalent explicit trigger guidance — the 'when' is only weakly implied by the topic list. Per the rubric guideline, a missing 'Use when' clause caps completeness at 3.

3 / 5

Trigger Term Quality

Terms a user would naturally say when needing this skill are present: "Ktor", "routing", "authentication", "Koin", "WebSockets", "testApplication". Not a 5 because common synonyms and variations are missing (e.g., "Kotlin", "REST API", "JWT", "integration test").

4 / 5

Distinctiveness Conflict Risk

The description occupies a clear niche: "Ktor server patterns" plus named libraries (Koin, kotlinx.serialization, testApplication) are unambiguous triggers that would not plausibly fire a different skill. It is clearly distinguishable from generic Kotlin or Spring-focused skills.

5 / 5

Total

16

/

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 (690 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

valeriibeck-star/claude-skills

Path

skills/kotlin-ktor-patterns/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.