k8s-browser
Browser automation for Kubernetes dashboards and web UIs. Use when interacting with Kubernetes Dashboard, Grafana, ArgoCD UI, or other web interfaces. Requires MCP_BROWSER_ENABLED=true.
Packaged view
This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.
Install command
npx @skill-hub/cli install rohitg00-kubectl-mcp-server-k8s-browser
Repository
Skill path: kubernetes-skills/claude/k8s-browser
Browser automation for Kubernetes dashboards and web UIs. Use when interacting with Kubernetes Dashboard, Grafana, ArgoCD UI, or other web interfaces. Requires MCP_BROWSER_ENABLED=true.
Open repositoryBest for
Primary workflow: Run DevOps.
Technical facets: Full Stack, Frontend, DevOps.
Target audience: everyone.
License: Apache-2.0.
Original source
Catalog source: SkillHub Club.
Repository owner: rohitg00.
This is still a mirrored public skill entry. Review the repository before installing into production workflows.
What it helps with
- Install k8s-browser into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
- Review https://github.com/rohitg00/kubectl-mcp-server before adding k8s-browser to shared team environments
- Use k8s-browser for development workflows
Works across
Favorites: 0.
Sub-skills: 0.
Aggregator: No.
Original source / Raw SKILL.md
---
name: k8s-browser
description: Browser automation for Kubernetes dashboards and web UIs. Use when interacting with Kubernetes Dashboard, Grafana, ArgoCD UI, or other web interfaces. Requires MCP_BROWSER_ENABLED=true.
license: Apache-2.0
metadata:
author: rohitg00
version: "1.0.0"
tools: 26
category: automation
---
# Browser Automation for Kubernetes
Automate Kubernetes web UIs using kubectl-mcp-server's browser tools (26 tools).
## When to Apply
Use this skill when:
- User mentions: "dashboard", "Grafana", "ArgoCD UI", "web interface", "screenshot"
- Operations: navigating K8s dashboards, capturing screenshots, automating web UIs
- Keywords: "browser", "click", "screenshot", "web", "UI automation"
## Priority Rules
| Priority | Rule | Impact | Tools |
|----------|------|--------|-------|
| 1 | Enable MCP_BROWSER_ENABLED first | CRITICAL | Environment variable |
| 2 | Open URL before interactions | HIGH | `browser_open` |
| 3 | Wait for elements before clicking | HIGH | `browser_wait_for_selector` |
| 4 | Take screenshots for verification | MEDIUM | `browser_screenshot` |
## Quick Reference
| Task | Tool | Example |
|------|------|---------|
| Open URL | `browser_open` | `browser_open(url)` |
| Click element | `browser_click` | `browser_click(selector)` |
| Take screenshot | `browser_screenshot` | `browser_screenshot(path)` |
| Wait for element | `browser_wait_for_selector` | `browser_wait_for_selector(selector)` |
## Prerequisites
- **Browser Tools Enabled**: Required
```bash
export MCP_BROWSER_ENABLED=true
```
## Enable Browser Tools
```bash
export MCP_BROWSER_ENABLED=true
# Optional: Cloud provider
export MCP_BROWSER_PROVIDER=browserbase # or browseruse
export BROWSERBASE_API_KEY=bb_...
```
## Basic Navigation
```python
# Open URL
browser_open(url="http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/")
# Open with auth headers
browser_open_with_headers(
url="https://grafana.example.com",
headers={"Authorization": "Bearer token123"}
)
# Navigate
browser_navigate(url="https://argocd.example.com/applications")
# Go back/forward
browser_back()
browser_forward()
# Refresh
browser_refresh()
```
## Screenshots and Content
```python
# Take screenshot
browser_screenshot(path="dashboard.png")
# Full page screenshot
browser_screenshot(path="full-page.png", full_page=True)
# Get page content
browser_content()
# Get page title
browser_title()
# Get current URL
browser_url()
```
## Interactions
```python
# Click element
browser_click(selector="button.submit")
browser_click(selector="text=Deploy")
browser_click(selector="#sync-button")
# Type text
browser_type(selector="input[name=search]", text="my-deployment")
browser_type(selector=".search-box", text="nginx")
# Fill form
browser_fill(selector="#namespace", text="production")
# Select dropdown
browser_select(selector="select#cluster", value="prod-cluster")
# Press key
browser_press(key="Enter")
browser_press(key="Escape")
```
## Waiting
```python
# Wait for element
browser_wait_for_selector(selector=".loading", state="hidden")
browser_wait_for_selector(selector=".data-table", state="visible")
# Wait for navigation
browser_wait_for_navigation()
# Wait for network idle
browser_wait_for_load_state(state="networkidle")
```
## Session Management
```python
# List sessions
browser_session_list()
# Switch session
browser_session_switch(session_id="my-session")
# Close browser
browser_close()
```
## Viewport and Device
```python
# Set viewport size
browser_set_viewport(width=1920, height=1080)
# Emulate device
browser_set_viewport(device="iPhone 12")
```
## Kubernetes Dashboard Workflow
```python
# 1. Start kubectl proxy
# kubectl proxy &
# 2. Open dashboard
browser_open(url="http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/")
# 3. Navigate to workloads
browser_click(selector="text=Workloads")
# 4. Take screenshot
browser_screenshot(path="workloads.png")
# 5. Search for deployment
browser_type(selector="input[placeholder*=search]", text="nginx")
browser_press(key="Enter")
```
## Grafana Dashboard Workflow
```python
# 1. Open Grafana
browser_open_with_headers(
url="https://grafana.example.com/d/k8s-cluster",
headers={"Authorization": "Bearer admin-token"}
)
# 2. Set time range
browser_click(selector="button[aria-label='Time picker']")
browser_click(selector="text=Last 1 hour")
# 3. Screenshot dashboard
browser_screenshot(path="grafana-cluster.png", full_page=True)
```
## ArgoCD UI Workflow
```python
# 1. Open ArgoCD
browser_open(url="https://argocd.example.com")
# 2. Login
browser_fill(selector="input[name=username]", text="admin")
browser_fill(selector="input[name=password]", text="password")
browser_click(selector="button[type=submit]")
# 3. Navigate to app
browser_wait_for_selector(selector=".applications-list")
browser_click(selector="text=my-application")
# 4. Sync application
browser_click(selector="button.sync-button")
browser_click(selector="text=Synchronize")
```
## Related Skills
- [k8s-gitops](../k8s-gitops/SKILL.md) - ArgoCD CLI tools
- [k8s-diagnostics](../k8s-diagnostics/SKILL.md) - Cluster analysis
---
## Referenced Files
> The following files are referenced in this skill and included for context.
### ../k8s-gitops/SKILL.md
```markdown
---
name: k8s-gitops
description: Manage GitOps workflows with Flux and ArgoCD. Use for sync status, reconciliation, app management, source management, and GitOps troubleshooting.
license: Apache-2.0
metadata:
author: rohitg00
version: "1.0.0"
tools: 7
category: gitops
---
# Kubernetes GitOps
GitOps workflows using Flux and ArgoCD with kubectl-mcp-server tools.
## When to Apply
Use this skill when:
- User mentions: "Flux", "ArgoCD", "GitOps", "sync", "reconcile"
- Operations: checking sync status, triggering reconciliation, drift detection
- Keywords: "out of sync", "deploy from git", "continuous delivery"
## Priority Rules
| Priority | Rule | Impact | Tools |
|----------|------|--------|-------|
| 1 | Check source readiness before troubleshooting | CRITICAL | `flux_sources_list_tool` |
| 2 | Verify sync status before deployments | HIGH | `argocd_app_get_tool` |
| 3 | Reconcile after git changes | MEDIUM | `flux_reconcile_tool` |
| 4 | Suspend before manual changes | LOW | `flux_suspend_tool` |
## Quick Reference
| Task | Tool | Example |
|------|------|---------|
| List Flux kustomizations | `flux_kustomizations_list_tool` | `flux_kustomizations_list_tool(namespace)` |
| Reconcile Flux | `flux_reconcile_tool` | `flux_reconcile_tool(kind, name, namespace)` |
| List ArgoCD apps | `argocd_apps_list_tool` | `argocd_apps_list_tool(namespace)` |
| Sync ArgoCD | `argocd_sync_tool` | `argocd_sync_tool(name, namespace)` |
## Flux CD
### Check Flux Status
```python
flux_kustomizations_list_tool(namespace="flux-system")
flux_helmreleases_list_tool(namespace)
flux_sources_list_tool(namespace="flux-system")
```
### Reconcile Resources
```python
flux_reconcile_tool(
kind="kustomization",
name="my-app",
namespace="flux-system"
)
flux_reconcile_tool(
kind="helmrelease",
name="my-chart",
namespace="default"
)
```
### Suspend/Resume
```python
flux_suspend_tool(kind="kustomization", name="my-app", namespace="flux-system")
flux_resume_tool(kind="kustomization", name="my-app", namespace="flux-system")
```
See [FLUX.md](FLUX.md) for detailed Flux workflows.
## ArgoCD
### List Applications
```python
argocd_apps_list_tool(namespace="argocd")
```
### Get App Status
```python
argocd_app_get_tool(name="my-app", namespace="argocd")
```
### Sync Application
```python
argocd_sync_tool(name="my-app", namespace="argocd")
```
### Refresh App
```python
argocd_refresh_tool(name="my-app", namespace="argocd")
```
See [ARGOCD.md](ARGOCD.md) for detailed ArgoCD workflows.
## GitOps Troubleshooting
### Flux Not Syncing
| Symptom | Check | Resolution |
|---------|-------|------------|
| Source not ready | `flux_sources_list_tool()` | Check git credentials |
| Kustomization failed | `flux_kustomizations_list_tool()` | Check manifest errors |
| HelmRelease failed | `flux_helmreleases_list_tool()` | Check values, chart version |
### ArgoCD Out of Sync
| Symptom | Check | Resolution |
|---------|-------|------------|
| OutOfSync | `argocd_app_get_tool()` | Manual sync or check auto-sync |
| Degraded | Check health status | Fix unhealthy resources |
| Unknown | Refresh app | `argocd_refresh_tool()` |
## Environment Promotion
### With Flux Kustomizations
```python
flux_reconcile_tool(kind="kustomization", name="staging", namespace="flux-system")
flux_reconcile_tool(kind="kustomization", name="production", namespace="flux-system")
```
### With ArgoCD
```python
argocd_sync_tool(name="app-staging", namespace="argocd")
argocd_app_get_tool(name="app-staging", namespace="argocd")
argocd_sync_tool(name="app-production", namespace="argocd")
```
## Multi-Cluster GitOps
Manage GitOps across clusters:
```python
flux_kustomizations_list_tool(namespace="flux-system", context="cluster-1")
flux_kustomizations_list_tool(namespace="flux-system", context="cluster-2")
flux_reconcile_tool(
kind="kustomization",
name="apps",
namespace="flux-system",
context="production-cluster"
)
```
## Drift Detection
Compare live state with desired:
```python
argocd_app_get_tool(name="my-app", namespace="argocd")
flux_kustomizations_list_tool(namespace="flux-system")
```
## Prerequisites
- **Flux**: Required for Flux tools
```bash
flux install
```
- **ArgoCD**: Required for ArgoCD tools
```bash
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
```
## Related Skills
- [k8s-deploy](../k8s-deploy/SKILL.md) - Standard deployments
- [k8s-helm](../k8s-helm/SKILL.md) - Helm chart management
```
### ../k8s-diagnostics/SKILL.md
```markdown
---
name: k8s-diagnostics
description: Kubernetes diagnostics for metrics, health checks, resource comparisons, and cluster analysis. Use when analyzing cluster health, comparing environments, or gathering diagnostic data.
license: Apache-2.0
metadata:
author: rohitg00
version: "1.0.0"
tools: 10
category: observability
---
# Kubernetes Diagnostics
Analyze cluster health and compare resources using kubectl-mcp-server's diagnostic tools.
## When to Apply
Use this skill when:
- User mentions: "metrics", "health check", "compare", "analysis", "capacity"
- Operations: cluster health assessment, environment comparison, resource analysis
- Keywords: "how much", "usage", "difference between", "capacity planning"
## Priority Rules
| Priority | Rule | Impact | Tools |
|----------|------|--------|-------|
| 1 | Check metrics-server before using metrics | CRITICAL | `get_resource_metrics` |
| 2 | Run health check before deployments | HIGH | `cluster_health_check` |
| 3 | Compare staging vs prod before release | MEDIUM | `compare_namespaces` |
| 4 | Document baseline metrics | LOW | `get_nodes_summary` |
## Quick Reference
| Task | Tool | Example |
|------|------|---------|
| Cluster health | `cluster_health_check` | `cluster_health_check()` |
| Pod metrics | `get_resource_metrics` | `get_resource_metrics(namespace)` |
| Node summary | `get_nodes_summary` | `get_nodes_summary()` |
| Compare envs | `compare_namespaces` | `compare_namespaces(ns1, ns2, type)` |
| List CRDs | `list_crds` | `list_crds()` |
## Resource Metrics
```python
get_resource_metrics(namespace="default")
get_node_metrics()
get_top_pods(namespace="default", sort_by="cpu")
get_top_pods(namespace="default", sort_by="memory")
```
## Cluster Health Check
```python
cluster_health_check()
get_cluster_info()
```
## Compare Environments
```python
compare_namespaces(
namespace1="staging",
namespace2="production",
resource_type="deployment"
)
compare_namespaces(
namespace1="default",
namespace2="default",
resource_type="deployment",
context1="staging-cluster",
context2="prod-cluster"
)
```
## API Discovery
```python
get_api_versions()
check_crd_exists(crd_name="certificates.cert-manager.io")
list_crds()
```
## Resource Analysis
```python
get_nodes_summary()
kubeconfig_view()
list_contexts_tool()
```
## Diagnostic Workflows
### Cluster Overview
```python
cluster_health_check()
get_nodes_summary()
get_events(namespace="")
list_crds()
```
### Pre-deployment Check
```python
get_resource_metrics(namespace="production")
get_nodes_summary()
compare_namespaces(namespace1="staging", namespace2="prod", resource_type="deployment")
```
### Post-incident Analysis
```python
get_events(namespace)
get_pod_logs(name, namespace, previous=True)
get_resource_metrics(namespace)
describe_node(name)
```
## Related Skills
- [k8s-troubleshoot](../k8s-troubleshoot/SKILL.md) - Debug issues
- [k8s-cost](../k8s-cost/SKILL.md) - Cost analysis
- [k8s-incident](../k8s-incident/SKILL.md) - Incident response
```