CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

connectwise-psa

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

Quality

72%

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/connectwise-psa/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.

The body is a well-organized, largely copy-paste-ready operational guide: concrete CLI commands, a clear connection lifecycle with explicit state handling and polling, a useful actions table, and a proxy fallback with documented flags. The main weaknesses are minor: two dangling references to an undefined "Step 2", generic placeholder examples for running actions, and the action table being borderline content for a separate reference file. Overall a strong, executable skill body.

Suggestions

Fix the two dangling "skip to **Step 2**" references by either defining a numbered Step 2 (e.g. "### Step 2: Search for actions") or replacing them with a direct link to the "Searching for actions" section.

Add one worked end-to-end example, e.g. membrane action run list-tickets --connectionId=<id> --json, so the run path is fully concrete rather than placeholder-only.

DimensionReasoningScore

Conciseness

The body is dominated by executable commands and dense tables rather than prose, with only minor over-explanation (the opening paragraph on what Connectwise PSA is and "so you can focus on the integration logic rather than auth plumbing"). This matches anchor 4 ("Efficient; minor instances of over-explanation that could be trimmed") and is well above anchor 3's "several unnecessary explanations".

4 / 5

Actionability

Nearly all guidance is copy-paste ready: "npm install -g @membranehq/cli@latest", "membrane connection ensure \"https://www.connectwise.com/...\" --json", the proxy flags table, and a popular-actions table with exact keys. It stops short of anchor 5 because the run examples remain generic ("<actionId>", "--input '{\"key\": \"value\"}'") with no worked end-to-end example such as running list-tickets against a real connection id.

4 / 5

Workflow Clarity

The install → login → connection → search → run → proxy fallback sequence is clear, and the connection lifecycle has genuine checkpoints (poll with --wait, branch on READY / CLIENT_ACTION_REQUIRED with its clientAction fields / CONFIGURATION_ERROR, then re-poll). It is anchor 4 rather than 5 because "skip to **Step 2**" is referenced twice but no Step 2 is defined anywhere, and there is no guidance on verifying or handling errors after running an action.

4 / 5

Progressive Disclosure

There are no bundle files, and for a ~165-line skill the single-file structure is appropriate: clean section headers, no buried or nested references, and nothing that clearly belongs in a separate file except arguably the 21-row action table. This matches anchor 4 ("Good structure; most content is appropriately placed; minor organization gaps") rather than anchor 3, whose example is 200 lines of inline API reference.

4 / 5

Total

16

/

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 names the target product and includes an explicit "Use when" clause, giving it acceptable completeness and distinctiveness. However, the capability statement is generic ("Manage data, records, and automate workflows") and trigger coverage relies solely on the product name, missing the natural vocabulary (tickets, companies, MSP, service desk) users would use. A rewrite listing 2-3 concrete operations plus those trigger terms would lift it substantially.

Suggestions

Replace "Manage data, records, and automate workflows" with concrete operations, e.g. "List, create, and update service tickets, companies, contacts, projects, opportunities, and time entries in Connectwise PSA".

Broaden the trigger clause to include natural variations: "Use when the user mentions Connectwise PSA, ConnectWise Manage, tickets, service desk, or MSP operations".

State the extensibility explicitly in the description (e.g. "...or send custom requests to the Connectwise API") so users with unsupported use cases know the skill still applies.

DimensionReasoningScore

Specificity

"Manage data, records, and automate workflows" names the Connectwise PSA domain but the actions are entirely generic ("manage", "automate workflows") with no concrete operations like listing tickets, companies, or time entries. This matches anchor 2 ("Names the domain but actions are minimal or generic") and falls short of anchor 3, which requires 1-2 concrete actions.

2 / 5

Completeness

Both parts are explicitly stated: the what ("Manage data, records, and automate workflows") and the when ("Use when the user wants to interact with Connectwise PSA data"), so it clears the anchor-3 cap for a missing trigger clause. It sits at anchor 4 rather than 5 because the what is generic and the when is near-circular (it restates the product name rather than giving concrete trigger phrases).

4 / 5

Trigger Term Quality

"Connectwise PSA" is the one strong natural trigger (used twice), but common variations users would actually say are missing: "ConnectWise Manage", "service tickets", "service desk", "MSP", "billing". Some relevant keywords exist but synonyms and variations are absent, matching anchor 3 rather than anchor 4's "good keyword coverage".

3 / 5

Distinctiveness Conflict Risk

"Connectwise PSA" pins a clear niche with minimal conflict risk against unrelated skills. It is anchor 4 rather than 5 because the generic middle sentence ("Manage data, records, and automate workflows") could overlap with other app-integration skills built on the same integration pattern.

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/connectwise-psa/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.