Set up the skills repository
1
Create the repository
A private or internal GitHub repository, laid out as a Claude Code plugin marketplace: a
.claude-plugin/marketplace.json file at the root that lists each plugin, and one folder per plugin. Each plugin bundles one or more skills. A public repository can’t be selected in the next step; fork it into a private one first.2
Register the repository as a plugin marketplace
For a github.com repository, the GitHub connector must be enabled for your organization. In Organization settings > Plugins & skills, click Add and choose Sync from GitHub. Select the repository, leave Sync automatically on (the default), and click Create.When you click Create, and on every sync after that, the whole repository is downloaded as one archive, and the archive can’t be larger than 512 MiB. A repository over that size, such as a large monorepo, is rejected with
Download too large (>536.9MB) even when the plugins in it are small. Put the plugins in a smaller dedicated repository, or upload the plugin as a zip file instead.3
Grant Claude write access to the repository
At
claude.ai/admin-settings/claude-tag, open a bundle on the Bundles tab under Claude’s access. In its What’s in it section, select Add, then Repository, and pick the repository. The Claude GitHub App must already be linked to your GitHub organization; see Configure GitHub access.4
Add the plugins to the bundle
On the same bundle’s page, select Add, then Plugin, and pick each plugin from your new marketplace. A plugin isn’t in the bundle until you add it, and the bundle’s plugins apply wherever the bundle applies; see Choose where a bundle applies and Attach plugins.
How updates propagate
Once the repository is set up, Claude can propose changes and they reach channels automatically after you merge:
Claude opens the PR, and you merge it. To require a person’s approval before a change reaches the default branch, see Require a second approval on Claude’s pull requests.
Prompt Claude to propose updates
Claude won’t open skill PRs unprompted. Ask in the channel when something it learned should stick:Why a repository instead of uploading skills
You can also upload individual skills in the console without a repository. The repository pattern is worth the setup because Claude can propose changes to it, every change goes through version control and code review, and you can attach the same skills to multiple bundles without uploading them again.Upload a plugin as a zip file
To upload instead, in Organization settings > Plugins & skills, click Add, choose Upload a plugin, and upload a.zip or .plugin archive of up to 200 MB. The archive has to be a Claude Code plugin, laid out in one of these ways:
- A
.claude-plugin/plugin.jsonmanifest at the archive root, with each skill in its own folder atskills/<name>/SKILL.md - The same layout inside a single top-level folder
- For a single skill, a
SKILL.mdat the top level whose frontmatter declares the plugin’s components
plugin.json, or with the manifest anywhere else is rejected at upload. After upload, the plugin is in your organization’s catalog but not attached anywhere. To make it available in channels, add it to a bundle with Add, then Plugin, on the bundle’s page, or add it for all of Slack from the Skills and plugins tab under Claude’s access; see Attach plugins.
Repository context files and MCP servers
A granted repository’sCLAUDE.md and .claude/rules/*.md load when Claude clones it, in the same format as Claude Code; see What loads from a repository and the Claude Code memory docs. A repository’s .mcp.json is not loaded. To give Claude an MCP server, put the .mcp.json in a plugin, next to its .claude-plugin/plugin.json, and attach the plugin; the Claude Code plugin docs cover the .mcp.json format, and Add a custom MCP server covers the credential the server needs.
What belongs in the repository
Skills in the repository reach every channel under the scope.
Related resources
- Attach plugins: how plugins and skills load into a scope
- Configure GitHub access: granting Claude write access to a repository
- What Claude Tag remembers: when channel memory is the right place instead