CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

canvas

Canvas integration. Manage Canvases. Use when the user wants to interact with Canvas data.

Quality

70%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

Fix and improve this skill with Tessl

tessl review fix ./skills/canvas/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

75%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, highly executable integration guide whose main flaws are token waste (the 'No description' actions table and background explanations) and slightly broken step numbering ('Step 2', '1b') in the connection workflow. Structure and command coverage are otherwise excellent.

Suggestions

Drop or trim the 'Popular actions' table's Description column (every entry reads 'No description') or replace it with the action keys only, cutting ~20 dead lines.

Fix the workflow numbering: label the connection step 'Step 1', renumber '1b' accordingly, and either define a 'Step 2' heading (search/run actions) or replace the 'skip to Step 2' references with the actual section names.

Remove background explanation Claude already knows (what Canvas the LMS is, why pre-built actions are better) and keep only non-obvious operational guidance.

DimensionReasoningScore

Conciseness

The body is mostly efficient command blocks and tables, but wastes tokens on an LMS intro paragraph explaining concepts Claude already knows, a 20-row 'Popular actions' table where every description cell reads 'No description', and filler phrases like 'This is the fastest way to get a connection'.

3 / 5

Actionability

Every phase has copy-paste-ready commands with clearly marked placeholders (install, login, connection ensure, action list/run with --input JSON, proxy flags table), and specific state enumerations cover the common cases including headless auth and polling. It is not below 5 because no pseudocode or vague instructions appear anywhere.

5 / 5

Workflow Clarity

The install → login → connect → poll → search → run → proxy sequence is clear with real checkpoints (poll with --wait, enumerated states READY/CLIENT_ACTION_REQUIRED/CONFIGURATION_ERROR with error-field guidance), but 'skip to Step 2' points to a step that is never labeled and a '1b' heading appears with no '1a'/'Step 2', leaving minor incoherence that keeps it below 5.

4 / 5

Progressive Disclosure

The single-file skill is well organized with clear section headers and no nested references, and at ~160 lines most content is appropriately inline; the actions table and proxy options could arguably live in separate reference files, which is the minor gap that keeps it below 5.

4 / 5

Total

16

/

20

Passed

Description

53%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 has an explicit 'Use when...' trigger but wastes it on a nearly content-free 'what': 'Canvas integration. Manage Canvases.' says nothing about which Canvas capabilities (courses, assignments, submissions) are covered, and it never disambiguates the LMS from other canvas meanings. It is serviceable but below the bar set by the good examples.

Suggestions

Replace the generic 'Manage Canvases' with concrete capabilities, e.g. 'List and create courses, assignments, modules, and users; view submissions; send arbitrary Canvas API requests'.

Add natural trigger synonyms to the 'Use when' clause: LMS, Instructure, courses, assignments, submissions — not just 'Canvas data'.

Disambiguate the product, e.g. 'Canvas LMS (Instructure)' so it does not compete with HTML5/drawing-canvas requests.

DimensionReasoningScore

Specificity

It names the domain ('Canvas integration') but the only action offered is the generic 'Manage Canvases', with no concrete operations (courses, assignments, grading, submissions) — matching 'Names the domain but actions are minimal or generic' rather than the 3-anchor which requires 1-2 concrete actions.

2 / 5

Completeness

Both 'what' ('Manage Canvases') and 'when' ('Use when the user wants to interact with Canvas data') are explicitly present, so it is not capped at 3; both sides are vague/circular rather than concrete, which keeps it below 5.

4 / 5

Trigger Term Quality

'Canvas', 'Canvases', and 'Canvas data' are natural terms users would say, but common variations and synonyms (LMS, Instructure, courses, assignments) are missing, matching 'Some relevant keywords but missing common variations or synonyms'.

3 / 5

Distinctiveness Conflict Risk

'Canvas' names a specific product, but the description never clarifies it is the Instructure LMS, so it remains ambiguous with HTML5 canvas / drawing-canvas usages and could still trigger for the wrong skill — 'Somewhat specific but could still overlap'.

3 / 5

Total

12

/

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/canvas/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.