Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
1b6908e
chore: develop 0.3.9-beta.1
mingqing Jan 16, 2025
2855938
refactor: 更新示例 demo.py 作为统一 python 规范脚本
mingqing Feb 10, 2025
f3e4ca1
refactor: demo.py 异常处理堆栈输出
mingqing Feb 11, 2025
01e3df9
chore: 更新 demo.py 示例模版
mingqing May 7, 2025
28abec2
refactor: 分离 independent_cfg 属性方法
mingqing Aug 26, 2025
7b76b86
build: 最低依赖 go 1.24 版本
mingqing Aug 26, 2025
ac5bbb4
docs(template): 添加 rpc 方法定义的注解示例参考
mingqing Oct 10, 2025
ae748ae
feat(proto): 更新proto模板中的内部引用路径
mingqing Oct 10, 2025
0cd4482
feat(proto): 添加微服务通用 proto 模板文件- 创建了新的 proto 模板文件,用于定义微服务的通用消息结构- 定义了…
mingqing Oct 10, 2025
f18cc5e
refactor(flow): 调整工作流目录结构
mingqing Jan 14, 2026
aab727d
refactor(flow): 完善示例流水线编排
mingqing Jan 16, 2026
76b2c7b
feat: 新增 vite antd 最小化业务后台模版
mingqing Mar 12, 2026
444e52c
feat: 支持 grpc-kit 公共 skills 技能库
mingqing Mar 16, 2026
54bfdfd
feat: add AGENTS.md
mingqing Mar 16, 2026
37f88b5
refactor: AGENTS.md to AGENTS.md.tmpl
mingqing Mar 18, 2026
5236c74
feat: 添加 Git 提交规范说明
mingqing Apr 27, 2026
ad08028
feat: 在生成脚本中添加移动 microservice.gateway.yaml 文件的功能
mingqing Apr 27, 2026
d36cceb
Merge branch 'develop' of https://github.com/grpc-kit/cli into develop
mingqing Apr 28, 2026
6a74c48
feat: add functionality to copy microservice.openapiv2.yaml in genera…
mingqing Apr 28, 2026
9c22808
feat: 添加 CHANGELOG-0.4 文件,记录新功能、变更、修复及安全更新
mingqing Jul 8, 2026
06ce6fc
docs: 完善 AGENTS.md 模板,细化生成文件分类说明
mingqing Jul 20, 2026
1f51e68
feat: 添加 MCP 自定义资源注册器模板,支持 Tools/Resources/Prompts 扩展
mingqing Jul 20, 2026
45f618b
feat: 添加 MCP 资源注册器的工具和资源处理器模板
mingqing Jul 25, 2026
09e0edd
feat: 更新 CHANGELOG-0.4,添加 0.4.1 版本的新增功能、变更和移除项
mingqing Jul 25, 2026
4b87c3b
docs: 更新 CHANGELOG-0.4,添加 0.4.2 版本的新增功能、变更、修复和安全更新
mingqing Aug 5, 2026
2e9d650
feat: 更新 go.mod 模板,升级 Go 版本至 1.25.0 并更新依赖
mingqing Aug 9, 2026
335f6b2
feat: 更新 Makefile 模板,在代码生成后同步 Go 模块依赖
mingqing Aug 9, 2026
e67b21f
fix: 更新 MCP 处理器模板,增强错误处理与输入验证
mingqing Aug 9, 2026
588025c
feat: 实现 MCP 注册器端到端测试并添加服务模板扩展点验证
mingqing Aug 9, 2026
90447ae
feat: 更新 AGENTS.md 模板,添加共享技能部分以指导 AI 编码代理
mingqing Aug 11, 2026
935cec4
feat: 更新 CHANGELOG,添加 0.4.3 版本信息,包含个人中心自服务 API 和服务模板改进
mingqing Aug 11, 2026
394e0f5
feat: 服务模板新增黑盒接口 E2E 测试模版框架
mingqing Aug 18, 2026
efab25d
feat: 更新 CHANGELOG,添加 0.4.4 版本信息,包含用户、群组与部门回收站接口及智能连接配置
mingqing Sep 1, 2026
cb7d3af
feat: 添加服务技能文档和示例,更新 AGENTS.md 以包含新技能信息
mingqing Sep 6, 2026
a4c85e9
feat: 更新服务模板测试,添加日志相关的断言以支持黑盒接口 E2E 测试
mingqing Sep 13, 2026
2f20d08
feat: 服务模板日志从 logrus 迁移至标准库 slog,初始化与关闭流程增加 context 传递,升级 grpc-kit/pk…
mingqing Sep 13, 2026
e54514c
feat: 更新 CHANGELOG,Unreleased 新增服务模板日志从 logrus 迁移至标准库 slog 的 Breaking…
mingqing Sep 13, 2026
0220539
Merge remote-tracking branch 'origin/develop' into develop
mingqing Sep 13, 2026
e698256
feat: 更新微服务处理逻辑,传递上下文至初始化和关闭流程
mingqing Sep 14, 2026
dd3ef00
feat: 更新服务模板测试,修正日志相关断言以支持新的上下文传递逻辑
mingqing Sep 14, 2026
cd52cac
feat: 在服务注册和演示方法中增加上下文传递,简化日志输出
mingqing Sep 15, 2026
2bd6812
feat: 更新服务模板测试,增强对上下文传递的断言验证
mingqing Sep 15, 2026
096ff95
feat: 更新服务模板日志处理,切换为 Go 标准库并增强上下文传递
mingqing Sep 15, 2026
94d29a4
feat: 新增 CHANGELOG-0.5,记录服务模板日志处理和上下文传递的重大变更
mingqing Sep 15, 2026
cc1eba2
feat: 服务模板 go 指令提升至 1.25.13 并同步 CHANGELOG
mingqing Sep 15, 2026
6ec2c9a
feat: 新增服务模板 public/embed.go 静态资源嵌入模板并补充渲染断言
mingqing Sep 16, 2026
9a94ff9
feat: 新增 project migrate 命令实现存量项目托管文件迁移
mingqing Sep 16, 2026
17fe764
feat: 新增 maintain-project-migration 维护技能与 SOP 并添加 AGENTS 仓库指引
mingqing Sep 16, 2026
112942a
feat: 新增 Makefile test 与 test-compatibility 目标支持 CLI 测试及冻结迁移资产兼容性验证
mingqing Sep 16, 2026
e9f6f92
refactor: version 命令改为工厂函数构建并处理 main 执行错误退出码
mingqing Sep 16, 2026
fc0b95a
docs: 补充 project migrate 命令的 README 使用说明与 CHANGELOG Added 条目
mingqing Sep 16, 2026
d50edf4
chore: 将 go-difflib 提升为直接依赖并新增 golang.org/x/mod 直接依赖
mingqing Sep 16, 2026
96a5bdd
feat: 强化项目生成与版本信息管理
mingqing Sep 16, 2026
eaf3ba7
feat: 汇总项目迁移人工处理项
mingqing Sep 16, 2026
d454cd6
build: 固化发布验证与代码生成工具链
mingqing Sep 16, 2026
3be3ca7
docs: 补充 v0.5 发布与兼容验证说明
mingqing Sep 16, 2026
8ff70c6
docs: 接入 migrate-logrus-to-slog 共享技能指引并明确 project migrate 写入边界
mingqing Sep 16, 2026
b040cca
docs: 定稿 CHANGELOG-0.5 为 0.5.0 版本并更新 README 镜像示例
mingqing Sep 16, 2026
ad111a0
release: cut the 0.5.0
mingqing Sep 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions .agents/skills/maintain-project-migration/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
name: maintain-project-migration
description: 维护 grpc-kit CLI 服务模板、project migrate 兼容资产和正式 pkg 版本矩阵。适用于模板变化、pkg 版本升级、增加来源 fixture、调整 ManualAction 或发布迁移能力;不用于代替业务项目完成人工源码迁移。
---

