Blackbaud integration via Apideck's CRM unified API — same methods work across every connector in CRM, switch by changing `serviceId`. Use when the user wants to read, write, or search contacts, companies, leads, opportunities, activities, and pipelines in Blackbaud. Routes through Apideck with serviceId "blackbaud".
87
86%
Does it follow best practices?
Impact
—
No eval scenarios have been run
Passed
No known issues
Quality
Discovery
100%Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.
This is a strong skill description that clearly identifies the specific platform (Blackbaud), the integration mechanism (Apideck CRM unified API), concrete actions (read, write, search), and specific entity types. It includes an explicit 'Use when' clause with natural trigger terms and is highly distinctive due to the platform-specific naming. The description is concise yet comprehensive.
| Dimension | Reasoning | Score |
|---|---|---|
Specificity | Lists multiple specific concrete actions and entities: 'read, write, or search contacts, companies, leads, opportunities, activities, and pipelines in Blackbaud.' Also mentions technical details like switching by changing `serviceId` and routing through Apideck. | 3 / 3 |
Completeness | Clearly answers both 'what' (Blackbaud integration via Apideck's CRM unified API for reading, writing, searching various CRM entities) and 'when' ('Use when the user wants to read, write, or search contacts, companies, leads, opportunities, activities, and pipelines in Blackbaud'). | 3 / 3 |
Trigger Term Quality | Includes strong natural keywords users would say: 'Blackbaud', 'contacts', 'companies', 'leads', 'opportunities', 'activities', 'pipelines', 'CRM', 'Apideck'. These cover the domain well and match what users would naturally mention. | 3 / 3 |
Distinctiveness Conflict Risk | Highly distinctive — specifically targets Blackbaud via Apideck with serviceId 'blackbaud'. The combination of the specific platform (Blackbaud), the integration layer (Apideck), and the serviceId makes it very unlikely to conflict with other CRM skills unless there are other Blackbaud-specific skills. | 3 / 3 |
Total | 12 / 12 Passed |
Implementation
72%Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.
This is a well-structured connector skill with strong progressive disclosure and actionable code examples. Its main weaknesses are marketing-style verbosity (the portability section and activation triggers) and a workflow that could be more explicitly sequenced, especially given the beta status and the need to verify coverage before making calls.
Suggestions
Remove or drastically shorten the 'Portable across 21 CRM connectors' section — the portability point is already made in the intro and the code example showing serviceId swapping could be a one-liner note.
Restructure the implicit workflow (verify coverage → call unified API → handle UnsupportedOperationError → fall back to proxy) as an explicit numbered sequence with validation checkpoints.
Trim the 'When to use this skill' section to 1-2 lines — Claude doesn't need detailed activation trigger explanations.
| Dimension | Reasoning | Score |
|---|---|---|
Conciseness | The skill contains some unnecessary verbosity — the 'Portable across 21 CRM connectors' section is marketing-style explanation that Claude doesn't need, and phrases like 'This is the compounding advantage of using Apideck over integrating Blackbaud directly' are filler. The 'When to use this skill' section also over-explains activation triggers. However, the core content is reasonably focused. | 2 / 3 |
Actionability | Provides fully executable TypeScript code for listing contacts, a concrete curl command for verifying coverage, and a complete proxy API escape hatch with real headers. The serviceId, auth type, and setup steps are all specific and copy-paste ready. | 3 / 3 |
Workflow Clarity | There's an implicit workflow (check coverage → use unified API → fall back to proxy if unsupported), but it's not presented as a clear sequenced process with validation checkpoints. The beta caveat mentions verifying coverage but doesn't provide a feedback loop for handling failures beyond referencing another skill. | 2 / 3 |
Progressive Disclosure | Excellent progressive disclosure — the skill provides a concise overview with well-signaled one-level-deep references to SDK skills, best practices, connector coverage, and the OpenAPI spec. The 'See also' section is clean and navigable. | 3 / 3 |
Total | 10 / 12 Passed |
Validation
81%Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.
Validation — 9 / 11 Passed
Validation for skill structure
| Criteria | Description | Result |
|---|---|---|
metadata_field | 'metadata' should map string keys to string values | Warning |
frontmatter_unknown_keys | Unknown frontmatter key(s) found; consider removing or moving to metadata | Warning |
Total | 9 / 11 Passed | |
9e04d86
Table of Contents
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.