From disconnected-readiness-scorer
Score a repository's readiness for disconnected / air-gapped OpenShift deployments. Scans for image manifest completeness, digest enforcement, runtime egress, and Python dependency validation. Use when asked to check disconnected readiness, air-gap compliance, or image mirroring coverage for an RHOAI component repo.
How this skill is triggered — by the user, by Claude, or both
Slash command
/disconnected-readiness-scorer:disconnected-scoreThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Score a repository's readiness for deployment in disconnected / air-gapped OpenShift environments.
Score a repository's readiness for deployment in disconnected / air-gapped OpenShift environments.
Scans a repository for common patterns that break disconnected deployments:
RELATED_IMAGE_* env vars (used by the opendatahub-operator) and static CSV relatedImages lists.RELATED_IMAGE_* env vars across 18 components). This is the source of truth for what images must be mirrorable.@sha256: digests, not mutable tags.All rules exclude test files (*_test.go, test/, testdata/), CI config (.github/, .tekton/), and linting rules (semgrep.yaml) from blocker-level findings.
claude plugin install disconnected-readiness-scorer@opendatahub-skills
Then from the root of any RHOAI component repo:
/disconnected-score
--rules all (default) — run all rules--rules csv,tags — run only specified rules--fix — attempt auto-remediation for supported rules (e.g., replace image tags with digests)--report markdown — output a markdown report (default)--report json — output machine-readable JSONDisconnected Readiness Score: WARNING
BLOCKER csv-relatedimages 2 images in code missing from CSV relatedImages
PASS no-image-tags All 14 image references use digests
WARNING no-runtime-egress 1 HTTP call in pkg/controller/sync.go:142 — verify it uses mirror config
PASS python-imports No unbundled Python dependencies found
Blockers: 1 | Warnings: 1 | Passed: 2
| Score | Meaning |
|---|---|
| READY | All rules pass |
| WARNING | No blockers, but warnings need review |
| NOT READY | One or more blocker-level failures |
Parses Dockerfiles, Helm charts, kustomize overlays, Go/Python source, and YAML manifests for container image references. Compares against:
spec.relatedImages in the ClusterServiceVersion (CSV)Any image found in code but missing from both lists is a blocker.
Scans all image references for tag-based refs (:latest, :v1.2.3). Tags cannot be reliably mirrored — only digest refs (@sha256:...) are guaranteed to resolve in a disconnected registry.
Production manifests with tags: blocker. Test/dev manifests with tags: warning.
Scans Go, Python, and TypeScript source for patterns indicating outbound network calls:
http.Get, http.Post, http.NewRequest, net.Dialrequests.get, urllib.request, httpx, aiohttpfetch(, axios, http.requestcurl, wget in scripts executed at runtimeBuild-time usage (Dockerfiles, Makefiles, CI scripts) is excluded. Runtime usage where the URL is configurable/mirrorable is a warning; hardcoded external URLs are a blocker.
For Python projects, checks:
requirements.txt, setup.py, pyproject.toml for packages not in the known-mirrors catalogpip install or subprocess calls that fetch from PyPI/GitHubgit+https:// dependencies in any requirements fileUnbundled runtime dependencies: blocker. Unbundled dev/test dependencies: warning.
Lists approved internal registries and PyPI mirrors. The scanner treats any image pull or pip install targeting these as safe.
registries:
- registry.redhat.io
- brew.registry.redhat.io
- quay.io/opendatahub
- quay.io/modh
pypi_mirrors:
- https://pypi.corp.redhat.com/simple/
Per-repo rule exceptions for known false positives.
exceptions:
- repo: opendatahub-io/odh-dashboard
rule: no-runtime-egress
path: frontend/src/utilities/fetch.ts
reason: "Uses cluster-internal API proxy, not external egress"
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub opendatahub-io/skills-registry --plugin disconnected-readiness-scorer