Sdlc Release Check logo

Sdlc Release Check

Community
TsCarpe
sdlc-release-check

Scans the Java + SQL diff between current and baseline branches (master/main), extracting release-time manual actions outside code: config-center keys (Apollo/Nacos), platform registrations (xxl-job, MQ listeners), DDL/DML changes, and behavior notices, producing config-key, platform-operation, database-change, and notice checklists plus a release timeline. 扫描当前分支相对基线分支的 Java + SQL diff,提取发版前需在代码之外人工处理的事项:配置中心 Key(Apollo/Nacos)、@XxlJob 任务与 MQ 订阅、DDL/DML 分级、行为知会项,产出四类清单与发布时刻表。Use when 用户要梳理上线配置清单、检查新增配置 Key、准备 Apollo/Nacos 发版配置、检查新增定时任务/xxl-job 任务/MQ 订阅/上线 DDL,准备发布 runbook,或说 config-sentinel、config review、release check、Apollo/Nacos key audit、xxl-job audit、DDL audit、上线检查、发布检查。用法:/sdlc-release-check

Overview

PublisherTsCarpe
Repositoryclaude-sdlc-skills
Skill namesdlc-release-check
Stars
65
Forks
0
Bundled files
8
LicenseMIT
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.

  • 8 bundled files

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

  • Open source

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

Installation

Install the Sdlc Release Check 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/TsCarpe/claude-sdlc-skills/tree/main/skills/sdlc-release-check
  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/TsCarpe/claude-sdlc-skills.git /tmp/claude-sdlc-skills
mkdir -p .claude/skills
cp -r /tmp/claude-sdlc-skills/skills/sdlc-release-check .claude/skills/sdlc-release-check
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Sdlc Release Check 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 Sdlc Release Check 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 Sdlc Release Check 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.

SDLC Release Check

发版前梳理「需要在代码之外人工处理的配置与注册事项」:配置中心 Key(Apollo/Nacos)、调度任务(xxl-job)、MQ 订阅关系、数据库 DDL/DML 变更,以及无需操作但应知会发版负责人的行为变化,最终汇总为发布时刻表。分析 .java 与 .sql 文件,忽略 XML/YAML/properties/前端文件;SQL 侧不绑定迁移框架,只认 diff 中的语句本身。

前置依赖:git(生成 diff);无 MCP 或脚本依赖。

工作流

按顺序执行,复制此 checklist 跟踪进度:

Release Check Progress:
- [ ] Step 1: 确定基线分支,生成 diff 临时文件
- [ ] Step 2: 读取 diff 全文,按五种模式提取,排除噪音
- [ ] Step 3: 定位文件、去重、标记状态;孤儿/改名检测;DDL 分级
- [ ] Step 4: 按模板输出四节清单 + 发布时刻表 + 纯文本块

Step 1: 基线分支与 diff 提取

  1. 基线分支:用户指定优先;否则自动探测(依次尝试 master、main)
  2. 基线分支不存在或当前分支已合并时,明确报错提示用户,不静默换基线
  3. diff 落临时文件(防管道截断/编码问题,不要直接管道消费):
    • bash/zsh:git diff <base>...HEAD -- "*.java" "*.sql" > diff_temp.txt
    • PowerShell:git diff <base>...HEAD -- "*.java" "*.sql" | Out-File -Encoding utf8 diff_temp.txt

Step 2: 读取与内存解析

读取 diff_temp.txt 全文,在上下文中分析提取。不要在命令行跑正则提取(跨平台转义不可靠);Claude Code 环境下可用 Grep 工具对临时文件粗筛辅助定位,但判定以读文分析为准。

只认新增行(+ 开头)中的合法位置。Java 侧四处模式(A–D):

模式 A:@Value("${...}") → 提取 Key。识别默认值写法 ${key:default},标注「有默认值 :default」

模式 B:@ConfigurationProperties(prefix = "...") → 提取前缀,类型标「配置组,需核对该类全部字段」

模式 C:任意注解 @Xxx(...) 属性值中的 "${...}" 占位符 → 提取 Key,类型标「注解属性」并附来源注解名(如 @FeignClient / @RocketMQMessageListener / @Scheduled / @KafkaListener)。规则通用,不做注解白名单

模式 D(平台注册型注解——提取的是「要在平台建/改的东西」,不是配置 Key):

  • @XxlJob("name") / @XxlJob(value = "name") → 提取 handler 名,进「外部平台操作清单」。漏建任务 = 功能静默缺失,是本模式最高优先级
  • @RocketMQMessageListener / @KafkaListener / @RabbitListener → 逐属性分流:值为 "${...}" 的走模式 C 进 Key 清单;字面量值(如 topic = "contest-expert-assign"、groupId = "order-group")进平台操作清单;配置引用形态双列——topic/consumerGroup 的值取自配置中心时,平台仍需按该配置值建 topic/订阅关系,故 Key 清单之外在平台操作清单同时列一行,标识写 ${key}(配置引用);常量引用(topic = TopicConst.X)静态不可提取,尾部人工确认提示
  • @Scheduled → 不进操作清单,进「知会项」:无外部配置,但集群下每实例都会执行,需确认幂等/分布式锁

