Community编程与开发github.com

DLM版本主控器 7 便携版

为 .NET 仓库配置或执行基于内容哈希的版本化构建,自动进行内部版本号升级决策,并在每次直接调用时强制要求精确范围的 Git 提交和远程推送。适用于版本更新、发布构建、二进制元数据验证、变更日志或版本管理的 Git 提交/推送。从每个仓库的契约中发现布局和策略。

DLM版本主控器 7 便携版 是什么?

DLM Version Master 7 Portable 是一个 AI Agent 技能,专为 .NET 仓库的版本管理、构建、验证、Git 提交和推送而设计。它不假设任何产品名称或目录布局,而是依赖仓库自身的基础设施和声明式契约(如 `doc_llm/dlm.json` 和 `references/versioned-build-contract.md`)来发现项目、输出路径和提交策略。该技能的核心是通过源内容的哈希变化来自动决定版本升级级别(无/补丁/次要/主要),无需用户手动判断。一旦决定升级或检测到构建相关的源输入变更,它会执行发布构建、二进制元数据验证,并强制生成包含「修改范围、对应版本、怎么改的、为什么改的」四个部分的结构化提交信息,然后推送到远程分支。它适用于 Claude Code、Cursor 等支持自定义技能的 AI 编码助手,通过其自身的工作流和治理门控确保每次版本状态变更都经过充分的证据佐证和严格的 Git 同步过程。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/atlasray66-collab/agent-dlm-skills/tree/main/skills/dlm-version-master

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

DLM 版本主控器 7 便携版

目的

对 .NET 仓库变更进行版本控制、验证、提交和推送,使用仓库自有基础设施,不假设产品名称或目录布局。此个人技能提供通用工作流;每个仓库通过其契约声明项目、发布入口、模块映射、输出路径和提交策略。

结果治理门控

在版本状态变更、发布构建、工件验证、暂存、提交或推送之前,阅读并应用共享的 DLM 结果治理。

  • 建立一个冻结的发布/版本基线,包括授权范围、所需模块/输出、内部版本决策、与声明匹配的证据以及停止线。直接调用 dlm-version-master 授权内部版本评估、必需的构建/验证、精确范围的 Git 提交和推送到远程分支;它不授权工件复制、发布、打标签、部署或现场发布。
  • 源哈希支持模块变更/版本决策声明;输出哈希在配置文件中使用时支持字节一致性。两者均不能冻结基线,也不能证明运行时、协调、部署或现场状态。
  • 仅运行配置文件必需的或实质性风险的检查。绿色元数据不能替代行为证据,不相关的管理故障也不能悄然成为发布标准。
  • 在变更前执行一次组合的身份/范围/预暂存安全检查,然后推进最短的发布路径。在没有实际消费者或新的实质性不确定性时,不添加收据、重复摘要或重复的全面验证。

权限与组成

  • 每次直接调用 dlm-version-master 均携带用户授权,允许:
    1. 通过内部规则自主决定是否升级版本(无 vs. 补丁 / 次要 / 主要),除非用户在提示中明确指定升级策略;
    2. 在模块版本或与构建相关的源输入发生变化时,运行所需的发布构建和二进制元数据验证;
    3. 暂存精确的允许列表路径,运行所需的提交前审查(ponytail-review),提交到 Git 并附带详细的结构化提交信息,涵盖 修改范围 (Scope)、对应版本 (Version)、怎么改的 (How) 和为什么改的 (Why),然后推送到远程仓库分支(git push)。
  • 仅当用户在当前轮次中明确指示不提交/推送,或具体的安全/验证门控阻止时(必需的构建/测试/审查失败、目标文件中存在混合无关变更、远程缺失/歧义或远程分支已分歧),才跳过提交或推送。
  • 远程仓库创建、强制推送、打标签、部署、发布和工件复制仍为单独的权限。
  • 在 dlm-close-release 组合模式中,执行发现、内部版本决策、构建、变更日志和元数据验证,然后返回精确的变更路径,不进行暂存、提交或推送,除非拥有编排器明确委托共享的 Git 阶段。
  • 不要将此个人技能复制到仓库中,也不要从项目上下文清单中引用它。
  • 保持工程、发布证据、DLM 协调、Git、部署和现场验收为独立状态。

启动上下文

  1. 解析一个 Git 根目录并读取其 AGENTS.md。
  2. 如果仓库使用 DLM,加载 doc_llm/dlm.json 和当前活跃的发布任务。
  3. 读取 references/versioned-build-contract.md 和 references/git-sync.md。
  4. 在编辑前检查现有的 .sln、.slnx、可执行文件/库/插件的 .csproj、Directory.Build.*、仓库版本脚本、CI/发布定义以及版本状态。
  5. 优先使用仓库自有的版本基础设施。仅在用户要求建立版本化且不存在兼容机制时,才创建 build/versioning/。

解析仓库配置文件

使用以下顺序:

  1. 在 doc_llm/dlm.json 或仓库文档中声明的发布/版本配置文件;
  2. 现有的版本/构建脚本和版本状态;
  3. 用户指定的项目/解决方案;
  4. 明确的可执行启动项目或主解决方案;
  5. 如果仍然歧义,则报告候选方案并在版本变更前询问。

不要将已知产品的路径嵌入到个人技能中。特定于项目的行为属于仓库契约或其脚本。

基于源哈希的版本决策(自主内部规则)

