Skip to content

feat: add rhdh-release skill for release management (v0.4.0)#43

Draft
durandom wants to merge 5 commits into
redhat-developer:mainfrom
durandom:release-manager
Draft

feat: add rhdh-release skill for release management (v0.4.0)#43
durandom wants to merge 5 commits into
redhat-developer:mainfrom
durandom:release-manager

Conversation

@durandom
Copy link
Copy Markdown
Member

@durandom durandom commented Jun 5, 2026

Summary

  • Adds new rhdh-release skill that migrates the Release Manager from the Agno/LiteLLM agent into a Claude Code skill
  • Dissolves the Google Sheets workbook into version-controlled files: 12 JQL templates, 4 Slack announcement templates, 13 workflows, release process reference, and config
  • Registers the skill in the rhdh orchestrator with routing for release-related queries
  • Includes fetch_team_mapping.py script for Google Sheets team data (reuses gcloud_token.py and check_gsheets.py via symlinks)
  • Adds release CLI (scripts/release.py) with 14 subcommands for deterministic data gathering — the agent calls the CLI first and adds judgment on top
  • Bumps version to 0.4.0

Release CLI (scripts/release.py)

Extracts deterministic work (counting, URL-encoding, template filling) from agent workflows. 14 subcommands:

Command Purpose
release check Verify prerequisites (acli, .jira-token, gcloud, uv)
release dates Active release dates from Jira
release future-dates VERSION Schedule from Google Sheets
release status VERSION Issue counts by type (8 types + total)
release teams [--category CAT] Team mapping from Google Sheets
release team-breakdown VERSION Per-team issue counts
release blockers VERSION Blocker bug details
release epics VERSION Outstanding EPICs
release cves VERSION CVE list
release notes VERSION Missing release notes count
release slack feature-freeze-update VERSION Filled Slack template
release slack feature-freeze VERSION Filled Slack template
release slack code-freeze-update VERSION Filled Slack template
release slack code-freeze VERSION Filled Slack template

Global flags: --json / --human / --verbose

Supporting modules:

  • jql.py — parses 12 JQL templates from jql-release.md at runtime (single source of truth)
  • slack_templates.py — parses 4 Slack templates from slack-templates.md
  • formatters.py → symlink to shared OutputFormatter (auto-detects TTY vs piped)

All 13 workflows updated with "Step 1: Run CLI" as primary path, manual steps kept as fallback.

Test plan

  • 34 unit tests: JQL parsing, Slack templates, CLI arg parsing, acli count parsing — uv run pytest tests/unit/test_release_cli.py
  • Full suite passes: 317 tests (uv run pytest)
  • Showboat demo: tests/demo-release-cli.md — reproducible via uvx showboat verify
  • Structural check: verify all 12 JQL queries, 4 Slack templates, 13 workflows present
  • Jira smoke test: python scripts/release.py check then python scripts/release.py status 1.9.0
  • Google Sheets test: python scripts/release.py teams --json
  • Skill registration: run /rhdh and verify "Release Management" appears in the menu
  • Workflow walkthrough: test "release dates" and "announce feature freeze update" end-to-end

🤖 Generated with Claude Code

Migrate the Release Manager from the Agno/LiteLLM agent into a Claude
Code skill. Dissolves the Google Sheets workbook into version-controlled
markdown files: 12 JQL templates, 4 Slack announcement templates,
13 workflows, and a release process reference.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
durandom and others added 4 commits June 5, 2026 13:46
…se-process.md

Removed Jira Projects, Key Dashboards, and Key Documents sections
(all duplicated in release-process.md). Added cross-reference pointer.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Three instruction-driven test files split by dependency tier:
- check-structural.md: filesystem-only (no external deps)
- check-jira.md: requires acli/Jira access
- check-gsheets.md: requires gcloud/GSheets access

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ed_to_release

- Add <success_criteria> sections to all workflows (matches overlay skill convention)
- Reference features_added_to_release JQL in release-status.md gotchas for scope tracking
- Both issues found by check-structural.md smoke test

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add `release.py` CLI with 14 subcommands that extract deterministic work
(counting, URL-encoding, template filling) from agent workflows. The agent
calls the CLI first and adds judgment on top.

New scripts:
- release.py — argparse CLI: check, dates, future-dates, status, teams,
  team-breakdown, blockers, epics, cves, notes, slack {feature-freeze-update,
  feature-freeze, code-freeze-update, code-freeze}
- jql.py — parse 12 JQL templates from jql-release.md at runtime
- slack_templates.py — parse 4 Slack templates from slack-templates.md
- formatters.py — symlink to shared OutputFormatter

Updated:
- SKILL.md routing table: CLI command as primary, workflow as fallback
- All 13 workflows: Step 1 Run CLI added, manual steps kept as fallback
- check-structural.md: CLI existence check added (check 10)

Tests: 34 new unit tests for jql parsing, slack templates, CLI arg parsing,
acli count parsing. Showboat demo at tests/demo-release-cli.md.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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.

1 participant