Spec Update logo

Spec Update

Community
HHU3637kr
spec-update

当同一个活跃 Spec(位于 `spec/versions/<version>/specs/<spec-dir>/`)在当前工作分支内需要小迭代、补充需求、修正方案或优化实现,且原 Spec 目录已有 writer/plan.html + executor/summary.html 时使用。典型信号:'改 writer/plan.html 里漏掉的分页参数''补一条原 Spec 没覆盖的需求''修 update 方案里写错的验收标准'、修订既有 writer/plan.html / executor/summary.html、给已有报告递增修订号并补修订历史行(5 列格式与 `<ins>/<del>` 标记规则由 html-report 定义,写什么内容、为什么归本 Skill)——只要动的是报告所承载的 Spec 内容,就走本 Skill;请求里出现 report/html 字样不改变归属。只关心报告骨架、样式表、修订标记或 meta/双链格式本身时改用 html-report。默认复用 writer/plan.html 记录的 git_branch,不新建分支。不要用于新功能从零设计、已合并/已关闭分支上的后续需求,或需要独立 PR/MR 的较大变更。

Overview

PublisherHHU3637kr
Repositoryskills
Skill namespec-update
Stars
146
Forks
21
Bundled files
2
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 2 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by HHU3637kr on GitHub. Read the source before you install it.

Installation

Install the Spec Update AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/HHU3637kr/skills/tree/master/spec-update
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/HHU3637kr/skills.git /tmp/skills
mkdir -p .claude/skills
cp -r /tmp/skills/spec-update .claude/skills/spec-update
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Spec Update in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Spec Update on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Spec Update is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Spec Update

核心原则

  1. 同 Spec 原则:update 报告必须放在原 Spec 目录的 updater/ 下,禁止创建新的 Spec 根目录
  2. 不归档原则:更新完成后不归档,保留在原目录以便后续更新
  3. 编号递增:updater/update-001.html → updater/update-002.html → updater/update-003.html(三位数,不跳号)
  4. 严格遵循方案:只实现 updater/update-xxx.html 定义的修改,不添加方案之外的内容
  5. 回归测试必须通过:新增测试 + 修改测试 + 原有功能回归测试全部通过
  6. 规范维护审查:更新也可能产生长期规则,完成后同样检查是否需要维护 AGENTS.md / .agents/rules/
  7. 同分支原则:update 默认复用原 Spec 的 git_branch,禁止为同一活跃 Spec 的小更新默认创建新分支
  8. 报告用 HTML:update 报告遵循 html-report 契约(HTML + 共享样式表 + data-rev 修订标记);经验/知识记忆保持 Markdown(账本两种格式皆可)
  9. 续接同一批角色:update 是同一个 Spec 的延续,不是新任务。必须续接原来那批角色,不重新 spawn —— 见下文「角色续接」

角色续接(必须执行)

用户的期望是「还是那个 writer / tester 在跟我对话」,而不是每次 update 都换一批零历史的新实例。做法固定三步:

  1. 查账本:读 lead/team-context.md(或 .html)的「角色运行句柄」,取本 Spec 上次用的 agent_id 与状态。
  2. 核对实况:用运行时的 agent 列表核对该 handle 当前的真实状态。
  3. 按状态决定动作:
账本/实况状态动作
running / idle / parked发消息给同一个 agent。parked 收到消息会自动复活且上下文完整,不需要任何额外操作
aborted只能重新 spawn 同一项目级角色,并让它先读账本与既有产物重建上下文

禁止用重新 spawn 代替续接。 运行时按 name 分配 agent id,同名再 spawn 会得到 spec-writer-2 这样的全新零历史实例——影子角色。续接成功后更新账本的「续接方式」与「累计参与 Spec 数」。

跨进程(omp 重启后)handle 可能已失效,此时账本与落盘产物是唯一恢复路径——这也是账本必须实时更新而非攒批的原因。

确认方式随模式(必须执行)

gated 模式下,以下三个节点必须使用当前运行环境的确认方式向用户确认。autopilot 模式下由各节点标注的机械证据替代,缺证据不得放行:

节点 1 — 更新方案确认(创建 updater/update-xxx.html 后):

text
确认目标:updater/update-xxx.html 已创建完成,更新方案是否可以开始执行?
确认选项:
- 确认,开始执行
- 需要修改(请说明修改要求)

节点 2 — 审查报告确认(生成 reviewer/update-xxx-review.html 后):

text
确认目标:reviewer/update-xxx-review.html 已创建完成,审查结果是否通过?
确认选项:
- 审查通过
- 需要修复(请说明问题)

