Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Add, update, rename, or remove text/image/video/audio/embeddings models. Requires explicit user confirmation of pricing, paid status, provider, GPU ownership, and primary/fallback inference routes before editing, then covers files, empirical verification, and tests.
.claude/skills/pollinations-model-management/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 142% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 92% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 211% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 156% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 152% | 0% |
Use this workflow for every model change. Keep the implementation minimal, preserve the public contract unless the user explicitly approves a change, and prove provider behavior with real requests.
AGENTS.md.temp/manage_inference.mdtemp/manage_inferenceport.mdtemp/manage_gpus.mdtemp/manage_azure_limits.mdThe temp plans are ignored operational state, not repository truth. When working in a linked worktree where they are absent, locate the primary checkout with git worktree list and read them there. Never copy balances, prices, PR statuses, quotas, or candidate rankings into this skill.
Read operating-policy.md before recommending a route or model. Read only the other references needed for the task:
| Task | Required references | |---|---| | Find code or run locally | repository-and-local-testing.md | | Add, update, reroute, rename, or remove | change-and-test-matrix.md | | New model, provider, model ID, or price | billing-verification.md |
Apply this gate only to a proposed tracked model mutation. Do not turn a read-only status confirmation, an approval of an already-documented planning decision, or a correction of an operational fact into a different mutation. Treat a generic “confirm” as approval only for the exact contract just shown.
Do not edit any model until the user confirms its complete business and inference contract. Inspect the code and provider first; do not ask the user to discover values for you.
Show one complete row per model:
| Field | Required value | |---|---| | Canonical name | Public model ID after the change | | Aliases | Every compatibility alias, or none | | priceMultiplier | Exact multiplier after provider cost | | paidOnly | Whether purchased pack balance is required | | Pollinations GPU | yes only if Pollinations operates the production hardware | | Registry provider | Configured primary provider | | Primary route | Provider, deployment/host, and exact upstream model ID | | Best fallback candidate | Provider, deployment/host, exact upstream model ID, and why it is the best viable alternative; or none found with the searched routes | | Pollinations fallback | use <candidate> or none, with the reason for declining or lacking a viable candidate |
Ask:
> Please confirm: canonical name X, aliases A/none, price multiplier M, paid-only yes/no, Pollinations GPU yes/no, registry provider P, primary route R, best fallback candidate C/none found, and Pollinations fallback decision use C/none. Are all of these correct?
An answer approves only the values shown. If a value is unknown, inferred, conflicting, or route-dependent, label it UNKNOWN, explain the evidence, and wait for that exact decision. A batch approval is valid only when every row is complete.
Model approval does not authorize adding, renaming, removing, or changing a public endpoint, method, transport, request or response schema, streaming behavior, or event protocol. Do not propose an API-surface change without a concrete user or developer problem it solves.
Before editing, present:
none.State plainly: This adds/changes the public API: ... Then ask for explicit confirmation of that exact API change. If the problem, standard, or compatibility impact is unclear, do not edit.
Model approval never authorizes adding, rotating, synchronizing, deploying, revoking, or otherwise mutating a credential. Follow the exact approval wording, dedicated-PR requirement, execution order, verification, and rollback rules in AGENTS.md. Do not duplicate or weaken that process here.
permissions.models contains the old canonical ID. Verify the deployed authorization code resolves stored aliases; registry aliases alone cannot protect keys while an old exact-string reader is still running.
main sincethe current production revision; production can lag behind main.
git log --all -- <path>and gh pr list --state merged --search <model> before re-adding it — it may have been removed on purpose, added and reverted, or replaced.
none found; never omit the fallback decision because the primary route is healthy.Present the mandatory row and obtain explicit confirmation before editing. If a capability or access change is intentional, state it plainly.
<publisher-slug>/<official-model-slug>. Keep bothcomponents lowercase, preserve the publisher's model family and version, and follow the publisher's public slug when one exists. Never invent, drop, or silently advance a version.
publisher is the human-readable publisher (OpenAI, Anthropic, xAI), notthe inference provider. Keep provider deployment IDs, casing, punctuation, and revision suffixes internal when they are routing details rather than the publisher's public model identity.
same publisher model across providers behind one public identity and declare automatic routing through the registry's ordered fallback relationship.
<public-canonical-id>:<provider>.The public registry key, catalogs, request model, and permissions remain the public ID. Keep fallback identity separate from priority: never use :fallback, numbered fallback suffixes, or priority labels in these IDs.
<public-canonical-id>:<provider>:<route-qualifier>, such as google/gemini-2.5-flash-lite:openrouter:vertex-global or google/gemini-2.5-flash-lite:openrouter:ai-studio. Distinguish multiple deployments through the same provider explicitly. Use lowercase labels; never encode priority or the temporary fallback role. Preserve fallback registry IDs when changing their order. For provider-managed routing without a fixed backend, do not invent an endpoint qualifier.
provider field and route configuration remain authoritative; the namedoes not select an upstream endpoint. Keep fallback-only entries hidden, without aliases, and excluded from catalogs and direct model selection. Route-specific cost belongs on the serving definition; callers retain the requested public model's price. Use the existing shared fallback mechanism.
resolved_model_requested, model_used, x-model-used,provider, per-attempt, community and cache attribution semantics during a canonical rename. Recorded IDs may adopt the new spelling, including hidden fallback registry IDs; do not force primary IDs into execution identifiers. Explicit primary execution IDs and their analytics/header contract are deferred to #14543. Review affected consumers and any public API changes separately; do not silently repurpose x-model-used or rewrite historical events.
naming an internal route. For example, a route for google/gemini-2.5-flash-lite:search could be google/gemini-2.5-flash-lite:search:openrouter:ai-studio. These are naming examples, not declarations of configured routes. Link routes through explicit registry keys; do not split or strip colon suffixes to infer providers or fallback relationships. The fallback must preserve the public model's behavior, including search in this example.
of the exact same publisher model, expose it as <public-canonical-id>:paid, never with the inference provider in the slug. Treat it as a separate public contract with its own price, paidOnly value, permissions, and aliases. Do not use :paid for automatic fallback routing.
publisher model, consolidate them under that model identity and select the operation through an explicit endpoint or request field. Do not create a second canonical model or make an alias select behavior.
/v1 and a standard-compatible route under /v1./v1 as a compatibility namespace: match the selected standard's route, transport, request, response, streaming, and event contracts exactly, and keep provider-specific protocols behind the route adapters — never a Pollinations-specific or upstream-provider schema under /v1.model. Keep distinct operations separate while reusing their shared internal handler, authorization, billing, and observability paths.-high, -search, -reasoning, or -1080p; only explicit request parameters and canonical defaults apply. Keep a separate canonical model if the old behavior must remain.one D1 migration PR. Replace old IDs, preserve unrelated permission fields and array order, deduplicate old/new pairs, prove idempotence, and verify all audited old-ID counts are zero after deployment.
per alias, and prefilter with instr() inside CASE so JSON functions never run on non-matching rows. A single whole-table JSON scan fails with error 7429 at production scale (~150k apikey rows).
IDs, while preserving unknown and community IDs, so migrations do not need to repair newly written aliases again.
alias-aware permission checks against the old registry, which must already recognize every future canonical ID as an alias. Cover generation, catalogs, realtime, fallback filtering and readback. Merging this prerequisite is not sufficient: verify it is live before the migration can run.
CANONICAL_MODEL_PERMISSION_COMPAT_VERIFIED=true. Set it only after live old/new-ID restricted-key checks pass on the compatibility deployment. The post-deploy cleanup runs after both workers succeed; for a deployment retry use service=all with finalize_canonical_permissions=true.
registry resolver, preserving unknown/community IDs and empty allowlists. Writes and migrations still store canonical IDs. After both workers deploy, repeat the bounded permission cleanup to catch old Enter writes made after the migration; verify no audited old IDs remain. Do not rewrite historical analytics using today's mutable aliases.
shared/registry/; use the live modelcatalog for public listings rather than maintaining a duplicate Markdown list.
non-zero base rate and cost-variant rate as baseRate * 1.055 (for example, perMillion(0.75) * 1.055). Include search, cache-storage, and other billable adjustments, including provider-reported charges. Keep priceMultiplier unchanged; prices derive from the fee-inclusive cost. Declare this in the registry entries, not a provider-wide transformation. Apply the fee exactly once: same-provider fallbacks may inherit fee-inclusive rates; cross-provider fallbacks need explicit costs when inheritance would add or omit the fee.
APIDOCS.md; update the source schema or route./models metadata.Before publishing:
A model change is not complete until all applicable statements are true:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 26,520 | 10,279 | -61% | 1 | 1 | 0% | 337 | 4,476 | +1228% | 0 | 0 | — |
case-02 | fail→fail | 18,757 | 8,127 | -57% | 1 | 1 | 0% | 3,215 | 4,348 | +35% | 0 | 0 | — |
case-03 | fail→fail | 15,407 | 13,485 | -12% | 1 | 1 | 0% | 2,319 | 4,433 | +91% | 0 | 0 | — |
case-04 | pass→fail | 16,156 | 15,908 | -2% | 1 | 1 | 0% | 2,007 | 4,347 | +117% | 0 | 0 | — |
case-05 | pass→fail | 40,241 | 10,070 | -75% | 1 | 1 | 0% | 2,605 | 4,419 | +70% | 0 | 0 | — |
case-06 | pass→fail | 8,396 | 9,231 | +10% | 1 | 1 | 0% | 1,336 | 4,357 | +226% | 0 | 0 | — |
case-07 | fail→pass | 14,723 | 5,946 | -60% | 1 | 1 | 0% | 1,985 | 4,808 | +142% | 0 | 0 | — |
case-08 | fail→pass | 40,691 | 19,642 | -52% | 1 | 1 | 0% | 3,155 | 6,064 | +92% | 0 | 0 | — |
case-09 | pass→pass | 15,596 | 9,168 | -41% | 1 | 1 | 0% | 2,427 | 5,412 | +123% | 0 | 0 | — |
case-10 | pass→pass | 13,676 | 38,538 | +182% | 1 | 1 | 0% | 2,066 | 5,417 | +162% | 0 | 0 | — |
case-11 | pass→pass | 13,157 | 5,627 | -57% | 1 | 1 | 0% | 1,944 | 4,898 | +152% | 0 | 0 | — |
case-12 | pass→pass | 26,489 | 7,903 | -70% | 1 | 1 | 0% | 1,748 | 5,191 | +197% | 0 | 0 | — |
case-13 | fail→pass | 17,223 | 19,232 | +12% | 1 | 1 | 0% | 1,860 | 5,776 | +211% | 0 | 0 | — |
case-14 | fail→pass | 25,744 | 18,132 | -30% | 1 | 1 | 0% | 1,947 | 4,978 | +156% | 0 | 0 | — |
case-15 | fail→pass | 19,052 | 19,657 | +3% | 1 | 1 | 0% | 2,042 | 5,152 | +152% | 0 | 0 | — |
case-16 | fail→pass | 14,568 | 5,547 | -62% | 1 | 1 | 0% | 2,092 | 4,815 | +130% | 0 | 0 | — |
case-17 | fail→pass | 60,578 | 29,116 | -52% | 1 | 1 | 0% | 1,764 | 6,417 | +264% | 0 | 0 | — |
case-18 | pass→pass | 36,946 | 34,495 | -7% | 1 | 1 | 0% | 1,630 | 4,867 | +199% | 0 | 0 | — |
case-19 | pass→pass | 17,963 | 18,123 | +1% | 1 | 1 | 0% | 1,649 | 5,097 | +209% | 0 | 0 | — |
case-20 | fail→pass | 35,349 | 3,497 | -90% | 1 | 1 | 0% | 1,483 | 4,419 | +198% | 0 | 0 | — |
case-21 | pass→pass | 16,977 | 32,929 | +94% | 1 | 1 | 0% | 2,422 | 5,014 | +107% | 0 | 0 | — |
case-22 | pass→pass | 9,508 | 6,585 | -31% | 1 | 1 | 0% | 1,290 | 4,562 | +254% | 0 | 0 | — |
case-23 | pass→pass | 7,473 | 3,760 | -50% | 1 | 1 | 0% | 918 | 4,527 | +393% | 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. 23 cases were attempted, and 17 counted toward the lift figure. The other 6 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 +22 percentage points is the difference between those two pass rates over the 17 comparable cases. 4 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.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 9/19/2026 | +27% |
| gemini-3.6-flash | verified | 9/8/2026 | +32% |
| gemini-3.6-flash | verified | 8/17/2026 | +50% |
| gemini-3.6-flash | verified | 8/11/2026 | +45% |
| gemini-3.6-flash | verified | 8/9/2026 | +61% |
Other measured skills in the registry, with their headline benchmark lift.