Implement Customer.io rate limiting and backoff. Use when handling high-volume API calls, implementing retry logic, or hitting 429 errors. Trigger: "customer.io rate limit", "customer.io throttle", "customer.io 429", "customer.io backoff", "customer.io too many requests".
80
77%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Passed
No known issues
Optimize this skill with Tessl
npx tessl skill review --optimize ./plugins/saas-packs/customerio-pack/skills/customerio-rate-limits/SKILL.mdQuality
Discovery
89%Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.
This is a well-structured skill description with strong trigger terms and clear 'when' guidance specific to Customer.io rate limiting scenarios. The main weakness is that the 'what' could be more specific about concrete actions (e.g., implementing exponential backoff, queue management, retry headers). Overall it's a solid description that would perform well in skill selection.
Suggestions
Add more specific concrete actions to the 'what' portion, e.g., 'Implements exponential backoff, manages request queues, parses Retry-After headers for Customer.io API rate limiting.'
| Dimension | Reasoning | Score |
|---|---|---|
Specificity | Names the domain (Customer.io rate limiting and backoff) and some actions (handling high-volume API calls, implementing retry logic, hitting 429 errors), but doesn't list multiple concrete actions like specific implementation details or techniques. | 2 / 3 |
Completeness | Clearly answers both 'what' (implement Customer.io rate limiting and backoff) and 'when' (handling high-volume API calls, implementing retry logic, hitting 429 errors) with explicit trigger terms listed. | 3 / 3 |
Trigger Term Quality | Excellent coverage of natural trigger terms including 'customer.io rate limit', 'customer.io throttle', 'customer.io 429', 'customer.io backoff', 'customer.io too many requests' — these are terms users would naturally use when encountering this problem. | 3 / 3 |
Distinctiveness Conflict Risk | Highly distinctive — scoped specifically to Customer.io rate limiting, which is a clear niche. The explicit 'customer.io' prefix on all trigger terms makes it very unlikely to conflict with generic rate limiting or other API skills. | 3 / 3 |
Total | 11 / 12 Passed |
Implementation
64%Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.
This is a solid, highly actionable skill with complete, executable TypeScript implementations covering multiple rate-limiting strategies. Its main weaknesses are the length (could be more concise or split across files) and the lack of explicit validation/verification steps in the workflow — there's no guidance on testing that the rate limiting actually works or verifying successful completion of operations.
Suggestions
Add explicit validation checkpoints, e.g., a step to test the rate limiter with a small batch and verify no 429s are received before running bulk operations.
Consider splitting the p-queue and bulk import sections into a linked reference file to keep SKILL.md as a concise overview with the core pattern (token bucket + backoff).
Trim the overview paragraph — the title and rate limit table already convey the purpose; the sentence listing 'token bucket limiters, exponential backoff with jitter...' just previews the headings below.
| Dimension | Reasoning | Score |
|---|---|---|
Conciseness | The content is mostly efficient with executable code, but includes some unnecessary verbosity — the overview restates what the title already conveys, the rate limit table includes approximate caveats Claude could infer, and the bulk import section is somewhat redundant given the rate-limited client already exists. The error handling table is useful but partially duplicates guidance already embedded in the code. | 2 / 3 |
Actionability | Fully executable TypeScript code throughout — token bucket implementation, backoff with jitter, rate-limited client wrapper, p-queue integration, and bulk import script are all copy-paste ready with proper imports, types, and realistic defaults. | 3 / 3 |
Workflow Clarity | Steps are clearly sequenced (1-5) and build on each other logically, but there are no explicit validation checkpoints — no step to verify the rate limiter is working correctly, no test to confirm 429 handling, and no feedback loop for verifying the bulk import completed successfully beyond console logging. | 2 / 3 |
Progressive Disclosure | The content is well-structured with clear sections and a reference table, but at ~180 lines it's quite long and could benefit from splitting the code implementations into separate files (e.g., linking to a BULK-IMPORT.md or QUEUE-PROCESSING.md). The external resource links at the bottom are helpful but the inline content is heavy. | 2 / 3 |
Total | 9 / 12 Passed |
Validation
81%Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.
Validation — 9 / 11 Passed
Validation for skill structure
| Criteria | Description | Result |
|---|---|---|
allowed_tools_field | 'allowed-tools' contains unusual tool name(s) | Warning |
frontmatter_unknown_keys | Unknown frontmatter key(s) found; consider removing or moving to metadata | Warning |
Total | 9 / 11 Passed | |
3e83543
Table of Contents
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.