agentleFS
mick-gskmick-gsk/drift/.github/skills/drift-release/SKILL.md

drift-release

Skill14 starsChanged 7 months agoMITView on GitHub

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`

The file

Files
SKILL.md

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

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

ProblemSolution
No release after pushCheck commit messages use conventional prefixes (feat:, fix:, BREAKING:). Commits without these don't trigger releases.
Tests fail during releaseFix code first. PSR only runs when there are releasable commits.
Version looks wrongVerify recent commit messages. PSR Priority: BREAKING > feat > fix.
PyPI publish failsGitHub Release exists. Re-trigger with publish.yml workflow_dispatch.
CI unavailableLocal 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

# 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.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.