CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

blackbaud

Blackbaud integration. Manage Constituents, Opportunities, Funds, Campaigns. Use when the user wants to interact with Blackbaud data.

Quality

68%

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

Quality

Content

56%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 operational core is strong — executable CLI commands, a well-branched connection state machine, and sensible best practices. It is dragged down by a large volume of low-value inline inventory (an unannotated 75-entity list and a table whose descriptions all read "No description") and by broken internal step references.

Suggestions

Move the entity inventory and 'Popular actions' catalog into a separate reference file — or drop them entirely, since they are discoverable via `membrane action list --intent` — removing ~110 lines of padding from the body.

Populate or remove the 'No description' column: twenty rows reading "No description" cost tokens while conveying nothing.

Fix the workflow numbering: replace "#### 1b" and the dangling "skip to Step 2" references with a coherent, explicitly numbered sequence, and add brief guidance on validating action-run output and handling run errors.

DimensionReasoningScore

Conciseness

Roughly 110 of ~250 lines are padding: a ~75-item bare entity-name bullet list capped only by "Use action names and parameters as needed", and a 20-row 'Popular actions' table whose Description column reads "No description" on every row. The install/auth/connection/proxy sections are lean, but several padded sections and the company-background paragraph match anchor 2's 'noticeably verbose; several unnecessary explanations or padded sections'.

2 / 5

Actionability

Concrete, copy-paste-ready commands throughout: "npm install -g @membranehq/cli@latest", "membrane connection ensure \"https://blackbaud.com\" --json", "membrane action run <actionId> --connectionId=CONNECTION_ID --input '{\"key\": \"value\"}' --json", plus a flags table for proxy requests. Minor gaps keep it from anchor 5: the text says "skip to Step 2" but no Step 2 is ever defined, and "npx @membranehq/cli connection get" is inconsistent with the installed "membrane" binary.

4 / 5

Workflow Clarity

The install → login → connection ensure → poll → discover actions → run → proxy-fallback sequence is clear, with genuinely good checkpoint logic: explicit state branches (READY / CLIENT_ACTION_REQUIRED with clientAction fields / CONFIGURATION_ERROR) and a "poll again after the user completes the action" retry loop. Minor gaps: the broken step numbering ("#### 1b" with no Step 1, references to a nonexistent "Step 2") and no guidance on validating or handling errors in action-run output.

4 / 5

Progressive Disclosure

No bundle files exist (references/, scripts/, assets/ are all absent), so everything lives in SKILL.md with reasonable section headers. However, ~110 lines of inline API inventory (the entity dump and the 'Popular actions' table) is content that clearly belongs in a separate reference file or could be dropped in favor of `membrane action list`, matching anchor 3's '[200 lines of API reference that could be in a separate file]'.

3 / 5

Total

13

/

20

Passed

Description

66%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 compact, distinct description that correctly pairs a what-statement with an explicit 'Use when' clause. Its weaknesses are the single generic verb "Manage" and a thin trigger vocabulary that omits the most common Blackbaud synonyms (gifts, donors, fundraising, Raiser's Edge).

Suggestions

Replace the generic verb with specific actions, e.g. "Create, update, and list constituents, opportunities, funds, campaigns, and gifts" to raise specificity.

Add natural trigger synonyms users actually say — "gifts", "donations", "donor records", "fundraising", "Raiser's Edge / RE NXT" — to the description and trigger clause.

Make the 'Use when' clause concrete rather than circular: e.g. "Use when the user mentions Blackbaud, constituents, donors, donations, or fundraising records."

DimensionReasoningScore

Specificity

"Manage Constituents, Opportunities, Funds, Campaigns" names the domain and four concrete entity groups, but the only verb is the generic "Manage" — no specific actions like create, update, list, or get are stated. It goes beyond anchor 2 (which names only a domain) but falls short of anchor 4's several specific actions.

3 / 5

Completeness

The 'what' is clear ("Blackbaud integration. Manage Constituents, Opportunities, Funds, Campaigns") and an explicit 'when' clause is present ("Use when the user wants to interact with Blackbaud data"). Not anchor 5 because the trigger clause restates the domain generically instead of naming concrete trigger phrases; not 3 because 'when' is explicitly stated rather than merely implied.

4 / 5

Trigger Term Quality

"Blackbaud", "Constituents", "Opportunities", "Funds", "Campaigns" are natural nouns a Blackbaud user would say, but common variations are missing — notably "gifts", "donors", "donations", "fundraising", and "Raiser's Edge / RE NXT". This matches 'some relevant keywords but missing common variations or synonyms' rather than anchor 4's 'good keyword coverage, a few natural terms missing', since several high-frequency terms are absent.

3 / 5

Distinctiveness Conflict Risk

"Blackbaud" is a unique vendor/product name and the entity nouns (Constituents, Opportunities, Funds, Campaigns) sit squarely in its niche, so it is clearly distinguishable from any other skill and unlikely to trigger the wrong one.

5 / 5

Total

15

/

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