release

Releases seven keiro Haskell packages to Hackage under one shared PVP version in dependency order.

5|1|Updated May 4, 2026
One-click install
npx skills add https://github.com/shinzui/keiro --skill release-shinzui
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: release
Source: https://github.com/shinzui/keiro/tree/main/agents/skills/release
Command: npx skills add https://github.com/shinzui/keiro --skill release-shinzui

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Coordinating a multi-package Haskell release is error-prone: versions, internal dependency bounds, changelogs, per-package git tags, Hackage uploads, and GitHub releases must all stay in lockstep, and a single missed bound or out-of-order upload ships a broken package. This Skill encodes the entire keiro release procedure as a gated, reviewable workflow. ## Core Features & Use Cases - PVP version management: Infers or accepts a major/minor/patch bump, updates all seven cabal files, and aligns internal dependency bounds discovered by scanning manifests rather than trusting memory. - Mandatory verification gates: Runs nix fmt, corpus regeneration, just verify, and nix flake check before any commit, with documented handling for known failure modes like conformance provenance restamping. - Ordered Hackage publishing: Uploads packages in dependency order (keiro-core through keiro-ops) with cabal check, sdist, documentation builds, and post-upload liveness verification, stopping on any failure. - Use Case: After merging a cycle of changes to the keiro event-sourcing framework, invoke the skill with a patch argument to bump 0.14.0.0 to 0.14.0.1, regenerate changelogs, tag all seven packages, and publish them to Hackage with a GitHub release. ## Quick Start Ask the assistant to run the release skill with a patch argument to cut and publish the next keiro release.

Frequently Asked Questions about release

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

FAQPage Schema
How do I release multiple Haskell packages to Hackage together?

Bump every package to one shared PVP version, update internal dependency bounds in lockstep, then upload in dependency order so dependents never publish before their dependencies. Verify each upload is live on Hackage before proceeding to the next package.

How does PVP versioning decide major versus minor bumps?

PVP uses A.B.C.D where breaking API changes increment A.B, backwards-compatible additions increment C, and fixes increment D. A dependency upper-bound bump on a load-bearing upstream also counts as breaking because it changes what consumers can solve for.

Can I upload a Haskell package with git-pinned dependencies to Hackage?

No, Hackage cannot resolve git dependencies, so any dependency reachable from the default build plan must already be published. Git pins behind a default-off manual flag are acceptable since the default build plan never reaches them.

Why does cabal upload order matter for multi-package repos?

Hackage packages must build against published dependencies, so uploading a dependent before its library dependency produces a package consumers cannot build. Publish in dependency order and stop immediately if any upload fails.

What happens if a release gate fails during the process?

The workflow stops on any failure, whether from formatting, test suites, cabal check, or an upload. Publishing to Hackage is irreversible, so failures must be fixed and gates re-run before continuing rather than skipped.