# 维护项目迁移能力

在 `grpc-kit/cli` 仓库根目录工作。开始修改前读取:

- `../adm/docs/roadmap/cli/01-cli-project-upgrade-feasibility.md`
- `CHANGELOG/CHANGELOG-0.5.md` 及本次目标版本对应的 CHANGELOG
- `internal/projectmigrate/target.go`,以及同目录的资产、来源 fixture、Plan、诊断和兼容测试
- [维护 SOP](references/sop.md)

先分类变更,再决定是否触碰旧项目迁移资产。最新 `template/service`、某个历史来源模板和某个 pkg 迁移目标是三个不同对象;不能因为新建项目模板变化就把新功能注入旧项目。

始终保持以下约束:

- `TargetCLIVersion` 只表示执行迁移的正式 CLI 版本;pkg 目标版本独立记录。
- 只有首行完整 grpc-kit-cli `DO NOT EDIT` marker 的已有普通文件可进入 Change Plan。
- 不自动修改用户代码、`go.mod`、`go.sum`,不创建、删除、重命名或 chmod 项目文件。
- 用户可以另行使用共享技能 `migrate-logrus-to-slog` 完成业务源码迁移;该授权属于 AI 编辑工作流,不得反向扩大 `project migrate` 的 Change Plan。
- 兼容资产只引用来源 fixture 已有的项目内符号;新功能走新建模板或独立 feature 流程。
- 正式 pkg 测试不使用本地 `replace`,也不使用不可复现的 `@latest`。
- 不擅自修改 `VERSION`、创建 tag、发布产物或对脏的真实服务执行 apply。

