$npx -y skills add redhat-developer/rhdh-skill --skill rhdh-releaseManages RHDH releases — dates, status tracking, team coordination, freeze announcements, blocker bugs, CVEs, and release notes. Trigger on "release dates", "release status", "feature freeze", "code freeze", "blocker bugs", "CVEs", "release notes", "team breakdown", or any RHDH re
| 1 | <essential_principles> |
| 2 | |
| 3 | <principle name="use_cloud_id_for_team_queries"> |
| 4 | Use `"Team[Team]" = "{{CLOUD_ID}}"` in JQL to filter by team. Cloud IDs are sourced from the Rich Filter JSON ("Scrum Team" smart filter) when available, or from the RHDH Team Mapping spreadsheet (column "Cloud ID") as fallback. Use the `open_issues_by_team`, `feature_freeze_issues_by_team`, or `code_freeze_issues_by_team` JQL templates. This is fast and does not require `parse_issues.py --enrich`. |
| 5 | </principle> |
| 6 | |
| 7 | <principle name="include_jira_links"> |
| 8 | 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>`. |
| 9 | </principle> |
| 10 | |
| 11 | <principle name="slack_code_blocks"> |
| 12 | 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. |
| 13 | </principle> |
| 14 | |
| 15 | <principle name="risk_identification"> |
| 16 | When analyzing release health, check these risk indicators: |
| 17 | 1. Blocker bugs near freeze dates — query with `priority = Blocker` |
| 18 | 2. High open issue count per team — use team breakdown to identify overloaded teams |
| 19 | 3. Missing release notes — query issues with empty Release Note Type |
| 20 | 4. Critical CVEs — query vulnerabilities with CVE in summary |
| 21 | 5. EPICs not in Dev Complete — check epic status |
| 22 | |
| 23 | Always provide: specific issue counts with Jira links, team-level breakdown if applicable, actionable recommendations (retriage, escalate, extend timeline), and impact assessment. |
| 24 | </principle> |
| 25 | |
| 26 | <principle name="team_coordination"> |
| 27 | For team coordination: |
| 28 | 1. Retrieve team info from Google Sheets to get leads and Slack handles |
| 29 | 2. Include team leads' Slack handles in all team communications |
| 30 | 3. Provide Jira links scoped to each team's issues |
| 31 | 4. Highlight teams at risk (high open counts, blockers) |
| 32 | 5. Suggest follow-up actions per team |
| 33 | </principle> |
| 34 | |
| 35 | <principle name="token_safety"> |
| 36 | Never read `.jira-token` into context. Always use shell substitution: `"$(cat "$TOKEN_FILE")"`. |
| 37 | </principle> |
| 38 | |
| 39 | <principle name="rich_filter_source_of_truth"> |
| 40 | Use the configured Rich Filter export for its base operational scope, freeze filters, |
| 41 | release-note queues, Scrum Team IDs, demo/Test Day labels, and ad hoc exported |
| 42 | queries. Run `python scripts/release.py --json check` before release workflows; |
| 43 | do not replace a missing required Rich Filter entry with copied JQL. |
| 44 | </principle> |
| 45 | |
| 46 | </essential_principles> |
| 47 | |
| 48 | <intake> |
| 49 | |
| 50 | ## RHDH Release Management |
| 51 | |
| 52 | What would you like to do? |
| 53 | |
| 54 | ### Release Information |
| 55 | |
| 56 | 1. **Release dates** — Current release dates and key milestones |
| 57 | 2. **Future release dates** — Upcoming release dates from schedule spreadsheet |
| 58 | 3. **Release status** — Active release status by issue type |
| 59 | 4. **Teams** — Teams and leads directory |
| 60 | |
| 61 | ### Release Tracking |
| 62 | |
| 63 | 5. **Team breakdown** — Issues by engineering team for a release |
| 64 | 6. **Blocker bugs** — Open blocker bugs for a release |
| 65 | 7. **EPICs** — Engineering EPICs not yet complete |
| 66 | 8. **CVEs** — CVE/vulnerability list for a release |
| 67 | 9. **Release notes** — Release-note lifecycle (unclassified, proposed, done, with text) |
| 68 | |
| 69 | ### Announcements |
| 70 | |
| 71 | 10. **Feature Freeze update** — Generate Feature Freeze status update for Slack |
| 72 | 11. **Feature Freeze announcement** — Generate Feature Freeze milestone announcement |
| 73 | 12. **Code Freeze update** — Generate Code Freeze status update for Slack |
| 74 | 13. **Code Freeze announcement** — Generate Code Freeze milestone announcement |
| 75 | |
| 76 | ### Rich Filter Operations |
| 77 | |
| 78 | 14. **Post Code Freeze** — Issues requiring attention after Code Freeze |
| 79 | 15. **Rich Filter catalog/query** — Inspect or run any exported filter, queue, time series, or custom-ratio query |
| 80 | |
| 81 | **Wait for response before proceeding.** |
| 82 | |
| 83 | </intake> |
| 84 | |
| 85 | <routing> |
| 86 | |
| 87 | **Preferred:** Run the `release` CLI first (`python scripts/release.py --json <command>`). If the CLI fails, fall back to the workflow's manual steps. |
| 88 | |
| 89 | | Response | CLI Command | Workflow (fallback) | |
| 90 | |----------|-------------|---------------------| |
| 91 | | 1, "release dates", "key dates", "freeze dates", "milestone dates" | `python scripts/release.py --json dates` | `workflows/release-dates.md` | |
| 92 | | 2, "future releases", "upcoming releases", "release roadmap", "future dates" | `python scripts/release.py --json future-dates VERSION` | `workflows/future-release-dates.md` | |
| 93 | | 3, "release status", "active releases", "release health", "release overview" | `python scripts/release.py --json status VERSION` | `workflows/release-status.md` | |
| 94 | | 4, "teams", "team leads", "team list", "team contacts", "team directory" | `python scripts/release.py --json teams` | `w |