Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Lookup procedure for Simplified Custom Auth recipe fields — sources the auth template, the key-issuing docsUrl and an auth-rejecting testUrl from the provider's real documentation instead of memory. Load before composing credentialHints for a service without a dedicated credential type (the post-build-flow setup step), or when asked to fix a recipe whose template, key page or test endpoint is wrong.
.claude/skills/n8n-io-credential-recipe-research/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | 60% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 60% | 0% |
| case-15 | ✗→✓ | ▲ Improved | -3% | 0% |
| case-17 | ✗→✓ | ▲ Improved | -35% | 0% |
| case-18 | ✗→✓ | ▲ Improved | -27% | 0% |
A recipe is only as good as the documentation it came from. This is a procedure, not guidance: execute every step with the research tool and keep only findings you can point to on a fetched page. Guessed URLs are how users end up on the wrong page with a key that can't be verified.
Inputs: the service name and the API host(s) the workflow's nodes call.
Fetch the provider's authentication docs — research(action="web-search") with "<service> API authentication", then fetch-url the best docs hit. Record the scheme EXACTLY as documented: header name, prefix word, casing (Authorization: Key {{api_key}} vs Bearer {{api_key}} vs a custom header like xi-api-key). If the documented auth is basic, digest, or OAuth, stop: that is not expressible as a template — use the matching generic type instead (see the workflow-builder skill's credential ladder).
Find where a logged-in user CREATES or COPIES the key. The URL is not shown in the form — the n8n Assistant help thread presents it as THE place to get the value, so a wrong URL sends the user to a dead end with full confidence:
"<service> dashboard API keys", and scan the fetched auth docs forphrases like "get your key from", "Dashboard → API Keys", "console", "settings".
console.apify.com/settings/integrations, elevenlabs.io/app/settings/api-keys, replicate.com/account/api-tokens, app.tavily.com/home — not under /docs, /reference, or /documentation.
issued there (some ReadMe-style logged-in portals do).
/account/api-keys,/dashboard/keys, …). Dashboards are apps behind a login: a fetch answers 200 for any invented route, so the path cannot be verified by fetching. Emit a deep dashboard URL only when it appears VERBATIM on a page you fetched; when the docs only describe navigation ("Dashboard → API Keys") without a literal URL, use the dashboard/app root they reference — a shallower real page beats a deeper invented one.
reference as the key page.
Find a documented, side-effect-free GET that rejects a bad key with 401/403. Check the API reference in this order and stop at the first qualifying hit:
/v1/account, /v2/users/me, /v1/user./v1/models/usage, Tavily's /usage./v1/templates, /v1/models, /v1/voices.Rules, all mandatory:
analogy with other APIs.
never anything that can trigger billable work. Setup rejects workflow-URL collisions, and the probe reports unexpected statuses as "could not be verified" — an invented URL only costs the user trust.
endpoints (Pexels search) or services that signal auth errors in the response body (Apollo's auth/health, TikTok) — a status probe cannot verify through them.
honestly reports it could not be verified, which beats a false green.
Fill credentialHints (field list and example in the post-build-flow skill) from the findings above only. suggestedName names the service ("Apify API Token"); never include a real secret.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 17,284 | 16,715 | -3% | 1 | 1 | 0% | 2,899 | 1,231 | -58% | 0 | 0 | — |
case-02 | fail→fail | 10,270 | 33,955 | +231% | 1 | 1 | 0% | 1,636 | 1,454 | -11% | 0 | 0 | — |
case-03 | fail→fail | 9,761 | 17,311 | +77% | 1 | 1 | 0% | 1,581 | 1,269 | -20% | 0 | 0 | — |
case-04 | pass→pass | 11,519 | 4,582 | -60% | 1 | 1 | 0% | 1,755 | 1,683 | -4% | 0 | 0 | — |
case-05 | fail→pass | 13,877 | 10,943 | -21% | 1 | 1 | 0% | 1,048 | 1,672 | +60% | 0 | 0 | — |
case-06 | pass→pass | 9,650 | 6,656 | -31% | 1 | 1 | 0% | 1,468 | 1,984 | +35% | 0 | 0 | — |
case-07 | pass→fail | 9,303 | 7,412 | -20% | 1 | 1 | 0% | 1,431 | 1,239 | -13% | 0 | 0 | — |
case-08 | pass→fail | 15,273 | 15,630 | +2% | 1 | 1 | 0% | 2,142 | 1,386 | -35% | 0 | 0 | — |
case-09 | pass→pass | 13,638 | 8,962 | -34% | 1 | 1 | 0% | 2,181 | 1,639 | -25% | 0 | 0 | — |
case-10 | fail→pass | 15,380 | 5,708 | -63% | 1 | 1 | 0% | 1,111 | 1,781 | +60% | 0 | 0 | — |
case-11 | pass→fail | 11,109 | 23,281 | +110% | 1 | 1 | 0% | 1,755 | 1,399 | -20% | 0 | 0 | — |
case-12 | pass→fail | 11,164 | 6,631 | -41% | 1 | 1 | 0% | 1,670 | 1,199 | -28% | 0 | 0 | — |
case-13 | fail→fail | 7,234 | 9,045 | +25% | 1 | 1 | 0% | 1,054 | 1,488 | +41% | 0 | 0 | — |
case-14 | fail→fail | 12,176 | 9,847 | -19% | 1 | 1 | 0% | 2,008 | 1,649 | -18% | 0 | 0 | — |
case-15 | fail→pass | 9,726 | 5,896 | -39% | 1 | 1 | 0% | 1,748 | 1,704 | -3% | 0 | 0 | — |
case-16 | pass→pass | 10,501 | 8,993 | -14% | 1 | 1 | 0% | 1,876 | 2,071 | +10% | 0 | 0 | — |
case-17 | fail→pass | 16,225 | 6,061 | -63% | 1 | 1 | 0% | 2,868 | 1,860 | -35% | 0 | 0 | — |
case-18 | fail→pass | 13,798 | 3,762 | -73% | 1 | 1 | 0% | 2,076 | 1,518 | -27% | 0 | 0 | — |
case-19 | pass→fail | 10,697 | 15,568 | +46% | 1 | 1 | 0% | 2,063 | 1,480 | -28% | 0 | 0 | — |
case-20 | pass→fail | 10,136 | 8,604 | -15% | 1 | 1 | 0% | 1,548 | 1,284 | -17% | 0 | 0 | — |
case-21 | fail→pass | 45,752 | 11,330 | -75% | 1 | 1 | 0% | 2,092 | 1,896 | -9% | 0 | 0 | — |
case-22 | pass→fail | 33,862 | 7,034 | -79% | 1 | 1 | 0% | 8,239 | 1,198 | -85% | 0 | 0 | — |
case-23 | pass→pass | 13,398 | 12,521 | -7% | 1 | 1 | 0% | 2,602 | 3,486 | +34% | 0 | 0 | — |
case-24 | pass→pass | 13,901 | 13,425 | -3% | 1 | 1 | 0% | 2,710 | 3,312 | +22% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 24 cases were attempted, and 13 counted toward the lift figure. The other 11 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of -4 percentage points is the difference between those two pass rates over the 13 comparable cases. 7 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.