完成维护后报告:变更分类、支持的来源与目标版本、资产写集合、最低/候选 pkg 验证结果、未执行的完整项目检查及其原因。
80 changes: 80 additions & 0 deletions .agents/skills/maintain-project-migration/references/sop.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# project migrate 维护 SOP

## 1. 先判断变化属于哪一类

| 变化 | 默认处理 |
|---|---|
| 仅影响以后 `new` 创建的项目 | 更新 `template/service` 与模板测试;不要修改历史兼容资产 |
| pkg 同一目标族的补丁版本,且对既有托管代码向后兼容 | 保留最低版本基线,增加候选版本兼容测试;不因“版本更新”重渲染资产 |
| pkg 新签名要求托管代码变化,或提高最低 Go 版本 | 建立新的明确迁移目标和资产根;同步 Plan、诊断、测试和文档 |
| 增加可迁移的历史 CLI 来源 | 从 tag 或确认 commit 冻结来源摘要,证明其可复用某一资产族后再登记 |
| 修复生成器缺陷 | 修复最新模板;历史文件只有在路径和全文证据充分时增加窄例外,不放宽 marker |
| 业务文件或扩展点变化 | 产生 ManualAction;除非文件仍满足托管所有权规则,否则不得自动写入 |

`v0.x` 版本不能只凭版本号假设兼容。先检查正式 tag、目标模块 `go.mod`、CHANGELOG 和实际 API 签名,再确定属于“扩展测试矩阵”还是“新迁移目标”。

## 2. 建立可审计的版本事实

1. 确认 pkg 目标是已发布 tag,而不是本地分支、伪版本或 CHANGELOG 标题。
2. 记录 pkg 最低 Go 版本及受影响 API;核对 context、logger、注册、启动和关闭签名。
3. 区分三个版本:来源 CLI、执行迁移的目标 CLI、目标 pkg。禁止用其中一个推导另外两个。
4. `internal/projectmigrate/target.go` 是当前迁移目标 pkg/Go 版本的代码内来源;修改目标时仍需用 `rg` 找出模板、资产目录、Makefile 默认值、README 和 CHANGELOG 中的所有引用,避免只改常量或测试字符串。
5. 如果正式 CLI 版本尚未决定,可以完成 preview 和 fixture 验收,但必须继续拒绝 apply;不得先写一个猜测版本。

## 3. 维护模板与兼容资产

1. 更新 `template/service` 时,先判断变化是否只服务新项目。MCP、Flow、E2E 等新增能力不得自动进入旧来源资产。
2. 需要更新旧项目托管代码时,在 `internal/projectmigrate/assets/<pkg-target>/<source-family>/` 维护独立资产。资产必须:
- 保留完整首行 marker;
- 只使用 `scripts/env` 和 `go.mod` 可恢复的参数;
- 不引用来源 fixture 不存在的本地符号;
- 渲染后无模板表达式残留,并可通过 Go 语法检查。
3. 新增来源版本时,从发布 tag 或确认 commit 冻结路径和 SHA-256。真实脏工作区只能用于只读调查,不能作为 fixture 来源。
4. 新增 pkg 迁移目标时保留旧目标资产和回归测试。不要原地把 `v0.5.0` 资产目录解释成 `v0.6.0`。
5. 用户管理文件中的破坏点进入 `ManualAction`。诊断应提供稳定 code、文件、行号和建议,并排除本次 Change Plan 已整体替换的路径。
6. logrus/slog 用户源码可以推荐使用 grpc-kit 共享技能 `migrate-logrus-to-slog`。技能由用户显式授权 AI 编辑并负责语义迁移、依赖清理和完整项目验证;它不是 CLI 自动写入能力,也不能让未托管文件进入 Change Plan。

## 4. 正式 pkg 兼容矩阵

当前最低基线使用:

```shell
make test-compatibility PKG_COMPAT_VERSION=v0.5.0
```

当候选补丁版本发布后,同时执行最低版本和候选版本,例如:

```shell
make test-compatibility PKG_COMPAT_VERSION=v0.5.0
make test-compatibility PKG_COMPAT_VERSION=v0.5.8
```

