CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

chainlink-ccip-skill

Handles Chainlink CCIP requests and never signs or broadcasts. It sends one-node GET diagnosis to chainlink-nop-skill. It sends ACE policy design to chainlink-ace-skill. Pool and message mechanics stay here. It applies to route, token, message-status, and lane lookups, fee estimates, cross-chain transfers and messaging, sender and receiver contracts, extraArgs V3, Fast Transfers, CCT token pools, and CCIP monitoring.

Quality

78%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Medium

Suggest reviewing before use

Fix and improve this skill with Tessl

tessl review fix ./chainlink-ccip-skill/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

65%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 well-structured routing hub with excellent progressive disclosure (verified reference files, one-level-deep, trigger table) and highly concrete guardrails including exact refusal strings and a fill-in preflight template. Its weaknesses are density and assembly: multi-rule run-on sentences with redundant guardrail restatements need tightening, and the operational workflow must be inferred from scattered sections rather than followed as an explicit ordered sequence.

Suggestions

Split the multi-rule run-on sentences (the ~130-word request-handling paragraph and the defensive-receiver Invariant bullet) into short single-rule bullets so each rule is independently readable and cheaper to re-apply.

Deduplicate the never-sign guardrail, which appears in the description, the required footer line, the "Never deploy, register, bridge, transfer, mint, burn, approve" bullet, and the mainnet refusal bullet; one canonical statement plus the exact footer is sufficient.

Add one explicitly numbered end-to-end flow for the most common request (fee estimate, lane/token verification, preflight-block send preparation, post-transfer status monitoring) so the sequence does not have to be synthesized from scattered sections.

DimensionReasoningScore

Conciseness

The body never explains concepts Claude already knows and every line is skill-specific policy, but multi-rule run-on sentences (the ~120-word Gate paragraph, the ~130-word request-handling paragraph, the defensive-receiver Invariant) and repeated restatements of the never-sign guardrail (description, footer line, "Never deploy, register, bridge, transfer, mint, burn, approve", mainnet refusal bullet) leave substantial room to tighten, matching anchor 3 rather than the minor-trimming of anchor 4.

3 / 5

Actionability

Guidance is largely executable: exact refusal string ("I refuse mainnet write artifacts; testnet only."), exact closing footer, a copy-paste preflight template with enumerated fields, concrete freshness URLs, exact ordering rules ("require IRouterClient.isChainSupported(selector) before getFee or ccipSend"), and per-chain facts (Sui manual-exec-only, Canton --canton-config/--indexer); abstract directives like "keep contracts conservative, validated, access-controlled, least-privilege, and small" keep it short of fully copy-paste-ready.

4 / 5

Workflow Clarity

Validation checkpoints do exist (verify lane and token support before any send, resolve every preflight field before a write artifact, quote fees before send preparation), but no explicitly ordered end-to-end sequence is ever presented — the flow (gate, route, load reference, preflight, monitor) must be synthesized from scattered sections, and the numbered Freshness Policy is a source-priority list rather than steps with error recovery, matching anchor 3's implicit-sequence anchor rather than anchor 4's clear sequence.

3 / 5

Progressive Disclosure

A ~65-line overview pairs with a trigger-to-reference table mapping 12 concrete triggers to 12 real files (all verified present in references/), references link only sideways to siblings (one level deep, no nesting), and bulk detail such as the 507-line Solidity examples and 207-line API schemas correctly lives out of the body — matching the clear-overview, well-signaled, one-level-deep anchor.

5 / 5

Total

15

/

20

Passed

Description

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

A specific, well-scoped description that comprehensively lists concrete CCIP capabilities with mostly natural trigger terms and explicit boundary routing to sibling skills. Its weaknesses are mild: the trigger clause uses scope enumeration ("It applies to...") instead of direct "Use when..." phrasing, and it lacks common synonyms like "bridge" for cross-chain movement.

DimensionReasoningScore

Specificity

"route, token, message-status, and lane lookups, fee estimates, cross-chain transfers and messaging, sender and receiver contracts, extraArgs V3, Fast Transfers, CCT token pools, and CCIP monitoring" enumerates a dozen concrete capabilities that comprehensively cover the CCIP domain, matching the comprehensive-coverage anchor rather than the minor-gaps anchor 4.

5 / 5

Completeness

The "what" is clear ("Handles Chainlink CCIP requests... Pool and message mechanics stay here") and a "when" exists via "It applies to route, token... lookups, fee estimates, cross-chain transfers...", which is explicit trigger guidance; however the scope-enumeration phrasing is less explicit than a direct "Use when the user asks for..." clause, so it sits at anchor 4 rather than 5.

4 / 5

Trigger Term Quality

Natural user phrases like "cross-chain transfers", "fee estimates", "message-status", "CCIP monitoring", and "Chainlink CCIP" are present, but common synonyms such as "bridge/bridging" or "send tokens across chains" are missing, matching good-but-not-comprehensive keyword coverage.

4 / 5

Distinctiveness Conflict Risk

The description is tightly scoped to "Chainlink CCIP" and explicitly delegates to "chainlink-nop-skill" and "chainlink-ace-skill", giving a clear niche; the residual overlap is that "cross-chain transfers and messaging" could also match generic bridge/interop skills when the user does not name CCIP, keeping it at mostly-distinct rather than minimal-conflict.

4 / 5

Total

17

/

20

Passed

Validation

100%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository

smartcontractkit/chainlink-agent-skills

Path

chainlink-ccip-skill/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.