package-release-integrity

Validates Python package release consistency across version sources, tags, changelogs, and semver movement.

Updated Jul 9, 2026
One-click install
npx skills add https://github.com/t-step/bindle-archive --skill package-release-integrity-t-step
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: package-release-integrity
Source: https://github.com/t-step/bindle-archive/tree/main/skills/package-release-integrity
Command: npx skills add https://github.com/t-step/bindle-archive --skill package-release-integrity-t-step

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) components.

What problem does it solve? Cutting a Python package release involves several consistency checks that are easy to skip or eyeball incorrectly: do all version declarations agree, does the proposed tag match the version, does a changelog section exist, and does the semver bump match the declared change class? This Skill runs those checks deterministically and reports uncertain for anything only a human can judge, instead of guessing. ## Core Features & Use Cases - Version-source discovery and agreement: Reads pyproject.toml ([project] and [tool.poetry]), package __init__.py __version__, the VERSION file, and .release-please-manifest.json, treating all sources as peers and failing on any disagreement. - Mechanical and judgment checks: Verifies tag/version consistency, changelog presence, and repo-supplied build/test gates mechanically, while change classification, version movement, and data-only track routing stay uncertain until a human supplies --change-class. - Authority deferral: When a repo carries a well-formed .domi-pin, the checker returns mode: defer and routes to DomI's release-integrity checker instead of running its own checks. - Use Case: Before tagging v1.6.0 and pushing to PyPI, ask whether the version declarations, proposed tag, and changelog are internally consistent, and get a per-check verdict list with a ready flag that never counts as publish authorization. ## Quick Start Ask the assistant to check whether the release in this repository is internally consistent for the proposed tag, supplying the previous version and change class if known.

Frequently Asked Questions about package-release-integrity

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I check if a Python package release is ready to publish?▼

Run the release_integrity.py helper with the check subcommand against the repo, optionally passing --tag, --prev-version, --change-class, --build-cmd, and --test-cmd. It reports per-check verdicts and a ready flag; a hard fail exits non-zero while uncertain verdicts do not.

How to verify a git tag matches the package version before release?▼

Pass the proposed tag via --tag and the helper compares it against the resolved package version from all discovered sources. A mismatch such as tag v1.1.0 against version 1.2.0 is a fail verdict and makes the release not ready.

What happens when change classification is not provided?▼

Without --change-class, the change_classification, version_movement, and track_routing checks report uncertain rather than guessing. Uncertain means a human must classify the change as breaking, additive, patch, or data-only and re-run the check.

Does the checker work with non-Python repos using release-please?▼

Yes. It reads the VERSION file and the root key of .release-please-manifest.json as version sources, provided they hold a strict MAJOR.MINOR.PATCH string. This makes bash or markdown kits released by release-please checkable.

When does the skill defer to DomI instead of running checks?▼

When the target repo has a well-formed .domi-pin with an upstream set and a 40-hex sha, the helper returns mode defer and exit 0. The skill then runs DomI's release-integrity checker via domi-release-check.sh rather than its own portable checks.

Can a green ready result be treated as permission to publish?▼

No. ready: True only means no check returned an explicit fail; uncertain gates may still be unresolved. A human still decides whether to cut the release, and the skill never bumps versions, tags, or publishes.