From plugin-embedder
Embed Claude Code plugins into a target repo as project-local plugins. Use when you want a repo to ship its plugin dependencies as committed files (so environments that can't reliably install marketplace plugins — Claude Code Web, restricted-network CI — still see them as native skills/hooks/agents). Manually invoked; pair with a committed .claude/embedded-plugins.json manifest.
How this skill is triggered — by the user, by Claude, or both
Slash command
/plugin-embedder:embed-pluginsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Embed plugins from public source repos into a target repo as project-local plugins. Each embedded plugin lives at `.claude/plugins/<plugin-name>/` (full plugin tree, wholesale copy) and is enabled by bare name in `.claude/settings.json` — same shape as Anthropic's own `pr-review-toolkit` precedent.
Embed plugins from public source repos into a target repo as project-local plugins. Each embedded plugin lives at .claude/plugins/<plugin-name>/ (full plugin tree, wholesale copy) and is enabled by bare name in .claude/settings.json — same shape as Anthropic's own pr-review-toolkit precedent.
claude plugin install <plugin>@<marketplace>). Embedding is for the consuming repo's benefit, not yours.Confirm the target repo has a manifest. Look for <repo-root>/.claude/embedded-plugins.json. If missing, the maintainer needs to add one. The format is:
{
"plugins": [
{ "source": "github:owner/repo", "ref": "main" },
{ "source": "github:other-owner/other-repo" }
]
}
ref defaults to main if omitted. The plugin's name is read from each source's own .claude-plugin/plugin.json — the manifest doesn't repeat it.
Run the embed script. From the target repo's root (or pass the path explicitly):
bash ${CLAUDE_PLUGIN_ROOT}/scripts/embed-plugins.sh
# or, against a different repo:
bash ${CLAUDE_PLUGIN_ROOT}/scripts/embed-plugins.sh /path/to/target/repo
The script:
ref)..claude/plugins/<plugin-name>/ for that plugin and copies the new tree in (without the upstream's .git)..claude/settings.json: enables the embedded copy by bare name ("<name>": true), and disables any matching marketplace entry ("<name>@<marketplace>": false) so hooks don't fire twice.Inspect the diff. Embedded files are committed to the repo, so the diff goes through normal review. After running the embed:
git status
git diff .claude/settings.json
git diff --stat .claude/plugins/
Expect a wholesale tree under .claude/plugins/<name>/ per embedded plugin, plus a small .claude/settings.json toggle.
Commit. Single PR per refresh is fine; the embed is intentionally one logical unit.
.claude/plugins/<embedded-plugin>/. Every embed run wipes and re-copies. Edits will silently disappear on the next refresh. If you need to fork a plugin's behavior, fork the upstream source repo and point the manifest at your fork..claude/plugins/. The whole point is committed-to-the-repo plugin content. If files weren't committed, environments that can't install marketplace plugins wouldn't see them..claude/plugins/ tree without committing first. The embed wipes existing trees for plugins listed in the manifest. Uncommitted edits there will be lost.plugin-embedder/ # this plugin's own repo
scripts/embed-plugins.sh # the workhorse
skills/embed-plugins/SKILL.md # this file
<consuming-repo>/ # any repo that wants embedded plugins
.claude/
embedded-plugins.json # manifest (committed; small)
plugins/<plugin-name>/ # embedded plugin tree (committed)
settings.json # `enabledPlugins` updated by embed script
.claude-plugin/plugin.json at the repo root. Monorepo subdirectories aren't supported (no path field in the manifest yet).ref must be a branch or tag. Raw commit SHAs are rejected by git clone --branch. Use a tag if you need reproducibility.git and jq on PATH (preflight-checked, errors loudly if missing). tar, mktemp, bash itself are POSIX-standard and assumed present.Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub zainrizvi/plugin-embedder --plugin plugin-embedder