원클릭으로
rodski-release
RodSki 正式版本发布 skill。 当用户说"发布 vX.Y.Z"、"release X.Y.Z"、"打包发布"时触发。 按 5 个阶段编排发布流程,每个阶段对应一个独立脚本, 失败时提供明确的回滚指引,不会留下"假成功"的 git tag。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
RodSki 正式版本发布 skill。 当用户说"发布 vX.Y.Z"、"release X.Y.Z"、"打包发布"时触发。 按 5 个阶段编排发布流程,每个阶段对应一个独立脚本, 失败时提供明确的回滚指引,不会留下"假成功"的 git tag。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
RodSki 用例 / 模型 / 数据 / 关键字编写权威指南。当用户询问如何写 RodSki 用例、 如何写 model.xml、关键字(type / verify / send / DB / run / navigate / wait / get / set / screenshot / assert / clear / upload_file / launch / evaluate / close / check) 怎么用、data.sqlite 怎么填、Case XML 三阶段(pre_process / test_case / post_process) 格式、scenario 容器、测试计划 plan/*.xml、GlobalValue 引用、Return 索引、视觉定位器 vision/ocr/vision_bbox、桌面端 / 移动端自动化时触发。完整内容按章节拆分在 reference/*.md, Agent 命中后按需 Read 对应章节。
面向疑难 bug 和性能回归的纪律化诊断循环。复现 → 最小化 → 提出假设 → 插桩 → 修复 → 回归测试。当用户说 "diagnose this" / "debug this"、"诊断一下" / "排查一下"、报告 bug、说某处坏了/抛异常/失败,或描述性能回归时使用。
在任意 RodSki 用例仓库中编写、修改、调试或审查 RodSki 自动化测试模块。Codex 处理 RodSki case/*.xml、model/model.xml、data/globalvalue.xml、data/data.sqlite、plan/*.xml、TEST_CASE_WRITING_GUIDE.md 合规、RodSki CLI 校验、UI/API/DB 测试用例,或 AI 生成 RodSki 用例的风格一致性时使用。中文触发:写测试用例、修改用例、修复用例、调试失败结果、审查 RodSki 用例、检查 guide 合规、修改 case/model/data/plan、处理 data.sqlite/globalvalue.xml、运行 rodski dry-run 或 data validate。
用于 RodSki 框架源码、XML 活文档协议、关键字实现、XSD schema、CLI、视觉/Desktop/API/DB 能力和 demo 验收链路。处理 RodSki 用例、model.xml、data.sqlite/globalvalue.xml、plan/*.xml 或 TEST_CASE_WRITING_GUIDE.md 合规任务时,优先使用 rodski-case-writer。
Submit RodSki test case assets to the shared GitLab repository from a submitter's own testcase roots. Use when the user asks to push or submit RodSki case/data/fun/model assets to GitLab. The submitter must provide their own GitLab username, personal branch, and owner directory; never target main/master/head, never write passwords into skill files, and never clean sibling submitter folders.
RodSki 用例换环境助手。Use when the user asks to convert, migrate, audit, compare, sync missing, or verify RodSki test cases between environments such as beta/ci/stage/prod, especially requests mentioning “换环境”, “转换环境”, “补齐用例”, “缺少用例”, environment URL, database address, globalvalue.xml, model hardcoded URL, data.sqlite, beta_old/ci_new, or finding environment values that should change. This skill first supplements missing case/data/model/fun assets from old to new when applicable, then changes only URL and database-address values, keeps case writing and business data unchanged, and treats old/source cases as read-only.
| name | rodski-release |
| description | RodSki 正式版本发布 skill。 当用户说"发布 vX.Y.Z"、"release X.Y.Z"、"打包发布"时触发。 按 5 个阶段编排发布流程,每个阶段对应一个独立脚本, 失败时提供明确的回滚指引,不会留下"假成功"的 git tag。 |
| type | release |
用户说以下任意一种时触发本 skill:
| 条件 | 说明 |
|---|---|
当前在 main 分支 | 发布只从主干进行 |
~/.pypirc 已配置 | twine 上传 PyPI 需要 |
rodski CLI 可用 | 验收测试需要 |
python3 -m build 可用 | 需要 pip install build |
Stage 1 合并功能分支到 main
↓
Stage 2 主干验收测试(unit tests + demo_full UI 用例)
↓
Stage 2.5 Skills 同步与打包(diff 测试指南 → 切片 → dist/rodski-skills-vX.Y.Z.zip)
↓
Stage 3 同步版本号 + 打包 + 打 tag(tag 暂不 push)
↓
Stage 4 干净 venv 验收 wheel(模拟用户安装体验)
↓
Stage 5 上传 PyPI + push git + 核验(确认真实成功)
关键设计原则:
.release_state 状态文件,防止跳步VERSION=7.2.0
# Stage 1: 合并功能分支
.claude/skills/rodski-release/scripts/stage1_merge_to_main.sh $VERSION
# Stage 2: 主干验收
.claude/skills/rodski-release/scripts/stage2_acceptance.sh $VERSION
# Stage 2.5: Skills 同步与打包
.claude/skills/rodski-release/scripts/stage2_5_sync_skills.sh $VERSION
# Stage 3: 打包 + 打 tag
.claude/skills/rodski-release/scripts/stage3_build_and_tag.sh $VERSION
# Stage 4: 干净环境验收
.claude/skills/rodski-release/scripts/stage4_clean_verify.sh $VERSION
# Stage 5: 上传 + 核验
.claude/skills/rodski-release/scripts/stage5_publish_and_verify.sh $VERSION
每个脚本都可以单独调用,但会检查前置阶段是否完成(通过 .release_state 文件)。
# 撤销 tag 和版本号 commit(stage3 之后、stage5 之前失败时用)
.claude/skills/rodski-release/scripts/rollback_tag.sh $VERSION
脚本: stage1_merge_to_main.sh <VERSION>
执行内容:
main 分支git fetch + fast-forward 同步远端feature/v<VERSION>* 分支失败处理:
脚本: stage2_acceptance.sh <VERSION>
执行内容:
pytest tests/unit/ 全量单元测试rodski run 跑 demo_full 所有 UI 用例(10 个文件)失败处理:
脚本: stage2_5_sync_skills.sh <VERSION>
执行内容:
rodski/docs/TEST_CASE_WRITING_GUIDE.md 的 sha256,与 rodski-skills/rodski-test-guide/source.sha256 对比rodski-skills/rodski-test-guide/reference/*.md,git commitdist/rodski-skills-v<VERSION>.zip(无论是否变更都打,确保版本对齐)失败处理:
rodski-skills/scripts/sync_test_guide.sh 是否存在且可执行dist/ 目录权限脚本: stage3_build_and_tag.sh <VERSION>
执行内容:
pyproject.toml(根)rodski/pyproject.tomlrodski/__init__.pyCLAUDE.mdrodski/docs/*.md(版本行)git commit 版本号变更python3 -m build . 从根目录构建(输出到 dist/)scripts/release_check.sh 验证 wheel 完整性git tag -a v<VERSION> 打 annotated tag(不 push)失败处理:
rollback_tag.sh <VERSION>脚本: stage4_clean_verify.sh <VERSION>
执行内容:
.release_venv_<VERSION>/)rodski --version 输出正确版本号demo_full/case/demo_case.xml --headless失败处理:
rodski/__init__.py 是否正确 bumprollback_tag.sh 重来脚本: stage5_publish_and_verify.sh <VERSION>
执行内容:
twine upload 上传 wheel + sdist(使用 ~/.pypirc)git push origin main --tagsgit push gitlab main --tags(如果 remote 存在)失败处理:
rollback_tag.sh 重来git push origin main --tags发布时 bump_all_versions() 会自动更新以下文件:
| 文件 | 更新方式 |
|---|---|
pyproject.toml(根) | version = "X.Y.Z" |
rodski/pyproject.toml | version = "X.Y.Z" |
rodski/__init__.py | __version__ = "X.Y.Z" |
CLAUDE.md | 当前版本:vX.Y.Z |
rodski/docs/*.md | 版本: vX.Y.Z |
Q: 发布到一半失败了怎么办?
查看 .release_state 文件确认当前阶段,然后:
rollback_tag.sh <VERSION>,再从 stage3 重来Q: 如何跳过某个阶段?
不建议跳过。如果确实需要(如 stage1 已手动完成),可以手动写入状态:
echo "stage=stage1 version=7.2.0 ts=$(date +%Y%m%d_%H%M%S)" > .release_state
Q: 为什么 tag 要在 PyPI 上传成功后才 push?
历史上 v7.0.0 / v7.1.0 都因为 PyPI 上传失败留下了"假成功"的 tag, 导致开发者误以为已发布。新流程确保 tag 出现在远端 = PyPI 真实可用。