|
| 1 | +--- |
| 2 | +name: rhdh-release |
| 3 | +description: | |
| 4 | + Manages RHDH releases — dates, status tracking, team coordination, |
| 5 | + freeze announcements, blocker bugs, CVEs, and release notes. Trigger on |
| 6 | + "release dates", "release status", "feature freeze", "code freeze", |
| 7 | + "blocker bugs", "CVEs", "release notes", "team breakdown", or any |
| 8 | + RHDH release management question. |
| 9 | +compatibility: "acli on PATH. Python 3 + gcloud CLI for Google Sheets." |
| 10 | +--- |
| 11 | + |
| 12 | +<essential_principles> |
| 13 | + |
| 14 | +<principle name="use_parse_issues_for_team_counts"> |
| 15 | +Always use `parse_issues.py --enrich` for team counts — never count manually. The Team custom field cannot be queried via JQL. Use `acli jira workitem search --json | python ~/.claude/skills/rhdh-jira/scripts/parse_issues.py --enrich` and filter by team in the output. |
| 16 | +</principle> |
| 17 | + |
| 18 | +<principle name="include_jira_links"> |
| 19 | +Include Jira search links for traceability in all outputs. Build links by URL-encoding the JQL: `https://issues.redhat.com/issues/?jql=<URL_ENCODED_JQL>`. |
| 20 | +</principle> |
| 21 | + |
| 22 | +<principle name="slack_code_blocks"> |
| 23 | +Always wrap Slack messages in triple-backtick code blocks (` ```slack `) for easy copy-paste. Tell the user they can copy-paste this directly into Slack. |
| 24 | +</principle> |
| 25 | + |
| 26 | +<principle name="risk_identification"> |
| 27 | +When analyzing release health, check these risk indicators: |
| 28 | +1. Blocker bugs near freeze dates — query with `priority = Blocker` |
| 29 | +2. High open issue count per team — use team breakdown to identify overloaded teams |
| 30 | +3. Missing release notes — query issues with empty Release Note Type |
| 31 | +4. Critical CVEs — query vulnerabilities with CVE in summary |
| 32 | +5. EPICs not in Dev Complete — check epic status |
| 33 | + |
| 34 | +Always provide: specific issue counts with Jira links, team-level breakdown if applicable, actionable recommendations (retriage, escalate, extend timeline), and impact assessment. |
| 35 | +</principle> |
| 36 | + |
| 37 | +<principle name="team_coordination"> |
| 38 | +For team coordination: |
| 39 | +1. Retrieve team info from Google Sheets to get leads and Slack handles |
| 40 | +2. Include team leads' Slack handles in all team communications |
| 41 | +3. Provide Jira links scoped to each team's issues |
| 42 | +4. Highlight teams at risk (high open counts, blockers) |
| 43 | +5. Suggest follow-up actions per team |
| 44 | +</principle> |
| 45 | + |
| 46 | +<principle name="token_safety"> |
| 47 | +Never read `.jira-token` into context. Always use shell substitution: `"$(cat "$TOKEN_FILE")"`. |
| 48 | +</principle> |
| 49 | + |
| 50 | +</essential_principles> |
| 51 | + |
| 52 | +<intake> |
| 53 | + |
| 54 | +## RHDH Release Management |
| 55 | + |
| 56 | +What would you like to do? |
| 57 | + |
| 58 | +### Release Information |
| 59 | + |
| 60 | +1. **Release dates** — Current release dates and key milestones |
| 61 | +2. **Future release dates** — Upcoming release dates from schedule spreadsheet |
| 62 | +3. **Release status** — Active release status by issue type |
| 63 | +4. **Teams** — Teams and leads directory |
| 64 | + |
| 65 | +### Release Tracking |
| 66 | + |
| 67 | +5. **Team breakdown** — Issues by engineering team for a release |
| 68 | +6. **Blocker bugs** — Open blocker bugs for a release |
| 69 | +7. **EPICs** — Engineering EPICs not yet complete |
| 70 | +8. **CVEs** — CVE/vulnerability list for a release |
| 71 | +9. **Release notes** — Outstanding release notes (missing Release Note Type) |
| 72 | + |
| 73 | +### Announcements |
| 74 | + |
| 75 | +10. **Feature Freeze update** — Generate Feature Freeze status update for Slack |
| 76 | +11. **Feature Freeze announcement** — Generate Feature Freeze milestone announcement |
| 77 | +12. **Code Freeze update** — Generate Code Freeze status update for Slack |
| 78 | +13. **Code Freeze announcement** — Generate Code Freeze milestone announcement |
| 79 | + |
| 80 | +**Wait for response before proceeding.** |
| 81 | + |
| 82 | +</intake> |
| 83 | + |
| 84 | +<routing> |
| 85 | + |
| 86 | +| Response | Workflow | |
| 87 | +|----------|----------| |
| 88 | +| 1, "release dates", "key dates", "freeze dates", "milestone dates" | Read `workflows/release-dates.md` and follow it | |
| 89 | +| 2, "future releases", "upcoming releases", "release roadmap", "future dates" | Read `workflows/future-release-dates.md` and follow it | |
| 90 | +| 3, "release status", "active releases", "release health", "release overview" | Read `workflows/release-status.md` and follow it | |
| 91 | +| 4, "teams", "team leads", "team list", "team contacts", "team directory" | Read `workflows/teams-and-leads.md` and follow it | |
| 92 | +| 5, "team breakdown", "issues by team", "team workload", "team counts" | Read `workflows/issues-by-team.md` and follow it | |
| 93 | +| 6, "blocker bugs", "blockers", "critical issues", "blocking issues" | Read `workflows/blocker-bugs.md` and follow it | |
| 94 | +| 7, "epics", "engineering epics", "open epics", "active epics" | Read `workflows/engineering-epics.md` and follow it | |
| 95 | +| 8, "cves", "vulnerabilities", "security issues", "security bugs" | Read `workflows/cves.md` and follow it | |
| 96 | +| 9, "release notes", "missing release notes", "release note gaps" | Read `workflows/release-notes.md` and follow it | |
| 97 | +| 10, "feature freeze update", "feature freeze status", "feature freeze progress" | Read `workflows/announce-feature-freeze-update.md` and follow it | |
| 98 | +| 11, "feature freeze announcement", "announce feature freeze", "feature freeze reached" | Read `workflows/announce-feature-freeze.md` and follow it | |
| 99 | +| 12, "code freeze update", "code freeze status", "code freeze progress" | Read `workflows/announce-code-freeze-update.md` and follow it | |
| 100 | +| 13, "code freeze announcement", "announce code freeze", "code freeze reached" | Read `workflows/announce-code-freeze.md` and follow it | |
| 101 | + |
| 102 | +</routing> |
| 103 | + |
| 104 | +<reference_index> |
| 105 | + |
| 106 | +| Reference | Purpose | Load when | |
| 107 | +|-----------|---------|-----------| |
| 108 | +| `references/jql-release.md` | 12 release-specific JQL templates | Any Jira query for release data | |
| 109 | +| `references/slack-templates.md` | 4 Slack announcement templates | Generating freeze announcements | |
| 110 | +| `references/config.md` | GDrive IDs, project keys, dashboards | Looking up config values or links | |
| 111 | +| `references/release-process.md` | Y-stream/Z-stream lifecycle, checklists | Release process questions, onboarding | |
| 112 | +| `../../rhdh-jira/references/auth.md` | Jira auth setup | Jira prerequisite fails | |
| 113 | +| `../../rhdh-jira/references/acli-commands.md` | acli command reference | Building acli commands | |
| 114 | + |
| 115 | +</reference_index> |
| 116 | + |
| 117 | +<prerequisites> |
| 118 | + |
| 119 | +**Run before any workflow:** |
| 120 | + |
| 121 | +| Requirement | Check | Fix | |
| 122 | +|-------------|-------|-----| |
| 123 | +| **Jira CLI** | `acli jira workitem search --jql "project=RHIDP" --count` succeeds | Load `../../rhdh-jira/SKILL.md` Prerequisites | |
| 124 | +| **Google Sheets** (for team/schedule data) | `python scripts/check_gsheets.py` → exit 0 | Run `gcloud auth login --enable-gdrive-access` | |
| 125 | + |
| 126 | +</prerequisites> |
0 commit comments