[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-red-hat-developer-rhdh-release":3,"mdc--f2xhth-key":37,"related-repo-red-hat-developer-rhdh-release":1102,"related-org-red-hat-developer-rhdh-release":1213},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":32,"sourceUrl":35,"mdContent":36},"rhdh-release","coordinate RHDH release cycles","Manages RHDH releases — dates, status tracking, team coordination,\nfreeze announcements, blocker bugs, CVEs, and release notes. Trigger on\n\"release dates\", \"release status\", \"feature freeze\", \"code freeze\",\n\"blocker bugs\", \"CVEs\", \"release notes\", \"team breakdown\", or any\nRHDH release management question.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"red-hat-developer","Red Hat Developer","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fred-hat-developer.png","redhat-developer",[13,17,20,23],{"name":14,"slug":15,"type":16},"Operations","operations","tag",{"name":18,"slug":19,"type":16},"Compliance","compliance",{"name":21,"slug":22,"type":16},"Reporting","reporting",{"name":24,"slug":25,"type":16},"Project Management","project-management",15,"https:\u002F\u002Fgithub.com\u002Fredhat-developer\u002Frhdh-skill","2026-07-19T05:38:59.502069",null,28,[],{"repoUrl":27,"stars":26,"forks":30,"topics":33,"description":34},[],"Claude Code skill for RHDH plugin lifecycle management","https:\u002F\u002Fgithub.com\u002Fredhat-developer\u002Frhdh-skill\u002Ftree\u002FHEAD\u002Fskills\u002Frhdh-release","---\nname: rhdh-release\ndescription: |\n  Manages RHDH releases — dates, status tracking, team coordination,\n  freeze announcements, blocker bugs, CVEs, and release notes. Trigger on\n  \"release dates\", \"release status\", \"feature freeze\", \"code freeze\",\n  \"blocker bugs\", \"CVEs\", \"release notes\", \"team breakdown\", or any\n  RHDH release management question.\ncompatibility: \"acli on PATH. Python 3 + gog CLI for Google Sheets\u002FDocs.\"\n---\n\n\u003Cessential_principles>\n\n\u003Cprinciple name=\"use_cloud_id_for_team_queries\">\nUse `\"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`.\n\u003C\u002Fprinciple>\n\n\u003Cprinciple name=\"include_jira_links\">\nInclude Jira search links for traceability in all outputs. Build links by URL-encoding the JQL: `https:\u002F\u002Fissues.redhat.com\u002Fissues\u002F?jql=\u003CURL_ENCODED_JQL>`.\n\u003C\u002Fprinciple>\n\n\u003Cprinciple name=\"slack_code_blocks\">\nAlways wrap Slack messages in triple-backtick code blocks (` ```slack `) for easy copy-paste. Tell the user they can copy-paste this directly into Slack.\n\u003C\u002Fprinciple>\n\n\u003Cprinciple name=\"risk_identification\">\nWhen analyzing release health, check these risk indicators:\n1. Blocker bugs near freeze dates — query with `priority = Blocker`\n2. High open issue count per team — use team breakdown to identify overloaded teams\n3. Missing release notes — query issues with empty Release Note Type\n4. Critical CVEs — query vulnerabilities with CVE in summary\n5. EPICs not in Dev Complete — check epic status\n\nAlways provide: specific issue counts with Jira links, team-level breakdown if applicable, actionable recommendations (retriage, escalate, extend timeline), and impact assessment.\n\u003C\u002Fprinciple>\n\n\u003Cprinciple name=\"team_coordination\">\nFor team coordination:\n1. Retrieve team info from Google Sheets to get leads and Slack handles\n2. Include team leads' Slack handles in all team communications\n3. Provide Jira links scoped to each team's issues\n4. Highlight teams at risk (high open counts, blockers)\n5. Suggest follow-up actions per team\n\u003C\u002Fprinciple>\n\n\u003Cprinciple name=\"token_safety\">\nNever read `.jira-token` into context. Always use shell substitution: `\"$(cat \"$TOKEN_FILE\")\"`.\n\u003C\u002Fprinciple>\n\n\u003Cprinciple name=\"rich_filter_source_of_truth\">\nUse the configured Rich Filter export for its base operational scope, freeze filters,\nrelease-note queues, Scrum Team IDs, demo\u002FTest Day labels, and ad hoc exported\nqueries. Run `python scripts\u002Frelease.py --json check` before release workflows;\ndo not replace a missing required Rich Filter entry with copied JQL.\n\u003C\u002Fprinciple>\n\n\u003C\u002Fessential_principles>\n\n\u003Cintake>\n\n## RHDH Release Management\n\nWhat would you like to do?\n\n### Release Information\n\n1. **Release dates** — Current release dates and key milestones\n2. **Future release dates** — Upcoming release dates from schedule spreadsheet\n3. **Release status** — Active release status by issue type\n4. **Teams** — Teams and leads directory\n\n### Release Tracking\n\n5. **Team breakdown** — Issues by engineering team for a release\n6. **Blocker bugs** — Open blocker bugs for a release\n7. **EPICs** — Engineering EPICs not yet complete\n8. **CVEs** — CVE\u002Fvulnerability list for a release\n9. **Release notes** — Release-note lifecycle (unclassified, proposed, done, with text)\n\n### Announcements\n\n10. **Feature Freeze update** — Generate Feature Freeze status update for Slack\n11. **Feature Freeze announcement** — Generate Feature Freeze milestone announcement\n12. **Code Freeze update** — Generate Code Freeze status update for Slack\n13. **Code Freeze announcement** — Generate Code Freeze milestone announcement\n\n### Rich Filter Operations\n\n14. **Post Code Freeze** — Issues requiring attention after Code Freeze\n15. **Rich Filter catalog\u002Fquery** — Inspect or run any exported filter, queue, time series, or custom-ratio query\n\n**Wait for response before proceeding.**\n\n\u003C\u002Fintake>\n\n\u003Crouting>\n\n**Preferred:** Run the `release` CLI first (`python scripts\u002Frelease.py --json \u003Ccommand>`). If the CLI fails, fall back to the workflow's manual steps.\n\n| Response | CLI Command | Workflow (fallback) |\n|----------|-------------|---------------------|\n| 1, \"release dates\", \"key dates\", \"freeze dates\", \"milestone dates\" | `python scripts\u002Frelease.py --json dates` | `workflows\u002Frelease-dates.md` |\n| 2, \"future releases\", \"upcoming releases\", \"release roadmap\", \"future dates\" | `python scripts\u002Frelease.py --json future-dates VERSION` | `workflows\u002Ffuture-release-dates.md` |\n| 3, \"release status\", \"active releases\", \"release health\", \"release overview\" | `python scripts\u002Frelease.py --json status VERSION` | `workflows\u002Frelease-status.md` |\n| 4, \"teams\", \"team leads\", \"team list\", \"team contacts\", \"team directory\" | `python scripts\u002Frelease.py --json teams` | `workflows\u002Fteams-and-leads.md` |\n| 5, \"team breakdown\", \"issues by team\", \"team workload\", \"team counts\" | `python scripts\u002Frelease.py --json team-breakdown VERSION` | `workflows\u002Fissues-by-team.md` |\n| 6, \"blocker bugs\", \"blockers\", \"critical issues\", \"blocking issues\" | `python scripts\u002Frelease.py --json blockers VERSION` | `workflows\u002Fblocker-bugs.md` |\n| 7, \"epics\", \"engineering epics\", \"open epics\", \"active epics\" | `python scripts\u002Frelease.py --json epics VERSION` | `workflows\u002Fengineering-epics.md` |\n| 8, \"cves\", \"vulnerabilities\", \"security issues\", \"security bugs\" | `python scripts\u002Frelease.py --json cves VERSION` | `workflows\u002Fcves.md` |\n| 9, \"release notes\", \"missing release notes\", \"release note gaps\" | `python scripts\u002Frelease.py --json notes VERSION` | `workflows\u002Frelease-notes.md` |\n| 10, \"feature freeze update\", \"feature freeze status\", \"feature freeze progress\" | `python scripts\u002Frelease.py --json slack feature-freeze-update VERSION` | `workflows\u002Fannounce-feature-freeze-update.md` |\n| 11, \"feature freeze announcement\", \"announce feature freeze\", \"feature freeze reached\" | `python scripts\u002Frelease.py --json slack feature-freeze VERSION` | `workflows\u002Fannounce-feature-freeze.md` |\n| 12, \"code freeze update\", \"code freeze status\", \"code freeze progress\" | `python scripts\u002Frelease.py --json slack code-freeze-update VERSION` | `workflows\u002Fannounce-code-freeze-update.md` |\n| 13, \"code freeze announcement\", \"announce code freeze\", \"code freeze reached\" | `python scripts\u002Frelease.py --json slack code-freeze VERSION` | `workflows\u002Fannounce-code-freeze.md` |\n| 14, \"post code freeze\", \"post-freeze\", \"after code freeze\" | `python scripts\u002Frelease.py --json post-freeze VERSION` | `workflows\u002Fpost-code-freeze.md` |\n| 15, \"rich filter\", \"filter catalog\", \"smart filter\", \"rich queue\" | `python scripts\u002Frelease.py --json rich-filter inventory` | `workflows\u002Frich-filter-catalog.md` |\n\n\u003C\u002Frouting>\n\n\u003Creference_index>\n\n| Reference | Purpose | Load when |\n|-----------|---------|-----------|\n| `references\u002Fjql-release.md` | 20 release-specific templates (9 inline + 11 Rich Filter) | Any Jira query for release data |\n| `references\u002Frich-filter-coverage.md` | Export coverage, mappings, and intentional exclusions | Auditing or extending Rich Filter integration |\n| `references\u002Fslack-templates.md` | 4 Slack announcement templates | Generating freeze announcements |\n| `references\u002Fconfig.md` | GDrive IDs, project keys, dashboards, Rich Filter config, gog setup | Looking up config values or links |\n| `gog docs cat 13OkypJ3u_7Jq6kEhKhjEFwHQ12oPFDKXVzFjYW4XLdk` | Release process (live Google Doc) | Release process questions, onboarding |\n| `..\u002F..\u002Frhdh-jira\u002Freferences\u002Fauth.md` | Jira auth setup | Jira prerequisite fails |\n| `..\u002F..\u002Frhdh-jira\u002Freferences\u002Facli-commands.md` | acli command reference | Building acli commands |\n| `..\u002F..\u002Frhdh\u002Freferences\u002Fprivate-data.md` | Private data repo setup (Rich Filter JSON) | Rich Filter not found or setup questions |\n\n\u003C\u002Freference_index>\n\n\u003Cprerequisites>\n\n**Run before any workflow:**\n\n| Requirement | Check | Fix |\n|-------------|-------|-----|\n| **Jira CLI** | `acli jira workitem search --jql \"project=RHIDP\" --count` succeeds | Load `..\u002F..\u002Frhdh-jira\u002FSKILL.md` Prerequisites |\n| **gog CLI** (for Google Sheets\u002FDocs) | `gog sheets metadata 1vQXfvID72qwqvLb17eyGOvnZXrZG7NBzTGv6RP9wvyM --json` succeeds | Install gog and run `gog auth add \u003Cemail>` |\n\n\u003C\u002Fprerequisites>\n",{"data":38,"body":40},{"name":4,"description":6,"compatibility":39},"acli on PATH. Python 3 + gog CLI for Google Sheets\u002FDocs.",{"type":41,"children":42},"root",[43,51,58,70,76],{"type":44,"tag":45,"props":46,"children":47},"element","p",{},[48],{"type":49,"value":50},"text","\u003Cessential_principles>",{"type":44,"tag":52,"props":53,"children":55},"principle",{"name":54},"use_cloud_id_for_team_queries",[56],{"type":49,"value":57},"\nUse `\"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`.\n",{"type":44,"tag":52,"props":59,"children":61},{"name":60},"include_jira_links",[62,64],{"type":49,"value":63},"\nInclude Jira search links for traceability in all outputs. Build links by URL-encoding the JQL: `https:\u002F\u002Fissues.redhat.com\u002Fissues\u002F?jql=",{"type":44,"tag":65,"props":66,"children":67},"url_encoded_jql",{},[68],{"type":49,"value":69},"`.\n",{"type":44,"tag":52,"props":71,"children":73},{"name":72},"slack_code_blocks",[74],{"type":49,"value":75},"\nAlways wrap Slack messages in triple-backtick code blocks (` ```slack `) for easy copy-paste. Tell the user they can copy-paste this directly into Slack.\n",{"type":44,"tag":52,"props":77,"children":79},{"name":78},"risk_identification",[80,82,87,93,99,105,110,327,781,786,989,994],{"type":49,"value":81},"\nWhen analyzing release health, check these risk indicators:\n1. Blocker bugs near freeze dates — query with `priority = Blocker`\n2. High open issue count per team — use team breakdown to identify overloaded teams\n3. Missing release notes — query issues with empty Release Note Type\n4. Critical CVEs — query vulnerabilities with CVE in summary\n5. EPICs not in Dev Complete — check epic status\n",{"type":44,"tag":45,"props":83,"children":84},{},[85],{"type":49,"value":86},"Always provide: specific issue counts with Jira links, team-level breakdown if applicable, actionable recommendations (retriage, escalate, extend timeline), and impact assessment.\n",{"type":44,"tag":52,"props":88,"children":90},{"name":89},"team_coordination",[91],{"type":49,"value":92},"\nFor team coordination:\n1. Retrieve team info from Google Sheets to get leads and Slack handles\n2. Include team leads' Slack handles in all team communications\n3. Provide Jira links scoped to each team's issues\n4. Highlight teams at risk (high open counts, blockers)\n5. Suggest follow-up actions per team\n",{"type":44,"tag":52,"props":94,"children":96},{"name":95},"token_safety",[97],{"type":49,"value":98},"\nNever read `.jira-token` into context. Always use shell substitution: `\"$(cat \"$TOKEN_FILE\")\"`.\n",{"type":44,"tag":52,"props":100,"children":102},{"name":101},"rich_filter_source_of_truth",[103],{"type":49,"value":104},"\nUse the configured Rich Filter export for its base operational scope, freeze filters,\nrelease-note queues, Scrum Team IDs, demo\u002FTest Day labels, and ad hoc exported\nqueries. Run `python scripts\u002Frelease.py --json check` before release workflows;\ndo not replace a missing required Rich Filter entry with copied JQL.\n",{"type":44,"tag":45,"props":106,"children":107},{},[108],{"type":49,"value":109},"\u003C\u002Fessential_principles>",{"type":44,"tag":111,"props":112,"children":113},"intake",{},[114,121,126,133,179,185,239,245,289,295,319],{"type":44,"tag":115,"props":116,"children":118},"h2",{"id":117},"rhdh-release-management",[119],{"type":49,"value":120},"RHDH Release Management",{"type":44,"tag":45,"props":122,"children":123},{},[124],{"type":49,"value":125},"What would you like to do?",{"type":44,"tag":127,"props":128,"children":130},"h3",{"id":129},"release-information",[131],{"type":49,"value":132},"Release Information",{"type":44,"tag":134,"props":135,"children":136},"ol",{},[137,149,159,169],{"type":44,"tag":138,"props":139,"children":140},"li",{},[141,147],{"type":44,"tag":142,"props":143,"children":144},"strong",{},[145],{"type":49,"value":146},"Release dates",{"type":49,"value":148}," — Current release dates and key milestones",{"type":44,"tag":138,"props":150,"children":151},{},[152,157],{"type":44,"tag":142,"props":153,"children":154},{},[155],{"type":49,"value":156},"Future release dates",{"type":49,"value":158}," — Upcoming release dates from schedule spreadsheet",{"type":44,"tag":138,"props":160,"children":161},{},[162,167],{"type":44,"tag":142,"props":163,"children":164},{},[165],{"type":49,"value":166},"Release status",{"type":49,"value":168}," — Active release status by issue type",{"type":44,"tag":138,"props":170,"children":171},{},[172,177],{"type":44,"tag":142,"props":173,"children":174},{},[175],{"type":49,"value":176},"Teams",{"type":49,"value":178}," — Teams and leads directory",{"type":44,"tag":127,"props":180,"children":182},{"id":181},"release-tracking",[183],{"type":49,"value":184},"Release Tracking",{"type":44,"tag":134,"props":186,"children":188},{"start":187},5,[189,199,209,219,229],{"type":44,"tag":138,"props":190,"children":191},{},[192,197],{"type":44,"tag":142,"props":193,"children":194},{},[195],{"type":49,"value":196},"Team breakdown",{"type":49,"value":198}," — Issues by engineering team for a release",{"type":44,"tag":138,"props":200,"children":201},{},[202,207],{"type":44,"tag":142,"props":203,"children":204},{},[205],{"type":49,"value":206},"Blocker bugs",{"type":49,"value":208}," — Open blocker bugs for a release",{"type":44,"tag":138,"props":210,"children":211},{},[212,217],{"type":44,"tag":142,"props":213,"children":214},{},[215],{"type":49,"value":216},"EPICs",{"type":49,"value":218}," — Engineering EPICs not yet complete",{"type":44,"tag":138,"props":220,"children":221},{},[222,227],{"type":44,"tag":142,"props":223,"children":224},{},[225],{"type":49,"value":226},"CVEs",{"type":49,"value":228}," — CVE\u002Fvulnerability list for a release",{"type":44,"tag":138,"props":230,"children":231},{},[232,237],{"type":44,"tag":142,"props":233,"children":234},{},[235],{"type":49,"value":236},"Release notes",{"type":49,"value":238}," — Release-note lifecycle (unclassified, proposed, done, with text)",{"type":44,"tag":127,"props":240,"children":242},{"id":241},"announcements",[243],{"type":49,"value":244},"Announcements",{"type":44,"tag":134,"props":246,"children":248},{"start":247},10,[249,259,269,279],{"type":44,"tag":138,"props":250,"children":251},{},[252,257],{"type":44,"tag":142,"props":253,"children":254},{},[255],{"type":49,"value":256},"Feature Freeze update",{"type":49,"value":258}," — Generate Feature Freeze status update for Slack",{"type":44,"tag":138,"props":260,"children":261},{},[262,267],{"type":44,"tag":142,"props":263,"children":264},{},[265],{"type":49,"value":266},"Feature Freeze announcement",{"type":49,"value":268}," — Generate Feature Freeze milestone announcement",{"type":44,"tag":138,"props":270,"children":271},{},[272,277],{"type":44,"tag":142,"props":273,"children":274},{},[275],{"type":49,"value":276},"Code Freeze update",{"type":49,"value":278}," — Generate Code Freeze status update for Slack",{"type":44,"tag":138,"props":280,"children":281},{},[282,287],{"type":44,"tag":142,"props":283,"children":284},{},[285],{"type":49,"value":286},"Code Freeze announcement",{"type":49,"value":288}," — Generate Code Freeze milestone announcement",{"type":44,"tag":127,"props":290,"children":292},{"id":291},"rich-filter-operations",[293],{"type":49,"value":294},"Rich Filter Operations",{"type":44,"tag":134,"props":296,"children":298},{"start":297},14,[299,309],{"type":44,"tag":138,"props":300,"children":301},{},[302,307],{"type":44,"tag":142,"props":303,"children":304},{},[305],{"type":49,"value":306},"Post Code Freeze",{"type":49,"value":308}," — Issues requiring attention after Code Freeze",{"type":44,"tag":138,"props":310,"children":311},{},[312,317],{"type":44,"tag":142,"props":313,"children":314},{},[315],{"type":49,"value":316},"Rich Filter catalog\u002Fquery",{"type":49,"value":318}," — Inspect or run any exported filter, queue, time series, or custom-ratio query",{"type":44,"tag":45,"props":320,"children":321},{},[322],{"type":44,"tag":142,"props":323,"children":324},{},[325],{"type":49,"value":326},"Wait for response before proceeding.",{"type":44,"tag":328,"props":329,"children":330},"routing",{},[331,358],{"type":44,"tag":45,"props":332,"children":333},{},[334,339,341,348,350,356],{"type":44,"tag":142,"props":335,"children":336},{},[337],{"type":49,"value":338},"Preferred:",{"type":49,"value":340}," Run the ",{"type":44,"tag":342,"props":343,"children":345},"code",{"className":344},[],[346],{"type":49,"value":347},"release",{"type":49,"value":349}," CLI first (",{"type":44,"tag":342,"props":351,"children":353},{"className":352},[],[354],{"type":49,"value":355},"python scripts\u002Frelease.py --json \u003Ccommand>",{"type":49,"value":357},"). If the CLI fails, fall back to the workflow's manual steps.",{"type":44,"tag":359,"props":360,"children":361},"table",{},[362,386],{"type":44,"tag":363,"props":364,"children":365},"thead",{},[366],{"type":44,"tag":367,"props":368,"children":369},"tr",{},[370,376,381],{"type":44,"tag":371,"props":372,"children":373},"th",{},[374],{"type":49,"value":375},"Response",{"type":44,"tag":371,"props":377,"children":378},{},[379],{"type":49,"value":380},"CLI Command",{"type":44,"tag":371,"props":382,"children":383},{},[384],{"type":49,"value":385},"Workflow (fallback)",{"type":44,"tag":387,"props":388,"children":389},"tbody",{},[390,417,443,469,495,521,547,573,599,625,651,677,703,729,755],{"type":44,"tag":367,"props":391,"children":392},{},[393,399,408],{"type":44,"tag":394,"props":395,"children":396},"td",{},[397],{"type":49,"value":398},"1, \"release dates\", \"key dates\", \"freeze dates\", \"milestone dates\"",{"type":44,"tag":394,"props":400,"children":401},{},[402],{"type":44,"tag":342,"props":403,"children":405},{"className":404},[],[406],{"type":49,"value":407},"python scripts\u002Frelease.py --json dates",{"type":44,"tag":394,"props":409,"children":410},{},[411],{"type":44,"tag":342,"props":412,"children":414},{"className":413},[],[415],{"type":49,"value":416},"workflows\u002Frelease-dates.md",{"type":44,"tag":367,"props":418,"children":419},{},[420,425,434],{"type":44,"tag":394,"props":421,"children":422},{},[423],{"type":49,"value":424},"2, \"future releases\", \"upcoming releases\", \"release roadmap\", \"future dates\"",{"type":44,"tag":394,"props":426,"children":427},{},[428],{"type":44,"tag":342,"props":429,"children":431},{"className":430},[],[432],{"type":49,"value":433},"python scripts\u002Frelease.py --json future-dates VERSION",{"type":44,"tag":394,"props":435,"children":436},{},[437],{"type":44,"tag":342,"props":438,"children":440},{"className":439},[],[441],{"type":49,"value":442},"workflows\u002Ffuture-release-dates.md",{"type":44,"tag":367,"props":444,"children":445},{},[446,451,460],{"type":44,"tag":394,"props":447,"children":448},{},[449],{"type":49,"value":450},"3, \"release status\", \"active releases\", \"release health\", \"release overview\"",{"type":44,"tag":394,"props":452,"children":453},{},[454],{"type":44,"tag":342,"props":455,"children":457},{"className":456},[],[458],{"type":49,"value":459},"python scripts\u002Frelease.py --json status VERSION",{"type":44,"tag":394,"props":461,"children":462},{},[463],{"type":44,"tag":342,"props":464,"children":466},{"className":465},[],[467],{"type":49,"value":468},"workflows\u002Frelease-status.md",{"type":44,"tag":367,"props":470,"children":471},{},[472,477,486],{"type":44,"tag":394,"props":473,"children":474},{},[475],{"type":49,"value":476},"4, \"teams\", \"team leads\", \"team list\", \"team contacts\", \"team directory\"",{"type":44,"tag":394,"props":478,"children":479},{},[480],{"type":44,"tag":342,"props":481,"children":483},{"className":482},[],[484],{"type":49,"value":485},"python scripts\u002Frelease.py --json teams",{"type":44,"tag":394,"props":487,"children":488},{},[489],{"type":44,"tag":342,"props":490,"children":492},{"className":491},[],[493],{"type":49,"value":494},"workflows\u002Fteams-and-leads.md",{"type":44,"tag":367,"props":496,"children":497},{},[498,503,512],{"type":44,"tag":394,"props":499,"children":500},{},[501],{"type":49,"value":502},"5, \"team breakdown\", \"issues by team\", \"team workload\", \"team counts\"",{"type":44,"tag":394,"props":504,"children":505},{},[506],{"type":44,"tag":342,"props":507,"children":509},{"className":508},[],[510],{"type":49,"value":511},"python scripts\u002Frelease.py --json team-breakdown VERSION",{"type":44,"tag":394,"props":513,"children":514},{},[515],{"type":44,"tag":342,"props":516,"children":518},{"className":517},[],[519],{"type":49,"value":520},"workflows\u002Fissues-by-team.md",{"type":44,"tag":367,"props":522,"children":523},{},[524,529,538],{"type":44,"tag":394,"props":525,"children":526},{},[527],{"type":49,"value":528},"6, \"blocker bugs\", \"blockers\", \"critical issues\", \"blocking issues\"",{"type":44,"tag":394,"props":530,"children":531},{},[532],{"type":44,"tag":342,"props":533,"children":535},{"className":534},[],[536],{"type":49,"value":537},"python scripts\u002Frelease.py --json blockers VERSION",{"type":44,"tag":394,"props":539,"children":540},{},[541],{"type":44,"tag":342,"props":542,"children":544},{"className":543},[],[545],{"type":49,"value":546},"workflows\u002Fblocker-bugs.md",{"type":44,"tag":367,"props":548,"children":549},{},[550,555,564],{"type":44,"tag":394,"props":551,"children":552},{},[553],{"type":49,"value":554},"7, \"epics\", \"engineering epics\", \"open epics\", \"active epics\"",{"type":44,"tag":394,"props":556,"children":557},{},[558],{"type":44,"tag":342,"props":559,"children":561},{"className":560},[],[562],{"type":49,"value":563},"python scripts\u002Frelease.py --json epics VERSION",{"type":44,"tag":394,"props":565,"children":566},{},[567],{"type":44,"tag":342,"props":568,"children":570},{"className":569},[],[571],{"type":49,"value":572},"workflows\u002Fengineering-epics.md",{"type":44,"tag":367,"props":574,"children":575},{},[576,581,590],{"type":44,"tag":394,"props":577,"children":578},{},[579],{"type":49,"value":580},"8, \"cves\", \"vulnerabilities\", \"security issues\", \"security bugs\"",{"type":44,"tag":394,"props":582,"children":583},{},[584],{"type":44,"tag":342,"props":585,"children":587},{"className":586},[],[588],{"type":49,"value":589},"python scripts\u002Frelease.py --json cves VERSION",{"type":44,"tag":394,"props":591,"children":592},{},[593],{"type":44,"tag":342,"props":594,"children":596},{"className":595},[],[597],{"type":49,"value":598},"workflows\u002Fcves.md",{"type":44,"tag":367,"props":600,"children":601},{},[602,607,616],{"type":44,"tag":394,"props":603,"children":604},{},[605],{"type":49,"value":606},"9, \"release notes\", \"missing release notes\", \"release note gaps\"",{"type":44,"tag":394,"props":608,"children":609},{},[610],{"type":44,"tag":342,"props":611,"children":613},{"className":612},[],[614],{"type":49,"value":615},"python scripts\u002Frelease.py --json notes VERSION",{"type":44,"tag":394,"props":617,"children":618},{},[619],{"type":44,"tag":342,"props":620,"children":622},{"className":621},[],[623],{"type":49,"value":624},"workflows\u002Frelease-notes.md",{"type":44,"tag":367,"props":626,"children":627},{},[628,633,642],{"type":44,"tag":394,"props":629,"children":630},{},[631],{"type":49,"value":632},"10, \"feature freeze update\", \"feature freeze status\", \"feature freeze progress\"",{"type":44,"tag":394,"props":634,"children":635},{},[636],{"type":44,"tag":342,"props":637,"children":639},{"className":638},[],[640],{"type":49,"value":641},"python scripts\u002Frelease.py --json slack feature-freeze-update VERSION",{"type":44,"tag":394,"props":643,"children":644},{},[645],{"type":44,"tag":342,"props":646,"children":648},{"className":647},[],[649],{"type":49,"value":650},"workflows\u002Fannounce-feature-freeze-update.md",{"type":44,"tag":367,"props":652,"children":653},{},[654,659,668],{"type":44,"tag":394,"props":655,"children":656},{},[657],{"type":49,"value":658},"11, \"feature freeze announcement\", \"announce feature freeze\", \"feature freeze reached\"",{"type":44,"tag":394,"props":660,"children":661},{},[662],{"type":44,"tag":342,"props":663,"children":665},{"className":664},[],[666],{"type":49,"value":667},"python scripts\u002Frelease.py --json slack feature-freeze VERSION",{"type":44,"tag":394,"props":669,"children":670},{},[671],{"type":44,"tag":342,"props":672,"children":674},{"className":673},[],[675],{"type":49,"value":676},"workflows\u002Fannounce-feature-freeze.md",{"type":44,"tag":367,"props":678,"children":679},{},[680,685,694],{"type":44,"tag":394,"props":681,"children":682},{},[683],{"type":49,"value":684},"12, \"code freeze update\", \"code freeze status\", \"code freeze progress\"",{"type":44,"tag":394,"props":686,"children":687},{},[688],{"type":44,"tag":342,"props":689,"children":691},{"className":690},[],[692],{"type":49,"value":693},"python scripts\u002Frelease.py --json slack code-freeze-update VERSION",{"type":44,"tag":394,"props":695,"children":696},{},[697],{"type":44,"tag":342,"props":698,"children":700},{"className":699},[],[701],{"type":49,"value":702},"workflows\u002Fannounce-code-freeze-update.md",{"type":44,"tag":367,"props":704,"children":705},{},[706,711,720],{"type":44,"tag":394,"props":707,"children":708},{},[709],{"type":49,"value":710},"13, \"code freeze announcement\", \"announce code freeze\", \"code freeze reached\"",{"type":44,"tag":394,"props":712,"children":713},{},[714],{"type":44,"tag":342,"props":715,"children":717},{"className":716},[],[718],{"type":49,"value":719},"python scripts\u002Frelease.py --json slack code-freeze VERSION",{"type":44,"tag":394,"props":721,"children":722},{},[723],{"type":44,"tag":342,"props":724,"children":726},{"className":725},[],[727],{"type":49,"value":728},"workflows\u002Fannounce-code-freeze.md",{"type":44,"tag":367,"props":730,"children":731},{},[732,737,746],{"type":44,"tag":394,"props":733,"children":734},{},[735],{"type":49,"value":736},"14, \"post code freeze\", \"post-freeze\", \"after code freeze\"",{"type":44,"tag":394,"props":738,"children":739},{},[740],{"type":44,"tag":342,"props":741,"children":743},{"className":742},[],[744],{"type":49,"value":745},"python scripts\u002Frelease.py --json post-freeze VERSION",{"type":44,"tag":394,"props":747,"children":748},{},[749],{"type":44,"tag":342,"props":750,"children":752},{"className":751},[],[753],{"type":49,"value":754},"workflows\u002Fpost-code-freeze.md",{"type":44,"tag":367,"props":756,"children":757},{},[758,763,772],{"type":44,"tag":394,"props":759,"children":760},{},[761],{"type":49,"value":762},"15, \"rich filter\", \"filter catalog\", \"smart filter\", \"rich queue\"",{"type":44,"tag":394,"props":764,"children":765},{},[766],{"type":44,"tag":342,"props":767,"children":769},{"className":768},[],[770],{"type":49,"value":771},"python scripts\u002Frelease.py --json rich-filter inventory",{"type":44,"tag":394,"props":773,"children":774},{},[775],{"type":44,"tag":342,"props":776,"children":778},{"className":777},[],[779],{"type":49,"value":780},"workflows\u002Frich-filter-catalog.md",{"type":44,"tag":45,"props":782,"children":783},{},[784],{"type":49,"value":785},"\u003Creference_index>",{"type":44,"tag":359,"props":787,"children":788},{},[789,810],{"type":44,"tag":363,"props":790,"children":791},{},[792],{"type":44,"tag":367,"props":793,"children":794},{},[795,800,805],{"type":44,"tag":371,"props":796,"children":797},{},[798],{"type":49,"value":799},"Reference",{"type":44,"tag":371,"props":801,"children":802},{},[803],{"type":49,"value":804},"Purpose",{"type":44,"tag":371,"props":806,"children":807},{},[808],{"type":49,"value":809},"Load when",{"type":44,"tag":387,"props":811,"children":812},{},[813,835,857,879,901,923,945,967],{"type":44,"tag":367,"props":814,"children":815},{},[816,825,830],{"type":44,"tag":394,"props":817,"children":818},{},[819],{"type":44,"tag":342,"props":820,"children":822},{"className":821},[],[823],{"type":49,"value":824},"references\u002Fjql-release.md",{"type":44,"tag":394,"props":826,"children":827},{},[828],{"type":49,"value":829},"20 release-specific templates (9 inline + 11 Rich Filter)",{"type":44,"tag":394,"props":831,"children":832},{},[833],{"type":49,"value":834},"Any Jira query for release data",{"type":44,"tag":367,"props":836,"children":837},{},[838,847,852],{"type":44,"tag":394,"props":839,"children":840},{},[841],{"type":44,"tag":342,"props":842,"children":844},{"className":843},[],[845],{"type":49,"value":846},"references\u002Frich-filter-coverage.md",{"type":44,"tag":394,"props":848,"children":849},{},[850],{"type":49,"value":851},"Export coverage, mappings, and intentional exclusions",{"type":44,"tag":394,"props":853,"children":854},{},[855],{"type":49,"value":856},"Auditing or extending Rich Filter integration",{"type":44,"tag":367,"props":858,"children":859},{},[860,869,874],{"type":44,"tag":394,"props":861,"children":862},{},[863],{"type":44,"tag":342,"props":864,"children":866},{"className":865},[],[867],{"type":49,"value":868},"references\u002Fslack-templates.md",{"type":44,"tag":394,"props":870,"children":871},{},[872],{"type":49,"value":873},"4 Slack announcement templates",{"type":44,"tag":394,"props":875,"children":876},{},[877],{"type":49,"value":878},"Generating freeze announcements",{"type":44,"tag":367,"props":880,"children":881},{},[882,891,896],{"type":44,"tag":394,"props":883,"children":884},{},[885],{"type":44,"tag":342,"props":886,"children":888},{"className":887},[],[889],{"type":49,"value":890},"references\u002Fconfig.md",{"type":44,"tag":394,"props":892,"children":893},{},[894],{"type":49,"value":895},"GDrive IDs, project keys, dashboards, Rich Filter config, gog setup",{"type":44,"tag":394,"props":897,"children":898},{},[899],{"type":49,"value":900},"Looking up config values or links",{"type":44,"tag":367,"props":902,"children":903},{},[904,913,918],{"type":44,"tag":394,"props":905,"children":906},{},[907],{"type":44,"tag":342,"props":908,"children":910},{"className":909},[],[911],{"type":49,"value":912},"gog docs cat 13OkypJ3u_7Jq6kEhKhjEFwHQ12oPFDKXVzFjYW4XLdk",{"type":44,"tag":394,"props":914,"children":915},{},[916],{"type":49,"value":917},"Release process (live Google Doc)",{"type":44,"tag":394,"props":919,"children":920},{},[921],{"type":49,"value":922},"Release process questions, onboarding",{"type":44,"tag":367,"props":924,"children":925},{},[926,935,940],{"type":44,"tag":394,"props":927,"children":928},{},[929],{"type":44,"tag":342,"props":930,"children":932},{"className":931},[],[933],{"type":49,"value":934},"..\u002F..\u002Frhdh-jira\u002Freferences\u002Fauth.md",{"type":44,"tag":394,"props":936,"children":937},{},[938],{"type":49,"value":939},"Jira auth setup",{"type":44,"tag":394,"props":941,"children":942},{},[943],{"type":49,"value":944},"Jira prerequisite fails",{"type":44,"tag":367,"props":946,"children":947},{},[948,957,962],{"type":44,"tag":394,"props":949,"children":950},{},[951],{"type":44,"tag":342,"props":952,"children":954},{"className":953},[],[955],{"type":49,"value":956},"..\u002F..\u002Frhdh-jira\u002Freferences\u002Facli-commands.md",{"type":44,"tag":394,"props":958,"children":959},{},[960],{"type":49,"value":961},"acli command reference",{"type":44,"tag":394,"props":963,"children":964},{},[965],{"type":49,"value":966},"Building acli commands",{"type":44,"tag":367,"props":968,"children":969},{},[970,979,984],{"type":44,"tag":394,"props":971,"children":972},{},[973],{"type":44,"tag":342,"props":974,"children":976},{"className":975},[],[977],{"type":49,"value":978},"..\u002F..\u002Frhdh\u002Freferences\u002Fprivate-data.md",{"type":44,"tag":394,"props":980,"children":981},{},[982],{"type":49,"value":983},"Private data repo setup (Rich Filter JSON)",{"type":44,"tag":394,"props":985,"children":986},{},[987],{"type":49,"value":988},"Rich Filter not found or setup questions",{"type":44,"tag":45,"props":990,"children":991},{},[992],{"type":49,"value":993},"\u003C\u002Freference_index>",{"type":44,"tag":995,"props":996,"children":997},"prerequisites",{},[998,1006],{"type":44,"tag":45,"props":999,"children":1000},{},[1001],{"type":44,"tag":142,"props":1002,"children":1003},{},[1004],{"type":49,"value":1005},"Run before any workflow:",{"type":44,"tag":359,"props":1007,"children":1008},{},[1009,1030],{"type":44,"tag":363,"props":1010,"children":1011},{},[1012],{"type":44,"tag":367,"props":1013,"children":1014},{},[1015,1020,1025],{"type":44,"tag":371,"props":1016,"children":1017},{},[1018],{"type":49,"value":1019},"Requirement",{"type":44,"tag":371,"props":1021,"children":1022},{},[1023],{"type":49,"value":1024},"Check",{"type":44,"tag":371,"props":1026,"children":1027},{},[1028],{"type":49,"value":1029},"Fix",{"type":44,"tag":387,"props":1031,"children":1032},{},[1033,1068],{"type":44,"tag":367,"props":1034,"children":1035},{},[1036,1044,1055],{"type":44,"tag":394,"props":1037,"children":1038},{},[1039],{"type":44,"tag":142,"props":1040,"children":1041},{},[1042],{"type":49,"value":1043},"Jira CLI",{"type":44,"tag":394,"props":1045,"children":1046},{},[1047,1053],{"type":44,"tag":342,"props":1048,"children":1050},{"className":1049},[],[1051],{"type":49,"value":1052},"acli jira workitem search --jql \"project=RHIDP\" --count",{"type":49,"value":1054}," succeeds",{"type":44,"tag":394,"props":1056,"children":1057},{},[1058,1060,1066],{"type":49,"value":1059},"Load ",{"type":44,"tag":342,"props":1061,"children":1063},{"className":1062},[],[1064],{"type":49,"value":1065},"..\u002F..\u002Frhdh-jira\u002FSKILL.md",{"type":49,"value":1067}," Prerequisites",{"type":44,"tag":367,"props":1069,"children":1070},{},[1071,1081,1091],{"type":44,"tag":394,"props":1072,"children":1073},{},[1074,1079],{"type":44,"tag":142,"props":1075,"children":1076},{},[1077],{"type":49,"value":1078},"gog CLI",{"type":49,"value":1080}," (for Google Sheets\u002FDocs)",{"type":44,"tag":394,"props":1082,"children":1083},{},[1084,1090],{"type":44,"tag":342,"props":1085,"children":1087},{"className":1086},[],[1088],{"type":49,"value":1089},"gog sheets metadata 1vQXfvID72qwqvLb17eyGOvnZXrZG7NBzTGv6RP9wvyM --json",{"type":49,"value":1054},{"type":44,"tag":394,"props":1092,"children":1093},{},[1094,1096],{"type":49,"value":1095},"Install gog and run ",{"type":44,"tag":342,"props":1097,"children":1099},{"className":1098},[],[1100],{"type":49,"value":1101},"gog auth add \u003Cemail>",{"items":1103,"total":1212},[1104,1120,1134,1153,1169,1182,1193],{"slug":1105,"name":1105,"fn":1106,"description":1107,"org":1108,"tags":1109,"stars":26,"repoUrl":27,"updatedAt":1119},"agent-ready","assess repository readiness for AI agents","Assesses a git repository's readiness for use by AI coding agents using the agentready CLI, then walks through and addresses each gap. RHDH-aware: detects RHDH repositories and uses rhdh-repos.md context to pre-fill AGENTS.md and skip inapplicable findings. Use when asked to \"assess agent readiness\", \"run agentready\", \"check how agent-ready this repo is\", \"make this repo agent-ready\", \"improve agent readiness score\", \"assess all RHDH repos\", \"batch agent readiness\", or \"onboard this repo for agents\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1110,1113,1116],{"name":1111,"slug":1112,"type":16},"Agents","agents",{"name":1114,"slug":1115,"type":16},"Code Analysis","code-analysis",{"name":1117,"slug":1118,"type":16},"Engineering","engineering","2026-07-16T06:03:24.758348",{"slug":1121,"name":1121,"fn":1122,"description":1123,"org":1124,"tags":1125,"stars":26,"repoUrl":27,"updatedAt":1133},"backstage-upgrade","upgrade Backstage dependencies","Upgrade @backstage\u002F* dependencies in a plugin or app to a target version. Use when asked to \"upgrade backstage\", \"bump backstage\", \"update @backstage\", \"align backstage deps\", \"backstage version bump\", \"upgrade dependencies\", \"backstage-cli versions:bump\", \"update to latest backstage\", \"fix version mismatch\", \"backstage version alignment\", \"upgrade before migration\", or any request to update Backstage package versions in a project.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1126,1127,1130],{"name":1117,"slug":1118,"type":16},{"name":1128,"slug":1129,"type":16},"Maintenance","maintenance",{"name":1131,"slug":1132,"type":16},"Migration","migration","2026-07-16T06:03:24.067361",{"slug":1135,"name":1135,"fn":1136,"description":1137,"org":1138,"tags":1139,"stars":26,"repoUrl":27,"updatedAt":1152},"base-images-and-rpms","update base images and lockfiles","Updates base images with updateBaseImages.sh and regenerates rpms.lock.yaml with rpm-lockfile-prototype in redhat-developer\u002Frhdh, rhdh-must-gather, and rhdh-operator. Use --analyze for read-only Containerfile\u002FDockerfile scan (current vs latest tags, UBI skew). Use for weekly upstream maintenance, UBI\u002FRHEL base image bumps, RPM lockfile refresh, base-images-and-rpms, main, release-*, or analyzing base images before updating.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1140,1143,1146,1149],{"name":1141,"slug":1142,"type":16},"Automation","automation",{"name":1144,"slug":1145,"type":16},"Configuration","configuration",{"name":1147,"slug":1148,"type":16},"Containers","containers",{"name":1150,"slug":1151,"type":16},"Deployment","deployment","2026-07-16T06:03:27.784453",{"slug":1154,"name":1154,"fn":1155,"description":1156,"org":1157,"tags":1158,"stars":26,"repoUrl":27,"updatedAt":1168},"bug-fix","diagnose and fix plugin bugs","Reproduce, diagnose, fix, and PR plugin bugs from Jira tickets or GitHub issues. Works with both rhdh-plugins and community-plugins. Supports UI bugs (Playwright e2e with before\u002Fafter recordings) and backend bugs (unit\u002Fintegration test verification). Triages issues for agent-readiness before attempting a fix. Accepts a Jira key (RHDHBUGS-1934), Jira URL (redhat.atlassian.net\u002Fbrowse\u002F...), GitHub issue URL (github.com\u002F...\u002Fissues\u002FN), or a request to \"fix this bug\", \"reproduce and fix\", \"\u002Fbug-fix\". By default, stops after the fix for user verification before PR creation. Supports --no-verify mode to skip the verification gate and auto-create the PR. Chains into raise-pr for the full PR lifecycle.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1159,1162,1165],{"name":1160,"slug":1161,"type":16},"Debugging","debugging",{"name":1163,"slug":1164,"type":16},"QA","qa",{"name":1166,"slug":1167,"type":16},"Testing","testing","2026-07-29T06:00:33.054762",{"slug":1170,"name":1170,"fn":1171,"description":1172,"org":1173,"tags":1174,"stars":26,"repoUrl":27,"updatedAt":1181},"compute-plugin-package-overlay-cve-list","generate CVE management reports","Builds an RHDH CVE Management CSV from GA plugin workspace changes in rhdh-plugin-export-overlays since a version tag (patches, source.json, plugins-list). One row per CVE × plugins-list package (multi-workspace CVEs expand). Use for \"CVE CSV\", \"workspace CVEs since tag\", \"collect overlay CVEs\", \"CVE management CSV\", orchestrator\u002Flightspeed CVE review, or plugin package overlay CVE list.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1175,1176,1177,1178],{"name":18,"slug":19,"type":16},{"name":1117,"slug":1118,"type":16},{"name":21,"slug":22,"type":16},{"name":1179,"slug":1180,"type":16},"Security","security","2026-08-01T05:41:57.852801",{"slug":1183,"name":1183,"fn":1184,"description":1185,"org":1186,"tags":1187,"stars":26,"repoUrl":27,"updatedAt":1192},"create-plugin","scaffold and package RHDH dynamic plugins","Full lifecycle for RHDH dynamic plugins — scaffold, implement, export, package, and configure. Use when asked to \"create RHDH plugin\", \"bootstrap dynamic plugin\", \"create backend plugin\", \"create frontend plugin\", \"export dynamic plugin\", \"package plugin as OCI\", \"generate frontend wiring\", \"create plugin container image\", \"configure mount points\", \"create dynamic route\", \"add entity card\", \"scaffold RHDH plugin\", \"publish plugin to registry\", \"create tgz archive\", or mentions creating, exporting, packaging, or wiring a Backstage plugin for Red Hat Developer Hub. Also use when asked to \"build a plugin from scratch\", \"dynamic plugin tutorial\", \"RHDH plugin from scratch\", or \"build Backstage plugin for RHDH\". Covers backend plugins (APIs, scaffolder actions, processors), frontend plugins (pages, cards, themes), export\u002Fpackaging (OCI, tgz, npm), and frontend wiring configuration (mount points, routes, entity tabs, themes).\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1188,1189],{"name":1150,"slug":1151,"type":16},{"name":1190,"slug":1191,"type":16},"Plugin Development","plugin-development","2026-07-16T06:02:28.983498",{"slug":1194,"name":1194,"fn":1195,"description":1196,"org":1197,"tags":1198,"stars":26,"repoUrl":27,"updatedAt":1211},"cursor-mcp-auth","authenticate Atlassian MCP for Jira","Ensures Cursor Atlassian MCP (plugin-atlassian-atlassian → mcp.atlassian.com) is authenticated for redhat.atlassian.net via OAuth. Use for \"authenticate Jira\", \"Atlassian MCP\", \"jira auth failed\", \"mcp_auth Atlassian\", \"cursor MCP auth\", or when another skill needs working Jira access through Cursor MCP.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1199,1202,1205,1208],{"name":1200,"slug":1201,"type":16},"Auth","auth",{"name":1203,"slug":1204,"type":16},"Jira","jira",{"name":1206,"slug":1207,"type":16},"MCP","mcp",{"name":1209,"slug":1210,"type":16},"OAuth","oauth","2026-07-29T06:00:33.525179",24,{"items":1214,"total":1212},[1215,1221,1227,1234,1240,1247,1252,1259,1271,1284,1294,1306],{"slug":1105,"name":1105,"fn":1106,"description":1107,"org":1216,"tags":1217,"stars":26,"repoUrl":27,"updatedAt":1119},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1218,1219,1220],{"name":1111,"slug":1112,"type":16},{"name":1114,"slug":1115,"type":16},{"name":1117,"slug":1118,"type":16},{"slug":1121,"name":1121,"fn":1122,"description":1123,"org":1222,"tags":1223,"stars":26,"repoUrl":27,"updatedAt":1133},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1224,1225,1226],{"name":1117,"slug":1118,"type":16},{"name":1128,"slug":1129,"type":16},{"name":1131,"slug":1132,"type":16},{"slug":1135,"name":1135,"fn":1136,"description":1137,"org":1228,"tags":1229,"stars":26,"repoUrl":27,"updatedAt":1152},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1230,1231,1232,1233],{"name":1141,"slug":1142,"type":16},{"name":1144,"slug":1145,"type":16},{"name":1147,"slug":1148,"type":16},{"name":1150,"slug":1151,"type":16},{"slug":1154,"name":1154,"fn":1155,"description":1156,"org":1235,"tags":1236,"stars":26,"repoUrl":27,"updatedAt":1168},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1237,1238,1239],{"name":1160,"slug":1161,"type":16},{"name":1163,"slug":1164,"type":16},{"name":1166,"slug":1167,"type":16},{"slug":1170,"name":1170,"fn":1171,"description":1172,"org":1241,"tags":1242,"stars":26,"repoUrl":27,"updatedAt":1181},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1243,1244,1245,1246],{"name":18,"slug":19,"type":16},{"name":1117,"slug":1118,"type":16},{"name":21,"slug":22,"type":16},{"name":1179,"slug":1180,"type":16},{"slug":1183,"name":1183,"fn":1184,"description":1185,"org":1248,"tags":1249,"stars":26,"repoUrl":27,"updatedAt":1192},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1250,1251],{"name":1150,"slug":1151,"type":16},{"name":1190,"slug":1191,"type":16},{"slug":1194,"name":1194,"fn":1195,"description":1196,"org":1253,"tags":1254,"stars":26,"repoUrl":27,"updatedAt":1211},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1255,1256,1257,1258],{"name":1200,"slug":1201,"type":16},{"name":1203,"slug":1204,"type":16},{"name":1206,"slug":1207,"type":16},{"name":1209,"slug":1210,"type":16},{"slug":1260,"name":1260,"fn":1261,"description":1262,"org":1263,"tags":1264,"stars":26,"repoUrl":27,"updatedAt":1270},"konflux-release-data-rpa","update release tags in konflux-release-data","Bumps RHDH ReleasePlanAdmission tag versions in konflux-release-data for a stream release (e.g. 1.9.7), opens a GitLab merge request, and launches it in the browser. Use when updating RPA tags, konflux-release-data, ReleasePlanAdmission, rhdh-1-9-*.yaml, rhdh-plugin-catalog-1-9-*.yaml, or preparing an RHDH patch release.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1265,1266,1267],{"name":1141,"slug":1142,"type":16},{"name":1150,"slug":1151,"type":16},{"name":1268,"slug":1269,"type":16},"GitLab","gitlab","2026-07-16T06:00:19.516231",{"slug":1272,"name":1272,"fn":1273,"description":1274,"org":1275,"tags":1276,"stars":26,"repoUrl":27,"updatedAt":1283},"konflux-tekton-updates","update Konflux Tekton task digests","Bumps Konflux Tekton task digests with .tekton\u002FupdateDigests.sh --minor --no-push, applies konflux-ci\u002Fbuild-definitions MIGRATION.md pipeline fixes, and regenerates PipelineRuns. Use for rhdh-plugin-catalog, RHDH midstream (4-rhdh), Konflux task minor bumps, prefetch-dependencies-oci-ta, build-image-index, or updateDigests.sh.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1277,1278,1281,1282],{"name":1141,"slug":1142,"type":16},{"name":1279,"slug":1280,"type":16},"CI\u002FCD","ci-cd",{"name":1150,"slug":1151,"type":16},{"name":1117,"slug":1118,"type":16},"2026-07-16T06:03:28.123118",{"slug":1285,"name":1285,"fn":1286,"description":1287,"org":1288,"tags":1289,"stars":26,"repoUrl":27,"updatedAt":1293},"lifecycle","check Red Hat product lifecycle status","Check version lifecycle and support status for platforms and integrations used by RHDH. Covers OCP, AKS, EKS, GKE, RHDH releases, RHBK, Quay, PostgreSQL, and any Red Hat product via the Product Life Cycles API. Use when asking about version support, EOL dates, GA dates, support phases, or planning version upgrades. Also use for \"is X still supported\", \"what versions should we test\", or \"when does X reach EOL\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1290,1291,1292],{"name":18,"slug":19,"type":16},{"name":1128,"slug":1129,"type":16},{"name":14,"slug":15,"type":16},"2026-07-16T06:03:19.344038",{"slug":1295,"name":1295,"fn":1296,"description":1297,"org":1298,"tags":1299,"stars":26,"repoUrl":27,"updatedAt":1305},"nfs-migration","migrate plugins to New Frontend System","Migrate Backstage frontend plugins from the legacy system to the New Frontend System (NFS). Use when asked to \"migrate to NFS\", \"new frontend system\", \"convert plugin to NFS\", \"createFrontendPlugin\", \"PageBlueprint\", \"ApiBlueprint\", \"SubPageBlueprint\", \"alpha to GA\", \"legacy to NFS\", \"frontend migration\", \"extension blueprints\", \"migrate frontend plugin\", \"NFS support\", \"graduate alpha\", or mentions migrating a Backstage plugin to the new frontend system for RHDH.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1300,1301,1304],{"name":1117,"slug":1118,"type":16},{"name":1302,"slug":1303,"type":16},"Frontend","frontend",{"name":1131,"slug":1132,"type":16},"2026-07-16T06:03:27.078987",{"slug":1307,"name":1307,"fn":1308,"description":1309,"org":1310,"tags":1311,"stars":26,"repoUrl":27,"updatedAt":1318},"overlay","manage RHDH plugin export overlays","Manages the rhdh-plugin-export-overlays repository — onboards plugins to the Extensions Catalog, updates plugin versions, fixes overlay build failures, triages and analyzes PRs, triggers publishes, and manages plugin workspaces. Use when working with overlays, importing plugins, debugging CI, checking PRs, bumping versions, or mentions \"Extensions Catalog\", \"overlay build failed\", \"plugin registry\", \"overlay PR\", \"overlay doctor\", \"plugin import\", \"add plugin to catalog\", \"onboard plugin\", or \"plugin workspace\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1312,1313,1316,1317],{"name":1141,"slug":1142,"type":16},{"name":1314,"slug":1315,"type":16},"Code Review","code-review",{"name":1150,"slug":1151,"type":16},{"name":1117,"slug":1118,"type":16},"2026-07-16T06:03:20.380044"]