How to Install Claude Code Plugins via GitHub (Free Course)
All Courses › How to Install Claude Code Plugins via GitHub
How to Install Claude Code Plugins via GitHub (and Build Your Own in 30 Minutes)
You opened Claude Code, hit a wall, and realized the model doesn't know your stack, your conventions, or the three internal scripts you use every day. You could paste context every time. You could write a 9000-word CLAUDE.md and pray. Or you could install a plugin in 30 seconds and ship your own in half an hour. This course is the second path. By the end, you will have installed a plugin from a public GitHub repository, built one from scratch with skills and slash commands, pushed it to your own repo, and understood the exact mechanism Claude uses to discover and trigger your work.
What you will be able to do after this course
- Install a Claude Code plugin from any public GitHub repo with one command
- Read and write a valid
plugin.jsonandmarketplace.json - Build a skill with proper frontmatter that Claude actually triggers
- Add a slash command that runs in your terminal
- Diagnose the four most common failures (path, cache, frontmatter, discovery)
- Publish your plugin so other people can install it
- Ship one plugin for your own business by tomorrow
Why this matters (and why most people skip it)
Every hour you spend re-explaining your codebase to Claude is an hour you are not shipping. Plugins are the fix. They are version-controlled, shareable bundles of instructions, commands, and capabilities that turn a generic coding assistant into a tool that knows your business. Agencies use them to standardize delivery across clients. Indie hackers use them to encode their content workflow. The people who treat Claude Code as just a chat box are losing to the people who treat it as a programmable runtime.
What is a Claude Code plugin
A Claude Code plugin is a directory of files that extends what Claude can do inside your terminal. Think of it as a browser extension for your AI pair programmer. It can ship four kinds of things:
- Skills - markdown files with frontmatter that Claude loads when relevant. Claude reads the description in your frontmatter and decides on its own whether to load the full skill body for a given turn.
-
Slash commands - reusable prompt templates you trigger with
/your-command-name. - Subagents - specialized agent definitions Claude can spawn for specific kinds of work.
- MCP servers - Model Context Protocol servers that give Claude direct, structured access to external systems.
-
cache/marketplaces/is where every cloned marketplace repo lives -
installed_plugins.jsonis the source of truth for which plugins are enabled -
known_marketplaces.jsonlists every marketplace you have added - Your description is the trigger. Write it like a search query. Include the verbs, nouns, and phrases a user would actually type when they need this skill.
- Be specific about the trigger surface. Listing 3 to 5 example phrases makes invocation reliable.
- Keep the body focused. Bloated bodies cost tokens and dilute attention.
- Frontmatter is missing or malformed
- The
namefield has spaces or capitals (use lowercase kebab-case) - The
descriptionis too vague - The skill folder name and the
namein the frontmatter do not agree
The minimum viable plugin is a plugin.json and one skill or one command. Plugins live in marketplaces, which are just GitHub repos with a marketplace.json index file.
Anatomy of a plugin: the 4 files that matter
A plugin repo, in its simplest useful form, looks like this:
my-plugin/
.claude-plugin/
plugin.json
marketplace.json
skills/
my-skill/
SKILL.md
commands/
my-command.md
README.md
plugin.json - the plugin manifest
{
"name": "revenue-ops",
"version": "0.3.1",
"description": "Skills and commands for running a high-velocity Shopify store with Claude Code",
"author": {
"name": "TheRevenue AI",
"url": "https://therevenue-ai.com"
},
"homepage": "https://github.com/your-handle/revenue-ops",
"license": "MIT",
"keywords": ["shopify", "revenue", "marketing", "ai-visibility"]
}
The name field is what users will type to install it. Keep it short, lowercase, and hyphen-separated.
marketplace.json - the index
{
"name": "revenue-ai-marketplace",
"owner": {
"name": "TheRevenue AI",
"url": "https://therevenue-ai.com"
},
"plugins": [
{
"name": "revenue-ops",
"source": "./",
"description": "Shopify and revenue operations toolkit",
"version": "0.3.1"
}
]
}
skills/ - knowledge Claude loads on demand
Each skill is a folder with a SKILL.md file. The frontmatter is what Claude reads to decide whether the skill is relevant to the current turn. The body is what Claude actually uses once it decides yes.
---
name: shopify-product-launch
description: Use when the user is launching a new Shopify product and needs the full sequence (page copy, metafields, SEO, email blast, social posts). Triggers on phrases like "launch a product", "ship this product live", or "new product page".
metadata:
version: 0.3.1
author: TheRevenue AI
---
# Shopify Product Launch Sequence
When the user asks to launch a product, run this sequence in order:
1. Confirm the product handle, price, and inventory count.
2. Generate the product page copy in our house voice.
3. Set the SEO title and meta description (under 60 and 155 characters respectively).
4. Generate the launch email subject line A/B set (3 variants).
5. Generate 3 social posts (X, LinkedIn, IG) referencing the product URL.
6. Output a checklist the user can tick off.
That description field is doing 90 percent of the work. A vague description means your skill never fires.
commands/ - explicit slash commands
---
description: Scaffold a new Shopify product page from a one-line brief
argument-hint: "<product brief>"
---
You are scaffolding a new Shopify product page based on this brief: $ARGUMENTS
Output:
1. Product title (under 65 characters)
2. Handle (kebab-case, no stop words)
3. Price suggestion with one-line justification
4. Page body in HTML (3 sections: problem, solution, what is included)
5. SEO title and meta description
6. 3 product tags
Save that as commands/scaffold-product.md and the user gets /scaffold-product in their session.
Step-by-step: install a plugin from a public GitHub repo
Step 1: add the marketplace
claude plugin marketplace add example-org/claude-toolkit
Step 2: list what is in the marketplace
claude plugin marketplace list
claude plugin search example-org
Step 3: install the plugin
claude plugin install ai-visibility-score@example-org/claude-toolkit
Step 4: verify it is live
claude plugin list
Inside an interactive session, type / and the slash commands from the plugin appear in autocomplete.
What lives in ~/.claude/plugins/
~/.claude/plugins/
cache/
marketplaces/
example-org-claude-toolkit/
.claude-plugin/marketplace.json
plugins/ai-visibility-score/
installed_plugins.json
known_marketplaces.json
On Windows the equivalent path is C:\Users\<you>\.claude\plugins\. The structure is identical.
Build your own plugin from scratch
mkdir release-notes && cd release-notes
git init
mkdir -p .claude-plugin skills/release-notes commands
Create .claude-plugin/plugin.json, .claude-plugin/marketplace.json, skills/release-notes/SKILL.md, and commands/release.md. Push to GitHub:
git add .
git commit -m "initial plugin"
git remote add origin git@github.com:your-handle/release-notes.git
git push -u origin main
Install it:
claude plugin marketplace add your-handle/release-notes
claude plugin install release-notes@your-name-tools
How Claude finds and triggers your skill
Claude does not load every skill body into context on every turn. At session start, Claude reads the name and description from each skill's frontmatter. That short metadata is what Claude uses to decide, mid-conversation, whether your skill is relevant. If yes, Claude loads the full SKILL.md body and follows its instructions.
Three rules in practice:
Common gotchas
1. Windows path quirks
JSON requires forward slashes or escaped backslashes. Use forward slashes everywhere - they work on Windows too.
2. Skill discovery silently failing
Almost always one of:
Run claude plugin list --verbose to see how Claude is parsing your skill's metadata.
3. Version cache
When you push a new version, bump the version field in plugin.json AND in marketplace.json. After pushing:
claude plugin marketplace update your-handle/release-notes
claude plugin update release-notes
Where to ship next
| Option | When to use it |
|---|---|
| Single-plugin repo, public | One focused tool you want to be findable |
| Multi-plugin marketplace, public | A coherent suite (auth, billing, analytics) |
| Private marketplace, internal | Agency or team use, with auth-gated repos |
Three things matter for distribution: the README is your sales page (lead with what the plugin does, paste the install command in the first 50 lines). Your description fields are your search rank. Versioning communicates trust.
Now ship one for your business
You can install plugins. You can build plugins. You can debug plugins. The only thing left is to use the skill on your own business. Pick the most repetitive AI task you do this week and turn it into a plugin tonight.
When you are ready for the next layer, start with our free AI Visibility Score at therevenue-ai.com/pages/ai-visibility-score. It audits your site for the things AI search engines actually look at, gives you a score, and tells you exactly what to fix.
Liked this course? The paid ones are the same depth.
If this content earned your trust, the next 3 courses go even deeper. Or skip ahead and have us run the audit for your business.
Build MCP Server $19 → AI Visibility 7-Day $29 → Personal Audit $47 →