Manage the installation, synchronization, uninstallation, listing, and project agent initialization of Claude Code, Codex, OpenClaw, and QoderWork Skills/Commands.
Prerequisites
- Git is installed (for GitHub cloning)
- Has permission to write to the target Agent configuration directory, for example
.codex/skills/、.claude/skills/、.openclaw/skills/、.qoderworkcn/skills/
Installation Behavior
- Local path (Skill) → symbolic link (stays in sync with the source)
- Local path (Command) → symbolic link (stays in sync with the source)
- Local collection directory → batch symbolic link
- GitHub repository/subdirectory → after cloning, delete .git (static copy) + automatic security check
Target Directory Detection
When running install, list, uninstall, or update, the script searches upward from the calling directory for the Agent configuration directory:
- When called in
/Users/maoking/.codexor its subdirectories, the target is/Users/maoking/.codex/skills/ - When called in
~/.qoderworkcnor its subdirectories, the target is~/.qoderworkcn/skills/ - When the project root contains
.codex/、.claude/、.openclaw/、.workbuddy/or.qoderworkcn/, the target isskills/orcommands/ - When called in
.codex/skills/、.claude/skills/、.openclaw/skills/、.qoderworkcn/skills/, the target is its parent configuration directory - To explicitly specify the target root directory, you can use the
--targetparameter or setSKILL_MANAGER_TARGET_DIR=/path/to/.codex - When called from the global configuration directory (such as
~/.claude、~/.qoderworkcn), it will attempt to automatically discover the project local directory via git and print a warning
Supported Source Types
Local path (symbolic link)
# 单个 skill 目录
skill-manager install ~/skills/pdf-tool
# 单个 command 文件
skill-manager install ~/commands/deepresearch.md
# 包含多个 skills 的目录(批量安装)
skill-manager install ~/skills/external-skills/
# 包含多个 commands 的目录(批量安装)
skill-manager install ~/commands/
GitHub repository root (clone, delete .git)
skill-manager install https://github.com/owner/skill-repo
skill-manager install owner/skill-repo
GitHub subdirectory (sparse clone, delete .git)
# 完整 URL 到子目录
skill-manager install https://github.com/jgtolentino/insightpulse-odoo/tree/main/docs/claude-code-skills/community
# 简写格式:owner/repo/branch/path/to/skills-directory
skill-manager install jgtolentino/insightpulse-odoo/main/docs/claude-code-skills/community
Workflow
Installation
- Detect source type - automatically identify local path, GitHub repository, or subdirectory
- Detect Item type - automatically identify whether it is a Skill (directory) or Command (.md file)
- Detect whether it is a collection directory - check whether the directory contains multiple items
- Batch processing mode - if it is a collection directory, iterate over all items and install them separately
- Local source - create a symbolic link to keep it updated in sync with the source
- GitHub repository root - use
git clone --depth 1shallow clone - GitHub subdirectory - use sparse checkout to fetch only the specified directory
- Conflict handling - if it already exists, first back it up as
.backup, then install the new version
Install Command
# 使用脚本安装
scripts/install.sh [--target <dir>] <source>
# 示例
scripts/install.sh ~/dev/my-skills/pdf-tool
scripts/install.sh ~/dev/my-commands/deepresearch.md
scripts/install.sh ~/dev/my-skills/
scripts/install.sh ~/dev/my-commands/
scripts/install.sh https://github.com/anthropics/claude-code
scripts/install.sh jgtolentino/insightpulse-odoo/main/docs/claude-code-skills/community
# 显式指定目标(从非项目目录调用时使用)
scripts/install.sh --target /path/to/project/.claude ~/dev/my-skills/pdf-tool
List Installed Items
scripts/list.sh
Display all installed items and their types (symbolic link or clone) under the currently detected Agent configuration directory.
Uninstall
scripts/remove.sh <name>
Delete the specified skill or command (automatically identify the type).
Update
scripts/update.sh [name]
- No parameter specified: update all skills cloned via git
- Specify name: update the specified skill
- Note: items of a symbolic link are automatically synced with the source, no manual update needed
Check for updates
scripts/check.sh
Check the update status of all remotely installed Skills, detection strategy:
- Has version number → directly compare local and remote version numbers
- No version number → check the remote repository's recent Commits and compare with the installation time
- Subdirectory installation → precisely check the Commits of the subdirectory where the Skill is located
Display:
- 📦 Skills with available updates
- ✅ Skills already at the latest version
- ⚠️ Skills that failed the check (no source information, etc.)
Every installation and update is automatically recorded to assets/skill-registry.json。
View installation records
python3 scripts/record.py list
Display detailed records of all installed Skills, including:
- Installation time
- Source URL
- Current version
- Description information
Project initialization
scripts/init.sh [选项]
Create an Agent configuration directory structure for the project root directory, so that different Agents (QoderWork, WorkBuddy, Codex, OpenClaw, etc.) can discover Claude Code Skills when working in the project.
Core operation: in the project root directory, for each Agent create a relative symbolic link {agent}/skills -> ../.claude/skills。.claude/skills/ is the symbolic link root source for all Agent skills——no copying, no dual writing, single source。
Default behavior: initialize .codex、.openclaw、.workbuddy、.qoderworkcn four Agents (excluding .claude, because its skills/ is the source).
# 初始化所有默认 Agent
scripts/init.sh
# 仅初始化指定 Agent
scripts/init.sh --qoderwork --workbuddy
# 初始化全部 Agent(含 .claude)
scripts/init.sh --all
# 预览模式(不实际修改文件)
scripts/init.sh --dry-run
# 初始化并同步更新 .gitignore
scripts/init.sh --gitignore
Options:
--all: initialize all Agents (including.codex.claude.openclaw.workbuddy.qoderworkcn)--qoderwork: initialize only.qoderworkcn--workbuddy: initialize only.workbuddy--codex: initialize only.codex--openclaw: initialize only.openclaw--claude: also initialize.claude(usually not needed, its skills directory is the source)--dry-run: preview mode, only show the operations that will be performed--gitignore: sync and update the project.gitignore, append.{agent}/entry
Conflict handling:
- Symbolic link already correctly points to
.claude/skills→ skip - Symbolic link points elsewhere → remove and recreate
- Physical directory exists → back up with timestamp then create symbolic link
Project root directory lookup: prefer git rev-parse --show-toplevel, otherwise traverse upward to find the directory containing .claude/skills/ .
Recognition rules
Skill directory rules
A directory is considered a valid skill directory if it contains:
SKILL.mdfile (standard skill)- or
skill.mdfile (variant) - or
.codex/.claude/.openclawsubdirectory
Command file rules
- File extension is
.md
Collection directory rules
- Skills collection: contains multiple skill subdirectories
- Commands collection: contains multiple
.mdfiles
Usage examples
# ========== 安装 ==========
# 安装本地单个 skill
skill-manager install ~/dev/my-skills/pdf-tool
# 批量安装本地目录下的所有 skills
skill-manager install ~/dev/my-skills/
skill-manager install ../other-project/.claude/skills/
# 在 Codex 全局目录中调用时,安装到 ~/.codex/skills/
cd /Users/maoking/.codex
skill-manager install ~/dev/my-skills/pdf-tool
# 在 QoderWork 全局目录中调用时,安装到 ~/.qoderworkcn/skills/
cd ~/.qoderworkcn
skill-manager install ~/dev/my-skills/pdf-tool
# 从全局目录调用但安装到指定项目(使用 --target 避免装错位置)
skill-manager install --target /path/to/project/.claude ~/dev/my-skills/pdf-tool
# 从 GitHub 仓库根目录安装
skill-manager install https://github.com/anthropics/claude-code
skill-manager install anthropics/claude-code
# 从 GitHub 子目录安装
skill-manager install https://github.com/jgtolentino/insightpulse-odoo/tree/main/docs/claude-code-skills/community
skill-manager install jgtolentino/insightpulse-odoo/main/docs/claude-code-skills/community
# ========== 查看与管理 ==========
# 列出已安装的 skills
skill-manager list
# 卸载 skill
skill-manager remove pdf-tool
# ========== 更新与检查 ==========
# 检查所有 skills 的更新
skill-manager check
# 更新所有 git 克隆的 skills
skill-manager update
# 更新指定 skill
skill-manager update claude-code
# 查看安装记录
python3 scripts/record.py list
Security check
When installing a skill from GitHub, a security check is automatically performed (local installations are not checked).
Detection content
| Category | Description |
|---|---|
| Dangerous code patterns | Command execution, sensitive file access, data exfiltration, code obfuscation, privilege escalation, etc. |
| Skill-specific risks | Install hooks, MCP server configuration, etc. |
| Prompt security | Prompt injection, data collection instructions, execution instructions, deceptive descriptions, etc. |
| Hardcoded credentials | Sensitive information such as API Keys, Tokens, passwords, etc. |
Risk level
- 🔴 CRITICAL - Extremely high risk, strongly recommend not using
- 🟠 HIGH - High risk, use after audit
- 🟡 MEDIUM - Medium risk, please check before use
- 🟢 LOW - Low risk, recommend regular checks
- ✅ NONE - No obvious risks found
Notes
- Security checks require a Python 3 environment; silently skipped when Python is unavailable
- Issues found by checks will not block installation, only a warning report is output
- It is recommended to carefully read the security report after installing an external skill
Registry Schema
Each installed Skill is recorded in assets/skill-registry.json , containing the following fields:
| Field | Description |
|---|---|
name |
Skill directory name |
source |
Original installation source (local path or GitHub URL) |
install_type |
"local"(symbolic link) or "remote"(GitHub clone) |
installed_at |
Initial installation time (ISO 8601) |
last_updated |
Last version update time |
last_check_at |
Last update check time (remote only) |
installed_version |
Version number at installation |
current_version |
Currently installed version |
latest_version |
Latest remote version |
install_commit |
Git commit hash at installation (remote only) |
install_branch |
Git branch used at installation (remote only) |
remote_url |
Full GitHub URL, including subdirectory path (remote only) |
remote_subpath |
Skill's subpath in the repository (subdirectory installations only) |
description |
Skill description |
homepage |
Homepage URL |
Directory structure
skill-manager/
├── SKILL.md # 本文件
├── CHANGELOG.md # 变更日志
├── CLAUDE.md # AI 开发助手说明
├── LICENSE.txt # 许可证
├── scripts/
│ ├── install.sh # 安装脚本
│ ├── list.sh # 列表脚本
│ ├── remove.sh # 卸载脚本
│ ├── update.sh # 更新脚本
│ ├── check.sh # 更新检查脚本
│ ├── init.sh # 项目 Agent 初始化脚本
│ ├── auto-check.sh # 定期自动检查触发器
│ ├── target.sh # Agent 配置目录识别模块
│ ├── record.py # 记录管理模块
│ └── security.py # 安全检查模块
└── assets/ # 资源文件
├── skill-registry.json # Skill 安装记录(运行时生成)
└── skill-registry.example.json # 注册表示例