Skip to content
Back to skills

Drift Release

ASecurity

Complete release workflow: Validate → Version → Changelog → Commit → Tag → Publish. Use after successful code changes to src/drift/. Single command: `python scripts/release_automation.py --full-release`

  • 14 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added August 31, 2026
developmentpythonbashgitapidocumentation

Works with

  • api

Security analysis

A100/100

Scanned August 31, 2026

npx -y skills add mick-gsk/drift --skill drift-release --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Drift Release?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Drift Release
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mick-gsk-drift-release/badge)](https://www.skillsdirectory.com/skills/mick-gsk-drift-release)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: drift-release
description: "Complete release workflow: Validate → Version → Changelog → Commit → Tag → Publish. Use after successful code changes to src/drift/. Single command: `python scripts/release_automation.py --full-release`"
---

# Drift Release Skill (python-semantic-release)

Releases are **fully automated** via `python-semantic-release` (PSR) in CI.

## Executive Summary

**Agents no longer need to run a manual release command.**

Workflow: `.github/workflows/release.yml` runs on every push to `main`.
PSR parses conventional commits and handles version bump, changelog, tag, GitHub Release, and PyPI publish.

---

## When to Use This Skill

✅ **Know this after:**
- Feature complete (`feat: ...` commit)
- Bug fixed (`fix: ...` commit)
- Breaking change (`BREAKING: ...` commit)
- All tests pass
- Code committed + pushed to main

The CI release workflow handles everything else automatically.

---

## What Agents Must Do

### Step 1: Use Conventional Commits

```
feat: add new detector for X       →  MINOR bump (0.X.0)
fix: false alarm in signal Y       →  PATCH bump (0.0.X)
BREAKING: remove deprecated API    →  MAJOR bump (X.0.0)
```

### Step 2: Run Tests Locally

```bash
make test-fast
```

### Step 3: Commit and Push

PSR in CI handles the rest after push to main.

---

## What PSR Does Automatically (in CI)

1. **Commits analyzed** — from last tag to HEAD
2. **Version calculated** — based on commit types (feat → minor, fix → patch, BREAKING → major)
3. **Files updated:**
   - `pyproject.toml` (version field)
   - `CHANGELOG.md` (new entry)
4. **Release commit created** — `chore: Release X.Y.Z`
5. **Git tag created** — `vX.Y.Z`
6. **GitHub Release created**
7. **Built and published to PyPI**

---

## Troubleshooting

| Problem | Solution |
|---------|----------|
| No release after push | Check commit messages use conventional prefixes (feat:, fix:, BREAKING:). Commits without these don't trigger releases. |
| Tests fail during release | Fix code first. PSR only runs when there are releasable commits. |
| Version looks wrong | Verify recent commit messages. PSR Priority: BREAKING > feat > fix. |
| PyPI publish fails | GitHub Release exists. Re-trigger with `publish.yml` workflow_dispatch. |
| CI unavailable | Local fallback: `python scripts/release_automation.py --full-release` |

---

## Important Details

- 🔐 **PyPI token:** `PYPI_RELEASE` secret in GitHub environment `pypi`
- 📊 **CHANGELOG:** Auto-generated by PSR from commit history
- 🏷️ **Tag format:** `vX.Y.Z` (e.g., v1.4.2)
- ⚙️ **Workflow:** `.github/workflows/release.yml`
- 📝 **Config:** `pyproject.toml` → `[tool.semantic_release]`
- 🔄 **Major tag:** `v1` auto-updated to latest patch (e.g., v1 → v1.4.3)

## DO NOT DO THIS

❌ Forget to release after code changes
❌ Skip tests to "speed up" the release
❌ Manually create git tags/commits for releases
❌ Edit version numbers outside of `pyproject.toml`
❌ Push without running the full release workflow

---

## Quick Reference

```bash
# Full release (recommended)
python scripts/release_automation.py --full-release

# Just calculate version
python scripts/release_automation.py --calc-version

# Just update changelog
python scripts/release_automation.py --update-changelog

# Skip tests (NOT recommended)
python scripts/release_automation.py --full-release --skip-tests
```

---

## Need Full Details?

Reference documentation: `.github/instructions/drift-release-automation.instructions.md`

For questions about releases → Check that file first.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.