CtrlK
BlogDocsLog inGet started
Tessl Logo

expensify

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

54

Quality

61%

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

Quality

Content

61%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 practical, command-rich integration guide with a decent connection-state workflow, but it is padded with background Claude already knows, has inconsistent step numbering, and lacks validation loops for action execution.

Suggestions

Remove the opening paragraph explaining what Expensify is and trim motivational padding ('focus on the integration logic', 'burn less tokens') to respect the context budget.

Fix the step numbering — replace the dangling 'Skip to Step 2' and '1b' with a clearly labeled, sequential connect-then-run workflow.

Add a validation/error-recovery loop after running actions (check the response for errors, retry or surface clientAction as needed) so batch or mutating operations have a feedback checkpoint.

DimensionReasoningScore

Conciseness

The body is mostly efficient with concrete command blocks, but it opens by explaining what Expensify is ('a business expense management app that automates expense reports...') and includes soft padding ('so you can focus on the integration logic rather than auth plumbing', 'burn less tokens') that Claude does not need, matching the mostly-efficient-but-could-be-tightened anchor.

3 / 5

Actionability

It provides many concrete, executable commands (install, login, connection ensure, action list/run, request proxy) plus a flags table, but relies on placeholders like CONNECTION_ID, QUERY, and <actionId> that the agent must resolve, leaving minor gaps versus fully copy-paste-ready examples.

4 / 5

Workflow Clarity

The connect-to-Expensify flow has a sequence with a polling feedback loop and explicit state handling (READY / CLIENT_ACTION_REQUIRED / CONFIGURATION_ERROR), but the labels are incoherent (a dangling 'Skip to Step 2' with no Step 2, a '1b' with no '1a') and there is no post-run validation or error-recovery loop for executed actions.

3 / 5

Progressive Disclosure

The skill is a single well-organized file with clear section headers (Working with Expensify, Authentication, Connecting, Popular actions, Best practices) and no nested references, and no bundle files exist to split further; it sits just below 5 only because some reference-style material (the proxy flags table, action discovery) is inlined rather than factored out.

4 / 5

Total

14

/

20

Passed

Description

62%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 clearly identifies the Expensify niche and includes an explicit 'Use when' trigger, but its capability list is generic and it lacks the natural synonyms (expense reports, receipts, reimbursements) that would make triggers more robust.

Suggestions

Replace generic verbs with concrete Expensify capabilities, e.g. 'Create and approve expense reports, track receipts, and process reimbursements.'

Expand the trigger clause with natural synonyms, e.g. 'Use when the user mentions expense reports, receipts, reimbursements, or Expensify data.'

Use third-person action verbs consistently to keep the capability list specific rather than abstract.

DimensionReasoningScore

Specificity

It names the domain (Expensify) and a couple of actions ('Manage data, records, and automate workflows'), but the actions are generic rather than concrete capabilities like creating expense reports or tracking receipts, matching the anchor for naming a domain with 1-2 actions that aren't comprehensive.

3 / 5

Completeness

It provides both a 'what' ('Expensify integration. Manage data, records, and automate workflows.') and a 'when' ('Use when the user wants to interact with Expensify data.'), but neither is sharply specific, matching the anchor where both are present yet the 'when' could be more explicit.

4 / 5

Trigger Term Quality

It includes the natural keyword 'Expensify' and 'interact with Expensify data', but misses common variations and synonyms a user would say (expense reports, receipts, reimbursements, expenses), fitting the anchor of some relevant keywords missing common variations.

3 / 5

Distinctiveness Conflict Risk

Naming a specific app ('Expensify integration', 'interact with Expensify data') gives it a clear niche with minimal conflict risk, though the generic action phrasing ('manage data, records') keeps it just below a fully distinct, trigger-rich description.

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

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