是否升级版本以及应用哪个升级级别由内部规则自动决定(除非用户在提示中明确覆盖级别)。哈希项目自有的源输入,而不是输出二进制文件。

酌情包括:

  • .cs、.fs、.vb、.xaml、.axaml;
  • .csproj、.fsproj、.vbproj、.props、.targets;
  • 项目自有的资源、清单、包/项目引用以及代码生成输入。

排除:

  • bin/、obj/、out/、publish/、artifacts/、暂存目录和复制的运行时输出;
  • 生成的版本属性文件、变更日志和发布说明;
  • 计算模块源哈希时的版本状态本身;
  • .pdb、.deps.json、生成的 DLL/EXE/包输出。

内部决策表:

  • 不升级 (无): 未更改的模块源输入哈希永远不会触发升级。如果仅非模块文件(例如文档、DLM 记录或模块哈希输入之外的仓库脚本)发生更改,或者自记录哈希以来没有模块源输入发生更改,则不升级版本,也不创建空版本变更;直接对范围内实际的允许列表更改执行 Git 提交和远程推送阶段。
  • 模块源输入哈希更改时自动升级: 检查模块差异的语义影响和仓库规则,自动选择级别,无需停止询问:
    • 主要 / A: 破坏性公共 API、持久化格式、插件发现、执行、授权或部署契约;
    • 次要 / B: 向后兼容的功能、新模块/插件/工具或能力添加;
    • 补丁 / C: 向后兼容的错误修复、布局/可访问性/本地化修正、重构、性能调优、日志记录或内部维护;
    • 自动: 配置时使用仓库声明的默认值,否则根据上述 主要 / 次要 / 补丁 规则评估(默认为 补丁)。

二进制元数据

对于 SDK 风格的项目,确保公开版本值流入生成的输出:

<Version>1.2.3</Version>
<AssemblyVersion>1.2.3.0</AssemblyVersion>
<FileVersion>1.2.3.0</FileVersion>
<InformationalVersion>1.2.3</InformationalVersion>
<IncludeSourceRevisionInInformationalVersion>false</IncludeSourceRevisionInInformationalVersion>

不要将分支、提交 SHA、远程 URL、作者/电子邮件、提交消息、机器路径或仓库路径放置在公共二进制版本字段中。Git 溯源属于 Git/CI/发布日志。

构建与验证

当内部规则升级一个或多个模块时(或当与构建相关的模块输入发生更改时),如果存在仓库脚本则使用它;否则按顺序构建所选范围:

dotnet build <project-or-solution> -c Release -m:1

不要强制删除锁定输出。报告锁定进程并停止,除非用户授权安全进程关闭。

构建后,仅验证冻结发布基线和仓库配置文件所需的声明:

  1. 运行受影响的测试和仓库发布检查;
  2. 验证每个已更改公共模块至少有一个输出;
  3. 通过适当的工具读取文件/产品/程序集/信息版本;
  4. 验证预期的输出路径,并在需要时验证 SHA-256/包元数据;
  5. 确保未更改的模块未被升级;
  6. 当发布配置文件或实际的发布/决策消费者要求时,生成仓库的简洁变更日志/发布摘要。

如果无法验证所需的元数据、测试、哈希或输出标识,则相应的发布声明不完整,并会阻止 Git 提交/推送阶段。单独报告不相关的预先存在或管理性故障;除非证明有实质性影响,否则它们不会使合规输出无效。

强制 Git 提交和远程推送阶段

每次直接调用 dlm-version-master 时,遵循 Git 同步(除非用户明确禁止,或作为未获得 Git 委托的组合子项运行):

  1. 执行内部版本决策 -> 验证构建(当已升级或构建相关输入更改时)-> 提交前审查(ponytail-review 和仓库钩子)-> 精确范围 git commit -> git push 到远程分支。
  2. dlm-version-master 创建的每个提交必须使用基于实际 git diff --cached 和版本转换的详细结构化多行提交信息(绝不是一行摘要或含糊的“升级版本”/“更新文件”)。它必须明确包含所有四个必需部分:
    • 修改范围 (Scope): 已更改的模块/项目/子系统以及关键的允许列表文件或边界;
    • 对应版本 (Version): 升级级别(无 / 补丁 / 次要 / 主要)以及每个受影响的模块的 旧 -> 新 版本转换(或当没有模块升级时,当前版本加上 无(源哈希未更改));
    • 怎么改的 (How): 源自暂存差异的具体技术实现(入口点、数据/控制流、算法/UI/配置/构建调整);
    • 为什么改的 (Why): 根本原因、需求/任务驱动因素、缺陷触发器或代码更改和版本决策的架构/兼容性原因。
  3. 当内部规则决定不升级版本时(未更改的模块源哈希),跳过版本变更,不创建空版本提交;仍然暂存、审查、提交(使用相同的四部分结构化提交信息)并推送任何范围内预期的允许列表仓库更改,或推送当前分支上现有的未推送已验证提交。

输出

报告仓库配置文件来源、冻结发布基线/停止线、内部版本决策(无 / 补丁 / 次要 / 主要)及其理由、构建范围和命令(如果执行)、模块哈希/版本转换、未更改的模块、与声明匹配的测试、验证的输出元数据/哈希、变更日志消费者/路径、已更改文件允许列表、完整结构化提交信息(修改范围 / 对应版本 / 怎么改的 / 为什么改的)、提交哈希、已验证的远程分支推送结果以及阻塞性与建议性差距。保持更高级别的证据与构建和 Git 同步成功状态的区分。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

相关技能