模式 E(数据库 DDL/DML——只来自 .sql 文件新增行,不绑定迁移框架):

  • 识别两类语句:DDL(CREATE TABLE / ALTER TABLE / DROP TABLE / CREATE INDEX / DROP INDEX / RENAME / TRUNCATE)与写型 DML(INSERT / UPDATE / DELETE / MERGE)
  • 逐语句提取四要素:语句类型、目标表名、变更内容摘要(列名/操作)、所在文件;一个文件含多语句时逐条列,不合并(执行单位是语句)
  • 每条按 references/ddl-rules.md 的分级表标执行时机:🟢 前置(部署前)/ 🔴 后置(部署后或下轮)/ ⚠️ 大表风险 / 🟡 订正(部署后、验证前)
  • 噪音排除:注释(-- 与 /* */)、事务控制(BEGIN/COMMIT)、只读语句(SELECT/SHOW/EXPLAIN/DESC)、SET/USE 环境语句一律丢弃;存储过程/动态 SQL 无法静态判定时,尾部人工确认提示

噪音排除规则(Java 侧,命中即丢弃):

  1. 注释、JavaDoc、日志字符串中的匹配
  2. 删除行(- 开头)与上下文行中的匹配(平台注册项与 .sql 文件除外——删除行参与孤儿检测,见 Step 3)
  3. MyBatis SQL 占位符:@Select/@Update/@Insert/@Delete 注解属性内的 ${} 及字符串字面量中的 SQL ${}(如 order by ${col})不是 Spring 配置
  4. 代码生成器模板字符串中的 ${}
  5. 动态 key(如 environment.getProperty(变量))静态不可提取;发现时在结果尾部提示「存在动态取值,需人工确认」,不计入清单

Step 3: 定位与去重

  • 每个唯一 Key / handler / 订阅项 / SQL 语句记录首次出现的文件路径 + 来源(注解或 .sql 文件)
  • 配置 Key 区分两种状态:「🆕 新增」(diff 中新增行引入)与「⚠️ 复用(需确认)」(Key 已存在于存量代码或删除行同时出现——典型为重构移动)
  • 同一 Key 多处引用合并为一行,所在文件列首个 + 计数(如 Foo.java 等 3 处)
  • 孤儿/改名检测(平台注册项专用):删除行出现、新增行未出现的 handler 名 / 字面量 topic / queue → 标「⚠️ 疑似下线或改名:平台旧任务/订阅需同步处理(下线或改指向)」;删除行与新增行同名 → 重构移动,不告警
  • SQL 脚本删改检测:.sql 文件整文件出现在删除行(脚本被删/回滚)→ 尾部提示「SQL 脚本有删改,确认发布清单同步」;语句级改动按新增行正常提取

Step 4: 输出

严格用以下模板(四节清单 + 发布时刻表 + 纯文本块):

markdown
## 配置 Key 清单(基线:<base>)

| 序号 | 配置 Key / 前缀 | 类型(来源注解) | 所在文件 | 建议操作 |
|---|---|---|---|---|
| 1 | training.template.url | 单值(@Value) | ProjectBusiness.java | 🆕 新增,配置中心添加 |
| 2 | thread.pool.order | 配置组(@ConfigurationProperties) | ThreadPoolConfig.java | 🆕 新增,需核对该类全部字段 |
| 3 | open.url | 注解属性(@FeignClient) | AuthFeignInner.java 等 17 处 | ⚠️ 复用(需确认) |
| 4 | xxl.job.executor.port | 单值(@Value,有默认值 :9999) | XxlJobConfig.java | 🆕 新增,可不配 |

## 外部平台操作清单(基线:<base>)

| 序号 | 类型 | 标识(handler / topic / queue) | 所在文件 | 建议操作 |
|---|---|---|---|---|
| 1 | xxl-job 任务 | contestStatusAdvanceScan | ContestHandler.java | 🆕 调度中心新建任务(配 cron/路由/告警)——漏配=任务不跑 |
| 2 | MQ 订阅 | topic: contest-expert-assign | ExpertAssignConsumer.java | 🆕 MQ 平台确认 topic 已建 + 订阅关系 |
| 3 | xxl-job 任务 | contestOldScan | ContestHandler.java | ⚠️ 疑似下线/改名,平台旧任务需下线或改指向 |

## 数据库变更清单(基线:<base>)

