Skip to content

feat(release): add /oss-release skill for standardized OSS CLI releases#375

Open
shirshanka wants to merge 4 commits intomasterfrom
feat/oss-release-skill
Open

feat(release): add /oss-release skill for standardized OSS CLI releases#375
shirshanka wants to merge 4 commits intomasterfrom
feat/oss-release-skill

Conversation

@shirshanka
Copy link
Copy Markdown

Summary

Codifies the OSS CLI release workflow we executed manually for v1.5.0.7 into a repeatable, agent-driven skill checked into the repo.

  • Adds /oss-release slash command for Claude Code (and compatible agents)
  • Three subcommands: prep (cut RC), finish (promote to final), status (check CI)
  • Three standalone bash scripts usable without Claude Code
  • Seeds known-flaky-tests.md with pre-existing CI flakes discovered during v1.5.0.7

Developer flow

/oss-release prep     # diff vs OSS upstream → safety check → cut vX.Y.Zrc0 (auto-versioned)
/oss-release finish   # check CI on latest RC → confirm → cut vX.Y.Z (RC auto-detected)
/oss-release status   # show CI status for latest RC, no action

Key design decisions

  • RC releases are first-class deliverablesprep alone is a complete workflow; use it when shipping an RC to a customer environment
  • New commits gatefinish checks if origin/master has moved ahead of the RC; if the dev wants to include new commits, they must run prep again first (no shortcut from "include commits" to a final release)
  • Mandatory confirmation gatefinish always stops and asks before cutting the final tag
  • Agent-agnostic scripts — pure bash + gh CLI; Claude Code-specific features (/loop, ScheduleWakeup) have documented fallbacks for other agents
  • Prereq checks — all scripts verify gh is installed and authenticated upfront

Files

File Purpose
.claude/commands/oss-release.md Slash command entry point
.agent-skills/oss-release/SKILL.md Full workflow (6 phases, 3 subcommands)
.agent-skills/oss-release/scripts/compare-upstream.sh Diff fork vs datahub-project/datahub
.agent-skills/oss-release/scripts/check-ci.sh Poll release CI status for a commit
.agent-skills/oss-release/scripts/cut-release.sh Create tag + GitHub release
.agent-skills/oss-release/known-flaky-tests.md Known pre-existing CI flakes

Test plan

  • Run compare-upstream.sh from repo root — confirms gap commits and ingestion diff
  • Run check-ci.sh <sha> against a known release commit — confirms output matches gh run list
  • Run /oss-release prep in Claude Code — confirms it loads SKILL.md and auto-determines version
  • Run /oss-release status — confirms it auto-detects latest RC

🤖 Generated with Claude Code

shirshanka and others added 4 commits April 12, 2026 18:04
Adds a project-level Claude Code skill that codifies the OSS CLI release
workflow, replacing ad-hoc manual steps with a repeatable, agent-driven process.

## What's included

`.claude/commands/oss-release.md` — slash command entry point
`.agent-skills/oss-release/SKILL.md` — full 3-subcommand workflow
`.agent-skills/oss-release/scripts/compare-upstream.sh` — diffs fork vs datahub-project/datahub
`.agent-skills/oss-release/scripts/check-ci.sh` — polls release CI status for a commit
`.agent-skills/oss-release/scripts/cut-release.sh` — creates tag + GitHub release
`.agent-skills/oss-release/known-flaky-tests.md` — known pre-existing CI flakes

## Developer flow

  /oss-release prep     # diff analysis → safety check → cut RC (version auto-determined)
  /oss-release finish   # check CI on latest RC → confirm → cut final (RC auto-detected)
  /oss-release status   # show CI status for latest RC, no action

Key design decisions:
- RC releases are first-class deliverables; prep alone is a complete workflow
- finish always checks for new commits on master since the RC was cut; if the
  dev wants to include them, they must cut a new RC first (no shortcut)
- Confirmation gate in finish is mandatory and cannot be bypassed
- Scripts are agent-agnostic (bash + gh CLI); Claude Code-specific features
  (loop, ScheduleWakeup) are called out with fallbacks for other agents
- gh CLI auth is checked upfront in all scripts with a clear install link

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Each script now resolves the repo root from its own path using
$(dirname "$0"), so they work correctly regardless of what
directory the agent happens to cd into before invoking them.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
gh auth status exits 1 when any configured account fails (e.g. a bot
account), even if the active user account is properly authenticated.
gh auth token only checks the active account and exits 0 when valid.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
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.

1 participant