节点 3 — 分支收尾确认(测试和审查通过后):

text
确认目标:本次 update 已通过测试和审查。是否提交并推送当前 Spec 分支?如果该 Spec 已准备整体交付,是否创建/更新 PR?
确认选项:
- 确认,提交并推送
- 暂不提交

响应处理:选择确认选项 → 继续;选择修改/修复或"Other" → 根据用户反馈调整后重新确认。

报告模板

两个模板的骨架、组件与修订标记规范由 html-report skill 定义;样式表相对路径按 updater/ 回到项目根的 6 层写作(../../../../../../html-report/assets/rk-report.css),项目层级不同需相应调整。

功能等价要求(不允许退化):

  • 原 frontmatter 字段必须双轨保留:<head> 里逐字段写 <meta name="rk:type|spec-dir|role|mode|update-number|status|update-type|created|updated|revision|git-branch|base-branch|pr-url|tags">,文档关联写 <link rel="rk-plan|rk-summary|rk-update|rk-update-summary|rk-review|rk-ledger" href="...">;.rk-meta 镜像同样字段(含基准分支与 PR)
  • 原双链必须保留双向:末尾「关联产物」拆成「本报告引用」(<ul class="rk-links"> + data-rk-link)与「引用本报告」(<ul class="rk-backlinks"> + data-rk-backlink)两个 h3;谁新建关联谁补对侧反链,对侧报告未产出时在 rk-links 标注(待创建)
  • 修订历史表固定 5 列(修订/日期/修改人/改了什么/原因),不新增列;「原因」列源于实质取舍时引用账本「决策记录」的决策编号(如 按 D-003(多实例部署需共享缓存)),纯笔误/措辞/补充直接写清原因,不编造编号;决策过程正文只留在 lead/team-context.md 的「决策记录」,不复制进报告

工作流程

  1. 确认原 Spec 目录、认领 AWR 增量会话并准备上下文:找到目录,确认 writer/plan.html 和 executor/summary.html 都存在。 执行 AWR 会话认领与上下文准备:
    bash
    # 认领本次更新会话(获取独占租约,杜绝需认领状态)
    awr session start --work <SPEC-ID> --agent spec-update --provider omp --model default --claim --ttl-ms 3600000 --expected-revision <REV>
    # 绑定会话准备聚焦上下文
    awr work prepare <SPEC-ID> --session <SESSION-ID> --response-view summary
    从输出中提取既有验收边界、历史变更与当前依赖。若缺少 executor/summary.html,先用 spec-execute 完成原功能
  2. 确定更新编号:检查 updater/ 下已有的 update-*.html,确定下一个编号;若 updater/ 不存在则创建
  3. 确认当前 Spec 分支:读取 writer/plan.html 头部 .rk-meta 的分支 / 基准分支 / PR 信息,调用 /git-work 的“复用 Spec 分支”模式,确认当前分支与 git_branch 一致
  4. 创建 updater/update-xxx.html:参照 references/update-template.html,严格结合 AWR 准备输出中的增量验收标准在 updater/ 下创建;完整填写 rk:* meta 与 rk-* link,.rk-meta 镜像同样字段,并继承 writer/plan.html 的分支 / 基准分支 / PR 元信息
  5. 等待用户确认:使用当前运行环境的确认方式(节点 1),确认后向 AWR 提交 update 会话检查点:
    bash
    AWR_CP=.agents/skills/scripts/rk-awr-checkpoint.sh; [ -f "$AWR_CP" ] || AWR_CP=scripts/rk-awr-checkpoint.sh
    bash "$AWR_CP" --work <SPEC-ID> --agent spec-update --digest "spec-update: update-xxx 方案确认,准备进入实现" --next-action "spec-update: 按方案执行代码更新与单测"
  6. 检索历史经验:调用 /exp-search <关键词>
  7. 创建任务清单:根据 updater/update-xxx.html 的"实现步骤"章节创建
  8. 按方案实现更新:严格遵循方案,不修改方案之外的代码
  9. 编写/更新测试:新增测试 + 修改测试 + 回归测试
  10. 运行测试验证:全部通过才能继续
  11. 创建 updater/update-xxx-summary.html:参照 references/summary-template.html,应用 html-report 契约:完整 rk:* meta + rk-* link 双轨元信息、rk-verdict 结论块、rk-cal ok / rk-cal warn 组件、rk-links / rk-backlinks 双向关联,修订遵循 data-rev 规范;并继承 update 报告的 Git 元信息,同时在 update-xxx.html 的 rk-backlinks 补上本总结的反链
  12. 使用 spec-review 审查:生成 reviewer/update-xxx-review.html;审查报告产出后,回到 update-xxx.html / update-xxx-summary.html 的 rk-backlinks 把「审查报告」反链补齐(原先标注「待创建」的条目同步去掉标注)
  13. 等待用户确认审查报告:使用当前运行环境的确认方式(节点 2)
  14. 经验与规范收尾:调用 /exp-reflect,并审查是否需要维护 AGENTS.md / .agents/rules/
  15. 等待分支收尾确认:使用当前运行环境的确认方式(节点 3)
  16. 提交并推送当前 Spec 分支:调用 /git-work 的“完成 Spec 分支”模式,提交并推送;如果用户确认该 Spec 已准备整体交付,则创建/更新面向 dev 的 PR/MR;如获得 PR/MR URL,写回 writer/plan.html / executor/summary.html / updater/update-xxx.html / updater/update-xxx-summary.html 的 .rk-meta(按修订规范递增修订号、追加修订历史行),并并入同一次提交(git commit --amend --no-edit + git push --force-with-lease),不产生第二次提交

