CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

aftership

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

Quality

75%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

Fix and improve this skill with Tessl

tessl review fix ./skills/aftership/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

78%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.

This is a strong, highly actionable integration skill: nearly every instruction is an executable command, the connection lifecycle includes state-based checkpoints and re-polling feedback loops, and the action/proxy tables make the API surface immediately usable. The main weaknesses are minor: a few sentences of skippable platform boilerplate, broken 'Step 2' cross-references, and no progressive disclosure — all content lives in one file with no reference splitting, even though the Membrane setup sections are shared boilerplate a bundle could hold.

Suggestions

Fix the incoherent step numbering: either label 'Searching for actions' as 'Step 2' (and add a matching 'Step 1') or drop the 'skip to Step 2' phrasing entirely, since readers are sent to a section that doesn't exist by that name.

Move the connection-state reference (READY / CLIENT_ACTION_REQUIRED / CONFIGURATION_ERROR handling) and the proxy flag table into a references/ file (e.g. connections.md, proxy.md) and point to them from SKILL.md, keeping the body as a lean overview.

Trim the marketing-flavored opener ('E-commerce businesses of all sizes use AfterShip to improve the post-purchase experience') and the empty 'AfterShip Overview' bullet list down to one factual sentence about what AfterShip exposes (trackings, couriers).

DimensionReasoningScore

Conciseness

The body is mostly lean: install/auth/connect commands, a popular-actions table, and a flag table with little prose around them. Minor over-explanation remains — the opening paragraph ('E-commerce businesses of all sizes use AfterShip to improve the post-purchase experience') and the near-empty 'AfterShip Overview' section list Trackings/Couriers without saying anything actionable. Not a 3 because padding is limited to these few sentences; not a 5 because those sections are clearly trimmable.

4 / 5

Actionability

Every section is copy-paste ready: `npm install -g @membranehq/cli@latest`, `membrane connection ensure "https://www.aftership.com/" --json`, `membrane action run <actionId> --connectionId=... --input '{...}'`, plus concrete flag tables for the proxy and a named action table with keys and descriptions. Common cases (login, connect, search, run, proxy) are each covered by an executable example.

5 / 5

Workflow Clarity

There is a clear sequence (install → login → connection ensure → poll state → search actions → run/proxy) with real checkpoints: poll `--wait` until state leaves `BUILDING`, branch on `READY`/`CLIENT_ACTION_REQUIRED`/`CONFIGURATION_ERROR`, and re-poll after the user authenticates — an explicit feedback loop. Minor gap: the text says 'skip to Step 2' twice but no section is labeled Step 2 (and '1b' has no matching '1a'), leaving the numbering incoherent. Not a 5 because of that broken step numbering and the absence of any verification step after running a mutating action.

4 / 5

Progressive Disclosure

No bundle files exist (references/, scripts/, assets/ are all absent), so everything — including generic Membrane setup (install, login, connection lifecycle states) that applies to any Membrane-based skill — is inlined in a single ~145-line file. Structure within the file is good (clear headers, tables), but there is no one-level-deep reference to split the shared CLI boilerplate from the AfterShip-specific content, matching anchor 3 ('some structure but could be better organized; content that should be separate is inline'). Not a 4 because the proxy flag table and connection-state reference are reference material sitting inline; not a 2 because the file is well-sectioned and easily navigable.

3 / 5

Total

16

/

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 the right structure — a what-clause plus an explicit 'Use when...' trigger — and is unambiguous about its niche. Its weakness is genericness: every capability word ('manage data, records, automate workflows') could apply to any integration, and it omits the domain vocabulary (tracking, shipments, couriers, delivery status) that users and Claude would actually use to recognize when this skill applies.

Suggestions

Replace the generic 'Manage data, records, and automate workflows' with 2-3 concrete AfterShip capabilities, e.g. 'Track shipments across carriers, create and update trackings, and detect couriers from tracking numbers.'

Expand the 'when' clause with natural user phrasings such as 'Use when the user mentions AfterShip, package tracking, shipment status, tracking numbers, or couriers.'

Drop the second 'AfterShip data' repetition and instead name the domain objects (trackings, couriers) to add trigger-term coverage without lengthening the description.

DimensionReasoningScore

Specificity

The description names the domain ("AfterShip integration") but its actions are purely generic: "Manage data, records, and automate workflows" could describe almost any integration and lists no concrete capability such as tracking shipments, detecting couriers, or creating trackings. Not a 3 because it fails the '1-2 concrete actions' bar — no action named is specific to AfterShip.

2 / 5

Completeness

It answers both parts: the 'what' ("AfterShip integration. Manage data, records, and automate workflows") and an explicit 'when' ("Use when the user wants to interact with AfterShip data"). Matches anchor 4 — the 'what' is somewhat vague and the 'when' could name concrete trigger situations; not a 5 because neither part includes concrete trigger phrases like 'track a package' or 'check delivery status'.

4 / 5

Trigger Term Quality

The brand keyword "AfterShip" is the only relevant trigger term and is repeated, but the natural phrases a user would say — package tracking, shipment, tracking number, courier, delivery status, post-purchase — are all missing. Fits the anchor 'Some relevant keywords but missing common variations or synonyms'; not a 4 because keyword coverage beyond the brand name is effectively zero.

3 / 5

Distinctiveness Conflict Risk

Anchoring on a specific named SaaS platform ("AfterShip", "AfterShip data") carves out a clear niche with minimal overlap risk against other skills — no other integration would naturally claim these triggers. Not a 4 because there is no closely related skill family it would collide with; the platform name alone is a distinct trigger.

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