Skill Backup
个人技能索引分为两类:自建技能备份其源文件;外部技能只在 README 中保留上游引用与安装信息。
托管安装目录(如 .agents/skills/ 或插件缓存)不是可靠的技能源:它们可能被包管理器覆盖或删除。若用户在其中完成了修改,先复制到用户拥有的目录,再将该目录作为后续备份源。
Workflow
Step 1:定位索引仓库并分类
优先使用用户给出的本地 checkout 或仓库地址;否则查找常见本地 clone,必要时使用 L-yifan/skills 建立具名临时 clone。记录实际工作目录、是否为本次创建的临时 clone,以及其初始 git status。用户提供的 checkout 永远不是临时目录,不得自动删除。
随后分类:GitHub URL、市场链接或第三方技能默认是外部技能;本地目录、用户新建或为该仓库编写的技能是自建技能。用户明确要求 vendoring 时,按自建技能处理。
完成条件:已确定一个可写的索引仓库工作目录、初始工作树状态和唯一分类。
Step 2A:记录外部技能
读取上游 SKILL.md 与其官方安装说明;在 README 的外部技能表中添加或更新一行,保留来源和可验证的安装命令。描述遵循所在表格的语言与格式。
完成条件:README 条目能追溯到上游;安装命令来自上游而非猜测。
Step 2B:核验自建技能源
优先使用用户指定的、用户拥有的源目录。需要寻找副本时,先列出每个候选的文件清单,再与仓库旧版本比较;选择“文件完整且符合本次改动意图”的候选,修改时间只用于同等候选的决胜。托管安装目录只能作为恢复候选,不能作为唯一可信源。
若源目录缺少仓库旧版本中的文件,先判定该差异是有意删除还是源文件丢失;无法判定时保留旧文件并向用户报告。
完成条件:已记录选中的源目录及依据;SKILL.md、reference 和 script 的文件清单均已与旧版本核验。若为托管安装目录建立了用户拥有的中转源副本,也记录其路径和“仅本次中转”身份。
Step 3:同步自建技能与 README
将经核验的完整源目录同步到索引仓库中的技能目录,并只应用已确认的删除。更新 README 的自建技能条目、描述和版本日期(如该索引使用版本日期)。
完成条件:目标目录包含全部已核验文件;README 条目反映当前技能;仓库 diff 不包含未解释的删除或额外文件。
Step 4:验证、发布与交付
检查 git diff 与 git status --short;验证 README 表格列数一致;对自建技能验证 frontmatter 的 name 与 description 均存在且非空。仅在用户要求时提交、推送或创建 PR。
临时目录收尾规则:
- 若本次创建了临时 clone 或中转源副本,且用户要求的推送已成功:确认提交已在远端、
git status --short为空、分支不再领先远端后,自动删除这两个临时目录。 - 若未获授权提交/推送、推送失败,或尚有未提交变更:保留临时 clone 与中转源副本,明确报告路径和保留原因,不能为了清理而丢弃未发布内容。
- 用户明确提供的 checkout、原始自建技能目录及其他预先存在的目录永远不得自动删除。
- 清理前先解析每个目标的绝对路径,确认其位于本次创建的临时父目录内;清理后验证路径不存在。
最终回复列出已改变的文件、发布状态和完整安装命令:自建技能使用实际索引仓库与同步目录名;外部技能仅使用上游已验证命令。未推送的自建技能须说明命令会在推送后取得本次版本;没有可靠外部命令时明确说明不可安全推断。
完成条件:所有变更均已验证并说明;临时目录已根据上述收尾规则清理,或说明保留路径与原因;交付中不存在猜测的安装命令。