☰
speckit-updater - SKILL
2026/10/18 4:05:44 网站建设 项目流程

name: speckit-updater
description: SpecKit Safe Update
risk: critical
source: community

SpecKit 安全更新

此技能为 GitHub SpecKit 安装提供安全更新能力,在应用模板更新的同时保留自定义内容。

安装:在添加任何市场或手动克隆之前,请检查
确切的插件版本和每个捆绑文件,报告脚本以及网络或
文件系统行为,并请求用户的明确批准。不要将移动中的
分支直接安装到活跃的智能体目录中。

何时使用

  • 你需要更新或安装 SpecKit 模板,同时保留项目自定义内容。
  • 你想要围绕更新、回滚或特定版本的 SpecKit 操作有一个安全的批准流程。
  • 任务是以对话方式操作 SpecKit 更新器,而不是盲目运行原始命令。

当此技能被调用时要做什么

当用户调用/speckit-updater时,你应该:

  1. 运行更新编排脚本,不带任何标志(对话模式):

    pwsh-NoProfile-File"<skill_path>/scripts/update-wrapper.ps1"
  2. 解析输出中的标记:

    • [PROMPT_FOR_APPROVAL]- 更新场景(已有 SpecKit 安装)
    • [PROMPT_FOR_INSTALL]- 全新安装场景(没有 .specify/ 目录)
  3. 对于更新(找到[PROMPT_FOR_APPROVAL]标记):

    • 展示 Markdown 摘要,显示:
      • 当前版本 vs. 可用版本
      • 要更新/添加/删除的文件
      • 检测到的冲突(如果有)
      • 保留的文件(已自定义)
      • 备份位置
      • 自定义命令
    • 请求用户批准以继续更新
    • 如果批准,使用-Proceed标志重新运行
    • 如果拒绝,告知用户更新已取消
  4. 对于全新安装(找到[PROMPT_FOR_INSTALL]标记):

    • 向用户提供自然的安装邀请,例如:
      • “SpecKit 目前未安装在此项目中。要我安装它吗?”
      • “我可以为你安装最新的 SpecKit 模板。这将创建 .specify/ 目录结构并从 GitHub 下载模板。”
    • 不要向用户提及-Proceed标志(这是实现细节)
    • 如果用户批准(说"好"、“继续”、"安装它"等),使用-Proceed标志重新运行
    • 如果用户拒绝,告知他们安装已取消
  5. 通过使用-Proceed标志重新运行来执行已批准的操作:

    pwsh-NoProfile-File"<skill_path>/scripts/update-wrapper.ps1"-Proceed

特殊情况:

  • 如果用户请求-CheckOnly:使用该标志运行并展示报告
  • 如果用户请求-Rollback:使用该标志运行并确认恢复
  • 如果用户请求特定-Version:包含该参数

命令

/speckit-updater

在保留自定义内容的同时更新 SpecKit 模板、命令和脚本。

用法:

  • /speckit-updater- 带对话式批准工作流的交互式更新/安装(推荐用于 Claude Code)
  • /speckit-updater -Proceed- 批准后继续更新/安装(用户在确认后由 Claude 使用)
  • /speckit-updater -CheckOnly- 检查更新但不应用
  • /speckit-updater -Version v0.0.72- 更新到特定版本
  • /speckit-updater -Force- 强制覆盖 SpecKit 文件(保留自定义命令)
  • /speckit-updater -Rollback- 从之前的备份恢复
  • /speckit-updater -Auto- 已弃用:改用对话式工作流(显示警告,映射到 -Proceed)

全新安装(无 .specify/ 目录):

  • 首次调用显示带[PROMPT_FOR_INSTALL]标记的安装邀请
  • Claude Code 向用户提出自然的问题(例如,“要我安装 SpecKit 吗?”)
  • 用户通过对话式回复批准(例如,“好”、“继续”、“安装它”)
  • Claude 自动使用-Proceed标志重新调用(实现细节对用户隐藏)
  • 脚本创建.specify/结构、下载模板、创建清单
  • 全程退出码 0(等待批准不是错误)
  • 与更新流程一致:两者都使用对话式批准工作流

