Skip to content

Add publish-release skill and a publish-workflow tag guard#22

Merged
JeremyKuhne merged 2 commits into
mainfrom
publish-release-skill
Jun 8, 2026
Merged

Add publish-release skill and a publish-workflow tag guard#22
JeremyKuhne merged 2 commits into
mainfrom
publish-release-skill

Conversation

@JeremyKuhne

Copy link
Copy Markdown
Owner

Summary

Two related changes for the release process.

publish-release skill (new)

Ports the publish-release skill from the touki repo, adapted to madowaku's specifics:

  • One package, one streamKlutzyNinja.Madowaku on the v* tag prefix (touki ships two packages / two streams).
  • MinVer wiring — referenced directly in madowaku/madowaku.csproj (MinVerTagPrefix=v); no Directory.Build.targets.
  • Publish mechanismNUGET_API_KEY secret + dotnet nuget push --skip-duplicate (not OIDC).
  • Recoveryworkflow_dispatch takes no inputs; re-run by selecting the tag ref in the Actions UI.
  • Targetsnet10.0-windows10.0.22000.0, net10.0, net472.
  • Cross-references point at AGENTS.md, the csproj, and the workflow (touki's PR-review skill cross-refs don't exist here).
  • Registered in the skills catalog (.agents/skills/README.md).

Files: SKILL.md, versioning.md, release-steps.md.

Tag-format guard in publish.yml

Adds a Validate tag format step as the first step of the publish job. The v*.*.* trigger glob matched the historical v.0.1.0-alpha.3 typo (the * matches the stray dot), which MinVer then can't parse — silently publishing a height-fallback version. The guard:

  • Rejects non-tag refs (github.ref must start with refs/tags/) — catches a workflow_dispatch launched from a branch.
  • Rejects tags not matching ^v(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(-[0-9A-Za-z.-]+)?$.
  • Passes ref/tag through env: to avoid script injection from ref names.

Verified accept/reject against v0.1.0-alpha.4, v0.2.0, v1.0.0-rc.1 (pass) and v.0.1.0-alpha.3, 0.1.0-alpha.4, v0.1, v01.02.03, branch refs (reject).

Validation

  • Validate-AgentFiles.ps1 — passed.
  • markdownlint-cli2 with the repo config — 0 errors.
  • publish.yml — no YAML errors.

Port the publish-release skill from the touki repo, adapted to madowaku:
single KlutzyNinja.Madowaku package and v* tag stream, MinVer wired in the
csproj, API-key publish, and workflow_dispatch recovery via the tag ref.
Register it in the skills catalog.

Add a "Validate tag format" step as the first step of publish.yml that
rejects non-tag refs and tags not matching the SemVer v-prefix regex, so a
malformed tag (e.g. the historical v.0.1.0-alpha.3 typo) fails fast instead
of publishing a MinVer height-fallback version. The skill docs describe the
guard.
Copilot AI review requested due to automatic review settings June 8, 2026 19:23

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR strengthens the release process for madowaku by (1) adding a new agent skill that documents the tagging/publishing workflow for KlutzyNinja.Madowaku and (2) adding a tag-format validation gate to the NuGet publish GitHub Actions workflow to prevent malformed tags from producing incorrect MinVer versions.

Changes:

  • Added a publish-release skill (with supporting docs) describing version selection, tagging, and release steps tailored to this repo’s MinVer + NuGet publish setup.
  • Added a “Validate tag format” step to publish.yml to fail fast on non-tag refs and tags that don’t match the intended SemVer-with-v-prefix format.
  • Registered the new skill in the skills catalog.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
.github/workflows/publish.yml Adds an early guard step to validate tag refs and tag name format before packing/publishing.
.agents/skills/README.md Registers the new publish-release skill in the repo skill catalog.
.agents/skills/publish-release/SKILL.md Defines the publish-release skill entrypoint and high-level procedure including an approval checkpoint.
.agents/skills/publish-release/versioning.md Documents version selection, SemVer bump rules, tag format, and the publish tag-format guard rationale.
.agents/skills/publish-release/release-steps.md Documents tag creation/push, workflow monitoring, rerun guidance, and GitHub release creation steps.

Comment thread .github/workflows/publish.yml Outdated
Comment thread .agents/skills/publish-release/versioning.md Outdated
Comment thread .agents/skills/publish-release/versioning.md Outdated
Comment thread .agents/skills/publish-release/versioning.md Outdated
Comment thread .agents/skills/publish-release/SKILL.md
- publish.yml: use -cnotmatch so the tag-format check enforces a lowercase
  `v` prefix; PowerShell -notmatch is case-insensitive, so V1.2.3 would have
  passed and produced a MinVer height-fallback version.
- versioning.md / SKILL.md: replace the stale "no guard" / "missing-guard"
  references with the current "Tag-format guard" section name.
- versioning.md: make the channel prompt tool-agnostic instead of naming
  vscode_askQuestions, which does not exist on every agent surface.
@JeremyKuhne JeremyKuhne merged commit 0274673 into main Jun 8, 2026
4 checks passed
@JeremyKuhne JeremyKuhne deleted the publish-release-skill branch June 8, 2026 19:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants