Kubernetes manifest quality review
Skill Raishin/vanguard-frontier-agentic/skills/qa/kubernetes-manifest-quality-review
Curated marketplace of AI skills, agents, and rules for cloud, zero-trust, and compliance-aware engineering - works with Claude Code, Codex, Cursor, Copilot, and more.
npx -y skills add Raishin/vanguard-frontier-agentic --skill kubernetes-manifest-quality-reviewAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 18 stars18 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Use this skill when the user provides raw Kubernetes YAML manifests or asks to review K8s manifests for quality, security, or policy compliance — covering Deployment, StatefulSet, DaemonSet, Service, Ingress, NetworkPolicy, RBAC, and CRD resources.
SKILL.md
6.9 KB, ~1.4k tokens by cl100k_base, as published. Nobody here has run it
Kubernetes Manifest Quality Review
Purpose
This skill reviews raw Kubernetes YAML manifests for quality, security, and policy-compliance defects. It covers Deployment, StatefulSet, DaemonSet, Service, Ingress, NetworkPolicy, RBAC, and CRD resources. The review is entirely static — it reads YAML files and never applies manifests to a cluster, never contacts the Kubernetes API, and never requests kubeconfig, service account tokens, or cloud credentials.
Lean operating rules
Schema and structure
apiVersionorkindmissing — CRITICAL: the manifest cannot be applied; flag and stop review of that resource.- Deprecated API versions (e.g.,
extensions/v1beta1,networking.k8s.io/v1beta1,policy/v1beta1PodSecurityPolicy) — HIGH: these will be rejected by newer clusters. - Missing required labels (
app,app.kubernetes.io/name,app.kubernetes.io/version) on Pods and workload controllers — MEDIUM: impairs observability, selector targeting, and policy enforcement. - No
namespacespecified (reliance on default namespace) — MEDIUM: encourages lateral movement and policy bypass; everything should be explicitly namespaced.
Pod security (Pod Security Standards)
securityContext.runAsRoot: trueon a container, or norunAsNonRoot: trueat pod or container level — HIGH: processes run as UID 0 inside the container.privileged: trueon a container security context — CRITICAL: the container has near-host-root access.allowPrivilegeEscalation: trueor field absent (it defaults totrueunlessprivileged: falseis set) — HIGH: child processes can gain more privileges than the parent.hostNetwork: true,hostPID: true,hostIPC: trueon the pod spec — CRITICAL: the pod shares the host network stack, process table, or IPC namespace, enabling broad host compromise.capabilities.addcontainingSYS_ADMIN,NET_ADMIN,ALL,SYS_PTRACE, orDAC_OVERRIDE— CRITICAL: these capabilities provide near-root privilege; drop all capabilities and add only what is specifically required.readOnlyRootFilesystem: falseor field absent on a container — MEDIUM: a writable root filesystem makes container compromise easier; set totrueand useemptyDiror volume mounts for mutable paths.seccompProfileabsent at pod or container level — MEDIUM: no syscall filtering, increasing the kernel attack surface; useRuntimeDefaultor a custom profile.
Image hygiene
- Image tag is
:latestor absent — HIGH: non-reproducible deployments; a rollout can silently pull a different image than what was tested. - No image digest pinning for production manifests — MEDIUM: tag mutability allows supply-chain substitution; prefer
image@sha256:<digest>. - Image pulled from an unverified public registry (e.g., Docker Hub) with no
imagePullPolicy: IfNotPresentor digest — MEDIUM: arbitrary public images without integrity verification.
Resource governance
resources.requestsandresources.limitsboth absent on a container — HIGH: the container is unschedulable on resource-constrained nodes and can starve co-located workloads.- Memory limit set without a CPU limit — MEDIUM: CPU throttling surprise; the container can be throttled heavily with no visible error.
- Ephemeral storage limit absent on containers known to produce logs or temp files — LOW: unbounded ephemeral storage can exhaust node disk and evict other pods.
Health probes
livenessProbemissing — HIGH: the kubelet cannot detect application deadlocks or crash-loop conditions and restart the container.readinessProbemissing — HIGH: the endpoint controller sends traffic to the pod before the application is ready, causing errors during startup and rolling updates.- Probe using
execcommand with notimeoutSecondsspecified — MEDIUM: exec probes default to a 1-second timeout; a slow command silently causes probe failures and restarts.
Networking and exposure
- Service type
LoadBalancerorNodePortwithout a comment or annotation documenting the business justification — MEDIUM: these expose services externally or on every node port; ClusterIP is sufficient for internal services. - Ingress resource with no TLS block configured — HIGH: traffic between the client and the ingress controller is unencrypted.
- No
NetworkPolicyresource restricts pod ingress or egress in the namespace — MEDIUM: the default Kubernetes network model is allow-all; without a NetworkPolicy every pod can reach every other pod. - Ingress annotation
nginx.ingress.kubernetes.io/use-proxy-protocolor similar annotation that forwards arbitrary upstream headers into backend requests from untrusted input — CRITICAL: enables SSRF and header injection.
RBAC and service accounts
ClusterRolewith verb*on resource*or onsecrets— CRITICAL: any principal bound to this role has full cluster read/write access.RoleBindingorClusterRoleBindingwhose subject issystem:anonymousorsystem:unauthenticated— CRITICAL: unauthenticated callers inherit these permissions.automountServiceAccountToken: true(or field absent, which defaults totrue) on pods that do not contact the Kubernetes API — HIGH: the token is mounted at a known path and exploitable if the container is compromised.- RBAC role granting
getorlistonsecretsbeyond what the workload demonstrably needs — HIGH: broadens blast radius of a credential compromise.
Secrets and config
- Plaintext credentials (passwords, tokens, connection strings) in
env.valueon a container or inConfigMap.data— CRITICAL: credentials visible in manifests committed to source control or stored in etcd in plaintext. Secretwithtype: Opaqueand a base64-encoded value that decodes to an empty string — MEDIUM: placeholder secret that will cause application startup failures and suggests secrets management is not wired up.
References
Load these only when needed:
- Workflow and output contract — use when executing the full review or formatting the final answer.
Response minimum
Return, at minimum:
- Schema and API version findings
- Pod security findings (PSS Restricted/Baseline comparison)
- Image hygiene findings
- Resource governance findings
- Health probe findings
- Networking and exposure findings
- RBAC and service account findings
- Secrets and config findings
- Severity-labelled finding list (CRITICAL / HIGH / MEDIUM / LOW)
- Safe next actions
What ships with it: 2 files
8.3 KB alongside SKILL.md
references/
- workflow-and-output.md6.7 KB
- metadata.json1.6 KB