From promode
Installs, updates, lists, and removes Claude Code skills from GitHub repos/subdirs or .skill zips. Supports user-global and project-local locations.
How this skill is triggered — by the user, by Claude, or both
Slash command
/promode:skills/managing-skillsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
<objective>
<first_action> When invoked for skill management:
<classify_request> Before any operation, classify what the user wants:
Operation type:
Source type (for INSTALL/UPDATE):
user/repo or github.com/user/repo without path after branch/tree/<branch>/ followed by a path.skillState both classifications before proceeding. </classify_request>
## Phase 1: Understand Request - Classify operation and source type - Identify target skill name - Determine install location (user vs project)Exit criteria: Operation type, source type, skill name, and location all known.
Exit criteria: Preconditions verified, conflicts identified.
<error_handling>Exit criteria: Commands completed without error.
<success_criteria>Exit criteria: Success criteria met, user reminded to restart.
<install_locations> Skills can be installed in two locations:
~/.claude/skills/<skill-name>/) - available in all projects<project>/.claude/skills/<skill-name>/) - available only in that project<decision_criteria> Suggest user location when:
Suggest project location when:
Always ask the user which location they want before installing. </install_locations>
<quick_start> Install from GitHub repo:
mkdir -p ~/.claude/skills
git clone https://github.com/user/repo ~/.claude/skills/repo
List installed skills:
ls ~/.claude/skills/
ls .claude/skills/
Remove a skill:
rm -rf ~/.claude/skills/skill-name
After any operation, remind user to restart Claude Code. </quick_start>
<skill_reference_types> A dedicated GitHub repo containing a skill.
How to recognize:
user/repohttps://github.com/user/repo/tree/<branch> but NO path after the branchInstall (User):
mkdir -p ~/.claude/skills
git clone https://github.com/user/repo ~/.claude/skills/repo
Install (Project - as submodule):
mkdir -p .claude/skills
git submodule add https://github.com/user/repo .claude/skills/repo
Update (User):
git -C ~/.claude/skills/skill-name pull
Update (Project):
git -C .claude/skills/skill-name pull
git add .claude/skills/skill-name
A skill living as a subdirectory within a larger repository.
How to recognize:
/tree/<branch>/ followed by a path within the repohttps://github.com/org/repo/tree/main/skills/my-skillParse the URL:
https://github.com/org/reposkills/my-skillmy-skill (last path component)Install (User or Project):
# Clone to temp directory
git clone --depth 1 https://github.com/org/repo /tmp/skill-clone-$$
# Copy subdirectory to target
mkdir -p ~/.claude/skills
cp -r /tmp/skill-clone-$$/skills/my-skill ~/.claude/skills/my-skill
# Create .skill-manager-ref with source URL
echo "https://github.com/org/repo/tree/main/skills/my-skill" > ~/.claude/skills/my-skill/.skill-manager-ref
# Cleanup
rm -rf /tmp/skill-clone-$$
Update:
# Read source URL
SOURCE_URL=$(cat ~/.claude/skills/my-skill/.skill-manager-ref)
# Re-run installation (same steps as above, overwrites existing)
A `.skill` zip file hosted at any URL.
How to recognize:
.skillhttps://example.com/skills/my-skill.skillParse the URL:
.skill extensionInstall (User or Project):
# Download to temp
curl -L -o /tmp/skill-$$.zip "https://example.com/skills/my-skill.skill"
# Create target and extract
mkdir -p ~/.claude/skills/my-skill
unzip -o /tmp/skill-$$.zip -d ~/.claude/skills/my-skill
# If zip contained a single directory, move contents up
if [ $(ls -1 ~/.claude/skills/my-skill | wc -l) -eq 1 ] && [ -d ~/.claude/skills/my-skill/* ]; then
mv ~/.claude/skills/my-skill/*/* ~/.claude/skills/my-skill/
rmdir ~/.claude/skills/my-skill/*/
fi
# Create .skill-manager-ref with source URL
echo "https://example.com/skills/my-skill.skill" > ~/.claude/skills/my-skill/.skill-manager-ref
# Cleanup
rm /tmp/skill-$$.zip
Update:
# Read source URL
SOURCE_URL=$(cat ~/.claude/skills/my-skill/.skill-manager-ref)
# Re-run installation (same steps as above, overwrites existing)
<remove_skill> User skill:
rm -rf ~/.claude/skills/skill-name
Project skill (submodule):
git submodule deinit -f .claude/skills/skill-name
git rm -f .claude/skills/skill-name
rm -rf .git/modules/.claude/skills/skill-name
Project skill (not a submodule):
rm -rf .claude/skills/skill-name
</remove_skill>
<check_skill_source> GitHub repo:
git -C ~/.claude/skills/skill-name remote get-url origin
git -C ~/.claude/skills/skill-name rev-parse --short HEAD
Subdirectory or Zip (has .skill-manager-ref):
cat ~/.claude/skills/skill-name/.skill-manager-ref
</check_skill_source>
<post_install> After installing any skill, check for and install dependencies:
if [ -f ~/.claude/skills/skill-name/requirements.txt ]; then
pip install -r ~/.claude/skills/skill-name/requirements.txt
fi
</post_install>
<error_handling> Network failure during clone/download:
--depth 1 for large reposPermission denied:
sudo only if installing to system location (not recommended)Skill already exists:
Invalid skill structure:
<never_do>
sudo for skill installation<success_criteria> Installation is successful when:
Update is successful when:
Removal is successful when:
<output_format> Every skill management response MUST include:
<operation>INSTALL|UPDATE|LIST|REMOVE|CHECK</operation>
<skill_name>name of skill</skill_name>
<location>~/.claude/skills/ or .claude/skills/</location>
<status>SUCCESS|FAILED|BLOCKED</status>
<action_taken>What was done</action_taken>
<next_steps>Restart Claude Code / Additional steps needed</next_steps>
Responses missing any section are incomplete. </output_format>
npx claudepluginhub mikekelly/promode --plugin promodeInstalls Claude Code skills from skills.sh via npx, GitHub repos, or direct SKILL.md downloads. Detects conflicts, confirms with user, and verifies post-install.
Installs, uninstalls, lists, and updates Skills/Commands for Claude Code, Codex, and OpenClaw. Supports local symlinks and GitHub installs with version tracking.
Install, list, and remove community skills from GitHub or local paths. Manages SKILL.md files for Claude Code's agent skill system.