最低版本证明迁移资产没有误用较新 API;候选版本证明向前兼容。命令必须使用正式模块且无本地 `replace`。不要使用 `@latest`,也不要删除最低版本门禁来换取候选版本通过。

如果候选版本失败:

- 属于 pkg 非预期回归:先报告并修复/发布 pkg,不改 CLI 资产掩盖问题;
- 属于明确的新 pkg 契约:建立新迁移目标,更新资产和 ManualAction;
- 只影响新建模板:更新 `template/service`,保持历史迁移资产不变。

## 5. 验收顺序

1. 运行 `gofmt` 和 `make test`。
2. 对最低 pkg 和本次候选 pkg 分别运行 `make test-compatibility PKG_COMPAT_VERSION=<version>`。
3. 对每个支持来源验证 preview:状态、warning、ManualAction 和 Changes 路径必须稳定,preview 前后项目逐字节不变。
4. 在从真实服务 clean commit 导出的临时 Git fixture 上执行 apply;断言 Git diff 路径严格等于 Plan,且没有 create/delete/mode change。
5. 再次 preview 必须为 `managed_up_to_date`。
6. 如果本次声明“完整项目兼容”,还必须在临时 fixture 中完成人工待办并执行该项目的生成、测试和构建。托管资产编译通过不能替代这一步。
7. 运行 CLI 与文档仓库的 `git diff --check`,更新 README、目标 CHANGELOG 和路线文档中的真实验收结果。

## 6. 停止条件

出现以下任一情况时,不得宣称可以发布或执行真实项目 apply:

- pkg 目标没有正式 tag,或正式模块无法获取;
- 来源版本没有发布产物/确认 commit 和冻结摘要;
- 兼容资产需要来源项目不存在的符号或必须创建文件;
- 正式 CLI 版本未决定、为空、`v0.0.0` 或 prerelease;
- 真实项目 Git 不 clean;
- Plan 有 unsupported/conflict,或 compatibility test 失败;
- 只完成托管文件验证,却声称业务项目已经完成编译兼容迁移。
8 changes: 4 additions & 4 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,11 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v6

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
Expand All @@ -56,7 +56,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v2
uses: github/codeql-action/autobuild@v4

# ℹ️ Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
Expand All @@ -69,4 +69,4 @@ jobs:
# ./location_of_script_within_repo/buildscript.sh

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
uses: github/codeql-action/analyze@v4
60 changes: 60 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: Test

on:
push:
branches: [main]
pull_request:
branches: [main]

permissions:
contents: read

jobs:
cli:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-go@v7
with:
go-version-file: go.mod
cache-dependency-path: go.sum
- run: make test
- run: make build

migration-compatibility:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-go@v7
with:
go-version: 1.25.13
cache-dependency-path: go.sum
- run: make test-compatibility PKG_COMPAT_VERSION=v0.5.0

template-compatibility:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-go@v7
with:
go-version: 1.25.13
cache-dependency-path: go.sum
- name: Install generation tools
run: |
make protoc
go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.36.11
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.6.2
go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@v2.29.0
go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@v2.29.0
- name: Install protobuf include sources
run: |
mkdir -p "$(go env GOPATH)/src/github.com/grpc-kit"
mkdir -p "$(go env GOPATH)/src/github.com/googleapis"
mkdir -p "$(go env GOPATH)/src/github.com/grpc-ecosystem"
git clone --branch v0.3.1 --depth 1 https://github.com/grpc-kit/api.git "$(go env GOPATH)/src/github.com/grpc-kit/api"
git init "$(go env GOPATH)/src/github.com/googleapis/googleapis"
git -C "$(go env GOPATH)/src/github.com/googleapis/googleapis" remote add origin https://github.com/googleapis/googleapis.git
git -C "$(go env GOPATH)/src/github.com/googleapis/googleapis" fetch --depth 1 origin e0d0106516a5c613510533821e4508bc6c943b11
git -C "$(go env GOPATH)/src/github.com/googleapis/googleapis" checkout --detach FETCH_HEAD
git clone --branch v2.29.0 --depth 1 https://github.com/grpc-ecosystem/grpc-gateway.git "$(go env GOPATH)/src/github.com/grpc-ecosystem/grpc-gateway"
- run: make test-template-compatibility
7 changes: 7 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# AGENTS.md

## Repository skills

- When changing `template/service`, the target grpc-kit/pkg version, `internal/projectmigrate` compatibility assets or diagnostics, or the `test-compatibility` gate, read `.agents/skills/maintain-project-migration/SKILL.md` completely and follow its referenced SOP.
- The migration skill governs CLI maintainer work. Do not copy it into generated service projects; service-level business skills have a different ownership and release lifecycle.

Loading