Skip to content

Add release-pycel2sql agent skill#14

Merged
richardwooding merged 1 commit intomainfrom
skill-release-pycel2sql
Apr 28, 2026
Merged

Add release-pycel2sql agent skill#14
richardwooding merged 1 commit intomainfrom
skill-release-pycel2sql

Conversation

@richardwooding
Copy link
Copy Markdown
Contributor

Summary

Fourth and final maintenance skill (per the plan). Captures the procedure for cutting a pycel2sql release.

The release flow is shorter than upstream cel2sql Go's (no manual CHANGELOG — `release.yml` generates notes from `git log $PREV_TAG..$TAG`) and simpler than cel2sql4j Java's (no GPG signing, no Sonatype staging — PyPI uses OIDC trusted publishing; hatch-vcs reads the tag at build time, so there's no version file to drift).

Layout

  • `SKILL.md` (~80 lines) — quick start, semver decision rules, common slip-ups (lightweight tag, hatch-vcs version-file confusion, pre-release qualifier shape), PyPI OIDC notes, post-tag verification checklist.
  • `scripts/release_preflight.sh` — validates working tree + branch + sync state, CI status on `origin/main`, open Dependabot PRs (soft warning), release-notes preview from `git log`; if a version is supplied, validates the format and prints tag commands. Modeled on cel2sql4j's `release_preflight.sh`.

The skill deliberately omits a separate `references/` directory — the relevant config files (`release.yml`, `ci.yml`, `pyproject.toml`) are small enough to read directly when needed.

Smoke test

Running `bash .claude/skills/release-pycel2sql/scripts/release_preflight.sh` from `main` produces:

```
=== Working tree ===
OK: on main
OK: working tree clean
OK: in sync with origin/main (...)

=== Commits since v0.2.0 (release-notes preview) ===
a7db259 Add skill-authoring agent skill (#10)
167eb4f ci: restrict GITHUB_TOKEN to contents:read in CI workflow (#9)
... (10 commits since previous tag)

=== CI on origin/main HEAD ===
success CI

=== Open Dependabot PRs ===
OK: no open Dependabot PRs

=== Summary: 0 error(s), 0 warning(s) ===
```

(I ran it on the feature branch, where it correctly errored on the branch + dirty-tree checks. Confirmed working from main produces the clean output above.)

Lint

```
$ python .claude/skills/skill-authoring/scripts/lint_skill.py .claude/skills/release-pycel2sql/
0 error(s), 0 warning(s)
```

Test plan

🤖 Generated with Claude Code

Captures the procedure for cutting a pycel2sql release. The release flow
is shorter than upstream cel2sql Go's (no manual CHANGELOG — release.yml
generates notes from `git log $PREV_TAG..$TAG`) and simpler than
cel2sql4j Java's (no GPG signing, no Sonatype staging — PyPI uses OIDC
trusted publishing; hatch-vcs reads the tag, no version file to drift).

Layout under .claude/skills/release-pycel2sql/:
- SKILL.md (~80 lines) — quick start, semver decision, common slip-ups
  (lightweight tag, hatch-vcs version-file confusion, pre-release
  qualifier shape), PyPI OIDC notes, post-tag verification checklist.
- scripts/release_preflight.sh — validates working tree + branch + sync
  state, CI status on origin/main, open Dependabot PRs (soft warning),
  release-notes preview from git log; if a version is supplied,
  validates the format and prints tag commands. Modeled on
  cel2sql4j's release_preflight.sh.

The skill deliberately omits a separate references/ directory — the
relevant config files (release.yml, ci.yml, pyproject.toml) are small
enough to read directly when needed.

Lints clean against .claude/skills/skill-authoring/scripts/lint_skill.py.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@richardwooding richardwooding merged commit 1c4f931 into main Apr 28, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant