Skip to main content

Sync to claude.ai

claude.ai, Claude Desktop and Cowork get organization plugins from a marketplace synced from a GitHub or GitLab repository. Waxell keeps that repository up to date: every time you approve or revoke something, Waxell commits the change, and claude.ai picks it up — usually within seconds.

Waxell approves ──▶ commit to your repo ──▶ claude.ai syncs (webhook) ──▶ Desktop · Cowork · claude.ai

You connect two things once:

ConnectionWhoGives
Waxell → your repositoryWaxell adminWaxell write access to the repository, to commit approvals.
claude.ai → your repositoryclaude.ai Ownerclaude.ai read access, to sync the marketplace.

They are separate credentials; neither sees the other's.

Choose your provider: GitHub · GitLab

Managing several clients? Use one GitHub App for all of them instead of a token per client.


GitHub​

Step 1 — Create the repository​

Create a private repository for the marketplace, for example your-org/claude-plugins, under your GitHub organization. Initialize it with a README — Waxell needs at least one commit to write to.

Use a dedicated repository. Waxell manages plugins/, .claude-plugin/marketplace.json and README.md; it never touches anything else in the repository.

Step 2 — Give Waxell write access​

Create a fine-grained personal access token at GitHub → Settings → Developer settings → Personal access tokens → Fine-grained tokens → Generate new token:

FieldSet to
Resource ownerYour organization (not your username)
ExpirationYour policy — Waxell shows when a token stops working
Repository accessOnly select repositories → the marketplace repository
Permissions → Repository → ContentsRead and write

Leave everything else at its default (GitHub adds Metadata: Read-only itself). The token can write files in that one repository and nothing else.

Organization isn't listed as a resource owner?

The organization must allow fine-grained tokens: Organization settings → Personal access tokens → Settings. If it requires approval, approve the token under Pending requests.

Step 3 — Connect it in Waxell​

  1. Open Govern → Skills & Plugins → Settings.
  2. Under Approved marketplace, step 2 Claude Desktop, Cowork and claude.ai — sync through a repository, click Connect a repository.
  3. Fill in:
    • Provider: GitHub
    • Repository: your-org/claude-plugins (or its URL). On GitHub Enterprise — Cloud (yourco.ghe.com) or Server — paste the full URL.
    • Branch: main
    • Access token: the token from step 2
  4. Click Connect and sync.

Waxell checks the token can push before saving it, stores it encrypted with your workspace's own key, and makes the first commit.

Step 4 — Connect it in claude.ai​

As a claude.ai Owner:

  1. Admin settings → Git providers → GitHub → Enable GitHub integration, then Connect. Install the Claude GitHub App on your organization and, under repository access, select only the marketplace repository.
  2. Admin settings → Plugins & skills → Add → Add marketplace → Sync from GitHub, and pick the repository.
  3. Turn on Sync automatically.

Then continue with Set who sees it.

GitHub Enterprise

For a repository on GitHub Enterprise rather than github.com, step 4 uses Admin settings → Git providers → GitHub Enterprise → Connect instead: enter the hostname and the details of a GitHub App created on that instance (with the callback URL claude.ai shows). Install that app only on the organization that holds the marketplace repository.


GitLab​

Step 1 — Create the project​

Create a private project for the marketplace, for example your-group/claude-plugins. gitlab.com and self-managed GitLab both work.

Use a dedicated project. Waxell manages plugins/, .claude-plugin/marketplace.json and README.md; it never touches anything else in the project.

Step 2 — Give Waxell write access​

In the project, Settings → Access tokens → Add new token:

FieldSet to
RoleDeveloper (or higher)
Scopesapi
ExpirationYour policy

Step 3 — Connect it in Waxell​

  1. Open Govern → Skills & Plugins → Settings.
  2. Under Approved marketplace, step 2 Claude Desktop, Cowork and claude.ai — sync through a repository, click Connect a repository.
  3. Fill in:
    • Provider: GitLab
    • Repository: https://gitlab.com/your-group/claude-plugins (or the path; for self-managed GitLab, use your instance's URL)
    • Branch: main
    • Access token: the token from step 2
  4. Click Connect and sync.

Step 4 — Connect it in claude.ai​

As a claude.ai Owner:

  1. Admin settings → Git providers → GitLab → Connect. Enter your GitLab hostname and an access token for claude.ai to read with.

    Use an api + Maintainer token here

    With the api scope and the Maintainer role, claude.ai installs a push webhook on the project, so every Waxell commit syncs in seconds. A read-only token works too, but claude.ai then syncs on its own schedule.

  2. Admin settings → Plugins & skills → Add → Add marketplace → Sync from GitLab, and pick the project.

  3. Turn on Sync automatically.


Set who sees it​

A new marketplace in claude.ai starts at Default access: Not available. Approvals sync, but nobody sees them until you change it.

In claude.ai, open the marketplace (Plugins & skills → Marketplaces) and set Default access:

SettingEffect for each approved plugin
Not availableHidden.
Available to installListed; people install it themselves.
Installed by defaultInstalled for everyone; they can remove it.
RequiredInstalled for everyone; they can't remove it.

To make a single plugin Required — for example one you marked Required in Waxell — set it on that plugin's row in Inventory. claude.ai keeps these per-plugin settings across every sync.

What happens on each decision​

In Waxell you…Waxell commitsIn claude.ai
ApproveAdds the plugin to the repositoryAppears in the marketplace (per its access setting)
RevokeRemoves itRemoved from the marketplace
Approve a new versionReplaces the old oneUpdates in place; its access setting is kept
Change install mode onlyNothing— (set access in claude.ai)

Approvals made in quick succession are committed together. A bare skill is published as a single-skill plugin of the same name.

When nothing is approved, the repository holds one empty placeholder plugin, waxell-placeholder — it contains no skills, commands, hooks or servers. This keeps the marketplace valid so a revoke always takes effect in claude.ai.

Manage the connection​

In Settings → Approved marketplace, step 2:

ControlDoes
Sync nowRe-checks the repository and commits anything missing. Safe to press any time.
EditChange the repository, branch or token. Leave the token blank to keep the stored one.
Pause / ResumeStop committing approvals, without disconnecting.
DisconnectStop writing to the repository. The repository is left as it is.

The status line shows In sync, the last commit (linked), and how many plugins are in the repository. If a sync fails, it says why — see Troubleshooting.

Each repository's history is a full record: every commit says what was approved or revoked, and by whom.