Skip to content

chore(skills): add release-widget skill - #2370

Open
yordan-st wants to merge 16 commits into
mainfrom
skill/release-widget
Open

chore(skills): add release-widget skill#2370
yordan-st wants to merge 16 commits into
mainfrom
skill/release-widget

Conversation

@yordan-st

Copy link
Copy Markdown
Contributor

Summary

  • Adds `.agents/skills/release-widget/SKILL.md` — automates widget/module release pipeline (version bump → GitHub draft release → OSS clearance → Marketplace publish)
  • Previously ran as private trial (untracked); opening as draft for team feedback before promoting to shared skill set

Test plan

  • Used successfully for image-web v1.6.0 and charts-web v6.3.2 releases

@yordan-st
yordan-st marked this pull request as ready for review August 4, 2026 09:30
@yordan-st
yordan-st requested a review from a team as a code owner August 4, 2026 09:30
@github-actions

This comment has been minimized.

Comment thread .agents/skills/release-widget/SKILL.md Outdated
Comment thread .agents/skills/release-widget/SKILL.md Outdated
@yordan-st
yordan-st force-pushed the skill/release-widget branch 2 times, most recently from fbe06a0 to 7773a8b Compare August 21, 2026 13:57
@github-actions

This comment has been minimized.

@yordan-st
yordan-st force-pushed the skill/release-widget branch from 74a8e99 to cce0a0d Compare September 7, 2026 12:36
@github-actions

This comment has been minimized.

Comment thread .agents/skills/release-widget/SKILL.md Outdated
Comment thread .agents/skills/release-widget/SKILL.md Outdated
Comment thread .agents/skills/release-widget/SKILL.md Outdated
Comment thread .agents/skills/release-widget/SKILL.md Outdated
Comment thread .agents/skills/release-widget/SKILL.md Outdated
Comment thread .agents/skills/release-widget/SKILL.md Outdated
Comment thread .agents/skills/release-widget/SKILL.md Outdated
Comment thread .agents/skills/release-widget/SKILL.md Outdated
Comment thread .agents/skills/release-widget/SKILL.md Outdated
Comment thread .agents/skills/release-widget/SKILL.md Outdated
Comment thread .agents/skills/release-widget/SKILL.md Outdated
Comment thread .agents/skills/release-widget/SKILL.md Outdated
Comment thread .agents/skills/release-widget/SKILL.md Outdated
Comment thread .agents/skills/release-widget/SKILL.md Outdated
Comment thread .agents/skills/release-widget/SKILL.md Outdated
@github-actions

This comment has been minimized.

Comment thread .agents/skills/release-widget/SKILL.md Outdated
Comment thread automation/utils/bin/rui-bump-version.ts Outdated
@yordan-st
yordan-st force-pushed the skill/release-widget branch from 50fbf1e to 1ac50b0 Compare September 8, 2026 13:34
Comment thread .agents/skills/release-widget/SKILL.md Outdated
Comment thread .agents/skills/release-widget/SKILL.md Outdated
Comment thread .agents/skills/release-widget/SKILL.md Outdated
Comment thread .agents/skills/release-widget/SKILL.md Outdated
Comment thread .agents/skills/release-widget/SKILL.md Outdated
Comment thread .agents/skills/release-widget/SKILL.md Outdated
Comment thread .agents/skills/release-widget/SKILL.md Outdated
@github-actions

This comment has been minimized.

Comment thread .agents/skills/release-widget/SKILL.md Outdated
Comment thread .agents/skills/release-widget/SKILL.md Outdated
Comment thread .agents/skills/release-widget/SKILL.md Outdated
  Automates widget/module release pipeline: version bump, GitHub draft
  release, OSS clearance SBOM, Marketplace publish. Sharing for team
  feedback before promoting out of private trial.
…helpers

- skill: user merges the changelog PR, not the agent (needs team approvals)
- skill: drop gh pr merge from the autonomy carve-out
- skill: clarify why a successful publish call doesn't guarantee the version is live
- skill: check the public Marketplace listing instead of the admin panel
- skill: find a wrapped widget's owner in pluggableWidgets too, not just modules
- skill: correct which phases reuse appNumber vs npm-package-name
- skill: drop the unnecessary rui-helpers-not-linked check
- rui-bump-version: accept only an explicit x.y.z version, no bump-type shorthand
- rui-bump-version: keep the @mendix/ scope in bumpedPackages output
- bump-version: getNewVersion now uses Version's bump methods instead of manual math
- rui-changelog: read each wrapped widget's own CHANGELOG.md for module unreleased work
@yordan-st
yordan-st force-pushed the skill/release-widget branch from a050f29 to 5d4bfd4 Compare September 9, 2026 14:09
@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

