CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

civicrm

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

Quality

66%

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/civicrm/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 body delivers strong, executable Membrane CLI guidance with a well-handled connection state machine, but roughly a third of it is a padded entity-name list that adds no actionable value, and there is a broken 'Step 2' cross-reference. Moving the entity catalog and action tables to a reference file would fix both the conciseness and progressive disclosure issues.

Suggestions

Delete or drastically condense the 77-line entity bullet list — or move it to a references/entities.md file with a one-line pointer, since the body currently spends ~75 lines naming entities with zero guidance on how to use them.

Fix the broken cross-references: the text says 'skip to **Step 2**' twice but no Step 1/Step 2 headings exist — either number the Connecting steps explicitly or rewrite the references to point at the actual section names.

Add a brief validation step before destructive actions (e.g. verify the contact with `get-contact` before `delete-contact`) and show an example value for the `--tenant` login flag so the commands are fully copy-paste ready.

DimensionReasoningScore

Conciseness

The ~77-line flat bullet list of entity names ('Contact', 'Entity Contribution', etc.) closing with the vacuous 'Use action names and parameters as needed' is a large padded section with no actionable content, and the intro ('CiviCRM is an open source CRM used by non-profit...') explains a concept Claude already knows. This matches 'Noticeably verbose; several unnecessary explanations or padded sections' — the entity list alone is roughly a third of the body — rather than level 3's 'some unnecessary explanation'.

2 / 5

Actionability

Concrete, largely executable CLI commands appear throughout: `npm install -g @membranehq/cli@latest`, `membrane connection ensure "https://civicrm.org/" --json`, `membrane action run <actionId> --connectionId=... --input '{...}'`, plus a proxy flags table and a 20-row actions table with keys. It is not level 5 because of minor gaps: `membrane login --tenant` shows no example value, and the entity overview provides no usable parameters or examples.

4 / 5

Workflow Clarity

The connection setup sequence has explicit state-based checkpoints and feedback loops — poll with `--wait` while `BUILDING`, handle `CLIENT_ACTION_REQUIRED` by showing `uiUrl` and re-polling, and check the `error` field on `CONFIGURATION_ERROR`. It is not level 5 because the text twice says 'skip to **Step 2**' but no Step 2 (or Step 1) heading exists, and the install → authenticate → connect → act sequence is implied by section order rather than explicitly numbered. The destructive-operation cap does not apply since the prescribed workflow is connection setup, not batch/destructive execution.

4 / 5

Progressive Disclosure

There are no bundle files at all, and the 77-line entity list plus the full actions and proxy-flag tables are inlined in a ~235-line SKILL.md where a leaner body with a separate entities/actions reference file would serve better. Section headers are reasonable, but 'content that should be separate is inline' places this at level 3 rather than level 4's 'most content is appropriately placed'.

3 / 5

Total

13

/

20

Passed

Description

61%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 and is anchored to a distinct niche product, but the capability statement is vague. Replacing generic phrases like 'Manage data, records, and automate workflows' with concrete CiviCRM actions (contacts, contributions, events, memberships) would improve both specificity and trigger-term coverage.

Suggestions

Replace the generic 'Manage data, records, and automate workflows' with concrete CiviCRM actions, e.g. 'Manage contacts, contributions, events, memberships, and activities in CiviCRM'.

Add natural trigger terms users would actually say, such as 'donations', 'non-profit CRM', 'constituents', or 'CiviCRM records', to improve trigger-term coverage.

Make the 'Use when' clause more specific: 'Use when the user wants to interact with CiviCRM data' could become 'Use when the user mentions CiviCRM, contacts, contributions, donations, or non-profit CRM records'.

DimensionReasoningScore

Specificity

"Manage data, records, and automate workflows" names the domain (CiviCRM) but the actions are generic — no concrete verbs or objects like contacts, contributions, events, or memberships. It sits at the 'Names the domain but actions are minimal or generic' anchor, below level 3 because none of the listed actions are concrete, and above level 1 because the domain is clearly named.

2 / 5

Completeness

It has both a 'what' ("CiviCRM integration. Manage data, records, and automate workflows") and an explicit 'when' ("Use when the user wants to interact with CiviCRM data"), matching 'Has both what and when; when could be more explicit or specific'. It is not level 5 because neither the what nor the when names concrete capabilities or trigger phrases, and not level 3 because the 'Use when' clause is explicitly present rather than missing or weakly implied.

4 / 5

Trigger Term Quality

"CiviCRM" is a strong natural trigger term, but the remaining keywords ("data", "records", "workflows") are generic, and common variations a user would actually say — contacts, donations, memberships, events, non-profit CRM — are absent. This matches 'Some relevant keywords but missing common variations or synonyms', not level 4 which requires good keyword coverage.

3 / 5

Distinctiveness Conflict Risk

CiviCRM is a clearly delineated niche product and the description is anchored on that name, giving it distinct triggers and minimal overlap risk with other skills — matching the level 5 anchor. The generic 'Manage data, records' tail does not create meaningful conflict risk.

5 / 5

Total

14

/

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