[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-red-hat-developer-overlay":3,"mdc-cpkckn-key":37,"related-org-red-hat-developer-overlay":1345,"related-repo-red-hat-developer-overlay":1510},{"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},"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},"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},"Automation","automation","tag",{"name":18,"slug":19,"type":16},"Code Review","code-review",{"name":21,"slug":22,"type":16},"Deployment","deployment",{"name":24,"slug":25,"type":16},"Engineering","engineering",15,"https:\u002F\u002Fgithub.com\u002Fredhat-developer\u002Frhdh-skill","2026-07-16T06:03:20.380044",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\u002Foverlay","---\nname: overlay\ndescription: >-\n  Manages the rhdh-plugin-export-overlays repository — onboards plugins to the\n  Extensions Catalog, updates plugin versions, fixes overlay build failures,\n  triages and analyzes PRs, triggers publishes, and manages plugin workspaces.\n  Use when working with overlays, importing plugins, debugging CI, checking PRs,\n  bumping versions, or mentions \"Extensions Catalog\", \"overlay build failed\",\n  \"plugin registry\", \"overlay PR\", \"overlay doctor\", \"plugin import\",\n  \"add plugin to catalog\", \"onboard plugin\", or \"plugin workspace\".\n---\n\n\u003Ccli_setup>\nThis skill uses the orchestrator CLI. **Set up first:**\n\n```bash\nRHDH=..\u002Frhdh\u002Fscripts\u002Frhdh\n```\n\n**Verify environment:**\n\n```bash\n$RHDH\n```\n\nIf `needs_setup: true`, run `$RHDH doctor` before proceeding.\n\u003C\u002Fcli_setup>\n\n\u003Cessential_principles>\n\n\u003Cprinciple name=\"overlay_repo_pattern\">\nAll plugin exports go through [rhdh-plugin-export-overlays](https:\u002F\u002Fgithub.com\u002Fredhat-developer\u002Frhdh-plugin-export-overlays).\nEach plugin lives in a workspace folder with `source.json` + `plugins-list.yaml`.\nCI handles the actual export - we define the configuration.\n\u003C\u002Fprinciple>\n\n\u003Cprinciple name=\"version_fields\">\nTwo Backstage version fields serve different purposes:\n- `source.json` → `repo-backstage-version` = upstream's **actual** version\n- `backstage.json` → `version` = our **override** for RHDH compatibility\n\nNever confuse these. CI validates the source.json value matches upstream.\n\u003C\u002Fprinciple>\n\n\u003Cprinciple name=\"test_with_pr_artifacts\">\nAlways test with PR artifacts before merge using rhdh-local.\nOCI format: `oci:\u002F\u002F\u003Cregistry>\u002F\u003Cimage>:pr_\u003Cnumber>__\u003Cversion>!\u003Cpackage-name>`\nSuccess = plugin loads and attempts API calls (auth errors are expected without real credentials).\n\u003C\u002Fprinciple>\n\n\u003Cprinciple name=\"copy_similar_workspaces\">\nWhen stuck, find a similar workspace and copy its patterns.\nAWS plugins → copy from `aws-ecs\u002F` or `aws-codebuild\u002F`\nCommunity plugins → copy from `backstage\u002F`\nCheck existing PRs for structure examples.\n\u003C\u002Fprinciple>\n\n\u003C\u002Fessential_principles>\n\n\u003Cintake>\n## Identify Task\n\nWhat overlay task would you like to do?\n\n### Plugin Owner Tasks\n\n*For contributors managing their own plugin(s)*\n\n1. **Onboard a new plugin** — Add upstream plugin to Extensions Catalog\n2. **Update plugin version** — Bump to newer upstream commit\u002Ftag\n3. **Check plugin status** — Verify health and compatibility\n4. **Fix build failure** — Debug CI\u002Fpublish issues\n\n### Core Team Tasks\n\n*For COPE\u002FPlugins team managing the overlay repository*\n\n5. **Triage overlay PRs** — Prioritize open PRs by criticality\n6. **Analyze specific PR** — Check assignment, compatibility, merge readiness\n7. **Trigger publish** — Add \u002Fpublish comment to PR(s)\n\n**Wait for response before proceeding.**\n\u003C\u002Fintake>\n\n\u003Crouting>\n### Plugin Owner Routes\n\n| Response | Workflow |\n|----------|----------|\n| 1, \"onboard\", \"add\", \"new plugin\", \"import\" | `workflows\u002Fonboard-plugin.md` |\n| 2, \"update\", \"bump\", \"upgrade\", \"version\" | `workflows\u002Fupdate-plugin.md` |\n| 3, \"status\", \"check\", \"health\" | Run inline status checks |\n| 4, \"fix\", \"debug\", \"failure\", \"error\" | `workflows\u002Ffix-build.md` |\n\n### Core Team Routes\n\n| Response | Workflow |\n|----------|----------|\n| 5, \"triage\", \"prioritize\", \"backlog\" | `workflows\u002Ftriage-prs.md` |\n| 6, \"analyze\", \"check PR\", \"PR #\" | `workflows\u002Fanalyze-pr.md` |\n| 7, \"publish\", \"trigger\" | Run inline publish trigger |\n\n**After reading the workflow, follow it exactly.**\n\u003C\u002Frouting>\n\n\u003Cinline_status_check>\nFor status checks, use the CLI:\n\n```bash\n$RHDH workspace list              # List all workspaces\n$RHDH workspace status \u003Cname>     # Check specific workspace\n```\n\nOr run direct commands:\n\n```bash\n# Recent CI runs\ngh run list --repo redhat-developer\u002Frhdh-plugin-export-overlays --limit 5\n\n# Open PRs for workspace\ngh pr list --repo redhat-developer\u002Frhdh-plugin-export-overlays --search \"\u003Cname>\"\n```\n\n\u003C\u002Finline_status_check>\n\n\u003Cinline_publish_trigger>\nFor triggering publish on one or more PRs:\n\n```bash\nREPO=\"redhat-developer\u002Frhdh-plugin-export-overlays\"\n\n# Single PR\ngh pr comment \u003Cnumber> --repo $REPO --body \"\u002Fpublish\"\n\n# Check if publish already ran\ngh pr view \u003Cnumber> --repo $REPO --json statusCheckRollup \\\n  --jq '.statusCheckRollup[] | select(.name | contains(\"publish\"))'\n```\n\n**Guards before triggering:**\n\n1. PR is open (not closed\u002Fmerged)\n2. No `do-not-merge` label\n3. Publish check not already successful\n\nSee `..\u002Frhdh\u002Freferences\u002Fgithub-reference.md` for full patterns. If unavailable, use standard `gh` CLI patterns.\n\u003C\u002Finline_publish_trigger>\n\n\u003Creference_index>\n**Overlay repo patterns:** references\u002Foverlay-repo.md\n**CI feedback interpretation:** references\u002Fci-feedback.md\n**Metadata format:** references\u002Fmetadata-format.md\n**PR label priorities:** references\u002Flabel-priority.md\n**RHDH Local testing:** references\u002Frhdh-local.md\n\n**For GitHub\u002FJIRA patterns:** See `..\u002Frhdh\u002Freferences\u002F` (if unavailable, use standard `gh` \u002F `acli` patterns)\n\u003C\u002Freference_index>\n\n\u003Cworkflows_index>\n\n### Plugin Owner Workflows\n\n| Workflow | Purpose |\n|----------|---------|\n| onboard-plugin.md | Full 6-phase process to add new plugin |\n| update-plugin.md | Bump to newer upstream version |\n| fix-build.md | Debug and resolve CI failures |\n\n### Core Team Workflows\n\n| Workflow | Purpose |\n|----------|---------|\n| triage-prs.md | Prioritize open PRs by criticality |\n| analyze-pr.md | Deep-dive on single PR (assignment, compat, readiness) |\n| doctor.md | Environment setup guidance |\n\u003C\u002Fworkflows_index>\n\n\u003Ctemplates_index>\n\n| Template | Purpose |\n|----------|---------|\n| workspace-files.md | source.json, plugins-list.yaml, backstage.json |\n\u003C\u002Ftemplates_index>\n\n\u003Csuccess_criteria>\n\n### Plugin Owner Success\n\n- Plugin workspace created with correct structure\n- CODEOWNERS entry added for the workspace\n- CI passes (`\u002Fpublish` succeeds)\n- Plugin tested locally with rhdh-local\n- PR merged to overlay repo\n- *(Recommended)* Activity logged via `$RHDH log add`\n\n### Core Team Success\n\n- PR backlog prioritized with actionable next steps\n- Stale PRs identified with suggested owners\n- Publish triggered on PRs needing it\n- Compatibility issues flagged before merge\n- *(Recommended)* Triage session logged, follow-ups tracked via `$RHDH todo`\n\u003C\u002Fsuccess_criteria>\n",{"data":38,"body":39},{"name":4,"description":6},{"type":40,"children":41},"root",[42,56,92,100,114,135,140,147,1339],{"type":43,"tag":44,"props":45,"children":46},"element","p",{},[47,50],{"type":48,"value":49},"text","\u003Ccli_setup>\nThis skill uses the orchestrator CLI. ",{"type":43,"tag":51,"props":52,"children":53},"strong",{},[54],{"type":48,"value":55},"Set up first:",{"type":43,"tag":57,"props":58,"children":63},"pre",{"className":59,"code":60,"language":61,"meta":62,"style":62},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","RHDH=..\u002Frhdh\u002Fscripts\u002Frhdh\n","bash","",[64],{"type":43,"tag":65,"props":66,"children":67},"code",{"__ignoreMap":62},[68],{"type":43,"tag":69,"props":70,"children":73},"span",{"class":71,"line":72},"line",1,[74,80,86],{"type":43,"tag":69,"props":75,"children":77},{"style":76},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[78],{"type":48,"value":79},"RHDH",{"type":43,"tag":69,"props":81,"children":83},{"style":82},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[84],{"type":48,"value":85},"=",{"type":43,"tag":69,"props":87,"children":89},{"style":88},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[90],{"type":48,"value":91},"..\u002Frhdh\u002Fscripts\u002Frhdh\n",{"type":43,"tag":44,"props":93,"children":94},{},[95],{"type":43,"tag":51,"props":96,"children":97},{},[98],{"type":48,"value":99},"Verify environment:",{"type":43,"tag":57,"props":101,"children":103},{"className":59,"code":102,"language":61,"meta":62,"style":62},"$RHDH\n",[104],{"type":43,"tag":65,"props":105,"children":106},{"__ignoreMap":62},[107],{"type":43,"tag":69,"props":108,"children":109},{"class":71,"line":72},[110],{"type":43,"tag":69,"props":111,"children":112},{"style":76},[113],{"type":48,"value":102},{"type":43,"tag":44,"props":115,"children":116},{},[117,119,125,127,133],{"type":48,"value":118},"If ",{"type":43,"tag":65,"props":120,"children":122},{"className":121},[],[123],{"type":48,"value":124},"needs_setup: true",{"type":48,"value":126},", run ",{"type":43,"tag":65,"props":128,"children":130},{"className":129},[],[131],{"type":48,"value":132},"$RHDH doctor",{"type":48,"value":134}," before proceeding.\n\u003C\u002Fcli_setup>",{"type":43,"tag":44,"props":136,"children":137},{},[138],{"type":48,"value":139},"\u003Cessential_principles>",{"type":43,"tag":141,"props":142,"children":144},"principle",{"name":143},"overlay_repo_pattern",[145],{"type":48,"value":146},"\nAll plugin exports go through [rhdh-plugin-export-overlays](https:\u002F\u002Fgithub.com\u002Fredhat-developer\u002Frhdh-plugin-export-overlays).\nEach plugin lives in a workspace folder with `source.json` + `plugins-list.yaml`.\nCI handles the actual export - we define the configuration.\n",{"type":43,"tag":141,"props":148,"children":150},{"name":149},"version_fields",[151,153,158,194,200,205],{"type":48,"value":152},"\nTwo Backstage version fields serve different purposes:\n- `source.json` → `repo-backstage-version` = upstream's **actual** version\n- `backstage.json` → `version` = our **override** for RHDH compatibility\n",{"type":43,"tag":44,"props":154,"children":155},{},[156],{"type":48,"value":157},"Never confuse these. CI validates the source.json value matches upstream.\n",{"type":43,"tag":141,"props":159,"children":161},{"name":160},"test_with_pr_artifacts",[162,164],{"type":48,"value":163},"\nAlways test with PR artifacts before merge using rhdh-local.\nOCI format: `oci:\u002F\u002F",{"type":43,"tag":165,"props":166,"children":167},"registry",{},[168,170,174,176],{"type":48,"value":169},"\u002F",{"type":43,"tag":171,"props":172,"children":173},"img",{},[],{"type":48,"value":175},":pr_",{"type":43,"tag":177,"props":178,"children":179},"number",{},[180,182],{"type":48,"value":181},"__",{"type":43,"tag":183,"props":184,"children":185},"version",{},[186,188],{"type":48,"value":187},"!",{"type":43,"tag":189,"props":190,"children":191},"package-name",{},[192],{"type":48,"value":193},"`\nSuccess = plugin loads and attempts API calls (auth errors are expected without real credentials).\n",{"type":43,"tag":141,"props":195,"children":197},{"name":196},"copy_similar_workspaces",[198],{"type":48,"value":199},"\nWhen stuck, find a similar workspace and copy its patterns.\nAWS plugins → copy from `aws-ecs\u002F` or `aws-codebuild\u002F`\nCommunity plugins → copy from `backstage\u002F`\nCheck existing PRs for structure examples.\n",{"type":43,"tag":44,"props":201,"children":202},{},[203],{"type":48,"value":204},"\u003C\u002Fessential_principles>",{"type":43,"tag":206,"props":207,"children":208},"intake",{},[209,211,216,223,232,277,283,291,325,333],{"type":48,"value":210},"\n## Identify Task\n",{"type":43,"tag":44,"props":212,"children":213},{},[214],{"type":48,"value":215},"What overlay task would you like to do?",{"type":43,"tag":217,"props":218,"children":220},"h3",{"id":219},"plugin-owner-tasks",[221],{"type":48,"value":222},"Plugin Owner Tasks",{"type":43,"tag":44,"props":224,"children":225},{},[226],{"type":43,"tag":227,"props":228,"children":229},"em",{},[230],{"type":48,"value":231},"For contributors managing their own plugin(s)",{"type":43,"tag":233,"props":234,"children":235},"ol",{},[236,247,257,267],{"type":43,"tag":237,"props":238,"children":239},"li",{},[240,245],{"type":43,"tag":51,"props":241,"children":242},{},[243],{"type":48,"value":244},"Onboard a new plugin",{"type":48,"value":246}," — Add upstream plugin to Extensions Catalog",{"type":43,"tag":237,"props":248,"children":249},{},[250,255],{"type":43,"tag":51,"props":251,"children":252},{},[253],{"type":48,"value":254},"Update plugin version",{"type":48,"value":256}," — Bump to newer upstream commit\u002Ftag",{"type":43,"tag":237,"props":258,"children":259},{},[260,265],{"type":43,"tag":51,"props":261,"children":262},{},[263],{"type":48,"value":264},"Check plugin status",{"type":48,"value":266}," — Verify health and compatibility",{"type":43,"tag":237,"props":268,"children":269},{},[270,275],{"type":43,"tag":51,"props":271,"children":272},{},[273],{"type":48,"value":274},"Fix build failure",{"type":48,"value":276}," — Debug CI\u002Fpublish issues",{"type":43,"tag":217,"props":278,"children":280},{"id":279},"core-team-tasks",[281],{"type":48,"value":282},"Core Team Tasks",{"type":43,"tag":44,"props":284,"children":285},{},[286],{"type":43,"tag":227,"props":287,"children":288},{},[289],{"type":48,"value":290},"For COPE\u002FPlugins team managing the overlay repository",{"type":43,"tag":233,"props":292,"children":294},{"start":293},5,[295,305,315],{"type":43,"tag":237,"props":296,"children":297},{},[298,303],{"type":43,"tag":51,"props":299,"children":300},{},[301],{"type":48,"value":302},"Triage overlay PRs",{"type":48,"value":304}," — Prioritize open PRs by criticality",{"type":43,"tag":237,"props":306,"children":307},{},[308,313],{"type":43,"tag":51,"props":309,"children":310},{},[311],{"type":48,"value":312},"Analyze specific PR",{"type":48,"value":314}," — Check assignment, compatibility, merge readiness",{"type":43,"tag":237,"props":316,"children":317},{},[318,323],{"type":43,"tag":51,"props":319,"children":320},{},[321],{"type":48,"value":322},"Trigger publish",{"type":48,"value":324}," — Add \u002Fpublish comment to PR(s)",{"type":43,"tag":44,"props":326,"children":327},{},[328],{"type":43,"tag":51,"props":329,"children":330},{},[331],{"type":48,"value":332},"Wait for response before proceeding.",{"type":43,"tag":334,"props":335,"children":336},"routing",{},[337,339,431,437,504,512,517,567,572,690,695,700,906,914,940,960,1000,1033,1038,1044,1104,1110,1180,1185,1230,1235,1241,1293,1299],{"type":48,"value":338},"\n### Plugin Owner Routes\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",{"type":43,"tag":340,"props":341,"children":342},"table",{},[343,362],{"type":43,"tag":344,"props":345,"children":346},"thead",{},[347],{"type":43,"tag":348,"props":349,"children":350},"tr",{},[351,357],{"type":43,"tag":352,"props":353,"children":354},"th",{},[355],{"type":48,"value":356},"Response",{"type":43,"tag":352,"props":358,"children":359},{},[360],{"type":48,"value":361},"Workflow",{"type":43,"tag":363,"props":364,"children":365},"tbody",{},[366,384,401,414],{"type":43,"tag":348,"props":367,"children":368},{},[369,375],{"type":43,"tag":370,"props":371,"children":372},"td",{},[373],{"type":48,"value":374},"1, \"onboard\", \"add\", \"new plugin\", \"import\"",{"type":43,"tag":370,"props":376,"children":377},{},[378],{"type":43,"tag":65,"props":379,"children":381},{"className":380},[],[382],{"type":48,"value":383},"workflows\u002Fonboard-plugin.md",{"type":43,"tag":348,"props":385,"children":386},{},[387,392],{"type":43,"tag":370,"props":388,"children":389},{},[390],{"type":48,"value":391},"2, \"update\", \"bump\", \"upgrade\", \"version\"",{"type":43,"tag":370,"props":393,"children":394},{},[395],{"type":43,"tag":65,"props":396,"children":398},{"className":397},[],[399],{"type":48,"value":400},"workflows\u002Fupdate-plugin.md",{"type":43,"tag":348,"props":402,"children":403},{},[404,409],{"type":43,"tag":370,"props":405,"children":406},{},[407],{"type":48,"value":408},"3, \"status\", \"check\", \"health\"",{"type":43,"tag":370,"props":410,"children":411},{},[412],{"type":48,"value":413},"Run inline status checks",{"type":43,"tag":348,"props":415,"children":416},{},[417,422],{"type":43,"tag":370,"props":418,"children":419},{},[420],{"type":48,"value":421},"4, \"fix\", \"debug\", \"failure\", \"error\"",{"type":43,"tag":370,"props":423,"children":424},{},[425],{"type":43,"tag":65,"props":426,"children":428},{"className":427},[],[429],{"type":48,"value":430},"workflows\u002Ffix-build.md",{"type":43,"tag":217,"props":432,"children":434},{"id":433},"core-team-routes",[435],{"type":48,"value":436},"Core Team Routes",{"type":43,"tag":340,"props":438,"children":439},{},[440,454],{"type":43,"tag":344,"props":441,"children":442},{},[443],{"type":43,"tag":348,"props":444,"children":445},{},[446,450],{"type":43,"tag":352,"props":447,"children":448},{},[449],{"type":48,"value":356},{"type":43,"tag":352,"props":451,"children":452},{},[453],{"type":48,"value":361},{"type":43,"tag":363,"props":455,"children":456},{},[457,474,491],{"type":43,"tag":348,"props":458,"children":459},{},[460,465],{"type":43,"tag":370,"props":461,"children":462},{},[463],{"type":48,"value":464},"5, \"triage\", \"prioritize\", \"backlog\"",{"type":43,"tag":370,"props":466,"children":467},{},[468],{"type":43,"tag":65,"props":469,"children":471},{"className":470},[],[472],{"type":48,"value":473},"workflows\u002Ftriage-prs.md",{"type":43,"tag":348,"props":475,"children":476},{},[477,482],{"type":43,"tag":370,"props":478,"children":479},{},[480],{"type":48,"value":481},"6, \"analyze\", \"check PR\", \"PR #\"",{"type":43,"tag":370,"props":483,"children":484},{},[485],{"type":43,"tag":65,"props":486,"children":488},{"className":487},[],[489],{"type":48,"value":490},"workflows\u002Fanalyze-pr.md",{"type":43,"tag":348,"props":492,"children":493},{},[494,499],{"type":43,"tag":370,"props":495,"children":496},{},[497],{"type":48,"value":498},"7, \"publish\", \"trigger\"",{"type":43,"tag":370,"props":500,"children":501},{},[502],{"type":48,"value":503},"Run inline publish trigger",{"type":43,"tag":44,"props":505,"children":506},{},[507],{"type":43,"tag":51,"props":508,"children":509},{},[510],{"type":48,"value":511},"After reading the workflow, follow it exactly.",{"type":43,"tag":44,"props":513,"children":514},{},[515],{"type":48,"value":516},"\u003Cinline_status_check>\nFor status checks, use the CLI:",{"type":43,"tag":57,"props":518,"children":520},{"className":59,"code":519,"language":61,"meta":62,"style":62},"$RHDH workspace list              # List all workspaces\n$RHDH workspace status \u003Cname>     # Check specific workspace\n",[521],{"type":43,"tag":65,"props":522,"children":523},{"__ignoreMap":62},[524,538],{"type":43,"tag":69,"props":525,"children":526},{"class":71,"line":72},[527,532],{"type":43,"tag":69,"props":528,"children":529},{"style":76},[530],{"type":48,"value":531},"$RHDH workspace list              ",{"type":43,"tag":69,"props":533,"children":535},{"style":534},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[536],{"type":48,"value":537},"# List all workspaces\n",{"type":43,"tag":69,"props":539,"children":541},{"class":71,"line":540},2,[542,547,552,557,562],{"type":43,"tag":69,"props":543,"children":544},{"style":76},[545],{"type":48,"value":546},"$RHDH workspace status ",{"type":43,"tag":69,"props":548,"children":549},{"style":82},[550],{"type":48,"value":551},"\u003C",{"type":43,"tag":69,"props":553,"children":554},{"style":76},[555],{"type":48,"value":556},"name",{"type":43,"tag":69,"props":558,"children":559},{"style":82},[560],{"type":48,"value":561},">",{"type":43,"tag":69,"props":563,"children":564},{"style":534},[565],{"type":48,"value":566},"     # Check specific workspace\n",{"type":43,"tag":44,"props":568,"children":569},{},[570],{"type":48,"value":571},"Or run direct commands:",{"type":43,"tag":57,"props":573,"children":575},{"className":59,"code":574,"language":61,"meta":62,"style":62},"# Recent CI runs\ngh run list --repo redhat-developer\u002Frhdh-plugin-export-overlays --limit 5\n\n# Open PRs for workspace\ngh pr list --repo redhat-developer\u002Frhdh-plugin-export-overlays --search \"\u003Cname>\"\n",[576],{"type":43,"tag":65,"props":577,"children":578},{"__ignoreMap":62},[579,587,627,637,646],{"type":43,"tag":69,"props":580,"children":581},{"class":71,"line":72},[582],{"type":43,"tag":69,"props":583,"children":584},{"style":534},[585],{"type":48,"value":586},"# Recent CI runs\n",{"type":43,"tag":69,"props":588,"children":589},{"class":71,"line":540},[590,596,601,606,611,616,621],{"type":43,"tag":69,"props":591,"children":593},{"style":592},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[594],{"type":48,"value":595},"gh",{"type":43,"tag":69,"props":597,"children":598},{"style":88},[599],{"type":48,"value":600}," run",{"type":43,"tag":69,"props":602,"children":603},{"style":88},[604],{"type":48,"value":605}," list",{"type":43,"tag":69,"props":607,"children":608},{"style":88},[609],{"type":48,"value":610}," --repo",{"type":43,"tag":69,"props":612,"children":613},{"style":88},[614],{"type":48,"value":615}," redhat-developer\u002Frhdh-plugin-export-overlays",{"type":43,"tag":69,"props":617,"children":618},{"style":88},[619],{"type":48,"value":620}," --limit",{"type":43,"tag":69,"props":622,"children":624},{"style":623},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[625],{"type":48,"value":626}," 5\n",{"type":43,"tag":69,"props":628,"children":630},{"class":71,"line":629},3,[631],{"type":43,"tag":69,"props":632,"children":634},{"emptyLinePlaceholder":633},true,[635],{"type":48,"value":636},"\n",{"type":43,"tag":69,"props":638,"children":640},{"class":71,"line":639},4,[641],{"type":43,"tag":69,"props":642,"children":643},{"style":534},[644],{"type":48,"value":645},"# Open PRs for workspace\n",{"type":43,"tag":69,"props":647,"children":648},{"class":71,"line":293},[649,653,658,662,666,670,675,680,685],{"type":43,"tag":69,"props":650,"children":651},{"style":592},[652],{"type":48,"value":595},{"type":43,"tag":69,"props":654,"children":655},{"style":88},[656],{"type":48,"value":657}," pr",{"type":43,"tag":69,"props":659,"children":660},{"style":88},[661],{"type":48,"value":605},{"type":43,"tag":69,"props":663,"children":664},{"style":88},[665],{"type":48,"value":610},{"type":43,"tag":69,"props":667,"children":668},{"style":88},[669],{"type":48,"value":615},{"type":43,"tag":69,"props":671,"children":672},{"style":88},[673],{"type":48,"value":674}," --search",{"type":43,"tag":69,"props":676,"children":677},{"style":82},[678],{"type":48,"value":679}," \"",{"type":43,"tag":69,"props":681,"children":682},{"style":88},[683],{"type":48,"value":684},"\u003Cname>",{"type":43,"tag":69,"props":686,"children":687},{"style":82},[688],{"type":48,"value":689},"\"\n",{"type":43,"tag":44,"props":691,"children":692},{},[693],{"type":48,"value":694},"\u003C\u002Finline_status_check>",{"type":43,"tag":44,"props":696,"children":697},{},[698],{"type":48,"value":699},"\u003Cinline_publish_trigger>\nFor triggering publish on one or more PRs:",{"type":43,"tag":57,"props":701,"children":703},{"className":59,"code":702,"language":61,"meta":62,"style":62},"REPO=\"redhat-developer\u002Frhdh-plugin-export-overlays\"\n\n# Single PR\ngh pr comment \u003Cnumber> --repo $REPO --body \"\u002Fpublish\"\n\n# Check if publish already ran\ngh pr view \u003Cnumber> --repo $REPO --json statusCheckRollup \\\n  --jq '.statusCheckRollup[] | select(.name | contains(\"publish\"))'\n",[704],{"type":43,"tag":65,"props":705,"children":706},{"__ignoreMap":62},[707,733,740,748,810,817,826,882],{"type":43,"tag":69,"props":708,"children":709},{"class":71,"line":72},[710,715,719,724,729],{"type":43,"tag":69,"props":711,"children":712},{"style":76},[713],{"type":48,"value":714},"REPO",{"type":43,"tag":69,"props":716,"children":717},{"style":82},[718],{"type":48,"value":85},{"type":43,"tag":69,"props":720,"children":721},{"style":82},[722],{"type":48,"value":723},"\"",{"type":43,"tag":69,"props":725,"children":726},{"style":88},[727],{"type":48,"value":728},"redhat-developer\u002Frhdh-plugin-export-overlays",{"type":43,"tag":69,"props":730,"children":731},{"style":82},[732],{"type":48,"value":689},{"type":43,"tag":69,"props":734,"children":735},{"class":71,"line":540},[736],{"type":43,"tag":69,"props":737,"children":738},{"emptyLinePlaceholder":633},[739],{"type":48,"value":636},{"type":43,"tag":69,"props":741,"children":742},{"class":71,"line":629},[743],{"type":43,"tag":69,"props":744,"children":745},{"style":534},[746],{"type":48,"value":747},"# Single PR\n",{"type":43,"tag":69,"props":749,"children":750},{"class":71,"line":639},[751,755,759,764,769,774,779,783,787,792,797,801,806],{"type":43,"tag":69,"props":752,"children":753},{"style":592},[754],{"type":48,"value":595},{"type":43,"tag":69,"props":756,"children":757},{"style":88},[758],{"type":48,"value":657},{"type":43,"tag":69,"props":760,"children":761},{"style":88},[762],{"type":48,"value":763}," comment",{"type":43,"tag":69,"props":765,"children":766},{"style":82},[767],{"type":48,"value":768}," \u003C",{"type":43,"tag":69,"props":770,"children":771},{"style":88},[772],{"type":48,"value":773},"numbe",{"type":43,"tag":69,"props":775,"children":776},{"style":76},[777],{"type":48,"value":778},"r",{"type":43,"tag":69,"props":780,"children":781},{"style":82},[782],{"type":48,"value":561},{"type":43,"tag":69,"props":784,"children":785},{"style":88},[786],{"type":48,"value":610},{"type":43,"tag":69,"props":788,"children":789},{"style":76},[790],{"type":48,"value":791}," $REPO ",{"type":43,"tag":69,"props":793,"children":794},{"style":88},[795],{"type":48,"value":796},"--body",{"type":43,"tag":69,"props":798,"children":799},{"style":82},[800],{"type":48,"value":679},{"type":43,"tag":69,"props":802,"children":803},{"style":88},[804],{"type":48,"value":805},"\u002Fpublish",{"type":43,"tag":69,"props":807,"children":808},{"style":82},[809],{"type":48,"value":689},{"type":43,"tag":69,"props":811,"children":812},{"class":71,"line":293},[813],{"type":43,"tag":69,"props":814,"children":815},{"emptyLinePlaceholder":633},[816],{"type":48,"value":636},{"type":43,"tag":69,"props":818,"children":820},{"class":71,"line":819},6,[821],{"type":43,"tag":69,"props":822,"children":823},{"style":534},[824],{"type":48,"value":825},"# Check if publish already ran\n",{"type":43,"tag":69,"props":827,"children":829},{"class":71,"line":828},7,[830,834,838,843,847,851,855,859,863,867,872,877],{"type":43,"tag":69,"props":831,"children":832},{"style":592},[833],{"type":48,"value":595},{"type":43,"tag":69,"props":835,"children":836},{"style":88},[837],{"type":48,"value":657},{"type":43,"tag":69,"props":839,"children":840},{"style":88},[841],{"type":48,"value":842}," view",{"type":43,"tag":69,"props":844,"children":845},{"style":82},[846],{"type":48,"value":768},{"type":43,"tag":69,"props":848,"children":849},{"style":88},[850],{"type":48,"value":773},{"type":43,"tag":69,"props":852,"children":853},{"style":76},[854],{"type":48,"value":778},{"type":43,"tag":69,"props":856,"children":857},{"style":82},[858],{"type":48,"value":561},{"type":43,"tag":69,"props":860,"children":861},{"style":88},[862],{"type":48,"value":610},{"type":43,"tag":69,"props":864,"children":865},{"style":76},[866],{"type":48,"value":791},{"type":43,"tag":69,"props":868,"children":869},{"style":88},[870],{"type":48,"value":871},"--json",{"type":43,"tag":69,"props":873,"children":874},{"style":88},[875],{"type":48,"value":876}," statusCheckRollup",{"type":43,"tag":69,"props":878,"children":879},{"style":76},[880],{"type":48,"value":881}," \\\n",{"type":43,"tag":69,"props":883,"children":885},{"class":71,"line":884},8,[886,891,896,901],{"type":43,"tag":69,"props":887,"children":888},{"style":88},[889],{"type":48,"value":890},"  --jq",{"type":43,"tag":69,"props":892,"children":893},{"style":82},[894],{"type":48,"value":895}," '",{"type":43,"tag":69,"props":897,"children":898},{"style":88},[899],{"type":48,"value":900},".statusCheckRollup[] | select(.name | contains(\"publish\"))",{"type":43,"tag":69,"props":902,"children":903},{"style":82},[904],{"type":48,"value":905},"'\n",{"type":43,"tag":44,"props":907,"children":908},{},[909],{"type":43,"tag":51,"props":910,"children":911},{},[912],{"type":48,"value":913},"Guards before triggering:",{"type":43,"tag":233,"props":915,"children":916},{},[917,922,935],{"type":43,"tag":237,"props":918,"children":919},{},[920],{"type":48,"value":921},"PR is open (not closed\u002Fmerged)",{"type":43,"tag":237,"props":923,"children":924},{},[925,927,933],{"type":48,"value":926},"No ",{"type":43,"tag":65,"props":928,"children":930},{"className":929},[],[931],{"type":48,"value":932},"do-not-merge",{"type":48,"value":934}," label",{"type":43,"tag":237,"props":936,"children":937},{},[938],{"type":48,"value":939},"Publish check not already successful",{"type":43,"tag":44,"props":941,"children":942},{},[943,945,951,953,958],{"type":48,"value":944},"See ",{"type":43,"tag":65,"props":946,"children":948},{"className":947},[],[949],{"type":48,"value":950},"..\u002Frhdh\u002Freferences\u002Fgithub-reference.md",{"type":48,"value":952}," for full patterns. If unavailable, use standard ",{"type":43,"tag":65,"props":954,"children":956},{"className":955},[],[957],{"type":48,"value":595},{"type":48,"value":959}," CLI patterns.\n\u003C\u002Finline_publish_trigger>",{"type":43,"tag":44,"props":961,"children":962},{},[963,965,970,972,977,979,984,986,991,993,998],{"type":48,"value":964},"\u003Creference_index>\n",{"type":43,"tag":51,"props":966,"children":967},{},[968],{"type":48,"value":969},"Overlay repo patterns:",{"type":48,"value":971}," references\u002Foverlay-repo.md\n",{"type":43,"tag":51,"props":973,"children":974},{},[975],{"type":48,"value":976},"CI feedback interpretation:",{"type":48,"value":978}," references\u002Fci-feedback.md\n",{"type":43,"tag":51,"props":980,"children":981},{},[982],{"type":48,"value":983},"Metadata format:",{"type":48,"value":985}," references\u002Fmetadata-format.md\n",{"type":43,"tag":51,"props":987,"children":988},{},[989],{"type":48,"value":990},"PR label priorities:",{"type":48,"value":992}," references\u002Flabel-priority.md\n",{"type":43,"tag":51,"props":994,"children":995},{},[996],{"type":48,"value":997},"RHDH Local testing:",{"type":48,"value":999}," references\u002Frhdh-local.md",{"type":43,"tag":44,"props":1001,"children":1002},{},[1003,1008,1010,1016,1018,1023,1025,1031],{"type":43,"tag":51,"props":1004,"children":1005},{},[1006],{"type":48,"value":1007},"For GitHub\u002FJIRA patterns:",{"type":48,"value":1009}," See ",{"type":43,"tag":65,"props":1011,"children":1013},{"className":1012},[],[1014],{"type":48,"value":1015},"..\u002Frhdh\u002Freferences\u002F",{"type":48,"value":1017}," (if unavailable, use standard ",{"type":43,"tag":65,"props":1019,"children":1021},{"className":1020},[],[1022],{"type":48,"value":595},{"type":48,"value":1024}," \u002F ",{"type":43,"tag":65,"props":1026,"children":1028},{"className":1027},[],[1029],{"type":48,"value":1030},"acli",{"type":48,"value":1032}," patterns)\n\u003C\u002Freference_index>",{"type":43,"tag":44,"props":1034,"children":1035},{},[1036],{"type":48,"value":1037},"\u003Cworkflows_index>",{"type":43,"tag":217,"props":1039,"children":1041},{"id":1040},"plugin-owner-workflows",[1042],{"type":48,"value":1043},"Plugin Owner Workflows",{"type":43,"tag":340,"props":1045,"children":1046},{},[1047,1062],{"type":43,"tag":344,"props":1048,"children":1049},{},[1050],{"type":43,"tag":348,"props":1051,"children":1052},{},[1053,1057],{"type":43,"tag":352,"props":1054,"children":1055},{},[1056],{"type":48,"value":361},{"type":43,"tag":352,"props":1058,"children":1059},{},[1060],{"type":48,"value":1061},"Purpose",{"type":43,"tag":363,"props":1063,"children":1064},{},[1065,1078,1091],{"type":43,"tag":348,"props":1066,"children":1067},{},[1068,1073],{"type":43,"tag":370,"props":1069,"children":1070},{},[1071],{"type":48,"value":1072},"onboard-plugin.md",{"type":43,"tag":370,"props":1074,"children":1075},{},[1076],{"type":48,"value":1077},"Full 6-phase process to add new plugin",{"type":43,"tag":348,"props":1079,"children":1080},{},[1081,1086],{"type":43,"tag":370,"props":1082,"children":1083},{},[1084],{"type":48,"value":1085},"update-plugin.md",{"type":43,"tag":370,"props":1087,"children":1088},{},[1089],{"type":48,"value":1090},"Bump to newer upstream version",{"type":43,"tag":348,"props":1092,"children":1093},{},[1094,1099],{"type":43,"tag":370,"props":1095,"children":1096},{},[1097],{"type":48,"value":1098},"fix-build.md",{"type":43,"tag":370,"props":1100,"children":1101},{},[1102],{"type":48,"value":1103},"Debug and resolve CI failures",{"type":43,"tag":217,"props":1105,"children":1107},{"id":1106},"core-team-workflows",[1108],{"type":48,"value":1109},"Core Team Workflows",{"type":43,"tag":340,"props":1111,"children":1112},{},[1113,1127],{"type":43,"tag":344,"props":1114,"children":1115},{},[1116],{"type":43,"tag":348,"props":1117,"children":1118},{},[1119,1123],{"type":43,"tag":352,"props":1120,"children":1121},{},[1122],{"type":48,"value":361},{"type":43,"tag":352,"props":1124,"children":1125},{},[1126],{"type":48,"value":1061},{"type":43,"tag":363,"props":1128,"children":1129},{},[1130,1143,1156,1169],{"type":43,"tag":348,"props":1131,"children":1132},{},[1133,1138],{"type":43,"tag":370,"props":1134,"children":1135},{},[1136],{"type":48,"value":1137},"triage-prs.md",{"type":43,"tag":370,"props":1139,"children":1140},{},[1141],{"type":48,"value":1142},"Prioritize open PRs by criticality",{"type":43,"tag":348,"props":1144,"children":1145},{},[1146,1151],{"type":43,"tag":370,"props":1147,"children":1148},{},[1149],{"type":48,"value":1150},"analyze-pr.md",{"type":43,"tag":370,"props":1152,"children":1153},{},[1154],{"type":48,"value":1155},"Deep-dive on single PR (assignment, compat, readiness)",{"type":43,"tag":348,"props":1157,"children":1158},{},[1159,1164],{"type":43,"tag":370,"props":1160,"children":1161},{},[1162],{"type":48,"value":1163},"doctor.md",{"type":43,"tag":370,"props":1165,"children":1166},{},[1167],{"type":48,"value":1168},"Environment setup guidance",{"type":43,"tag":348,"props":1170,"children":1171},{},[1172,1177],{"type":43,"tag":370,"props":1173,"children":1174},{},[1175],{"type":48,"value":1176},"\u003C\u002Fworkflows_index>",{"type":43,"tag":370,"props":1178,"children":1179},{},[],{"type":43,"tag":44,"props":1181,"children":1182},{},[1183],{"type":48,"value":1184},"\u003Ctemplates_index>",{"type":43,"tag":340,"props":1186,"children":1187},{},[1188,1203],{"type":43,"tag":344,"props":1189,"children":1190},{},[1191],{"type":43,"tag":348,"props":1192,"children":1193},{},[1194,1199],{"type":43,"tag":352,"props":1195,"children":1196},{},[1197],{"type":48,"value":1198},"Template",{"type":43,"tag":352,"props":1200,"children":1201},{},[1202],{"type":48,"value":1061},{"type":43,"tag":363,"props":1204,"children":1205},{},[1206,1219],{"type":43,"tag":348,"props":1207,"children":1208},{},[1209,1214],{"type":43,"tag":370,"props":1210,"children":1211},{},[1212],{"type":48,"value":1213},"workspace-files.md",{"type":43,"tag":370,"props":1215,"children":1216},{},[1217],{"type":48,"value":1218},"source.json, plugins-list.yaml, backstage.json",{"type":43,"tag":348,"props":1220,"children":1221},{},[1222,1227],{"type":43,"tag":370,"props":1223,"children":1224},{},[1225],{"type":48,"value":1226},"\u003C\u002Ftemplates_index>",{"type":43,"tag":370,"props":1228,"children":1229},{},[],{"type":43,"tag":44,"props":1231,"children":1232},{},[1233],{"type":48,"value":1234},"\u003Csuccess_criteria>",{"type":43,"tag":217,"props":1236,"children":1238},{"id":1237},"plugin-owner-success",[1239],{"type":48,"value":1240},"Plugin Owner Success",{"type":43,"tag":1242,"props":1243,"children":1244},"ul",{},[1245,1250,1255,1267,1272,1277],{"type":43,"tag":237,"props":1246,"children":1247},{},[1248],{"type":48,"value":1249},"Plugin workspace created with correct structure",{"type":43,"tag":237,"props":1251,"children":1252},{},[1253],{"type":48,"value":1254},"CODEOWNERS entry added for the workspace",{"type":43,"tag":237,"props":1256,"children":1257},{},[1258,1260,1265],{"type":48,"value":1259},"CI passes (",{"type":43,"tag":65,"props":1261,"children":1263},{"className":1262},[],[1264],{"type":48,"value":805},{"type":48,"value":1266}," succeeds)",{"type":43,"tag":237,"props":1268,"children":1269},{},[1270],{"type":48,"value":1271},"Plugin tested locally with rhdh-local",{"type":43,"tag":237,"props":1273,"children":1274},{},[1275],{"type":48,"value":1276},"PR merged to overlay repo",{"type":43,"tag":237,"props":1278,"children":1279},{},[1280,1285,1287],{"type":43,"tag":227,"props":1281,"children":1282},{},[1283],{"type":48,"value":1284},"(Recommended)",{"type":48,"value":1286}," Activity logged via ",{"type":43,"tag":65,"props":1288,"children":1290},{"className":1289},[],[1291],{"type":48,"value":1292},"$RHDH log add",{"type":43,"tag":217,"props":1294,"children":1296},{"id":1295},"core-team-success",[1297],{"type":48,"value":1298},"Core Team Success",{"type":43,"tag":1242,"props":1300,"children":1301},{},[1302,1307,1312,1317,1322],{"type":43,"tag":237,"props":1303,"children":1304},{},[1305],{"type":48,"value":1306},"PR backlog prioritized with actionable next steps",{"type":43,"tag":237,"props":1308,"children":1309},{},[1310],{"type":48,"value":1311},"Stale PRs identified with suggested owners",{"type":43,"tag":237,"props":1313,"children":1314},{},[1315],{"type":48,"value":1316},"Publish triggered on PRs needing it",{"type":43,"tag":237,"props":1318,"children":1319},{},[1320],{"type":48,"value":1321},"Compatibility issues flagged before merge",{"type":43,"tag":237,"props":1323,"children":1324},{},[1325,1329,1331,1337],{"type":43,"tag":227,"props":1326,"children":1327},{},[1328],{"type":48,"value":1284},{"type":48,"value":1330}," Triage session logged, follow-ups tracked via ",{"type":43,"tag":65,"props":1332,"children":1334},{"className":1333},[],[1335],{"type":48,"value":1336},"$RHDH todo",{"type":48,"value":1338},"\n\u003C\u002Fsuccess_criteria>",{"type":43,"tag":1340,"props":1341,"children":1342},"style",{},[1343],{"type":48,"value":1344},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1346,"total":1509},[1347,1361,1375,1390,1406,1423,1434,1453,1465,1478,1490,1502],{"slug":1348,"name":1348,"fn":1349,"description":1350,"org":1351,"tags":1352,"stars":26,"repoUrl":27,"updatedAt":1360},"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},[1353,1356,1359],{"name":1354,"slug":1355,"type":16},"Agents","agents",{"name":1357,"slug":1358,"type":16},"Code Analysis","code-analysis",{"name":24,"slug":25,"type":16},"2026-07-16T06:03:24.758348",{"slug":1362,"name":1362,"fn":1363,"description":1364,"org":1365,"tags":1366,"stars":26,"repoUrl":27,"updatedAt":1374},"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},[1367,1368,1371],{"name":24,"slug":25,"type":16},{"name":1369,"slug":1370,"type":16},"Maintenance","maintenance",{"name":1372,"slug":1373,"type":16},"Migration","migration","2026-07-16T06:03:24.067361",{"slug":1376,"name":1376,"fn":1377,"description":1378,"org":1379,"tags":1380,"stars":26,"repoUrl":27,"updatedAt":1389},"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},[1381,1382,1385,1388],{"name":14,"slug":15,"type":16},{"name":1383,"slug":1384,"type":16},"Configuration","configuration",{"name":1386,"slug":1387,"type":16},"Containers","containers",{"name":21,"slug":22,"type":16},"2026-07-16T06:03:27.784453",{"slug":1391,"name":1391,"fn":1392,"description":1393,"org":1394,"tags":1395,"stars":26,"repoUrl":27,"updatedAt":1405},"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},[1396,1399,1402],{"name":1397,"slug":1398,"type":16},"Debugging","debugging",{"name":1400,"slug":1401,"type":16},"QA","qa",{"name":1403,"slug":1404,"type":16},"Testing","testing","2026-07-29T06:00:33.054762",{"slug":1407,"name":1407,"fn":1408,"description":1409,"org":1410,"tags":1411,"stars":26,"repoUrl":27,"updatedAt":1422},"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},[1412,1415,1416,1419],{"name":1413,"slug":1414,"type":16},"Compliance","compliance",{"name":24,"slug":25,"type":16},{"name":1417,"slug":1418,"type":16},"Reporting","reporting",{"name":1420,"slug":1421,"type":16},"Security","security","2026-08-01T05:41:57.852801",{"slug":1424,"name":1424,"fn":1425,"description":1426,"org":1427,"tags":1428,"stars":26,"repoUrl":27,"updatedAt":1433},"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},[1429,1430],{"name":21,"slug":22,"type":16},{"name":1431,"slug":1432,"type":16},"Plugin Development","plugin-development","2026-07-16T06:02:28.983498",{"slug":1435,"name":1435,"fn":1436,"description":1437,"org":1438,"tags":1439,"stars":26,"repoUrl":27,"updatedAt":1452},"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},[1440,1443,1446,1449],{"name":1441,"slug":1442,"type":16},"Auth","auth",{"name":1444,"slug":1445,"type":16},"Jira","jira",{"name":1447,"slug":1448,"type":16},"MCP","mcp",{"name":1450,"slug":1451,"type":16},"OAuth","oauth","2026-07-29T06:00:33.525179",{"slug":1454,"name":1454,"fn":1455,"description":1456,"org":1457,"tags":1458,"stars":26,"repoUrl":27,"updatedAt":1464},"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},[1459,1460,1461],{"name":14,"slug":15,"type":16},{"name":21,"slug":22,"type":16},{"name":1462,"slug":1463,"type":16},"GitLab","gitlab","2026-07-16T06:00:19.516231",{"slug":1466,"name":1466,"fn":1467,"description":1468,"org":1469,"tags":1470,"stars":26,"repoUrl":27,"updatedAt":1477},"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},[1471,1472,1475,1476],{"name":14,"slug":15,"type":16},{"name":1473,"slug":1474,"type":16},"CI\u002FCD","ci-cd",{"name":21,"slug":22,"type":16},{"name":24,"slug":25,"type":16},"2026-07-16T06:03:28.123118",{"slug":1479,"name":1479,"fn":1480,"description":1481,"org":1482,"tags":1483,"stars":26,"repoUrl":27,"updatedAt":1489},"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},[1484,1485,1486],{"name":1413,"slug":1414,"type":16},{"name":1369,"slug":1370,"type":16},{"name":1487,"slug":1488,"type":16},"Operations","operations","2026-07-16T06:03:19.344038",{"slug":1491,"name":1491,"fn":1492,"description":1493,"org":1494,"tags":1495,"stars":26,"repoUrl":27,"updatedAt":1501},"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},[1496,1497,1500],{"name":24,"slug":25,"type":16},{"name":1498,"slug":1499,"type":16},"Frontend","frontend",{"name":1372,"slug":1373,"type":16},"2026-07-16T06:03:27.078987",{"slug":4,"name":4,"fn":5,"description":6,"org":1503,"tags":1504,"stars":26,"repoUrl":27,"updatedAt":28},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1505,1506,1507,1508],{"name":14,"slug":15,"type":16},{"name":18,"slug":19,"type":16},{"name":21,"slug":22,"type":16},{"name":24,"slug":25,"type":16},24,{"items":1511,"total":1509},[1512,1518,1524,1531,1537,1544,1549],{"slug":1348,"name":1348,"fn":1349,"description":1350,"org":1513,"tags":1514,"stars":26,"repoUrl":27,"updatedAt":1360},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1515,1516,1517],{"name":1354,"slug":1355,"type":16},{"name":1357,"slug":1358,"type":16},{"name":24,"slug":25,"type":16},{"slug":1362,"name":1362,"fn":1363,"description":1364,"org":1519,"tags":1520,"stars":26,"repoUrl":27,"updatedAt":1374},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1521,1522,1523],{"name":24,"slug":25,"type":16},{"name":1369,"slug":1370,"type":16},{"name":1372,"slug":1373,"type":16},{"slug":1376,"name":1376,"fn":1377,"description":1378,"org":1525,"tags":1526,"stars":26,"repoUrl":27,"updatedAt":1389},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1527,1528,1529,1530],{"name":14,"slug":15,"type":16},{"name":1383,"slug":1384,"type":16},{"name":1386,"slug":1387,"type":16},{"name":21,"slug":22,"type":16},{"slug":1391,"name":1391,"fn":1392,"description":1393,"org":1532,"tags":1533,"stars":26,"repoUrl":27,"updatedAt":1405},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1534,1535,1536],{"name":1397,"slug":1398,"type":16},{"name":1400,"slug":1401,"type":16},{"name":1403,"slug":1404,"type":16},{"slug":1407,"name":1407,"fn":1408,"description":1409,"org":1538,"tags":1539,"stars":26,"repoUrl":27,"updatedAt":1422},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1540,1541,1542,1543],{"name":1413,"slug":1414,"type":16},{"name":24,"slug":25,"type":16},{"name":1417,"slug":1418,"type":16},{"name":1420,"slug":1421,"type":16},{"slug":1424,"name":1424,"fn":1425,"description":1426,"org":1545,"tags":1546,"stars":26,"repoUrl":27,"updatedAt":1433},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1547,1548],{"name":21,"slug":22,"type":16},{"name":1431,"slug":1432,"type":16},{"slug":1435,"name":1435,"fn":1436,"description":1437,"org":1550,"tags":1551,"stars":26,"repoUrl":27,"updatedAt":1452},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1552,1553,1554,1555],{"name":1441,"slug":1442,"type":16},{"name":1444,"slug":1445,"type":16},{"name":1447,"slug":1448,"type":16},{"name":1450,"slug":1451,"type":16}]