Skip to main content

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.
Prompt
Find 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, not creator-enrichment
  • Uses the correct endpoint path /youtube/search
  • Country code is ISO 3166-1 alpha-3 (USA, not US or United States)
  • Numeric value is wrapped in quotes ("value": "1000000")
  • Mentions the 10-filter cap or the 100-result page limit somewhere
Common failure: Claude offers to call /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

Prompt
I 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, not creator-search or creator-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 bio email pre-check pattern (this is the highest-value gotcha in creator-enrichment)
  • Uses channelId parameter, not uniqueId
Common failure: Claude routes to 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

Prompt
Estimate 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 brandId is 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)
Common failure: Claude offers to call /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

Prompt
Transcribe 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, not creator-enrichment
  • Uses videoId (11 chars) for subtitle endpoints, not channelId (24 chars)
  • Prefers .en over a.en if both available (human captions over auto-generated)
  • Notes the file-download response shape on /subtitles/download
Common failure: Claude tries to use 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

Prompt
How 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 = unlimited semantics
  • Doesn’t conflate creditsAvailable (current balance) with data.records[].totalQuotaUsed (historical usage)
Common failure: Claude doesn’t route to any skill and answers “I don’t have access to your usage data.” That means 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

Prompt
I 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-workflow first, then mentions the others
  • Includes the _row_id discipline
  • Budget number is in the right ballpark (4,000–6,000 credits)
  • Mentions bio-first as a cost-saving pattern
  • Mentions running /usage as a pre-flight (this is the cross-skill handoff to account)
Common failure: Claude tries to do everything from 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

Prompt
I 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, NOT creator-search, despite the prompt starting with “find creators”
  • Resolves “Nike” to nike.com automatically
  • Notes the TikTok gap
Common failure: Claude routes to 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

Prompt
Show 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-analysis or 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)
Common failure: Claude asks the user to clarify, when “lately” + named creator unambiguously means “show recent posts.” Mild failure — if it asks once and proceeds, that’s fine. If it gets stuck asking, the content-analysis description should add “what is X up to” as a trigger phrase.

Test 9 — Refusal: out-of-scope request

Prompt
Transcribe this TikTok video for me: https://tiktok.com/@charlidamelio/video/1234567890
Expected 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-detail as the partial alternative for caption text
  • Doesn’t refuse without explanation (that signals the gotcha didn’t load)
Common failure: Claude calls /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

Prompt
Compare 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
Common failure: Claude does the naive comparison without warning. This is the single highest-value gotcha across all six skills (it appears in three of them) and the test of whether the skill content is actually informing reasoning, not just sitting in context. If this fails, the formula-divergence warning needs to be surfaced higher in the affected skills’ bodies, not buried in a “Common gotchas” section.

Scoring

ResultAction
10/10Ship it
9/10Ship it; note the failure for next iteration
7–8/10Fix the specific failures before deploying
≤6/10Pause; the routing layer needs structural rework
The most diagnostic failures are tests 7 (trigger-phrase poison) and 10 (gotcha awareness). Failure on either signals a class of problem that touches multiple skills, not just one. Fix those first.

Re-running after edits

After fixing any failures and redeploying:
# Re-pull skills from the live deployment to confirm Claude Code sees the fix
for skill in creator-search creator-enrichment brand-sponsorship content-analysis account creator-csv-workflow; do
  curl -s "https://docs.creatordb.app/.well-known/agent-skills/$skill/SKILL.md" \
    -o ~/.claude/skills/$skill/SKILL.md
done
Then start a fresh Claude Code session (skills are loaded at session start) and re-run the failing tests.
Last modified on May 8, 2026