| name | installing-skills-from-github |
| description | Install Claude Code skills from GitHub repositories as git submodules. Use when:
(1) installing skills from GitHub URLs like obra/superpowers or blader/continuous-learning,
(2) git warns "adding embedded git repository", (3) need to track external skill repos
in your project, (4) .claude/ directory in .gitignore blocks skill commits. Handles
submodule setup, hook configuration, and .gitignore conflicts. Applies to Claude Code
project-local skills installation.
|
| author | Claude Code via continuous-learning |
| version | 1.0.0 |
| date | 2026-01-18T00:00:00.000Z |
Installing Claude Code Skills from GitHub
Problem
Installing Claude Code skills from GitHub repositories requires git submodules rather than
regular cloning. Simply cloning skill repos creates "embedded git repositories" that git
won't properly track, and the default .gitignore often blocks .claude/ from being committed.
Context / Trigger Conditions
Use this skill when:
- Installing skills from GitHub URLs (e.g.,
https://github.com/obra/superpowers)
- Git warns:
adding embedded git repository: .claude/skills/[name]
- Skills won't commit because
.claude/ is in .gitignore
- Need to track skill installations in your repository
- Setting up continuous-learning or other skills with hooks
Symptoms:
warning: adding embedded git repository: .claude/skills/continuous-learning
hint: You've added another git repository inside your current repository.
hint: If you meant to add a submodule, use:
hint: git submodule add <url> .claude/skills/continuous-learning
Solution
Step 1: Create Skills Directory Structure
mkdir -p .claude/skills
mkdir -p .claude/hooks
Step 2: Check .gitignore
Many projects ignore .claude/ by default. Remove it if you want to track skills in git:
git check-ignore -v .claude/
Decision point: Project-specific skills should be committed (.claude/skills/).
Personal skills should use ~/.claude/skills/ and stay gitignored.
Step 3: Install Skills as Submodules
Use git submodule add instead of git clone:
git submodule add https://github.com/[org]/[repo].git .claude/skills/[skill-name]
git submodule add https://github.com/blader/claude-code-continuous-learning-skill.git .claude/skills/continuous-learning
git submodule add https://github.com/numman-ali/openskills.git .claude/skills/openskills
git submodule add https://github.com/obra/superpowers.git .claude/skills/superpowers
If you already cloned as regular repos:
git rm --cached -f .claude/skills/[skill-name]
rm -rf .claude/skills/*
Step 4: Configure Hooks (If Needed)
Some skills like continuous-learning require hooks:
cp .claude/skills/continuous-learning/scripts/continuous-learning-activator.sh .claude/hooks/
chmod +x .claude/hooks/continuous-learning-activator.sh
Create or update .claude/settings.json:
{
"hooks": {
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "./.claude/hooks/continuous-learning-activator.sh"
}
]
}
]
}
}
Step 5: Verify Installation
cat .gitmodules
find .claude/skills -name "SKILL.md" | wc -l
test -x .claude/hooks/continuous-learning-activator.sh && echo "✅ Hook ready"
Step 6: Commit and Push
git add .claude/ .gitignore .gitmodules
git commit -m "feat: install Claude Code skills as submodules
- continuous-learning: autonomous knowledge extraction
- openskills: universal skills loader
- superpowers: complete development workflow
Skills configured as git submodules in .claude/skills/
Hook activated for continuous-learning in .claude/settings.json"
git push -u origin your-branch-name
Verification
After installation, verify:
- Submodules registered:
cat .gitmodules shows your skills
- Skills discovered:
find .claude/skills -name "SKILL.md" returns skill files
- Hooks working: Submit a prompt and see hook output (for continuous-learning)
- Git tracking:
git status shows .claude/ files staged/committed
Cloning a Project with Skill Submodules
When others clone your project:
git clone --recursive [repo-url]
git submodule update --init --recursive
Updating Skills
To update skill repositories to latest versions:
cd .claude/skills/superpowers
git pull origin main
git submodule update --remote --merge
git add .claude/skills
git commit -m "chore: update Claude Code skills to latest versions"
Notes
Project vs Personal Skills
- Project skills (
.claude/skills/): Team-shared, committed to git
- Personal skills (
~/.claude/skills/): User-specific, stays local
Skill Discovery
Claude Code uses semantic matching on skill descriptions. Skills activate automatically
when their description matches your task context. No manual invocation needed for most skills.
Performance
Skills use progressive disclosure:
- Metadata loads first (~100 tokens)
- Full instructions load when relevant (<5k tokens)
- Resources load only when needed
Start with 5-10 skills and add more as needed—skills are lightweight.
Security
Skills can execute arbitrary code. Inspect community skills before installation:
curl https://raw.githubusercontent.com/[org]/[repo]/main/SKILL.md
find .claude/skills/[skill-name] -name "*.sh" -exec cat {} \;
Alternative: NPM-based Installation
Some skills support npx openskills install:
npx openskills install anthropics/skills
npx openskills install [org]/[repo]
This method still uses .claude/skills/ but manages installation automatically.
Common Issues
Issue: "Permission denied" when running hook
Fix: chmod +x .claude/hooks/[hook-name].sh
Issue: Skills not activating
Fix: Ensure SKILL.md has valid YAML frontmatter and descriptive description field
Issue: Submodule URL changed or repo deleted
Fix: Update .gitmodules with new URL or remove the submodule:
git submodule deinit .claude/skills/[skill-name]
git rm .claude/skills/[skill-name]
rm -rf .git/modules/.claude/skills/[skill-name]
Example: Complete Installation Flow
mkdir -p .claude/skills .claude/hooks
sed -i '/^\.claude\/$/d' .gitignore
git submodule add https://github.com/obra/superpowers.git .claude/skills/superpowers
git submodule add https://github.com/blader/claude-code-continuous-learning-skill.git .claude/skills/continuous-learning
cp .claude/skills/continuous-learning/scripts/continuous-learning-activator.sh .claude/hooks/
chmod +x .claude/hooks/continuous-learning-activator.sh
cat > .claude/settings.json <<'EOF'
{
"hooks": {
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "./.claude/hooks/continuous-learning-activator.sh"
}
]
}
]
}
}
EOF
find .claude/skills -name "SKILL.md" | wc -l
cat .gitmodules
git add .claude/ .gitignore .gitmodules
git commit -m "feat: install Claude Code skills as submodules"
git push
References