agentleFS
h2coneh2cone/agent-packs/skills/github-release/SKILL.md

github-release

Skill0 starsChanged 24 days agoMITView on GitHub

Generates a GitHub Actions workflow for cross-platform builds and GitHub Releases with changelog-based notes, and adds a version-stable Installation section to the README. Triggers on "set up releases", "add release workflow", "create release pipeline", or configuring CI/CD for releases.

  • Commits and pushes

9 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

12 rules. 0 are common, 4 are distinctive, and 8 are very specific to this project.

  • 0

    Common

    Most of the 7 edited versions we read keep these.

  • 4

    Distinctive

    This author's own choices. Worth a look.

  • 8

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Read the project name and current version from the manifest file.

    line 18
  2. Very specific:

    Create .github/workflows/release.yml triggered on version tags:

    line 22
  3. Distinctive:

    Use a matrix strategy for cross-platform builds.

    line 31
  4. Very specific:

    Use target triples matching the detected language (e.g., x86_64-unknown-linux-gnu for Rust, GOOS=linux GOARCH=amd64 for Go).

    line 41
  5. Very specific:

    Use tar -czf for .tar.gz and Compress-Archive (Windows) or zip for .zip.

    line 46
  6. Very specific:

    If absent, create CHANGELOG.md following Keep a Changelog format:

    line 57
  7. Distinctive:

    Ask the user to confirm the version number.

    line 70
  8. Very specific:

    If you want a copy-paste install command, prefer one that resolves the latest tag at runtime rather than pinning a version — for example gh …

    line 90
  9. Very specific:

    If .github/workflows/release.yml already exists, show a diff preview and ask before overwriting.

    line 94
  10. Very specific:

    If no tags exist, instruct the user: git tag v0.1.0 && git push origin v0.1.0.

    line 95
  11. Distinctive:

    If the build system is unsupported or ambiguous, ask the user for the build commands.

    line 97
  12. Very specific:

    Ensure the workflow uses permissions: contents: write so the release job can create releases and upload assets.

    line 98

“Common” is measured: kept by at least 6 in 10 of the 7 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Detect the project's language and build system, generate a cross-platform release workflow, ensure a changelog exists, and update the README with download instructions.

Detect build system

Identify the language by checking for:

  • Rust — Cargo.toml (use cargo build --release --target <triple>)
  • Go — go.mod (use GOOS/GOARCH env vars with go build)
  • Node.js — package.json with a build script (use pkg, nexe, or platform-specific bundling)
  • Python — pyproject.toml or setup.py (use pyinstaller or nuitka)
  • C/C++ — CMakeLists.txt or Makefile (use cross-compilation toolchains)

Read the project name and current version from the manifest file. If none is found, ask the user.

Generate the workflow

Create .github/workflows/release.yml triggered on version tags:

on:
  push:
    tags:
      - 'v*.*.*'

Use a matrix strategy for cross-platform builds. Default targets:

TargetRunnerArchive
x86_64 Linuxubuntu-latest.tar.gz
aarch64 Linuxubuntu-latest.tar.gz
x86_64 macOSmacos-latest.tar.gz
aarch64 macOSmacos-latest.tar.gz
x86_64 Windowswindows-latest.zip

Use target triples matching the detected language (e.g., x86_64-unknown-linux-gnu for Rust, GOOS=linux GOARCH=amd64 for Go).

The workflow needs three jobs:

  1. build — Matrix job. Compile for each target, archive the binary as <project>-<tag>-<target>.<ext>, upload as artifact.
    • Use tar -czf for .tar.gz and Compress-Archive (Windows) or zip for .zip.
    • For Linux aarch64 cross-compilation, include appropriate setup (e.g., cross for Rust, cross-compile packages for C/C++).
  2. release-notes — Extract the tagged version's section from CHANGELOG.md. Fall back to git log --oneline between the previous and current tag if CHANGELOG.md is missing.
  3. release — Depends on build and release-notes. Create a GitHub Release with softprops/action-gh-release or gh release create, attach all artifacts, use extracted notes as body.

Set permissions: contents: write on the workflow.

Name archives: <project>-v<version>-<target>.tar.gz (or .zip for Windows).

Ensure CHANGELOG.md

If absent, create CHANGELOG.md following Keep a Changelog format:

# Changelog

## [Unreleased]

## [0.1.0] - YYYY-MM-DD

### Added
- Initial release.

Ask the user to confirm the version number.

Update README.md

Add or update an Installation section. Do not hardcode per-asset download URLs or version-stamped archive filenames — they change on every release and force a README edit each time. Instead, link to the releases page (GitHub lists all assets there automatically) and describe the supported platforms generically:

## Installation

Download the build for your platform from the
[latest release](https://github.com/<owner>/<repo>/releases/latest),
then extract the archive and put the binary on your `PATH`.

Prebuilt binaries are available for:

- **Linux** — x86_64, arm64 (`.tar.gz`)
- **macOS** — Apple Silicon, Intel (`.tar.gz`)
- **Windows** — x86_64 (`.zip`)

If you want a copy-paste install command, prefer one that resolves the latest tag at runtime rather than pinning a version — for example gh release download --pattern '<project>-*-x86_64-linux.tar.gz', or a script that queries /releases/latest. This keeps the README stable across version bumps.

Edge cases

  • If .github/workflows/release.yml already exists, show a diff preview and ask before overwriting.
  • If no tags exist, instruct the user: git tag v0.1.0 && git push origin v0.1.0.
  • For Rust, suggest rustup target add <triple> or using cross. For Go, use GOOS/GOARCH directly — no extra tooling needed.
  • If the build system is unsupported or ambiguous, ask the user for the build commands.
  • Ensure the workflow uses permissions: contents: write so the release job can create releases and upload assets.

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.