CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

rc-webhooks

Use this skill when consuming RevenueCat webhooks on your backend. Covers authenticating requests (Authorization header, optional HMAC signing), parsing the normalized event schema without breaking on new fields, idempotency via the event id field, every event type, and taking access from a re-read of the customer so CANCELLATION, EXPIRATION, and RENEWAL never grant or revoke the wrong access.

Quality

91%

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

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.

A high-quality, dense skill body: executable code with real security details (constant-time compares, HMAC tolerance), a complete event-decision table, and an explicit verification checklist with feedback loops. Its only weaknesses are mild verbosity in a few paragraphs and a monolithic single-file layout where a reference file for payloads/event details would reduce token load.

Suggestions

Move the three sample JSON payloads and the per-event-type reference table into a references/ file (e.g. references/event-types.md), keeping only the access-relevant decisions inline in SKILL.md to cut always-loaded tokens.

Tighten the longest prose paragraphs (anonymous purchase/login flow, SUBSCRIPTION_EXTENDED row) into shorter bullets so the critical edge-case rules scan faster.

DimensionReasoningScore

Conciseness

Nearly every sentence carries non-obvious domain facts (retry schedule '5, 10, 20, 40, and 80 minutes', grace-period vs account-hold semantics, store-specific quirks) and it assumes Kotlin/Ktor competence without tutorializing. A few long, clause-heavy sentences (e.g., the anonymous-purchase/login paragraph) could be tightened, so it sits just below the lean anchor 5.

4 / 5

Actionability

Fully executable Ktor code: constant-time Authorization compare, HMAC-SHA256 verification with timestamp tolerance, unknown-key-tolerant JSON config, serializable event models, dedup via insertIfAbsent, and a dispatch skeleton — plus an exact behavioral spec for syncFromRevenueCat and three realistic sample payloads. Copy-paste ready with the common cases covered.

5 / 5

Workflow Clarity

Sequenced as Discover → Plan → Execute with a per-event-type decision table, and closed by a 13-item Verification Checklist that acts as explicit validation checkpoints (401 on bad auth, replay no-op, retried EXPIRATION after resubscription leaves access on). Error-recovery feedback loops are spelled out (rollback of the event-ID insert on failed re-read, skip writes from stale request_date_ms, re-read before denying expired access), matching the anchor-5 pattern.

5 / 5

Progressive Disclosure

No bundle files exist, and the single ~300-line file is well organized with clear phase and section headers; the event-type table is decision-critical and reasonably inline, and the one external link ('Full chapter') is clearly signaled. It sits between anchors 3 and 4 — above the midpoint because nothing is buried and structure is good, but the sample-payload section and parts of the event catalog could be split into reference files to shrink the always-loaded SKILL.md.

4 / 5

Total

18

/

20

Passed

Description

92%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 strong description: it states an explicit trigger, then comprehensively enumerates concrete capabilities down to field names (Authorization header, HMAC, event id) and the core design principle (re-read the customer for access decisions). The only gap is a few natural synonyms like 'entitlement' and 'subscription' that users might say when this skill is needed.

DimensionReasoningScore

Specificity

Enumerates concrete, field-level actions across the whole pipeline: 'authenticating requests (Authorization header, optional HMAC signing)', 'parsing the normalized event schema without breaking on new fields', 'idempotency via the event id field', 'every event type', and 'taking access from a re-read of the customer'. This is comprehensive coverage matching the anchor-5 example, not just several actions with gaps.

5 / 5

Completeness

Explicitly answers both: the opening 'Use this skill when consuming RevenueCat webhooks on your backend' gives a concrete trigger, and the rest enumerates exactly what the skill covers (authentication, schema parsing, idempotency, event types, access re-read). Not 4 because the 'when' is explicit and specific, not merely present.

5 / 5

Trigger Term Quality

Good natural-term coverage: 'RevenueCat webhooks', 'backend', 'cancellation', 'expiration', 'renewal', 'idempotency', 'event type' — phrases a user with this need would actually say. A few natural terms are missing, notably 'entitlement(s)' and 'subscription', which users commonly name when troubleshooting access, so it falls short of the comprehensive anchor 5.

4 / 5

Distinctiveness Conflict Risk

'RevenueCat webhooks on your backend' names a clear niche with distinct triggers (RevenueCat, webhook event types, entitlement access); no realistic overlap with other skills, matching the clear-niche anchor.

5 / 5

Total

19

/

20

Passed

Validation

87%

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

Validation — 14 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

metadata_version

'metadata.version' is missing

Warning

metadata_field

'metadata' should map string keys to string values

Warning

Total

14

/

16

Passed

Repository

RevenueCat/ai-toolkit

Path

revenuecat-play-billing/skills/rc-webhooks/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.