首页/技术笔记

Skill生成实战: Hims3自动打包

Skill生成初体验

39

Skill可以通过对话的方式进行建立,我们可以将我们操作复杂的,重复度高的,可以提取成skill,帮助我们快速执行任务。以下是建立skill的实际对话:场景是Hims需要发版权限,而权限需要一个个打包再发版,人工处理此流程即便非常熟练需要10分钟。并且像这种重复度高还很简单的的工作很容易让人放松警惕,而从就会出现错误,而skill,可以将此流程简化:

**User**

我想创建一个skill

这个skill,要自动化打包发版,按顺序打包
1、Domain.Shared
2、Domain
3、Application.Contracts
4、HttpApi

每次打包的时候,将版本号变成版本号末尾+1的版本
例子:若原版本号为1.0.1,此时新版本为1.0.2,若原版本号为1.1.10,则新版本号为1.1.11。
若末尾版本号大于等于99,则前一位版本号+1,末尾变成0
例子:若原版本号为1.1.99,此时新版本为1.2.0,若原版本号为1.1.101,则新版本号为1.2.0


然后发版命令如下:

dotnet nuget push -s http://10.8.1.24:8081/repository/nuget-hosted/index.json src\HIMS3_Business.Domain.Shared\bin\Debug\HIMS3_Business.Domain.Shared.1.7.10.nupkg
dotnet nuget push -s http://10.8.1.24:8081/repository/nuget-hosted/index.json src\HIMS3_Business.Domain\bin\Debug\HIMS3_Business.Domain.1.7.10.nupkg
dotnet nuget push -s http://10.8.1.24:8081/repository/nuget-hosted/index.json src\HIMS3_Business.Application.Contracts\bin\Debug\HIMS3_Business.Application.Contracts.1.7.10.nupkg
dotnet nuget push -s http://10.8.1.24:8081/repository/nuget-hosted/index.json src\HIMS3_Business.HttpApi\bin\Debug\HIMS3_Business.HttpApi.1.7.10.nupkg

根据所发布的版本,修改对应的发版语句。

生成一个skill,skill的名字叫做Hims3打包nuget发版

---

**Codex**

我会先按 skill-creator 的规则看一下本机 skill 的结构要求,再检查这几个项目的版本号位置和打包方式;现在处于 Plan Mode,我只做只读探索,不会创建文件。

我看到了关键事实:前三个项目当前 <Version> 是 1.8.10,HttpApi 当前是 1.8.9,所以“新版本号”是统一成同一个版本还是各自按当前版本递增,会直接影响发版结果。这个需要你定一下。

收到:统一版本、创建到用户 skills、默认打包并推送。接下来我再确认 skill 初始化脚本和校验脚本的路径,这样计划里可以把创建/验证步骤写成可直接执行。

套餐
创建 Skill:Hims3打包nuget发版
Summary
创建个人全局 skill,目录名规范化为 hims3-pack-nuget-release,显示名使用“Hims3打包nuget发版”。该 skill 用于在 D:\SourceCode\HIMS3_Business 这类 HIMS3 仓库中,按固定顺序更新版本、打包并推送 4 个 NuGet 包。

Key Changes
在 C:\Users\Administrator\.codex\skills\hims3-pack-nuget-release 创建 skill。
使用 skill-creator 的 init_skill.py 初始化,包含:
SKILL.md
agents/openai.yaml
scripts/release_hims3_nuget.ps1
SKILL.md 写清触发场景:
用户要求 HIMS3 打包、NuGet 发版、发布 Domain.Shared/Domain/Application.Contracts/HttpApi 包时使用。
默认从当前仓库根目录执行。
默认会修改版本、打包、推送。
Release Script Behavior
scripts/release_hims3_nuget.ps1 实现确定性发版流程:

固定项目顺序:
src\HIMS3_Business.Domain.Shared\HIMS3_Business.Domain.Shared.csproj
src\HIMS3_Business.Domain\HIMS3_Business.Domain.csproj
src\HIMS3_Business.Application.Contracts\HIMS3_Business.Application.Contracts.csproj
src\HIMS3_Business.HttpApi\HIMS3_Business.HttpApi.csproj
读取 4 个项目的 <Version>,取最高版本作为基准,统一递增后写回 4 个项目。
版本递增规则:
major.minor.patch
patch < 99 时:patch + 1
patch >= 99 时:minor + 1,patch = 0
示例:1.0.1 -> 1.0.2,1.1.99 -> 1.2.0,1.1.101 -> 1.2.0
默认配置:
Configuration = Debug
NuGet 源:http://10.8.1.24:8081/repository/nuget-hosted/index.json
执行命令:
逐个 dotnet pack <csproj> -c Debug
逐个 dotnet nuget push -s <source> <nupkg>
推送包路径按新版本自动生成,例如:
src\HIMS3_Business.Domain.Shared\bin\Debug\HIMS3_Business.Domain.Shared.<newVersion>.nupkg
src\HIMS3_Business.Domain\bin\Debug\HIMS3_Business.Domain.<newVersion>.nupkg
src\HIMS3_Business.Application.Contracts\bin\Debug\HIMS3_Business.Application.Contracts.<newVersion>.nupkg
src\HIMS3_Business.HttpApi\bin\Debug\HIMS3_Business.HttpApi.<newVersion>.nupkg
脚本参数:
-RepositoryRoot:默认当前目录
-Configuration:默认 Debug
-Source:默认上述 Nexus NuGet 地址
-DryRun:只打印将更新的版本和将执行的命令,不修改、不打包、不推送
Test Plan
用 -DryRun 在当前仓库验证:
能找到 4 个 csproj。
能正确读取当前版本:前三个 1.8.10,HttpApi 1.8.9。
统一新版本应计算为 1.8.11。
输出的 4 条 push 命令都使用 1.8.11。
运行 skill 校验:
quick_validate.py C:\Users\Administrator\.codex\skills\hims3-pack-nuget-release
不在验证阶段真实推送 NuGet 包,除非用户明确要求执行正式发版。
Assumptions
版本号统一发布,取 4 个项目中的最高版本递增一次,然后 4 个项目写成同一个版本。
默认执行完整流程:更新版本、按顺序打包、按顺序推送。
包配置使用 Debug,因为用户给出的推送路径是 bin\Debug。
不添加 --skip-duplicate,保持用户提供的 dotnet nuget push -s ... <nupkg> 语义。

---

**User**

实施计划




---

**Cursor**

已实现 skill:Hims3打包nuget发版
位置:
C:\Users\Administrator\.codex\skills\hims3-pack-nuget-release\SKILL.md
核心脚本:
C:\Users\Administrator\.codex\skills\hims3-pack-nuget-release\scripts\release_hims3_nuget.ps1
已验证:
text



DryRun 通过:当前最高版本 1.8.10,新版本计算为 1.8.11
Skill is valid!

DryRun 不会修改项目文件、不打包、不推送:
powershell



powershell -NoProfile -ExecutionPolicy Bypass -File "C:\Users\Administrator\.codex\skills\hims3-pack-nuget-release\scripts\release_hims3_nuget.ps1" -RepositoryRoot "D:\SourceCode\HIMS3_Business" -DryRun

正式发版命令:
powershell



powershell -NoProfile -ExecutionPolicy Bypass -File "C:\Users\Administrator\.codex\skills\hims3-pack-nuget-release\scripts\release_hims3_nuget.ps1" -RepositoryRoot "D:\SourceCode\HIMS3_Business"

当前项目版本也确认未被 DryRun 修改:前三个仍是 1.8.10,HttpApi 仍是 1.8.9。
Skill生成实战: Hims3自动打包 · LuckyMiku