release-fed59b — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited release-fed59b (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Execute a complete pre-release workflow for Python packages using uv and ruff. This command automates version calculation, changelog updates, and tag creation.
$ARGUMENTS - Optional version override (e.g., 1.0.0). If not provided, version is calculated from changelog entries.Execute these 9 steps in order. Fail fast: Stop immediately if any verification step fails.
Run these checks and stop if any fail:
# Check current branch
git branch --show-current# Check for uncommitted changes
git status --porcelain# Pull latest changes
git pull origin mainExecute the test suite:
uv run pytestExecute linting checks:
uv run ruff checkuv run ruff format --checkBuild the package:
uv buildAll verification checks have passed. Before calculating the version, offer to run the changelog-manager agent to ensure the [Unreleased] section is up-to-date.
Prompt the user:
Would you like to run the changelog-manager to update CHANGELOG.md before proceeding?
>
This will analyze git commits since the last release and suggest new changelog entries.
If user selects "Yes":
Spawn a changelog-manager sub-agent with the prompt: "Analyze commits since the last release and update the CHANGELOG.md [Unreleased] section"
Wait for the agent to complete before proceeding.
If user selects "No":
Continue to Step 6 (Calculate Version) without running the changelog-manager.
#### 6.1 Read CHANGELOG.md
Read CHANGELOG.md and parse its structure. Look for:
## [Unreleased] section and its subsections## [0.1.0]) to get the current version#### 6.2 Analyze Change Types
Count entries under [Unreleased] by subsection:
### Added - New features### Changed - Changes to existing functionality### Deprecated - Features marked for removal### Removed - Removed features (breaking change)### Fixed - Bug fixes### Security - Security fixes#### 6.3 Calculate Suggested Version
Apply semantic versioning rules to the current version (MAJOR.MINOR.PATCH):
| Condition | Bump Type | Example |
|---|---|---|
### Removed present AND current >= 1.0.0 | MAJOR | 1.2.3 -> 2.0.0 |
### Removed present AND current < 1.0.0 | MINOR | 0.2.3 -> 0.3.0 |
### Added or ### Changed present | MINOR | 0.1.0 -> 0.2.0 |
Only ### Fixed, ### Security, or ### Deprecated | PATCH | 0.1.0 -> 0.1.1 |
#### 6.4 Handle Edge Cases
$ARGUMENTS as the version instead of calculating#### 6.5 User Confirmation
Prompt the user to confirm the version:
Based on changelog analysis: - Found: {count} Added, {count} Changed, {count} Fixed, {count} Removed entries - Current version: {current} - Suggested version: {suggested} ({bump_type} bump)
>
Confirm version or provide override:
#### 7.1 Get Repository URL
Read pyproject.toml and extract the repository URL from [project.urls]:
Repository, repository, Source, source, Homepage, homepageIf no repository URL found, warn but continue (comparison links will be omitted).
#### 7.2 Update Changelog Content
Transform the changelog:
Before:
## [Unreleased]
### Added
- New feature X
## [0.1.0] - 2024-01-15
### Added
- Initial release
[Unreleased]: https://github.com/user/repo/compare/v0.1.0...HEAD
[0.1.0]: https://github.com/user/repo/releases/tag/v0.1.0After (releasing 0.2.0):
## [Unreleased]
## [0.2.0] - {today's date YYYY-MM-DD}
### Added
- New feature X
## [0.1.0] - 2024-01-15
### Added
- Initial release
[Unreleased]: https://github.com/user/repo/compare/v0.2.0...HEAD
[0.2.0]: https://github.com/user/repo/compare/v0.1.0...v0.2.0
[0.1.0]: https://github.com/user/repo/releases/tag/v0.1.0#### 7.3 Write Updated CHANGELOG.md
Update CHANGELOG.md with the transformed content.
Stage and commit the changelog update:
git add CHANGELOG.mdgit commit -m "docs: update changelog for v{version}"git push origin mainReport: "Changelog committed and pushed"
Create an annotated tag and push it:
git tag -a v{version} -m "Release v{version}"git push origin v{version}#### Final Report
Report success with details:
Release v{version} completed successfully!
- Changelog updated: CHANGELOG.md
- Tag created: v{version}
- Tag URL: {repository_url}/releases/tag/v{version}
Next steps:
- GitHub/GitLab will create a release from the tag
- Publish to PyPI if configured in CIIf any step fails after Step 6 (version confirmation):
git checkout CHANGELOG.md - Revert changelog changesgit tag -d v{version} - Delete local tag if createdgit push origin :refs/tags/v{version} - Delete remote tag if pushedWhat this component does: Orchestrates a complete Python package release workflow: pre-flight checks (branch, clean working directory), test suite, linting, build verification, changelog analysis, semantic version calculation, changelog update, commit, and tag creation. Capabilities needed: Shell execution (git, uv, ruff commands), file reading/editing (CHANGELOG.md, pyproject.toml), user interaction (version confirmation, changelog update prompt), sub-agent spawning (changelog-manager). Adaptation guidance: The workflow assumes uv for Python package management and ruff for linting. Adapt tool commands if using different tooling. The changelog-manager sub-agent handles changelog entry generation. Sub-agent capabilities: The changelog-manager agent analyzes git history and updates CHANGELOG.md entries. It needs shell execution (git commands), file reading/editing, and user interaction.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.