CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

connect-apps

Connect an administrator-enabled SaaS app for a user with a one-time OAuth consent link.

Quality

73%

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-seed/connect-apps/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 lean, highly actionable skill body: it provides an executable mint command, exact widget directives and URLs, explicit do/don't handling for error cases (oauth_not_configured, URL construction), and clear policy guardrails. The main weaknesses are mild: the branch logic between Composio and direct OAuth is not explicitly sequenced, and a few double-negative policy sentences take re-reading.

Suggestions

Specify what to look for in the 'GET /v1/composio/toolkits' response to determine 'when available' (e.g. which field or status indicates Composio is enabled) so the first decision point is executable.

Number the main flow explicitly (1. Check Composio availability → 2. If unavailable and the token is set, mint the link → 3. Relay connectUrl → 4. Return after consent) so the branching sequence is unambiguous.

Rewrite the double-negative policy sentences into direct form (e.g. 'An empty direct OAuth list means no direct links — it says nothing about Composio') to cut re-reading cost.

DimensionReasoningScore

Conciseness

The body is dense, product-specific operational guidance with essentially no explanation of concepts Claude already knows — every section adds unknown information (endpoints, directives, policy constraints). It falls short of 5 because a few sentences are convoluted double-negatives that could be tightened, e.g. 'An empty direct OAuth list or a native oauth_not_configured error does not describe Composio availability' and 'this does not establish that every access path is unavailable'.

4 / 5

Actionability

Concrete, mostly executable guidance throughout: a copy-paste-ready curl command ('curl -sS -X POST "$AGENT_API_URL/v1/connectors/oauth/consent/mint" -H "X-Agent-Capability: $AGENT_OAUTH_CONSENT_TOKEN" ...'), an exact widget directive ('::link-slack-account{}'), and an exact settings path ('/?view=settings'). Not 5 because the opening step 'Check Composio availability through GET /v1/composio/toolkits' never specifies how to interpret the response to decide 'when available', and the '<configured-provider>' placeholder leaves a small gap for the common case.

4 / 5

Workflow Clarity

The sequence is reconstructable and error checkpoints are present: check Composio availability first, prefer its flow when available, otherwise mint a single-use link, relay the exact connectUrl, and on 'oauth_not_configured' do not retry that path or re-send old links. It is not 5 because the branching flow is never explicitly enumerated — steps are spread across paragraphs and bullets (e.g. 'Company bot installation must be completed first' is buried mid-paragraph) — leaving minor sequencing gaps.

4 / 5

Progressive Disclosure

The skill is under 50 lines, has no bundle files, and needs none — the two well-labeled sections ('## Connecting SaaS apps', '## Connect a personal Slack account') cleanly split the direct-OAuth flow from the personal Slack flow. Per the rubric's simple-skill guideline, this earns a 5 with well-organized sections alone.

5 / 5

Total

17

/

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 states a single concrete capability clearly and in third person, but it is a one-action description with no 'when to use it' trigger clause and thin natural-keyword coverage. It communicates the core function without fluff, yet a user or Claude deciding between skills would lack the trigger cues needed to select it reliably.

Suggestions

Append an explicit trigger clause, e.g. 'Use when a user asks to connect, link, or integrate a SaaS app or reports that an app connection or OAuth consent is needed' — this directly addresses completeness (capped at 3) and trigger coverage.

Add natural synonyms and concrete examples users would say, such as 'connect/link an account or integration (e.g. Slack)' — users rarely say 'SaaS app' or 'OAuth consent link' verbatim.

Enumerate the companion actions the skill actually covers (checking Composio availability via the toolkits endpoint, offering the personal Slack linking widget) so the action list is more comprehensive and distinctive.

DimensionReasoningScore

Specificity

The description names the domain and one concrete action — 'Connect an administrator-enabled SaaS app for a user with a one-time OAuth consent link' — with a specific mechanism ('one-time OAuth consent link'). It is not 4 because only a single action is described rather than 'several specific actions' (no companion capabilities like Slack account linking or availability checking are listed), and not 2 because the action named is concrete, not generic.

3 / 5

Completeness

It clearly answers 'what' (connect an admin-enabled SaaS app via a one-time OAuth consent link) but has no 'when' — there is no 'Use when...' clause or equivalent explicit trigger guidance, which caps this dimension at 3 per the rubric guidelines. 'For a user' only weakly implies a usage context.

3 / 5

Trigger Term Quality

Relevant keywords exist ('connect', 'SaaS app', 'OAuth', 'consent link') but common user phrasings are missing — no 'link account', 'integration', 'sign in', or concrete app names users would naturally say. This matches the anchor 'Some relevant keywords but missing common variations or synonyms' and falls short of anchor 4's 'good keyword coverage'.

3 / 5

Distinctiveness Conflict Risk

The niche is fairly distinct — 'administrator-enabled', 'one-time OAuth consent link' — with only minor overlap risk against generic connector/integration skills. Not 5 because there are no explicit trigger phrases to distinguish it from other app-connection skills and 'Connect ... SaaS app' is still a broad action other skills could claim.

4 / 5

Total

13

/

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

yc-software/qm

Path

skills-seed/connect-apps/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.