[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-openshift-namespace-troubleshooting":3,"mdc--o8l63a-key":35,"related-org-openshift-namespace-troubleshooting":442,"related-repo-openshift-namespace-troubleshooting":554},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":24,"repoUrl":25,"updatedAt":26,"license":27,"forks":28,"topics":29,"repo":30,"sourceUrl":33,"mdContent":34},"namespace-troubleshooting","troubleshoot OpenShift namespace and RBAC issues","Troubleshoot namespace stuck in Terminating state, ResourceQuota exhaustion, or RBAC permission denied errors. Use when resources cannot be created or forbidden errors occur.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"openshift","OpenShift (Red Hat)","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fopenshift.png",[12,16,19,21],{"name":13,"slug":14,"type":15},"SRE","sre","tag",{"name":17,"slug":18,"type":15},"Access Control","access-control",{"name":20,"slug":8,"type":15},"OpenShift",{"name":22,"slug":23,"type":15},"Debugging","debugging",70,"https:\u002F\u002Fgithub.com\u002Fopenshift\u002Flightspeed-service","2026-04-06T18:43:29.107881",null,88,[],{"repoUrl":25,"stars":24,"forks":28,"topics":31,"description":32},[],"Core repository for an AI-powered OCP assistant service","https:\u002F\u002Fgithub.com\u002Fopenshift\u002Flightspeed-service\u002Ftree\u002FHEAD\u002Fskills\u002Fnamespace-troubleshooting","---\nname: namespace-troubleshooting\ndescription: Troubleshoot namespace stuck in Terminating state, ResourceQuota exhaustion, or RBAC permission denied errors. Use when resources cannot be created or forbidden errors occur.\n---\n\n# Namespace Troubleshooting\n\nWhen a user reports issues at the namespace\u002Fproject level — stuck deletion, inability to create resources, or permission errors — follow this structured approach to identify the specific blocker and provide a targeted fix.\n\n## 1. Check Namespace Status\n\nStart by confirming the namespace exists and its phase:\n\n1. If the namespace is **Active**: the issue is likely quota, LimitRange, or RBAC. Proceed to the relevant section based on the user's symptom.\n2. If the namespace is **Terminating**: proceed to the stuck termination triage.\n3. If the namespace does not exist: confirm with the user whether it was recently deleted or never created.\n\n## 2. Stuck Terminating Namespace\n\nIf the namespace is stuck in Terminating state:\n\n1. Check the namespace's `metadata.finalizers` — these are the hooks preventing deletion.\n2. List all resources still remaining in the namespace. Kubernetes cannot remove the namespace until all resources with finalizers are cleaned up.\n3. Identify which specific resources are blocking:\n   - **Custom Resources with finalizers**: the operator managing them may be absent or broken. Check if the CRD's controller is running.\n   - **PersistentVolumeClaims**: the underlying PV may be stuck in Released state or the storage provisioner is not cleaning up.\n   - **Pods with long graceful termination**: check if pods have unusually long `terminationGracePeriodSeconds` or are stuck in pre-stop hooks.\n4. For each blocking resource, explain what the finalizer protects and the consequences of removing it.\n5. If a finalizer must be removed manually, provide the specific command but warn that this skips cleanup — the external resource (PV, cloud resource, etc.) may be orphaned.\n\nNever suggest blanket removal of namespace finalizers (\"just patch the namespace to remove all finalizers\"). This skips all cleanup and leaks resources. Always identify and address the specific blocking resources first.\n\n## 3. Quota Exhaustion\n\nIf deployments or pods fail to create with quota-related errors:\n\n1. List the ResourceQuota objects in the namespace and their current usage vs. limits.\n2. Show the arithmetic: what the new pod\u002Fdeployment requests + what is already consumed vs. the quota limit.\n3. Identify which specific resource is exhausted (cpu, memory, pods count, services, configmaps, etc.).\n4. Recommend the appropriate fix:\n   - If the quota is legitimately too low: increase it (and note who has permission to do so).\n   - If existing resources are consuming more than expected: identify the top consumers.\n   - If completed Jobs or failed pods are consuming quota: suggest cleaning them up.\n\nAlways show the numbers. \"Quota exceeded\" without showing the actual usage vs. limit is not actionable.\n\n## 4. LimitRange Violations\n\nIf pod creation fails with LimitRange-related errors:\n\n1. List the LimitRange objects in the namespace.\n2. Compare the pod's resource requests and limits against the LimitRange constraints:\n   - **Min\u002FMax violations**: the pod requests less than the minimum or more than the maximum allowed.\n   - **Default applied unexpectedly**: if the pod has no resource requests, the LimitRange default is applied — this may conflict with the application's actual needs.\n   - **MaxLimitRequestRatio**: the ratio between the pod's limit and request exceeds the allowed ratio.\n3. Show exactly which constraint is violated and by how much.\n4. Recommend adjusting either the pod's resources or the LimitRange, depending on which is the source of truth.\n\n## 5. RBAC \u002F Permission Issues\n\nIf the user gets `Forbidden` errors when operating in the namespace:\n\n1. Ask for or identify the exact error message — it contains the verb, resource, and API group being denied.\n2. Check the user's RoleBindings in the namespace and their ClusterRoleBindings.\n3. Identify whether the user has a Role that includes the required verb + resource combination.\n4. If the permission is missing: recommend creating a specific RoleBinding. Specify the exact Role or ClusterRole to bind — do not default to \"give them admin.\"\n5. If the user should not have the permission: confirm this is expected and explain who does have it.\n\nAlways specify the exact verb+resource the user is missing (e.g., \"create deployments.apps\") rather than vaguely saying \"insufficient permissions.\"\n\n## 6. Project-Specific Considerations\n\nOpenShift Projects are namespaces with additional metadata. If the issue involves Projects specifically:\n\n1. Check if a ProjectRequest template is in use — it may inject default quotas, LimitRanges, or NetworkPolicies that cause unexpected restrictions.\n2. Check if the user's ability to create Projects is controlled by a `self-provisioner` ClusterRoleBinding — removal of this binding prevents users from creating their own Projects.\n3. For multi-tenant clusters: check if NetworkPolicies in the namespace are blocking expected traffic between namespaces.\n\n## Quality Standards\n\n- For stuck Terminating: always list the specific resources and finalizers blocking deletion. Never suggest removing namespace finalizers without first identifying what they protect.\n- For quota: show the arithmetic (requested + existing usage vs. limit). An error message without numbers is not actionable.\n- For RBAC: specify the exact verb+resource the user is missing, not just \"add admin role.\" Least-privilege matters.\n- For LimitRange: show which constraint is violated and by how much, not just that a violation exists.\n- If the issue spans multiple categories (e.g., quota is full AND RBAC prevents the user from adjusting it), address both and clarify the dependency.\n",{"data":36,"body":37},{"name":4,"description":6},{"type":38,"children":39},"root",[40,48,54,61,66,100,106,111,190,195,201,206,247,252,258,263,319,325,338,366,371,377,382,408,414],{"type":41,"tag":42,"props":43,"children":44},"element","h1",{"id":4},[45],{"type":46,"value":47},"text","Namespace Troubleshooting",{"type":41,"tag":49,"props":50,"children":51},"p",{},[52],{"type":46,"value":53},"When a user reports issues at the namespace\u002Fproject level — stuck deletion, inability to create resources, or permission errors — follow this structured approach to identify the specific blocker and provide a targeted fix.",{"type":41,"tag":55,"props":56,"children":58},"h2",{"id":57},"_1-check-namespace-status",[59],{"type":46,"value":60},"1. Check Namespace Status",{"type":41,"tag":49,"props":62,"children":63},{},[64],{"type":46,"value":65},"Start by confirming the namespace exists and its phase:",{"type":41,"tag":67,"props":68,"children":69},"ol",{},[70,84,95],{"type":41,"tag":71,"props":72,"children":73},"li",{},[74,76,82],{"type":46,"value":75},"If the namespace is ",{"type":41,"tag":77,"props":78,"children":79},"strong",{},[80],{"type":46,"value":81},"Active",{"type":46,"value":83},": the issue is likely quota, LimitRange, or RBAC. Proceed to the relevant section based on the user's symptom.",{"type":41,"tag":71,"props":85,"children":86},{},[87,88,93],{"type":46,"value":75},{"type":41,"tag":77,"props":89,"children":90},{},[91],{"type":46,"value":92},"Terminating",{"type":46,"value":94},": proceed to the stuck termination triage.",{"type":41,"tag":71,"props":96,"children":97},{},[98],{"type":46,"value":99},"If the namespace does not exist: confirm with the user whether it was recently deleted or never created.",{"type":41,"tag":55,"props":101,"children":103},{"id":102},"_2-stuck-terminating-namespace",[104],{"type":46,"value":105},"2. Stuck Terminating Namespace",{"type":41,"tag":49,"props":107,"children":108},{},[109],{"type":46,"value":110},"If the namespace is stuck in Terminating state:",{"type":41,"tag":67,"props":112,"children":113},{},[114,128,133,180,185],{"type":41,"tag":71,"props":115,"children":116},{},[117,119,126],{"type":46,"value":118},"Check the namespace's ",{"type":41,"tag":120,"props":121,"children":123},"code",{"className":122},[],[124],{"type":46,"value":125},"metadata.finalizers",{"type":46,"value":127}," — these are the hooks preventing deletion.",{"type":41,"tag":71,"props":129,"children":130},{},[131],{"type":46,"value":132},"List all resources still remaining in the namespace. Kubernetes cannot remove the namespace until all resources with finalizers are cleaned up.",{"type":41,"tag":71,"props":134,"children":135},{},[136,138],{"type":46,"value":137},"Identify which specific resources are blocking:\n",{"type":41,"tag":139,"props":140,"children":141},"ul",{},[142,152,162],{"type":41,"tag":71,"props":143,"children":144},{},[145,150],{"type":41,"tag":77,"props":146,"children":147},{},[148],{"type":46,"value":149},"Custom Resources with finalizers",{"type":46,"value":151},": the operator managing them may be absent or broken. Check if the CRD's controller is running.",{"type":41,"tag":71,"props":153,"children":154},{},[155,160],{"type":41,"tag":77,"props":156,"children":157},{},[158],{"type":46,"value":159},"PersistentVolumeClaims",{"type":46,"value":161},": the underlying PV may be stuck in Released state or the storage provisioner is not cleaning up.",{"type":41,"tag":71,"props":163,"children":164},{},[165,170,172,178],{"type":41,"tag":77,"props":166,"children":167},{},[168],{"type":46,"value":169},"Pods with long graceful termination",{"type":46,"value":171},": check if pods have unusually long ",{"type":41,"tag":120,"props":173,"children":175},{"className":174},[],[176],{"type":46,"value":177},"terminationGracePeriodSeconds",{"type":46,"value":179}," or are stuck in pre-stop hooks.",{"type":41,"tag":71,"props":181,"children":182},{},[183],{"type":46,"value":184},"For each blocking resource, explain what the finalizer protects and the consequences of removing it.",{"type":41,"tag":71,"props":186,"children":187},{},[188],{"type":46,"value":189},"If a finalizer must be removed manually, provide the specific command but warn that this skips cleanup — the external resource (PV, cloud resource, etc.) may be orphaned.",{"type":41,"tag":49,"props":191,"children":192},{},[193],{"type":46,"value":194},"Never suggest blanket removal of namespace finalizers (\"just patch the namespace to remove all finalizers\"). This skips all cleanup and leaks resources. Always identify and address the specific blocking resources first.",{"type":41,"tag":55,"props":196,"children":198},{"id":197},"_3-quota-exhaustion",[199],{"type":46,"value":200},"3. Quota Exhaustion",{"type":41,"tag":49,"props":202,"children":203},{},[204],{"type":46,"value":205},"If deployments or pods fail to create with quota-related errors:",{"type":41,"tag":67,"props":207,"children":208},{},[209,214,219,224],{"type":41,"tag":71,"props":210,"children":211},{},[212],{"type":46,"value":213},"List the ResourceQuota objects in the namespace and their current usage vs. limits.",{"type":41,"tag":71,"props":215,"children":216},{},[217],{"type":46,"value":218},"Show the arithmetic: what the new pod\u002Fdeployment requests + what is already consumed vs. the quota limit.",{"type":41,"tag":71,"props":220,"children":221},{},[222],{"type":46,"value":223},"Identify which specific resource is exhausted (cpu, memory, pods count, services, configmaps, etc.).",{"type":41,"tag":71,"props":225,"children":226},{},[227,229],{"type":46,"value":228},"Recommend the appropriate fix:\n",{"type":41,"tag":139,"props":230,"children":231},{},[232,237,242],{"type":41,"tag":71,"props":233,"children":234},{},[235],{"type":46,"value":236},"If the quota is legitimately too low: increase it (and note who has permission to do so).",{"type":41,"tag":71,"props":238,"children":239},{},[240],{"type":46,"value":241},"If existing resources are consuming more than expected: identify the top consumers.",{"type":41,"tag":71,"props":243,"children":244},{},[245],{"type":46,"value":246},"If completed Jobs or failed pods are consuming quota: suggest cleaning them up.",{"type":41,"tag":49,"props":248,"children":249},{},[250],{"type":46,"value":251},"Always show the numbers. \"Quota exceeded\" without showing the actual usage vs. limit is not actionable.",{"type":41,"tag":55,"props":253,"children":255},{"id":254},"_4-limitrange-violations",[256],{"type":46,"value":257},"4. LimitRange Violations",{"type":41,"tag":49,"props":259,"children":260},{},[261],{"type":46,"value":262},"If pod creation fails with LimitRange-related errors:",{"type":41,"tag":67,"props":264,"children":265},{},[266,271,309,314],{"type":41,"tag":71,"props":267,"children":268},{},[269],{"type":46,"value":270},"List the LimitRange objects in the namespace.",{"type":41,"tag":71,"props":272,"children":273},{},[274,276],{"type":46,"value":275},"Compare the pod's resource requests and limits against the LimitRange constraints:\n",{"type":41,"tag":139,"props":277,"children":278},{},[279,289,299],{"type":41,"tag":71,"props":280,"children":281},{},[282,287],{"type":41,"tag":77,"props":283,"children":284},{},[285],{"type":46,"value":286},"Min\u002FMax violations",{"type":46,"value":288},": the pod requests less than the minimum or more than the maximum allowed.",{"type":41,"tag":71,"props":290,"children":291},{},[292,297],{"type":41,"tag":77,"props":293,"children":294},{},[295],{"type":46,"value":296},"Default applied unexpectedly",{"type":46,"value":298},": if the pod has no resource requests, the LimitRange default is applied — this may conflict with the application's actual needs.",{"type":41,"tag":71,"props":300,"children":301},{},[302,307],{"type":41,"tag":77,"props":303,"children":304},{},[305],{"type":46,"value":306},"MaxLimitRequestRatio",{"type":46,"value":308},": the ratio between the pod's limit and request exceeds the allowed ratio.",{"type":41,"tag":71,"props":310,"children":311},{},[312],{"type":46,"value":313},"Show exactly which constraint is violated and by how much.",{"type":41,"tag":71,"props":315,"children":316},{},[317],{"type":46,"value":318},"Recommend adjusting either the pod's resources or the LimitRange, depending on which is the source of truth.",{"type":41,"tag":55,"props":320,"children":322},{"id":321},"_5-rbac-permission-issues",[323],{"type":46,"value":324},"5. RBAC \u002F Permission Issues",{"type":41,"tag":49,"props":326,"children":327},{},[328,330,336],{"type":46,"value":329},"If the user gets ",{"type":41,"tag":120,"props":331,"children":333},{"className":332},[],[334],{"type":46,"value":335},"Forbidden",{"type":46,"value":337}," errors when operating in the namespace:",{"type":41,"tag":67,"props":339,"children":340},{},[341,346,351,356,361],{"type":41,"tag":71,"props":342,"children":343},{},[344],{"type":46,"value":345},"Ask for or identify the exact error message — it contains the verb, resource, and API group being denied.",{"type":41,"tag":71,"props":347,"children":348},{},[349],{"type":46,"value":350},"Check the user's RoleBindings in the namespace and their ClusterRoleBindings.",{"type":41,"tag":71,"props":352,"children":353},{},[354],{"type":46,"value":355},"Identify whether the user has a Role that includes the required verb + resource combination.",{"type":41,"tag":71,"props":357,"children":358},{},[359],{"type":46,"value":360},"If the permission is missing: recommend creating a specific RoleBinding. Specify the exact Role or ClusterRole to bind — do not default to \"give them admin.\"",{"type":41,"tag":71,"props":362,"children":363},{},[364],{"type":46,"value":365},"If the user should not have the permission: confirm this is expected and explain who does have it.",{"type":41,"tag":49,"props":367,"children":368},{},[369],{"type":46,"value":370},"Always specify the exact verb+resource the user is missing (e.g., \"create deployments.apps\") rather than vaguely saying \"insufficient permissions.\"",{"type":41,"tag":55,"props":372,"children":374},{"id":373},"_6-project-specific-considerations",[375],{"type":46,"value":376},"6. Project-Specific Considerations",{"type":41,"tag":49,"props":378,"children":379},{},[380],{"type":46,"value":381},"OpenShift Projects are namespaces with additional metadata. If the issue involves Projects specifically:",{"type":41,"tag":67,"props":383,"children":384},{},[385,390,403],{"type":41,"tag":71,"props":386,"children":387},{},[388],{"type":46,"value":389},"Check if a ProjectRequest template is in use — it may inject default quotas, LimitRanges, or NetworkPolicies that cause unexpected restrictions.",{"type":41,"tag":71,"props":391,"children":392},{},[393,395,401],{"type":46,"value":394},"Check if the user's ability to create Projects is controlled by a ",{"type":41,"tag":120,"props":396,"children":398},{"className":397},[],[399],{"type":46,"value":400},"self-provisioner",{"type":46,"value":402}," ClusterRoleBinding — removal of this binding prevents users from creating their own Projects.",{"type":41,"tag":71,"props":404,"children":405},{},[406],{"type":46,"value":407},"For multi-tenant clusters: check if NetworkPolicies in the namespace are blocking expected traffic between namespaces.",{"type":41,"tag":55,"props":409,"children":411},{"id":410},"quality-standards",[412],{"type":46,"value":413},"Quality Standards",{"type":41,"tag":139,"props":415,"children":416},{},[417,422,427,432,437],{"type":41,"tag":71,"props":418,"children":419},{},[420],{"type":46,"value":421},"For stuck Terminating: always list the specific resources and finalizers blocking deletion. Never suggest removing namespace finalizers without first identifying what they protect.",{"type":41,"tag":71,"props":423,"children":424},{},[425],{"type":46,"value":426},"For quota: show the arithmetic (requested + existing usage vs. limit). An error message without numbers is not actionable.",{"type":41,"tag":71,"props":428,"children":429},{},[430],{"type":46,"value":431},"For RBAC: specify the exact verb+resource the user is missing, not just \"add admin role.\" Least-privilege matters.",{"type":41,"tag":71,"props":433,"children":434},{},[435],{"type":46,"value":436},"For LimitRange: show which constraint is violated and by how much, not just that a violation exists.",{"type":41,"tag":71,"props":438,"children":439},{},[440],{"type":46,"value":441},"If the issue spans multiple categories (e.g., quota is full AND RBAC prevents the user from adjusting it), address both and clarify the dependency.",{"items":443,"total":553},[444,457,464,477,490,503,520,531,541],{"slug":445,"name":445,"fn":446,"description":447,"org":448,"tags":449,"stars":24,"repoUrl":25,"updatedAt":456},"degraded-operator-recovery","recover degraded OpenShift cluster operators","Troubleshoot ClusterOperator in Degraded, Unavailable, or not Progressing state. Use when operator status shows error conditions, reconciliation failures, or degraded health checks.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[450,451,452,455],{"name":22,"slug":23,"type":15},{"name":20,"slug":8,"type":15},{"name":453,"slug":454,"type":15},"Operations","operations",{"name":13,"slug":14,"type":15},"2026-04-06T18:43:30.354728",{"slug":4,"name":4,"fn":5,"description":6,"org":458,"tags":459,"stars":24,"repoUrl":25,"updatedAt":26},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[460,461,462,463],{"name":17,"slug":18,"type":15},{"name":22,"slug":23,"type":15},{"name":20,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"slug":465,"name":465,"fn":466,"description":467,"org":468,"tags":469,"stars":24,"repoUrl":25,"updatedAt":476},"node-not-ready","troubleshoot OpenShift node status issues","Troubleshoot NotReady or SchedulingDisabled node status. Use when a node is down, unschedulable, or needs to be drained and restored.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[470,471,474,475],{"name":22,"slug":23,"type":15},{"name":472,"slug":473,"type":15},"Engineering","engineering",{"name":20,"slug":8,"type":15},{"name":453,"slug":454,"type":15},"2026-04-06T18:43:26.607462",{"slug":478,"name":478,"fn":479,"description":480,"org":481,"tags":482,"stars":24,"repoUrl":25,"updatedAt":489},"pod-failure-diagnosis","diagnose OpenShift pod failure states","Troubleshoot CrashLoopBackOff, ImagePullBackOff, Pending, Error, or OOMKilled status. Use when a workload keeps restarting, fails to start, or is crash-looping.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[483,484,487,488],{"name":22,"slug":23,"type":15},{"name":485,"slug":486,"type":15},"Kubernetes","kubernetes",{"name":20,"slug":8,"type":15},{"name":13,"slug":14,"type":15},"2026-04-06T18:43:27.866868",{"slug":491,"name":491,"fn":492,"description":493,"org":494,"tags":495,"stars":24,"repoUrl":25,"updatedAt":502},"route-ingress-troubleshooting","troubleshoot OpenShift Route and Ingress connectivity","Troubleshoot Route or Ingress connectivity failures. Use when traffic returns 502, 503, connection refused, or the endpoint is not reachable externally.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[496,497,500,501],{"name":22,"slug":23,"type":15},{"name":498,"slug":499,"type":15},"Networking","networking",{"name":20,"slug":8,"type":15},{"name":13,"slug":14,"type":15},"2026-04-06T18:43:31.593028",{"slug":504,"name":504,"fn":505,"description":506,"org":507,"tags":508,"stars":517,"repoUrl":518,"updatedAt":519},"cluster-update-advisor","assess OpenShift cluster update readiness","Assess OpenShift cluster update (upgrade) readiness and risk. Use when evaluating whether a cluster is safe to update, when an update is available, or when the user asks about update risks, prerequisites, blockers, or best practices.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[509,512,513,514],{"name":510,"slug":511,"type":15},"Deployment","deployment",{"name":20,"slug":8,"type":15},{"name":453,"slug":454,"type":15},{"name":515,"slug":516,"type":15},"Risk Assessment","risk-assessment",5,"https:\u002F\u002Fgithub.com\u002Fopenshift\u002Fagentic-skills","2026-05-12T06:07:16.759342",{"slug":521,"name":521,"fn":522,"description":523,"org":524,"tags":525,"stars":517,"repoUrl":518,"updatedAt":530},"kubernetes-docs","search and read Kubernetes documentation","Search and read Kubernetes documentation in markdown format. Use when the user asks about Kubernetes concepts, tasks, API reference, kubectl, or any upstream k8s topic — including pods, deployments, services, RBAC, networking, storage, or scheduling.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[526,529],{"name":527,"slug":528,"type":15},"Documentation","documentation",{"name":485,"slug":486,"type":15},"2026-05-12T06:07:15.393562",{"slug":532,"name":532,"fn":533,"description":534,"org":535,"tags":536,"stars":517,"repoUrl":518,"updatedAt":540},"openshift-docs","search and read OpenShift documentation","Search and read OpenShift Container Platform documentation in markdown format. Use when the user asks about OpenShift features, configuration, installation, troubleshooting, or any OCP-specific topic — including operators, routes, services, oc, RBAC, networking, storage, or cluster administration.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[537,538,539],{"name":527,"slug":528,"type":15},{"name":485,"slug":486,"type":15},{"name":20,"slug":8,"type":15},"2026-05-12T06:07:14.03809",{"slug":542,"name":542,"fn":543,"description":544,"org":545,"tags":546,"stars":517,"repoUrl":518,"updatedAt":552},"product-lifecycle","query Red Hat product lifecycle data","Query Red Hat Product Life Cycle data for support phases, end-of-life dates, and OpenShift version compatibility. Use when evaluating whether installed operators or layered products are supported on a given OCP version, approaching end of life, or need upgrading before a cluster upgrade. Also use when the user asks about product support status, EOL dates, or lifecycle phases for any Red Hat product.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[547,548,549],{"name":20,"slug":8,"type":15},{"name":453,"slug":454,"type":15},{"name":550,"slug":551,"type":15},"Reporting","reporting","2026-07-31T05:55:39.981651",9,{"items":555,"total":517},[556,563,570,577,584],{"slug":445,"name":445,"fn":446,"description":447,"org":557,"tags":558,"stars":24,"repoUrl":25,"updatedAt":456},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[559,560,561,562],{"name":22,"slug":23,"type":15},{"name":20,"slug":8,"type":15},{"name":453,"slug":454,"type":15},{"name":13,"slug":14,"type":15},{"slug":4,"name":4,"fn":5,"description":6,"org":564,"tags":565,"stars":24,"repoUrl":25,"updatedAt":26},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[566,567,568,569],{"name":17,"slug":18,"type":15},{"name":22,"slug":23,"type":15},{"name":20,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"slug":465,"name":465,"fn":466,"description":467,"org":571,"tags":572,"stars":24,"repoUrl":25,"updatedAt":476},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[573,574,575,576],{"name":22,"slug":23,"type":15},{"name":472,"slug":473,"type":15},{"name":20,"slug":8,"type":15},{"name":453,"slug":454,"type":15},{"slug":478,"name":478,"fn":479,"description":480,"org":578,"tags":579,"stars":24,"repoUrl":25,"updatedAt":489},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[580,581,582,583],{"name":22,"slug":23,"type":15},{"name":485,"slug":486,"type":15},{"name":20,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"slug":491,"name":491,"fn":492,"description":493,"org":585,"tags":586,"stars":24,"repoUrl":25,"updatedAt":502},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[587,588,589,590],{"name":22,"slug":23,"type":15},{"name":498,"slug":499,"type":15},{"name":20,"slug":8,"type":15},{"name":13,"slug":14,"type":15}]