Documentation Index
Fetch the complete documentation index at: https://docs.creatordb.app/llms.txt
Use this file to discover all available pages before exploring further.
CreatorDB Skill Routing Smoke Test
Run this after every meaningful edit to any SKILL.md. Each prompt targets a specific behavior. Copy the prompt verbatim into Claude Code (with all six skills loaded), then grade the response against the what to check list. Pass threshold: at least 9 of 10 should pass cleanly. If fewer than 9 pass, fix the identified skills before deploying. The failures usually point at description-overlap or missing trigger phrases.Test 1 — Basic routing: structured search
PromptFind me US gaming YouTubers with at least 1M subscribers and high engagement.Expected skill:
creator-search
What a correct response looks like
A short plan, then a worked example using POST /youtube/search with three filters
(country = USA, a YouTube gaming category like mainCategory = "Gaming", and
totalSubscribers > 1000000), sorted by avgRecentVideosEngagementRate descending.
Mentions the cost (1 credit per page) and the 100-result page limit.
What to check
- Routes to
creator-search, notcreator-enrichment - Uses the correct endpoint path
/youtube/search - Country code is ISO 3166-1 alpha-3 (
USA, notUSorUnited States) - Numeric
valueis wrapped in quotes ("value": "1000000") - Mentions the 10-filter cap or the 100-result page limit somewhere
/nls instead of structured search. That’s
not strictly wrong, but for an explicit-criteria prompt structured is the better fit.
Sharpen the description if this happens repeatedly.
Test 2 — Basic routing: per-creator enrichment
PromptI have these YouTube channel IDs: UCX6OQ3DkcsbYNE6H8uQQuVA and UCsTcErHg8oDvUnTzoqsYeNw. Pull profile info, audience demographics, and emails for each.Expected skill:
creator-enrichment
What a correct response looks like
A plan calling three endpoints per creator (/youtube/profile, /youtube/audience,
/youtube/contact), with credit math: 2 + 10 + 15 = 27 per creator, 54 total. Bonus
points if it suggests bio-first contact resolution to potentially skip /contact.
What to check
- Routes to
creator-enrichment, notcreator-searchorcreator-csv-workflow - Cites the right per-call costs: profile 2, audience 10, contact 15
- Total credit math is correct (54 credits without bio-first; less with)
- Mentions the
bioemail pre-check pattern (this is the highest-value gotcha increator-enrichment) - Uses
channelIdparameter, notuniqueId
creator-csv-workflow because the prompt
mentions “each.” That’s wrong — two creators isn’t a CSV workflow. Tighten the
“When to use this skill” boundaries if this happens.
Test 3 — Basic routing: brand-side analysis
PromptEstimate Acer’s influencer marketing spend on YouTube and Instagram over the last 30 days.Expected skill:
brand-sponsorship
What a correct response looks like
Single call: GET /sponsor/summary?brandId=acer.com. Notes that
estimatedTotalSpend30d is YouTube-only and Instagram returns null for spend
fields. Cites cost (25 credits).
What to check
- Routes to
brand-sponsorship - Knows
brandIdis the domain (acer.com, not “Acer”) - Calls out the YouTube-only spend constraint clearly
- Doesn’t try to compute spend by aggregating individual creators (that would burn far more credits and is less accurate)
/sponsor/creators and sum estimated
costs. That works in theory but /sponsor/summary is the right answer — one call,
authoritative numbers, much cheaper.
Test 4 — Basic routing: content-level analysis
PromptTranscribe MrBeast’s most recent YouTube video and find any brand mentions in it.Expected skill:
content-analysis
What a correct response looks like
Three-step plan: (1) /youtube/content-detail to get recentVideos[0].contentId,
(2) /youtube/subtitles/meta?videoId=<id> to find available tracks, (3)
/youtube/subtitles/download with the chosen vssId. Notes that the download
endpoint returns a streamed file, not the standard JSON envelope. Mentions
/youtube/sponsorship as an alternative for brand verification.
What to check
- Routes to
content-analysis, notcreator-enrichment - Uses
videoId(11 chars) for subtitle endpoints, notchannelId(24 chars) - Prefers
.enovera.enif both available (human captions over auto-generated) - Notes the file-download response shape on
/subtitles/download
channelId on the subtitle endpoint, or
guesses at a non-existent /youtube/transcript endpoint. Both signal that the
subtitle section of content-analysis didn’t load.
Test 5 — Basic routing: account / quota
PromptHow many CreatorDB credits do I have left?Expected skill:
account
What a correct response looks like
Single call: GET /usage, read creditsAvailable from the wrapper. Notes that
-1 means unlimited.
What to check
- Routes to
account - Single endpoint call, not multiple
- Mentions the
-1 = unlimitedsemantics - Doesn’t conflate
creditsAvailable(current balance) withdata.records[].totalQuotaUsed(historical usage)
account didn’t load or its description
didn’t match the prompt. Check that the skill is in ~/.claude/skills/ and its
description includes “credits” and “remaining quota” trigger phrases.
Test 6 — Cross-skill handoff: CSV workflow
PromptI have a CSV of 200 YouTube channels with columns name, url, my_notes. Enrich it with audience demographics and emails. What would the credit budget be, and what’s your plan?Expected primary skill:
creator-csv-workflow
Expected supporting skills loaded: creator-enrichment, account
What a correct response looks like
A multi-step plan citing the CSV-workflow’s structure: parse + classify identifiers,
add _row_id, pre-flight /usage, enrich with /profile + /audience + bio-first /contact, dedupe + flatten, export. Budget math: ~27 credits/row average × 200 rows
= ~5,400 credits, with bio-first noted as a possible 30–60% reduction.
What to check
- Routes to
creator-csv-workflowfirst, then mentions the others - Includes the
_row_iddiscipline - Budget number is in the right ballpark (4,000–6,000 credits)
- Mentions bio-first as a cost-saving pattern
- Mentions running
/usageas a pre-flight (this is the cross-skill handoff toaccount)
creator-csv-workflow alone
and never references creator-enrichment for the per-endpoint detail. If that
happens, the cross-skill links in creator-csv-workflow’s “Related skills” section
need to be more prominent earlier in the file.
Test 7 — Adversarial: trigger-phrase poison
PromptI want to find creators who have already worked with Nike. What’s the best way?Expected skill:
brand-sponsorship (specifically /sponsor/creators)
What a correct response looks like
Single call: GET /sponsor/creators?brandId=nike.com&platform=youtube (and again
for Instagram). Notes there’s no TikTok endpoint. Cites cost (25 credits per page).
What to check
- Routes to
brand-sponsorship, NOTcreator-search, despite the prompt starting with “find creators” - Resolves “Nike” to
nike.comautomatically - Notes the TikTok gap
creator-search because of “find creators.”
This is the canonical description-overlap test. If it fails, the creator-search
description needs an explicit “Do not use for finding creators by brand affiliation
— use brand-sponsorship instead” line, and brand-sponsorship needs “find creators
who worked with <brand>” as an explicit trigger.
Test 8 — Adversarial: vague prompt requiring inference
PromptShow me what MrBeast is up to lately.Expected skill:
content-analysis (/youtube/content-detail) — possibly
combined with creator-enrichment for a profile snapshot
What a correct response looks like
A plan to call /youtube/content-detail?channelId=UCX6OQ3DkcsbYNE6H8uQQuVA for
recent videos and shorts. Optionally /youtube/profile for current subscriber
count. Maps “lately” to “recent content” rather than “recent search trends.”
What to check
- Routes to
content-analysisor a content+profile combination - Doesn’t try to call a non-existent search/news endpoint
- Resolves “MrBeast” to a channelId or handle correctly
- Cites cost (2 credits for content-detail)
content-analysis description
should add “what is X up to” as a trigger phrase.
Test 9 — Refusal: out-of-scope request
PromptTranscribe this TikTok video for me: https://tiktok.com/@charlidamelio/video/1234567890Expected behavior: Decline politely, explain why, suggest alternatives. What a correct response looks like Claude should explicitly say subtitles are YouTube-only in CreatorDB API v3, and offer alternatives: pulling caption text from
/tiktok/content-detail, or using
external transcription tools. Should NOT make up a /tiktok/subtitles endpoint
or attempt the call.
What to check
- Explicitly identifies the YouTube-only constraint
- Doesn’t fabricate a TikTok transcript endpoint
- Suggests
/tiktok/content-detailas the partial alternative for caption text - Doesn’t refuse without explanation (that signals the gotcha didn’t load)
/tiktok/subtitles/meta (which doesn’t exist) and
returns a 404. This is a critical fail — it means the YouTube-only constraint in
content-analysis didn’t get into context. Check the file actually has the
“Subtitles are YouTube-only” callout in the gotchas section.
Test 10 — Substantive accuracy: gotcha awareness
PromptCompare the engagement rate of this YouTube creator (UCX6OQ3DkcsbYNE6H8uQQuVA) against this Instagram creator (cristiano).Expected behavior: Claude warns that engagement formulas differ across platforms before doing the comparison, then either normalizes them or labels both clearly. What a correct response looks like A plan to call
/youtube/profile and /instagram/profile, plus an explicit caveat:
“Note that YouTube and Instagram compute engagement rate differently — YouTube uses
(likes + comments + views) / subscribers in some endpoints and (likes + comments) / subscribers in others; Instagram uses (likes + comments) / followers. Comparing
the raw values is misleading. I’ll either normalize both to (likes + comments) / follower-or-subscriber or label each value with its source formula.”
What to check
- The formula divergence warning appears unprompted
- Claude offers to normalize before comparing
- Mentions at least two of the three formula variants
- Doesn’t blindly subtract one rate from the other
Scoring
| Result | Action |
|---|---|
| 10/10 | Ship it |
| 9/10 | Ship it; note the failure for next iteration |
| 7–8/10 | Fix the specific failures before deploying |
| ≤6/10 | Pause; the routing layer needs structural rework |