| 序号 | 语句类型 | 目标表 | 变更内容 | 所在文件 | 执行时机 |
|---|---|---|---|---|---|
| 1 | DDL-建表 | contest_info | CREATE TABLE | V01__contest.sql | 🟢 部署前 |
| 2 | DDL-加列 | contest_info | ADD COLUMN status | V01__contest.sql | 🟢 部署前 |
| 3 | DDL-删列 | contest_old | DROP COLUMN legacy_flag | cleanup.sql | 🔴 部署后/下轮,确认旧代码全下线 |
| 4 | DML-订正 | contest_user | UPDATE 回填 dept_id | backfill.sql | 🟡 部署后、验证前 |

## 知会项(无需操作,发版负责人应知)

| 事项 | 所在文件 | 说明 |
|---|---|---|
| 新增 @Scheduled 后台任务 | DataSyncTask.java | 集群每实例都会执行,确认幂等/分布式锁 |

## 发布时刻表(按本次 diff 汇总)

(条件式生成:每步只列本次 diff 实际产出的项,该类无产出则整步跳过)

1. **部署前**:执行前置 DDL(列出)→ 配置中心添加必配 Key(列出;有默认值项可不配)→ MQ 平台确认 topic 已建 + 订阅关系(列出——消费者启动即订阅,必须先于部署)
2. **部署应用**
3. **部署后**:xxl-job 调度中心新建任务(列出——executor 注册后再建,避免旧实例触发不存在的 handler)→ 执行 DML 订正(列出)→ 执行后置 DDL(列出,先确认旧代码全下线)
4. **验证**:回滚预案就绪(destructive DDL 反向语句与孤儿任务/订阅下线,见「回滚预案」节)

## 回滚预案(按本次 diff 汇总,条件式生成)

(只列本次 diff 实际产出项的反向动作;无任何回滚动作时不输出本节,不输出空表格)

回滚顺序建议:停流量 → revert 代码 → 新增平台任务停用/订阅下线 → 新增配置 Key 回收 → 数据回滚(DDL 反向 / 备份恢复,最后执行且优先用备份)。

| 回滚对象 | 反向动作 | 依据(指向对应清单条目) |
|---|---|---|
| destructive DDL | 反向语句:<具体语句> | 数据库变更清单 #n |
| DML 订正 | 回填前备份表 / 反向 UPDATE:<语句> | 数据库变更清单 #n |
| 新增配置 Key | 配置中心删除或注释 <key> | 配置 Key 清单 #n |
| 新增平台任务/订阅 | 调度中心停用 / MQ 删订阅 <标识> | 平台操作清单 #n |
| 代码 | revert 本次合并 | — |

末尾纯文本代码块,仅列「新增」状态的配置 Key,每行一个,供直接粘贴到配置中心;有默认值的单独一节与必配项区分(平台操作、数据库变更与知会项无可粘贴形态——SQL 的执行载体是 .sql 文件本身——均不进纯文本块):

training.template.url
thread.pool.order.core-size
(…其余必配 Key)

# 以下有默认值,可不配
xxl.job.executor.port  # 默认 9999

各节均无新增时,明确输出「本次 diff 无新增配置 Key、平台操作项与数据库变更」,不要输出空表格(发布时刻表随之无内容,同样不输出;回滚预案同理——无任何回滚动作时不输出本节)。

术语

全篇统一使用:配置 Key、基线分支、新增行、复用、注解属性、配置组、默认值、平台操作清单、handler 名、订阅关系、孤儿任务、知会项、前置 DDL、后置 DDL、订正脚本、发布时刻表、回滚预案。

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 Sdlc Release Check AI skill do?

Scans the Java + SQL diff between current and baseline branches (master/main), extracting release-time manual actions outside code: config-center keys (Apollo/Nacos), platform registrations (xxl-job, MQ listeners), DDL/DML changes, and behavior notices, producing config-key, platform-operation, database-change, and notice checklists plus a release timeline. 扫描当前分支相对基线分支的 Java + SQL diff,提取发版前需在代码之外人工处理的事项:配置中心 Key(Apollo/Nacos)、@XxlJob 任务与 MQ 订阅、DDL/DML 分级、行为知会项,产出四类清单与发布时刻表。Use when 用户要梳理上线配置清单、检查新增配置 Key、准备 Apollo/Nacos 发版配置、检查新增定时任务/xxl-job 任务/MQ 订阅/上线 DDL,准备发布 runbook,或说 config-sentinel...

Why use Sdlc Release Check on TypingMind?

Because you install it once and use it with any model. Sdlc Release Check 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 Sdlc Release Check in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/TsCarpe/claude-sdlc-skills/tree/main/skills/sdlc-release-check. 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 Sdlc Release Check?

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 Sdlc Release Check?

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

Is the Sdlc Release Check AI skill free?

Yes. It is published on GitHub by TsCarpe under the MIT license. 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 👇