skm 的目标不是变成“各种 skill 的大仓库”,而是成为 agent skills 生命周期工具包。
核心主线:
discover -> install -> organize -> verify -> sync -> update -> release
让一个用户从“我看到一个 skill 链接”到“这个 skill 被安全纳入本地体系并在 Codex / Claude Code 中可用”,变成稳定、可验证、可迁移的流程。
成功状态:
- 本地 skill 只有一个真实来源
- 外部 skill 包有明确 vendor 边界
- 入口层始终可重建
- 每一步都可验证,而不是靠人工记忆
- 发现可安装的 skill
- 导入外部 skill 包
- 整理本地散乱 skill
- 检查入口层与真实来源是否一致
- 更新 vendor skill 包
- 把一组 skill 抽成独立仓库并重新接回
- 业务领域 skill 本身
- 项目仓库内的团队规范
- 聊天历史、缓存、工具内部元数据
- 通用 dotfiles 管理
当前已经扎实的基础:
- 核心架构清晰:
~/.skm(source of truth)→exports/shared(导出层)→~/.claude/skills/~/.agents/skills(入口层) - 生命周期主线已经成形:discover -> install -> organize -> verify -> sync -> update -> release
- 仓库内主要 lifecycle skills 已经有完整的
SKILL.md文档,包含触发条件、工作流、常见错误与完成标准 bootstrap.sh/check.sh已经具备较好的参数化能力,适合 fake-home 测试和跨机器复用- 双语 README、最佳实践与通用提示词已经能说明
skm的职责边界
当前存在但还不完整的部分:
skm-create-custom-agent-skill已有设计与文档,但仍缺少配套实现脚本skm-organize-agent-skills已有设计与文档,但自动化不足,很多步骤仍依赖人工执行- 测试覆盖仍偏窄,尚未系统覆盖
bootstrap、sync、install、update等核心流程 - 脚本虽然使用了
set -euo pipefail,但错误提示的上下文与恢复建议还不够友好
当前仍然缺失的能力:
- personal / vendor 之间的同名 skill 冲突检测与优先级规则
SKILL.md的 schema / lint 校验与命名规范检查- 卸载 / 清理工作流与配套脚本
skm自身版本化与 vendor pinning 机制- CI/CD、自动化测试与 submodule 漂移检测
- Windows / WSL 的验证与回退方案
- skill 依赖声明与依赖图
CONTRIBUTING.md与外部协作指南
下面的 roadmap 重点不再重复已经存在的架构与文档,而是聚焦下一阶段的优化方向:补齐核心 -> 强化可靠性 -> 进入生态化。
目标:继续守住 skm 的边界,让 source-of-truth 模型保持清晰而不过度扩张。
- 持续明确
~/.skm、exports/shared、~/.agents/skills、~/.claude/skills的职责 - 继续避免把 dotfiles 管理、运行时缓存、项目级规范混进
skm
- 所有
SKILL.md继续统一采用触发条件、核心规则、工作流、常见错误、完成检查等结构 - 从“靠文档约定”逐步过渡到“靠 lint 自动检查”
- 继续以
SKM_DIR、CLAUDE_SKILLS_DIR、CODEX_SKILLS_DIR等环境变量为准 - 为 fake-home 测试、跨机器复用和未来跨平台支持打基础
目标:补齐当前“文档完整、实现不完整”以及“核心能力缺口明显”的部分。
职责:
- 生成标准 skill 目录与
SKILL.md - 补齐脚手架、校验、导出与验证步骤
- 让“创建 skill”从手工编辑变成标准 workflow
职责:
- 自动盘点散落的 skill 目录
- 给出归类建议、迁移计划与风险提示
- 尽量减少依赖人工判断和手工搬运
职责:
- 检测
personal/与vendor/的同名 skill - 定义明确的优先级与冲突提示
- 在
doctor/sync过程中提前暴露结构问题
职责:
- 检查 frontmatter 必填字段,如
name、description - 检查命名规范、目录命名与触发描述质量
- 让 skill 质量控制从人工 review 走向自动化
职责:
- 为
bootstrap、sync、install、update增加 fake-home 测试 - 标准化 fake home / fake vendor repo / fake dotfiles 测试夹具
- 让核心工作流具备可重复验证能力
职责:
- 为关键脚本补充更有上下文的失败信息
- 在失败时明确下一步恢复动作
- 降低用户面对 shell 错误时的理解成本
目标:把 skm 从“功能可用”提升到“长期运维友好”。
职责:
- 提供文档化的移除流程
- 增加解除入口链接和清理生成层的脚本
- 明确“移除入口”与“删除 source of truth”之间的区别
职责:
- 让
skm自身具备更清晰的版本语义 - 让 vendor 子模块优先追踪 tag 而不是漂移的 branch
- 支持类似
update --pin的受控升级路径
职责:
- 用 GitHub Actions 跑 lint、测试与 smoke checks
- 检查 submodule 漂移与基础脚本可执行性
- 把“仓库健康”从本地经验变成持续验证
职责:
- 说明
personal/是否进入 dotfiles - 说明
vendor/的缓存、重装与.gitignore策略 - 让多机初始化与重装路径更清楚
目标:让 skm 能跨平台、跨机器、跨 skill 生态稳定工作。
职责:
- 明确 bash-only 脚本在 WSL / Windows 上的支持边界
- 增加 symlink 不可用时的降级策略
- 让跨平台使用不再依赖隐性前提
职责:
- 允许一个 skill 声明依赖另一个 skill
- 在安装或校验时解析前置依赖
- 为更复杂的 skill pack 打基础
职责:
- 在
skm中直接提供 search / import 体验 - 减少“先在外部查找,再手工接入”的摩擦
- 逐步靠近统一的 skill 发现与导入入口
职责:
- 结合 dotfiles、git remote 或 manifest 记录本机 skill 状态
- 让一台机器的
skm状态可以在另一台机器重建 - 把“本地经验”沉淀成“可复制配置”
不要让 skill 源码散落在工具入口目录里。
外部 skill 包尽量保持完整,不手工拆散复制。
~/.agents/skills 和 ~/.claude/skills 是生成层,不是维护层。
所有整理、导入、升级动作都应该有明确的验证步骤。
skm 关心的是技能生命周期,而不是囤积更多 skill。
建议优先顺序:
skm-lint-agent-skillsskm-uninstall-agent-skillsadopt-agent-skill-pack
如果以后想往 skm 里再加一个新 skill,先问:
它是不是在解决 skill 的发现、导入、整理、校验、升级或发布问题?
- 如果是:考虑加入
- 如果不是:放到别的 skill 包里