CtrlK
BlogDocsLog inGet started
Tessl Logo

freshsales

Freshworks CRM 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 Freshworks CRM. Routes through Apideck with serviceId "freshsales".

75

Quality

71%

Does it follow best practices?

Impact

No eval scenarios have been run

SecuritybySnyk

Passed

No known issues

Optimize this skill with Tessl

npx tessl skill review --optimize ./connectors/freshsales/SKILL.md
SKILL.md
Quality
Evals
Security

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 CRM platform (Freshworks/Freshsales), the integration mechanism (Apideck unified API), the concrete actions supported (read, write, search), and the specific entities involved (contacts, companies, leads, etc.). It includes an explicit 'Use when' clause with natural trigger terms and is highly distinctive due to the product-specific naming.

DimensionReasoningScore

Specificity

Lists multiple specific concrete actions: 'read, write, or search contacts, companies, leads, opportunities, activities, and pipelines'. Also specifies the integration mechanism (Apideck unified API, serviceId).

3 / 3

Completeness

Clearly answers both 'what' (Freshworks CRM integration via Apideck unified API for reading, writing, searching CRM entities) and 'when' (explicit 'Use when the user wants to read, write, or search contacts, companies, leads, opportunities, activities, and pipelines in Freshworks CRM').

3 / 3

Trigger Term Quality

Includes strong natural keywords users would say: 'Freshworks CRM', 'contacts', 'companies', 'leads', 'opportunities', 'activities', 'pipelines', 'Freshsales', 'Apideck'. Good coverage of both product names and CRM entity types.

3 / 3

Distinctiveness Conflict Risk

Highly distinctive — specifically targets Freshworks CRM / Freshsales via Apideck with a specific serviceId. The mention of 'serviceId freshsales' and the specific product name makes it very unlikely to conflict with other CRM skills unless there are other Freshworks-specific skills.

3 / 3

Total

12

/

12

Passed

Implementation

42%

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

This skill excels at progressive disclosure and navigation but suffers from excessive marketing/promotional content that inflates token usage without adding instructional value. The actionable content is limited to a single list-contacts example, with most real guidance delegated to other skills. The skill would benefit from trimming promotional language and adding more concrete examples of common Freshworks CRM operations.

Suggestions

Remove or drastically shorten the 'Portable across 21 CRM connectors' section — the portability point is already made in the intro and doesn't need a code example and paragraph of marketing copy.

Add 2-3 more concrete code examples for common operations (e.g., creating a contact, searching leads, listing opportunities) rather than delegating everything to SDK skills.

Trim the 'When to use this skill' section to 1-2 lines — Claude doesn't need detailed activation criteria explained.

Add a brief error handling example showing what happens when a method isn't supported and how to handle UnsupportedOperationError, rather than just linking to another skill.

DimensionReasoningScore

Conciseness

Significant verbosity throughout. The 'Portable across 21 CRM connectors' section repeats the portability pitch already stated in the intro. Marketing language like 'compounding advantage' and explanations of what Apideck does (auth, pagination, rate limiting) are things Claude doesn't need explained. The 'When to use this skill' section over-explains activation criteria. Much of this content is promotional rather than instructional.

1 / 3

Actionability

The minimal TypeScript example and curl commands are concrete and executable, which is good. However, the skill mostly delegates to other skills for actual method surfaces, parameters, and pagination. Key operations like creating/updating contacts, searching leads, or managing opportunities have no examples. The proxy API example is incomplete with a placeholder URL.

2 / 3

Workflow Clarity

There's a reasonable implicit workflow: set up auth → verify coverage → make API calls → use proxy as fallback. However, there are no explicit validation checkpoints, no error handling examples, and no feedback loops for when coverage checks fail or API calls return errors. The coverage verification step is good but lacks guidance on interpreting results.

2 / 3

Progressive Disclosure

Excellent progressive disclosure with clear one-level-deep references to SDK skills, best practices, connector coverage, OpenAPI specs, and external docs. The overview stays at the right level and signposts where to find detailed information. Navigation links are well-organized in the 'See also' section.

3 / 3

Total

8

/

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.

Validation9 / 11 Passed

Validation for skill structure

CriteriaDescriptionResult

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

Repository
apideck-libraries/api-skills
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.