Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Skill for managing model provider priorities with authentication (OAuth/Subscription/API), usage limits, and automatic fallback across all major AI providers
.claude/skills/aiskillstore-provider-management/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 12% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -20% | 0% |
| case-03 | ✗→✓ | ▲ Improved | -27% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 36% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 42% | 0% |
Comprehensive management of AI models across all major providers with multi-auth support and automatic fallback.
Supports ALL major AI providers and models with three authentication methods:
| Priority | Auth Type | Description | |----------|-----------|-------------| | 100 | Subscription | Pro/Plus/Max subscriptions (highest priority) | | 50 | OAuth | OAuth 2.0 tokens (Antigravity-style) | | 10 | API | Direct API keys (lowest priority) |
claude-4-opus, claude-sonnet-4, claude-3.5-sonnet, claude-3.5-haiku, claude-3-opusgpt-4.1, gpt-4.1-mini, gpt-4o, gpt-4o-mini, o1, o3-minigemini-2.5-pro, gemini-2.5-flash, gemini-2.0-flash, gemini-1.5-progrok-3, grok-3-minillama-4-maverick, llama-3.3-70b (bedrock, together, groq, openrouter)deepseek-r1, deepseek-v3 (deepseek-api, together, openrouter)mistral-large, codestral (mistral-api, bedrock, azure, openrouter)command-r-plus (cohere-api, bedrock, openrouter)qwen-2.5-72b (together, openrouter)| Canonical | anthropic-api | bedrock | vertex | openrouter | |-----------|---------------|---------|--------|------------| | claude-sonnet-4 | claude-sonnet-4-20250514 | anthropic.claude-sonnet-4-20250514-v1:0 | claude-sonnet-4@20250514 | anthropic/claude-sonnet-4 | | gpt-4o | gpt-4o-2024-11-20 | - | - | openai/gpt-4o | | gemini-2.5-pro | - | - | gemini-2.5-pro-preview-05-06 | google/gemini-2.5-pro-preview |
/provider-authConfigure authentication for providers.
bash# View all auth status /provider-auth status # Set API key /provider-auth setup anthropic-api --key sk-ant-... # Start OAuth flow (Antigravity-style) /provider-auth oauth google-oauth # Set subscription token /provider-auth setup anthropic-subscription --key <session-token>
/provider-modelsList models and provider mappings.
bash# List all models /provider-models list # Filter by family /provider-models list --filter claude # Get model info with all provider IDs /provider-models info claude-sonnet-4 # Filter by capability /provider-models capability reasoning
/provider-priorityManage provider order.
bash/provider-priority /provider-priority set anthropic-subscription,anthropic-api,bedrock /provider-priority move bedrock 1
/provider-limitsConfigure usage limits.
bash/provider-limits /provider-limits anthropic-api --daily 1M --monthly 10M
/provider-statusView usage dashboard.
bash/provider-status /provider-status bedrock /provider-status --reset
/provider-switchManual control.
bash/provider-switch bedrock /provider-switch --auto on
~/.opencode/provider-fallback/
├── config.json # Priority, limits, settings
├── usage.json # Usage tracking
├── auth.json # Stored credentials (0600 permissions)
└── tokens.json # OAuth tokens1. Request comes in for model (e.g., claude-sonnet-4)
2. Get all configured providers for that model's vendor
3. Sort by auth priority: subscription (100) > oauth (50) > api (10)
4. Filter by usage capacity
5. Select best available provider
6. Get provider-specific model ID
7. Make request with appropriate credentialsFor Google, Anthropic, or OpenAI OAuth:
bash# 1. Start OAuth flow /provider-auth oauth google-oauth # 2. Enter client ID and secret when prompted # 3. Browser opens for authorization # 4. Callback server receives token # 5. Tokens stored securely
OAuth tokens auto-refresh when within 60 seconds of expiry.
bash# Configure multiple vendors /provider-auth setup anthropic-subscription --key <token> /provider-auth setup openai-api --key sk-... /provider-auth setup google-api --key AIza... # System auto-selects best for each model family
Tokens refresh automatically. If manual refresh needed:
bash/provider-auth refresh google-oauth
Ensure session token is valid and not expired:
bash/provider-auth setup anthropic-subscription --key <new-token>
Check configured providers and priorities:
bash/provider-auth status
The system always prefers: subscription > oauth > api
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 171,142 | 12,280 | -93% | 1 | 1 | 0% | 1,866 | 2,091 | +12% | 0 | 0 | — |
case-02 | fail→pass | 24,287 | 86,025 | +254% | 1 | 1 | 0% | 3,139 | 2,500 | -20% | 0 | 0 | — |
case-03 | fail→pass | 44,950 | 46,383 | +3% | 1 | 1 | 0% | 3,243 | 2,369 | -27% | 0 | 0 | — |
case-04 | fail→pass | 31,306 | 28,199 | -10% | 1 | 1 | 0% | 1,480 | 2,019 | +36% | 0 | 0 | — |
case-05 | fail→pass | 11,978 | 8,169 | -32% | 1 | 1 | 0% | 1,376 | 1,958 | +42% | 0 | 0 | — |
case-06 | fail→pass | 29,277 | 10,452 | -64% | 1 | 1 | 0% | 1,883 | 1,846 | -2% | 0 | 0 | — |
case-07 | fail→pass | 9,927 | 6,764 | -32% | 1 | 1 | 0% | 958 | 1,841 | +92% | 0 | 0 | — |
case-08 | fail→pass | 13,444 | 13,409 | -0% | 1 | 1 | 0% | 1,585 | 1,949 | +23% | 0 | 0 | — |
case-09 | fail→pass | 7,812 | 9,611 | +23% | 1 | 1 | 0% | 1,207 | 1,978 | +64% | 0 | 0 | — |
case-10 | fail→pass | 21,548 | 8,019 | -63% | 1 | 1 | 0% | 2,374 | 2,168 | -9% | 0 | 0 | — |
case-11 | fail→pass | 18,908 | 6,100 | -68% | 1 | 1 | 0% | 2,456 | 2,030 | -17% | 0 | 0 | — |
case-12 | fail→pass | 13,477 | 7,833 | -42% | 1 | 1 | 0% | 1,431 | 1,909 | +33% | 0 | 0 | — |
case-13 | fail→pass | 17,878 | 9,924 | -44% | 1 | 1 | 0% | 2,919 | 2,043 | -30% | 0 | 0 | — |
case-14 | fail→pass | 16,410 | 10,674 | -35% | 1 | 1 | 0% | 1,622 | 2,014 | +24% | 0 | 0 | — |
case-15 | fail→pass | 11,019 | 7,846 | -29% | 1 | 1 | 0% | 1,782 | 1,893 | +6% | 0 | 0 | — |
case-16 | fail→pass | 9,607 | 5,742 | -40% | 1 | 1 | 0% | 1,818 | 1,924 | +6% | 0 | 0 | — |
case-17 | pass→pass | 9,984 | 2,203 | -78% | 1 | 1 | 0% | 1,823 | 1,870 | +3% | 0 | 0 | — |
case-18 | pass→pass | 8,278 | 3,784 | -54% | 1 | 1 | 0% | 541 | 1,797 | +232% | 0 | 0 | — |
case-19 | fail→pass | 11,053 | 13,031 | +18% | 1 | 1 | 0% | 2,115 | 1,899 | -10% | 0 | 0 | — |
case-20 | pass→pass | 12,168 | 13,957 | +15% | 1 | 1 | 0% | 2,192 | 3,540 | +61% | 0 | 0 | — |
case-21 | pass→pass | 9,109 | 5,002 | -45% | 1 | 1 | 0% | 1,494 | 2,506 | +68% | 0 | 0 | — |
case-22 | pass→pass | 9,278 | 22,053 | +138% | 1 | 1 | 0% | 1,838 | 2,838 | +54% | 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. 22 cases were attempted. The headline lift of +77 percentage points is the difference between those two pass rates over the 22 comparable cases.
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.