发布
- 作者仓库星标 1,396
- 作者仓库 psd-tools
Step 0 — Determine target version
Provided version: $ARGUMENTS
If a version was provided (above is non-empty)
Validate it as a PEP 440 string (e.g. 1.2.3, 1.2.3a1, 1.2.3rc1, 1.2.3.post1).
Note: PEP 440 versions must not start with v — that prefix belongs on the git tag, not
the version string.
Stop and ask the user to correct it if invalid. Store it as VERSION for all subsequent steps.
If no version was provided (above is empty)
Analyze the commits listed in Step 1 to recommend the correct next version.
The last tag shown in Step 1 uses a v prefix (e.g. v1.14.3); strip it when computing
the next version so the result is a bare PEP 440 string (e.g. 1.14.4, not v1.14.4).
Apply these semver rules:
- Major bump (
X+1.0.0) — any commit that breaks a public API or documented behaviour - Minor bump (
X.Y+1.0) — any new public feature or API addition, no breaking changes - Patch bump (
X.Y.Z+1) — bug fixes, security patches, chores, docs, or refactoring only
Show your reasoning and proposed version to the user, then ask them to confirm or override it. Store the confirmed version as VERSION for all subsequent steps.
Step 1 — Review commits since the last release
Fetch tags:
!git fetch --tags -q || echo "Warning: failed to fetch tags — check network/auth and consider retrying."
Last tag: !git describe --tags --abbrev=0 2>/dev/null || echo "(none)"
Today's date: !date +%Y-%m-%d
Now list the commits since the last release by running one of these commands:
- If "Last tag" above is
(none): rungit log --oneline - Otherwise: run
git log <LAST_TAG>..HEAD --oneline(substituting the actual tag)
You must run this command and review the output before proceeding to Step 0 or Step 2.
Step 2 — Draft changelog entry
Read docs/changelog.rst to understand the current format, then draft a new entry for VERSION
using this RST format:
VERSION (YYYY-MM-DD)
--------------------
- [category] Description (#PR)
Important: The - underline must be at least as long as the title line (RST requirement).
Count the exact characters in VERSION (YYYY-MM-DD) and use that many dashes.
Use these categories (pick the most specific one per bullet):
api— public API additions or changespsd— low-level PSD parsing/writingfix— bug fixesrefactor— internal restructuring, no behaviour changedocs— documentation onlyci— CI/CD, GitHub Actionschore— dependency bumps, tooling, housekeepingsecurity— security fixes
Group related changes. Omit purely internal churn that users won't care about. Reference PR numbers where available.
Show the draft to the user and ask for approval or edits before continuing.
Step 3 — Update docs/changelog.rst
Prepend the approved changelog entry directly after the Changelog header block and the
following blank line, leaving a blank line between the header and the new entry.
Step 4 — Create release branch and commit
git checkout -b release/vVERSION
Then update src/psd_tools/version.py using the Edit tool — replace the existing
__version__ line with:
__version__ = "VERSION"
VERSION is the bare PEP 440 string without the v prefix (e.g. 1.15.0, not v1.15.0).
Then stage both changed files and commit:
git add docs/changelog.rst src/psd_tools/version.py
git commit -m "docs: release vVERSION"
git push -u origin release/vVERSION
Replace VERSION with the actual version string (e.g. 1.15.0).
Step 5 — Open a pull request
Run gh pr create with --title "Release vVERSION" and a --body containing:
- A
## Release vVERSIONheading - A
### Changelogsection with the approved entry from Step 2 pasted in - A
### Release checklistsection with these items:[ ] Changelog entry reviewed and accurate[ ] Version follows PEP 440
- A closing note: "After this PR is merged, the
auto-tagworkflow will tag the merge commit asvVERSIONand thereleaseworkflow will build wheels and publish to PyPI automatically."
Replace VERSION with the actual version string throughout.
Step 6 — Done
Print the PR URL. Remind the user:
After the PR is approved and merged, the
auto-tagGitHub Actions workflow tags the merge commit asvVERSIONautomatically. That tag push triggers thereleaseworkflow to build wheels for all platforms and publish to PyPI. No manual tagging or publishing is needed.
Replace VERSION with the actual version string.
- 流狐分类
- 工程开发
- 作者声明 Agent
- 未找到明确声明;不据此推断已兼容或已测试
- 静态检查
- 88 / 100 · 启发式扫描,不代表运行安全
- 作者 / 版本 / 许可
- @psd-tools · 未声明 license
- 流狐 Token 估算
- 低消耗
- 流狐接入估算
- 即装即用
- 是否需要外部 API Key
- 未发现要求
- 检测到的系统要求
- 未声明
- 底层运行要求
- Python
- 检测到的文件与系统行为
-
- 只读
- 允许写入 / 修改
- 检测到的网络行为
- 允许外网请求
- 安装命令数
- 无(仅作为资料)
档案由构建时根据 SKILL.md 与安装命令自动衍生,可能与作者实际意图存在差异。
需要注意: 未限定 allowed-tools,默认拥有全部工具权限。
作者没有在当前 SKILL.md 中定义固定输出样例。 Provided version: $ARGUMENTS
Fetch tags: !git fetch --tags -q || echo "Warning: failed to fetch tags — check network/auth and consider retrying." Last tag: !git describe --tags --abbrev=0 2>/dev/null || echo "(none)"
Read docs/changelog.rst to understand the current format, then draft a new entry for VERSION using this RST format: Important: The - underline must be at least as long as the title line (RST requirement).
Prepend the approved changelog entry directly after the Changelog header block and the following blank line, leaving a blank line between the header and the new entry.
Then update src/psdtools/version.py using the Edit tool — replace the existing version line with: VERSION is the bare PEP 440 string without the v prefix (e.g. 1.15.0, not v1.15.0).
Run gh pr create with --title "Release vVERSION" and a --body containing: A Release vVERSION heading A Changelog section with the approved entry from Step 2 pasted in
## Step 0 — Determine target version
**Provided version**: $ARGUMENTS
### If a version was provided (above is non-empty)
Validate it as a PEP 440 string (e.g. `1.2.3`, `1.2.3a1`, `1.2.3rc1`, `1.2.3.post1`).
Note: PEP 440 versions must **not** start with `v` — that prefix belongs on the git tag, not
the version string.
Stop and ask the user to correct it if invalid. Store it as **VERSION** for all subsequent steps.
### If no version was provided (above is empty)
Analyze the commits listed in Step 1 to recommend the correct next version.
The last tag shown in Step 1 uses a `v` prefix (e.g. `v1.14.3`); strip it when computing
the next version so the result is a bare PEP 440 string (e.g. `1.14.4`, not `v1.14.4`).
Apply these semver rules:
- **Major bump** (`X+1.0.0`) — any commit that breaks a public API or documented behaviour
- **Minor bump** (`X.Y+1.0`) — any new public feature or API addition, no breaking changes
- **Patch bump** (`X.Y.Z+1`) — bug fixes, security patches, chores, docs, or refactoring only
Show your reasoning and proposed version to the user, then ask them to confirm or override it.
Store the confirmed version as **VERSION** for all subsequent steps.
## Step 1 — Review commits since the last release
Fetch tags:
!`git fetch --tags -q || echo "Warning: failed to fetch tags — check network/auth and consider retrying."`
Last tag: !`git describe --tags --abbrev=0 2>/dev/null || echo "(none)"`
Today's date: !`date +%Y-%m-%d`
Now list the commits since the last release by running one of these commands:
- If "Last tag" above is `(none)`: run `git log --oneline`
- Otherwise: run `git log <LAST_TAG>..HEAD --oneline` (substituting the actual tag)
You must run this command and review the output before proceeding to Step 0 or Step 2.
… 作者原文负责流程事实;流狐只索引当前章节、要点、文件与命令。
章节 -> Step 0 — Determine target version → If a version was provided (above is non-empty) → If no version was provided (above is empty) → Step 1 — Review commits since the last release → Step 2 — Draft changelog entry → Step 3 — Update docs/changelog.rst
要点 -> Provided version · not · VERSION · Major bump · Minor bump · Patch bump · Important · without
文件/命令 -> 1.2.3 · 1.2.3a1 · 1.2.3rc1 · 1.2.3.post1 · prefix (e.g. · 1.14.4 · v1.14.4 · X+1.0.0
内容 SHA-256 -> 4c41e60ad95b
方法与流程
适用与边界
原文中的明确线索
1.2.3、1.2.3a1、1.2.3rc1、1.2.3.post1、prefix (e.g.、1.14.4、v1.14.4、X+1.0.0