流程:

  1. 验证前提条件(已安装 Git、干净的 Git 状态、写入权限)
  2. 加载或创建清单(.specify/manifest.json)
  3. 从 GitHub Releases API 获取目标版本
  4. 比较文件哈希以识别自定义内容
  5. 创建带时间戳的备份
  6. 应用选择性更新,保留自定义文件
  7. 对冲突打开 VSCode 合并编辑器(流程 A:一次一个)
  8. 自动调用 /speckit.constitution 进行宪法更新
  9. 用新版本更新清单
  10. 管理备份保留(保留最近 5 个)

当你调用此命令时,我将:

  1. 执行 update-orchestrator.ps1 脚本
  2. 解析输出中的标记(更新用[PROMPT_FOR_APPROVAL],全新安装用[PROMPT_FOR_INSTALL])
  3. 对于更新:展示提议更改的 Markdown 摘要
  4. 对于安装:自然地询问你是否要安装 SpecKit(不提及-Proceed标志)
  5. 通过聊天对话等待你的批准
  6. 批准后:自动使用-Proceed标志重新调用以执行
  7. 一次一个文件地指导你解决冲突(仅更新)
  8. 按需打开 VSCode diff/merge 工具(仅更新)
  9. 用详细摘要报告结果

对话式工作流:此技能使用两步批准流程:

  • 第 1 步:输出摘要 → 脚本退出 → 等待批准
  • 第 2 步:批准后,Claude 使用-Proceed重新调用 → 应用更新

要求:

  • 已安装 Git 且在 PATH 中
  • 互联网连接(用于从 GitHub 获取更新)
  • 对 .specify/ 和 .claude/ 目录的写入权限
  • 干净或已暂存的 Git 工作目录

脚本位于:{skill_path}/scripts/update-wrapper.ps1(入口点)和{skill_path}/scripts/update-orchestrator.ps1(主要逻辑)

入口点命令:

pwsh-NoProfile-Command"& '{skill_path}/scripts/update-wrapper.ps1' [parameters]"

注意:通过包装脚本同时支持 PowerShell 风格(-CheckOnly)和 Linux 风格(--check-only)标志。

功能

  • 自定义内容保留:使用规范化文件哈希自动检测并保留用户自定义内容
  • 智能冲突解决:一次一个地指导解决冲突,有 4 个选项:合并编辑器、保留我的、使用新的、跳过
  • 版本跟踪:维护带文件哈希、版本信息和备份历史的.specify/manifest.json
  • 自动备份:在.specify/backups/中创建带时间戳的备份,并自动管理保留
  • 快速失败并回滚:任何错误时自动回滚,恢复到更新前状态
  • 试运行模式:--check-only显示将更改的内容而不应用更新
  • 宪法集成:当宪法模板有更新时通知(运行/speckit.constitution)
  • 自定义命令安全:用户创建的命令绝不会被覆盖,即使使用--force

架构

模块

  • HashUtils:规范化哈希(处理行尾、尾随空格、BOM)
  • VSCodeIntegration:上下文检测、Quick Pick、diff/merge 编辑器集成
  • GitHubApiClient:GitHub Releases API 交互(未认证,60 次请求/小时)
  • ManifestManager:带缓存的清单 CRUD 操作
  • BackupManager:备份创建、恢复和保留管理
  • ConflictDetector:文件状态分析和冲突检测

工作流

  1. 前提条件验证(关键检查必须通过,警告允许继续)
  2. 清单加载/创建(安全默认:如果没有清单,假设所有文件都已自定义)
  3. GitHub API 查询目标版本
  4. 文件状态分析(6 种操作:添加/移除/合并/保留/更新/跳过)
  5. 带更改预览的用户确认
  6. 备份创建(带时间戳,排除备份目录)
  7. 选择性文件更新(快速失败并自动回滚)
  8. 冲突解决(流程 A:一次一个,VSCode 合并编辑器)
  9. 清单更新(版本、文件哈希、自定义标志)
  10. 备份清理(保留最近 5 个,需要确认)
  11. 显示详细摘要

退出码

代码含义
0成功
1一般错误
2前提条件未满足
3网络/API 错误
4Git 错误
5用户取消
6需要回滚(自动)

限制

  • 仅当任务明确符合上述范围时使用此技能。
  • 不要将输出视为特定环境验证、测试或专家审查的替代品。
  • 如果缺少必需的输入、权限、安全边界或成功标准,请停下来询问澄清。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询