Manage the full lifecycle of Skills: scan, check for updates, upgrade, delete, and manage the experience layer.
Core Features
- Scan and Audit: Scan the Skills directory and parse the frontmatter metadata of all SKILL.md files
- Version Check: Concurrently query GitHub (via
git ls-remote) to compare local and remote hashes - Status Report: Generate a status report identifying outdated/current/unmanaged/error
- Update Workflow: Guide the Agent to perform a Skill upgrade
- Inventory Management: List and delete Skills
- Experience Layer Management: The promote/pull commands synchronize experience between layers
Startup Flow (Important)
Each time skill-manager is invoked, the following flow must first be executed to determine the Skills directory:
Step 1: Check configuration
Run python scripts/config.py get to check whether the Skills directory has been configured.
Step 2: Handle based on configuration status
Case A - Configured:
- Confirm with the user: "The Skills in
<skills_dir>will be managed, confirm to continue?" - User confirms → continue executing the operation
- User declines → ask for a new path, run
python scripts/config.py set <new_path>
Case B - Not configured:
- Run
python scripts/config.py detectto auto-detect - Detection succeeds → confirm the detected path with the user, and continue after confirmation
- Detection fails → ask the user for the Skills directory path, then run
python scripts/config.py set <path>
Example Dialogue
Agent: 检查 skill-manager 配置...
Agent: 已配置 Skills 目录: /Users/xxx/.claude/skills
Agent: 将管理该目录中的 Skills,确认继续?
User: 确认
Agent: [执行用户请求的操作]
Agent: 检查 skill-manager 配置...
Agent: 未找到配置,正在自动检测...
Agent: 检测到 Skills 目录: /Users/xxx/.claude/skills
Agent: 是否使用该目录?
User: 是
Agent: 已保存配置。[执行用户请求的操作]
Note: Do not explore the current working directory to find Skills. The Skills directory is the location where the user specifically stores Skills and is unrelated to the current project.
Use Cases
Check for Updates
Trigger Methods:
/skill-manager check- "Check whether my Skills have updates"
- "Scan Skills for updates"
Workflow:
- The Agent runs the
scripts/scan_and_check.py <skills_dir> - script to concurrently check all Skills with
source_urlSkills - Output a status report in JSON format
- The Agent presents the results to the user
Example Output:
Skills 状态摘要
========================================
总计: 12 个 Skills
- 最新: 8
- 需更新: 2
- 非托管: 1
- 错误: 1
需要更新的 Skills:
- yt-dlp: New commits available
本地: abc123...
远程: def456...
List Skills
Trigger Methods:
/skill-manager list- "List my Skills"
- "Show all Skills"
Workflow:
- The Agent runs
scripts/list_skills.py <skills_dir> - Output a Skills list in table or JSON format
Example Output:
Name | Type | Ver | Description
-----------------------|----------|----------|------------------------------------------
md-to-pptx | Standard | 1.0.0 | Markdown 转 PowerPoint 工具...
n8n-workflow-patterns | Standard | 1.0.0 | n8n 工作流模式专家...
yt-dlp | GitHub | 0.1.0 | YouTube 视频下载工具封装...
-----------------------|----------|----------|------------------------------------------
Total: 12 skills
Update Skill
Trigger Methods:
- "Update [Skill name]" (after checking for updates)
/skill-manager update <skill_name>
Workflow:
- The Agent fetches the new README from the remote repository
- Compare the old and new READMEs to identify changes (new features, deprecated parameters, etc.)
- Rewrite SKILL.md to reflect the new features
- Update the
source_hashfield - Optional: update wrapper.py
- Run
skill-evolution'salign_all.pyto restore user experience
Delete Skill
Trigger method:
/skill-manager delete <skill_name>- "Delete Skill: <skill_name>"
Workflow:
- Agent runs
scripts/delete_skill.py <skill_name> <skills_dir> - Script displays Skill information and requests confirmation
- Optional: Back up to
.skill-backupdirectory - Execute deletion
Experience layer management
View experience status
Trigger method:
/skill-manager evo-status <skill_name>- "View xxx's experience status"
Workflow:
python scripts/evo_manager.py evo-status <skill_name> [--project <path>]
Example output:
Skill: n8n-code-javascript
Project: /Users/xxx/my-project
Layers:
[✗] Upstream
Path: ~/.claude/skills-repo/skills/n8n-code-javascript/evolution.json
[✓] Global
Path: ~/.claude/evolutions/n8n-code-javascript/evolution.json
Items: 5 total
- preferences: 2
- fixes: 2
- contexts: 1
[✓] Project
Path: /Users/xxx/my-project/.claude/evolutions/n8n-code-javascript.json
Items: 3 total
- preferences: 1
- fixes: 2
Merged Total: 8 items
Promote experience to global layer
Trigger method:
/skill-manager promote <skill_name>- "Promote this project's experience to global"
Workflow:
python scripts/evo_manager.py promote <skill_name> [--project <path>] [--fields f1,f2]
Copy the current project's experience to the global layer for sharing across all projects.
Pull experience from global layer
Trigger method:
/skill-manager pull <skill_name>- "Pull global experience into this project"
Workflow:
python scripts/evo_manager.py pull <skill_name> [--project <path>]
Copy the global layer's experience to the current project, used for initializing new projects.
Sync all experience statuses
Trigger method:
/skill-manager sync-evolutions- "View the experience status of all Skills"
Workflow:
python scripts/evo_manager.py sync [--skills-dir <path>] [--project <path>]
Example output:
============================================================
Skills Evolution Status Summary
============================================================
Skills Directory: ~/.claude/skills-repo/skills
Project Path: /Users/xxx/my-project
Total Skills: 14
Summary:
- Has upstream evolution: 2
- Has global evolution: 5
- Has project evolution: 3
- No evolution data: 8
Skills Detail:
------------------------------------------------------------
Name Up Glb Prj Total
------------------------------------------------------------
md-to-pptx - ✓ - 3
n8n-code-javascript - ✓ ✓ 8
n8n-code-python - - - 0
...
------------------------------------------------------------
Script description
| Script | Function | Parameter |
|---|---|---|
config.py |
Configuration management | get|set <path>|detect|clear |
scan_and_check.py |
Scan and check for updates | <skills_dir> [--json|--summary|--table] |
list_skills.py |
List all Skills | <skills_dir> [--json] [--verbose] |
delete_skill.py |
Delete Skill | <skill_name> <skills_dir> [--backup] [--force] |
evo_manager.py |
Experience layer management | <command> <skill_name> [options] |
evo_manager.py commands
| Command | Function |
|---|---|
evo-status <skill> |
View experience distribution status |
promote <skill> |
Project experience → Global layer |
pull <skill> |
Global experience → Project layer |
sync |
View experience status of all skills |
Metadata dependencies
This manager depends on the following metadata fields:
| Field | Purpose |
|---|---|
source_url |
Remote repository URL (used to check for updates) |
source_hash |
Locally recorded commit hash |
version |
Semantic version number |
evolution_enabled |
Whether experience evolution is enabled |
Compatibility: Also supports the old-format github_url and github_hash fields.
Status description
| Status | Meaning |
|---|---|
current |
Local hash is the same as remote, no update needed |
outdated |
Remote has new commits |
unmanaged |
Not configured source_url, unable to check for updates |
error |
Unable to access remote repository |
unknown |
No hash recorded locally |
Best practices
- Regular checks: It is recommended to run
/skill-manager check - Backup before deletion: Before deleting an important Skill, use the
--backupoption - Align after updating: After updating a Skill, run
skill-evolution'salign_all.pyto restore experience - Version control: Use Git to manage the Skills directory for easy rollback
- Experience management:
- Run when starting a new project
pullto obtain global experience - Run at the end of a project
promoteto promote valuable experience - Run periodically
syncview the experience distribution
- Run when starting a new project
Collaboration with other Skills
- skill-factory: Created Skills automatically include the metadata required for lifecycle management
- skill-evolution: call after update
align_all.pyrestore user experience; sharelayered_merge.py - skill-creator: follow the same metadata specification