错误处理

场景解决方案
原 Spec 目录不存在确认路径;若为新功能,用 spec-write + spec-execute
缺少 executor/summary.html先用 spec-execute 完成原功能
回归测试失败分析原因 → 修复回归代码 → 重新测试 → 全部通过后才能继续
当前分支不是 writer/plan.html 记录的 git_branch切回原 Spec 分支;若原分支已合并/删除,应新建 Spec 或询问用户是否创建独立分支
变更需要独立 PR不走默认 update 分支复用路径,询问用户是否新建 Spec 或显式创建独立分支

后续动作

完成更新后:

  1. 调用 /exp-reflect 进行经验反思
  2. 审查是否需要维护 AGENTS.md / .agents/rules/;只写长期规则,不写一次性实现细节
  3. 如有经验沉淀,更新 updater/update-xxx-summary.html 添加经验引用(经验/知识文件本身保持 .md)
  4. 调用 /git-work 提交并推送当前 Spec 分支;只有当 Spec 准备整体交付时才创建/更新 PR
  5. 如有 PR URL,写回 writer/plan.html / executor/summary.html / updater/update-xxx.html / updater/update-xxx-summary.html 并通过 amend + force-with-lease 并入同一次提交
  6. 更新 lead/team-context.md 的「任务进度」,必要时更新「问题闭环记录」和「决策记录」
  7. 不归档,保留在原目录
  8. 向 AWR 提交更新完成会话检查点:
    bash
    AWR_CP=.agents/skills/scripts/rk-awr-checkpoint.sh; [ -f "$AWR_CP" ] || AWR_CP=scripts/rk-awr-checkpoint.sh
    bash "$AWR_CP" --work <SPEC-ID> --agent spec-update --digest "spec-update: 完成 update-xxx 更新与验证,产出 updater/update-xxx-summary.html" --next-action "待用户确认或合流" --end

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Spec Update AI skill do?

当同一个活跃 Spec(位于 `spec/versions/<version>/specs/<spec-dir>/`)在当前工作分支内需要小迭代、补充需求、修正方案或优化实现,且原 Spec 目录已有 writer/plan.html + executor/summary.html 时使用。典型信号:'改 writer/plan.html 里漏掉的分页参数''补一条原 Spec 没覆盖的需求''修 update 方案里写错的验收标准'、修订既有 writer/plan.html / executor/summary.html、给已有报告递增修订号并补修订历史行(5 列格式与 `<ins>/<del>` 标记规则由 html-report 定义,写什么内容、为什么归本 Skill)——只要动的是报告所承载的 Spec 内容,就走本 Skill;请求里出现 report/html 字样不改变归属。只关心报告骨架、样式表、修订标记或 meta/双链格式本身时改用 html-report。默认复用 writer/plan.html 记录的 git_branch,不新建分支。不要用于新功能从零设计、已合并/已关闭分支上的后续需求,或需要独立 PR/MR 的较大变更。

Why use Spec Update on TypingMind?

Because you install it once and use it with any model. Spec Update is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Spec Update in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/HHU3637kr/skills/tree/master/spec-update. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Spec Update?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Spec Update?

As many as you like. As long as a model supports skills, you can use Spec Update with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Spec Update AI skill free?

It is published on GitHub by HHU3637kr. Check the repository for licensing terms. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