CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

classlink

ClassLink integration. Manage data, records, and automate workflows. Use when the user wants to interact with ClassLink data.

Quality

69%

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/classlink/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

67%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 delivers a concrete, largely copy-paste-ready workflow for connecting to ClassLink via the Membrane CLI, with good state-based checkpoints for connection readiness and errors. Its weaknesses are moderate padding (background and marketing prose), placeholder-only action examples, and broken step numbering ('Step 2' / '1b' references with no matching sections).

Suggestions

Fix the dangling step references: 'skip to **Step 2**' and '#### 1b' point to numbering that doesn't exist — either number the sections (1, 1b, 2...) or replace with descriptive section links.

Trim the background and marketing prose (the 'what is ClassLink' sentences, 'so you can focus on the integration logic', 'This is the fastest way to get a connection') to save tokens.

Add one concrete end-to-end example with a real ClassLink action (e.g., a OneRoster users query with actual --intent and --input values) instead of only CONNECTION_ID / QUERY placeholders.

DimensionReasoningScore

Conciseness

The body is mostly efficient, command-first content, but contains unnecessary explanation and padding: a two-sentence background on what ClassLink is ('ClassLink is a single sign-on platform used primarily by K-12 schools. It provides students and teachers with easy access...'), marketing-flavored prose ('Membrane handles authentication and credentials refresh automatically — so you can focus on the integration logic rather than auth plumbing'), and internal mechanics like 'The URL is normalized to a domain and matched against known apps.' This matches anchor 3 — mostly efficient but could be tightened — rather than anchor 4, since the padding spans several sections.

3 / 5

Actionability

Concrete, copy-paste-ready commands cover the whole flow: npm install, membrane login with headless completion, connection ensure with a real URL, polling with --wait, action list/run with a JSON --input example, and a proxy flags table. It fits anchor 4 ('mostly executable; concrete code or commands with minor gaps') rather than anchor 5 because the action examples remain placeholders — no concrete ClassLink/OneRoster action or intent example is shown.

4 / 5

Workflow Clarity

The sequence install → login → connect → poll to READY → handle client actions → discover → run → proxy fallback is clear, with real checkpoints (poll states, the error field on CONFIGURATION_ERROR/SETUP_FAILED, re-poll after user action). It matches anchor 4 rather than 5 because step numbering is broken — 'skip to **Step 2**' points to a section that doesn't exist and '#### 1b' has no '1a' — leaving a navigation gap in the workflow.

4 / 5

Progressive Disclosure

The single-file body (~140 lines) is well-organized into clear sections (install, authentication, connecting, searching, running, proxy, best practices) with no nested or dangling file references — no bundle files exist or are needed at this size. It fits anchor 4 ('good structure; most content appropriately placed; minor organization gaps') rather than 5 because the detailed clientAction state handling could be externalized to a reference file to slim the overview.

4 / 5

Total

15

/

20

Passed

Description

57%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 correctly anchors on the ClassLink name and includes an explicit 'Use when' clause, giving it adequate completeness and distinctiveness. Its main weakness is vagueness: no concrete capabilities are named and natural trigger synonyms (OneRoster, roster, SSO, K-12) are absent, so it reads closer to a generic data-management skill than a clear ClassLink-specific trigger.

Suggestions

Replace the generic 'Manage data, records, and automate workflows' with 2-3 concrete capabilities, e.g., 'Query OneRoster data, manage users and apps, sync roster records'.

Broaden the trigger clause with natural synonyms users would say: 'Use when the user mentions ClassLink, OneRoster, rosters, or school SSO/app access'.

Mention the K-12 / OneRoster API context in the trigger so related phrasings (e.g., 'get our roster from OneRoster') surface this skill.

DimensionReasoningScore

Specificity

The description names the ClassLink domain but its actions — "Manage data, records, and automate workflows" — are entirely generic, with no concrete operations (e.g., roster sync, OneRoster queries, app launches) stated. This matches the anchor 'Names the domain but actions are minimal or generic' and falls below anchor 3 because none of the listed actions are concrete.

2 / 5

Completeness

Both parts are present: a what ("ClassLink integration. Manage data, records, and automate workflows") and an explicit when ("Use when the user wants to interact with ClassLink data"). It fits anchor 4 — both present, with the 'when' somewhat narrow and the 'what' vague — rather than anchor 5, whose example pairs a concrete action list with multiple explicit trigger phrases.

4 / 5

Trigger Term Quality

"ClassLink" appears twice and is the natural keyword a user would say, but common variations and synonyms — OneRoster, roster, SSO, single sign-on, K-12 — are missing. Some relevant keywords exist, matching anchor 3, but coverage is too thin for anchor 4's 'a few natural terms missing'.

3 / 5

Distinctiveness Conflict Risk

ClassLink is a distinct named platform, so the skill is unlikely to trigger for unrelated skills, but the generic tail 'Manage data, records, and automate workflows' creates minor overlap risk with broad data-management skills. This matches anchor 4 ('Mostly distinct; minor overlap risk').

4 / 5

Total

13

/

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

membranedev/application-skills

Path

skills/classlink/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.