AI Code Review

⚠️ Approved with suggestions — low-severity items only, safe to merge


What was reviewed

File Change
.agents/skills/release-widget/SKILL.md New skill — 8-phase release workflow guide
automation/utils/bin/rui-bump-version.ts New CLI: version bump with releasability guard
automation/utils/bin/rui-changelog.ts New CLI: unreleased changelog reader
automation/utils/bin/rui-create-jira-version.ts New CLI: Jira version creation (non-blocking)
automation/utils/bin/rui-generate-oss-sbom.ts New CLI: SBOM zip generator
automation/utils/bin/rui-oss-clearance.ts Refactor: extracted computeHashcomputeSha256 in oss-clearance.ts
automation/utils/bin/rui-package-info.ts New CLI: prints package metadata from process.cwd()
automation/utils/bin/rui-upload-readme-oss.ts New CLI: attaches READMEOSS asset to a GitHub release
automation/utils/package.json Registers 6 new bin entries
automation/utils/src/bump-version.ts Refactor: bumpPackageJson now verifies written version; added packageXmlPath/hasPackageXml
automation/utils/src/changelog-parser/index.ts New getPackageChangelog factory + import getPackageInfo
automation/utils/src/github.ts New GitHubRelease type; getReleaseByTag falls back to list for drafts; listReleases extracted
automation/utils/src/monorepo.ts New resolvePackagePath helper
automation/utils/src/oss-clearance.ts computeSha256 + verifyAssetDigest extracted here
automation/utils/src/package-info.ts New isReleasable guard
automation/utils/src/prepare-release-helpers.ts Uses getPackageChangelog instead of inline if/else
automation/utils/src/version.ts Bug fix: bumpMajor increments major (not minor); new isGreaterThan

Skipped (out of scope): dist/, pnpm-lock.yaml


Findings

⚠️ Low — listReleases silently truncates at 100 releases

File: automation/utils/src/github.ts line 198–205
Note: ?per_page=100 is hard-coded and no pagination follows. A repo with more than 100 releases (web-widgets currently has dozens, so not urgent) will silently miss older drafts in the fallback path of getReleaseByTag. Consider adding a note or a TODO comment, or paging when releases.length === 100.


⚠️ Low — bumpXml regex can silently no-op on unexpected package.xml formats

File: automation/utils/src/bump-version.ts line 59–61
Note: The regex /version=.+xmlns/ replaces the first occurrence of version=…xmlns. If the file format ever changes (e.g. xmlns comes before version), the file is written back unchanged with no error. bumpPackageJson validates the write — bumpXml does not. Returning true unconditionally gives false confidence. Low risk today but worth a read-back check or at least a mismatch error similar to what bumpPackageJson does.


⚠️ Low — SKILL.md Phase 0 cd hard-codes pluggableWidgets/ path for modules

File: .agents/skills/release-widget/SKILL.md line 29–30
Note: The example cd packages/pluggableWidgets/<widget> at the top of Phase 0 only covers widget packages. Module packages live under packages/modules/<name>. An agent following the example literally for a module like data-widgets would cd to the wrong path. A one-line clarification (or an example covering both layouts) would prevent the confusion.


Positives

  • bumpMajor bug fix (this.major + 1 instead of this.minor + 1) is well-targeted and the added isGreaterThan gives it a proper test surface.
  • getReleaseByTag fallback to listReleases for draft releases is exactly the right approach and the comment explains the non-obvious reason (releases/tags/ 404s for drafts).
  • verifyAssetDigest correctly handles a missing asset.digest field (optional check) rather than throwing on a null digest — good defensive coding for GitHub API field variability.
  • rui-create-jira-version always exits 0 for non-usage errors and outputs structured {status, reason} — the design deliberately avoids blocking a release on a non-critical external system.
  • Phase 8 rollback gate (human-gated, always — carve-out does not apply here) is clearly stated and enforced at the skill level.
  • getPackageChangelog eliminates a repeated if (changelogType === "widget") branch at every call site; the consolidation in prepare-release-helpers.ts is clean.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants