CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

subsonic-media-server

Manage and interact with a Subsonic-compatible music streaming server (Navidrome or Airsonic); control playback, manage playlists, and trigger library rescans via the OpenSubsonic API.

Quality

79%

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/subsonic-media-server/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

78%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 compact, well-structured skill body with concrete operational details for a specific deployment (endpoints, health check, ssh access, rescan procedure). Its main weaknesses are the missing example API request/token computation and absent feedback loops around the scan operation.

Suggestions

Add one complete example API request, including how the token is derived from the salt (md5(salt + password)), so direct curl usage is copy-paste ready.

Add a feedback loop for the rescan workflow, e.g., poll /rest/getScanStatus after /rest/startScan and report scanning/scanned counts.

Trim generic filler such as the 'Parse: Extract relevant data' step and the Purpose section that duplicates the frontmatter description.

DimensionReasoningScore

Conciseness

The body is largely lean and operational (auth params, endpoint names, a one-line health check, volume path), with only minor trimmable filler such as 'Parse: Extract relevant data from XML/JSON response' and a Purpose section that restates the description. It matches the efficient-with-minor-over-explanation anchor 4 rather than the every-token-earns-its-place anchor 5.

4 / 5

Actionability

Mostly executable guidance: concrete auth parameters (u=, t=, s=, v=, c=), named endpoints (/rest/search3, /rest/startScan), an executable curl health check with expected output (302), and ssh/path details. It falls short of anchor 5 because no complete example request is given — notably the salted-token (md5) computation is never shown, leaving a gap for direct API use outside the MCP wrapper.

4 / 5

Workflow Clarity

Steps 1-6 are clearly sequenced and include a validation checkpoint ('Validate server reachability before attempting bulk operations' plus the health check with expected output) ahead of the batch startScan operation, satisfying the batch-operation cap concern. Minor gaps remain — no post-scan status check or error-recovery loop — so it matches anchor 4 rather than the explicit-feedback-loops anchor 5.

4 / 5

Progressive Disclosure

The ~49-line body is a well-organized overview with clear sections (Purpose, Invocation, Workflow, Safety, Instance Addendum, MCP, References) and clearly signaled one-level-deep links; no external reference files are needed (bundle directories contain only .gitkeep), matching the under-50-lines simple-skill guideline for a top score.

5 / 5

Total

17

/

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, well-scoped description with strong trigger terms and minimal conflict risk, weakened only by the absence of any 'when to use this' clause. Adding an explicit 'Use when...' sentence would raise completeness and overall quality.

Suggestions

Add an explicit trigger clause, e.g., 'Use when the user mentions Navidrome, Airsonic, Subsonic, music streaming, playlists, or library rescans.'

Include the additional capabilities the body supports (search, now-playing queries) so the description's coverage matches the skill.

Add natural synonyms such as 'music library' or 'stream a song' to broaden trigger term coverage.

DimensionReasoningScore

Specificity

Lists several concrete actions ("control playback, manage playlists, and trigger library rescans") tied to a named mechanism ("via the OpenSubsonic API"), with minor gaps such as search and now-playing queries that the body actually supports. It exceeds the 1-2 actions of anchor 3 but is not comprehensive enough for anchor 5.

4 / 5

Completeness

The 'what' is clear and concrete (manage and interact with a Subsonic-compatible server, with specific capabilities), but there is no 'Use when...' clause or equivalent explicit trigger guidance, which caps completeness at 3. It is not a 2 because the 'what' half is specific rather than vague.

3 / 5

Trigger Term Quality

Good natural keyword coverage ("Navidrome", "Airsonic", "playback", "playlists", "library rescans", "music streaming server") that users would actually say. A few natural terms and variations are missing (e.g., "music library", "stream a song", "Subsonic" standalone), so it falls just short of the comprehensive anchor 5.

4 / 5

Distinctiveness Conflict Risk

A clear niche with distinct triggers — "Subsonic-compatible", "Navidrome", "Airsonic", and "OpenSubsonic" are highly specific terms unlikely to fire for unrelated skills, matching the minimal-conflict-risk anchor.

5 / 5

Total

16

/

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

pvnkmnk/AgenticSelfHostSkills

Path

skills/subsonic-media-server/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.