CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

chainlink-vrf-skill

Help developers integrate Chainlink VRF into smart contracts. Use for consumer contract generation with VRFConsumerBaseV2Plus, subscription setup and funding (LINK or native), keyHash and gas lane selection, coordinator address lookup and debugging VRF integrations. Trigger on any mention of VRF, verifiable randomness, on-chain random number generation, requestRandomWords, fulfillRandomWords, VRF subscription, VRF coordinator, keyHash, or provably fair randomness in a smart contract, even if the user does not say 'VRF' explicitly.

75

Quality

94%

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

SKILL.md
Quality
Evals
Security

Quality

Content

88%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 dense, well-structured router: a progressive-disclosure routing table, a precise legacy-pattern guard with named signals, explicit safety defaults including a verbatim verification instruction, and a numbered freshness workflow with stop conditions and fallbacks. The only notable issues are the repeated raffle/security reference instruction across rows and prose, and a referenced templates/starter-kit path that is absent from the bundle.

Suggestions

State the raffle/paid-draw → security-and-best-practices.md rule once (e.g., as a global Safety Default or a single note under the routing table) instead of repeating it in four table rows and twice in prose, freeing tokens without losing the requirement.

Ship the templates/starter-kit/ directory (README, consumer, deploy script, test) referenced in the routing table, or drop the template row and rely solely on the already well-specified inline canonical fallback so no referenced path dangles.

Trim the long compound sentences in the routing table (e.g., the starter-kit row mixes load, adapt, return-format, and fallback instructions) by moving the fallback prescription into the Safety Defaults section it duplicates.

DimensionReasoningScore

Conciseness

The body is dense and assumes Claude's competence — it never explains what VRF or a smart contract is — but the clause 'For any raffle, lottery, paid draw, or bounded winner selection, also load and follow security-and-best-practices.md' is repeated in four routing-table rows and twice more in prose, which is redundant token spend that could be stated once. It is not a 3 because there is no padding or explanation of already-known concepts.

4 / 5

Actionability

Guidance is fully executable for an instruction-only skill: exact API shape ('VRFV2PlusClient.RandomWordsRequest with extraArgs encoded by _argsToBytes(ExtraArgsV1({nativePayment: ...}))'), exact types ('Subscription IDs are uint256, never uint64'), a verbatim verification instruction to emit beside live values, exact fallback URLs (docs.chain.link/vrf/llms.txt) and header behavior, and a completely specified canonical inline integration fallback. No steps are missing for the common cases, so it meets the 5 rather than the 4 anchor.

5 / 5

Workflow Clarity

The Freshness Policy is a numbered 7-step sequence with explicit stop conditions ('Stop when the page answers. Fetch at most three pages') and an error-recovery fallback (.md fetch fails or is thin → Context7, ask for the missing fact only), and Safety Default 2 is an explicit verify-before-deploy checkpoint. Checkpoints and feedback loops are explicit rather than mostly present, fitting the 5 anchor.

5 / 5

Progressive Disclosure

The body is a lean router over seven one-level-deep references/ files that all resolve, with in-body anchors (e.g. '#unbiased-winner-indices', '#paid-raffle-safety-contract') matching real headings in security-and-best-practices.md. However, the routing table points to templates/starter-kit/README.md, which does not exist in the bundle — a dangling path that the inline fallback mitigates but does not fix, so it falls just short of the 5 anchor; it is well above the 3 anchor because everything else is clearly signaled and one level deep.

4 / 5

Total

18

/

20

Passed

Description

100%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 names concrete capabilities in third person, provides an explicit 'Use for'/'Trigger on' clause with concrete keywords, and covers both what and when comprehensively. Trigger terms combine natural synonyms with API-level names, and the tight VRF niche keeps conflict risk minimal.

DimensionReasoningScore

Specificity

Lists five concrete, distinct capabilities — 'consumer contract generation with VRFConsumerBaseV2Plus, subscription setup and funding (LINK or native), keyHash and gas lane selection, coordinator address lookup and debugging VRF integrations' — which is comprehensive coverage of the skill's domain. It exceeds the 4 anchor because there are no minor gaps in the action inventory.

5 / 5

Completeness

Explicitly answers both 'what' (the five named capabilities) and 'when' via an explicit 'Use for...' clause and a 'Trigger on any mention of...' clause with concrete trigger phrases. The 'when' is fully explicit rather than weakly implied, matching the 5 anchor exactly.

5 / 5

Trigger Term Quality

Trigger terms include both natural synonyms ('verifiable randomness', 'on-chain random number generation', 'provably fair randomness') and API-level names users would paste ('requestRandomWords', 'fulfillRandomWords', 'keyHash'), plus explicit coverage when the user does not say 'VRF'. No commonly used natural phrasing is missing, so it fits the 5 rather than the 4 anchor.

5 / 5

Distinctiveness Conflict Risk

'Chainlink VRF into smart contracts' is a clear niche and the triggers (VRF coordinator, keyHash, requestRandomWords) are specific to it, so overlap with other skills is minimal. It is not a 4 because the trigger set would not plausibly fire a different skill.

5 / 5

Total

20

/

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

relative_links

Relative link issues: 2 missing, 1 deeper-than-1-level

Warning

Total

15

/

16

Passed

Repository

smartcontractkit/chainlink-agent-skills

Path

chainlink-vrf-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.