# Add Provider

Add an AI provider to ClaudeBar as a JSON definition run by the one generic Provider...

- Repository: https://github.com/tddworks/ClaudeBar (1565 stars)
- Category: Engineering
- License: Apache-2.0
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add tddworks/ClaudeBar --skill add-provider -g -a claude-code -y`
Codex: `npx skills add tddworks/ClaudeBar --skill add-provider -g -a codex -y`
Cursor: `npx skills add tddworks/ClaudeBar --skill add-provider -g -a cursor -y`
Gemini CLI: `npx skills add tddworks/ClaudeBar --skill add-provider -g -a gemini-cli -y`

## Description

Add an AI provider to ClaudeBar as a JSON definition run by the one generic Provider and DataSource. Use this skill when: (1) Adding a new AI assistant provider (like Antigravity, Cursor, etc.) (2) A provider needs a setting, an added account, or an old saved key kept working (3) A provider's CLI, API or file format changed and its definition must follow (4) User asks "how do I add a new provider" or "create a provider for X

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Add a Provider to ClaudeBar

A provider is **data**: one file, `Modules/Providers/Resources/Providers/<id>.json`.
**The app finds it**, `ProviderCatalog.detect()` reads every definition in the
bundle (and in `~/.claudebar/providers`, `~/.claudebar/extensions`) and makes
each on one shared `Engine` ([TARGET_ARCHITECTURE §10](../../../docs/architecture/TARGET_ARCHITECTURE.md#10--a-definition-on-disk-is-a-provider)).
There is no registration step and no Swift line that names it.
It is an abstraction layer that answers three questions, each once: **who the
provider is** (`profile`), **how an account is signed in** (`settings`, and
`accounts` when the vendor keeps a login in a folder), and **how to get its
usage** (`dataSources`: where the key is, how to fetch, how to read the
answer). One
`Provider` class and one `DataSource` type run every definition. **You write
no Swift for a vendor**: no `XxxProvider`, no `XxxUsageProbe`, no
`XxxCredentialLoader`.

> Read first: [TARGET_ARCHITECTURE.md](../../../docs/architecture/TARGET_ARCHITECTURE.md)
> (how a definition runs), [MODULAR_DESIGN.md](../../../docs/architecture/MODULAR_DESIGN.md)
> (which module a file goes in), and [CANONICAL_MODEL.md](../../../docs/architecture/CANONICAL_MODEL.md)
> (the words). Every built-in provider is a definition, so there is a worked
> example for most shapes: an API key with a region (`minimax.json`), a CLI's login
> file renewed by OAuth (`grok.json`) or by the CLI itself (`gemini.json`), a TUI
> (`kimi.json`), a browser session over several requests (`alibaba.json`), an app's
> local server (`antigravity.json`), cloud metrics priced into money (`bedrock.json`).
> Their tests are in `Modules/Providers/Tests/`.

The rest: https://github.com/tddworks/ClaudeBar/blob/HEAD/.claude/skills/add-provider/SKILL.md
