# Kubernetes Manifest Review

Kubernetes Manifest Review is a tested SKILL.md that reviews ONE Kubernetes Pod or Deployment manifest for the five settings that most often make a workload unsafe or unpredictable, and lists only those, one line each with a fixed code, the container or volume, why it hurts and the fix - or exactly No findings; an agent buys it once for $0.01 over x402.

- Page: https://aiskills402.com/skills/kubernetes-manifest-review
- Category: Code & Engineering (https://aiskills402.com/categories/code)
- Price: $0.01 once, USD-priced, paid in USDC on Base over x402. Price as loaded on this page. The 402 response your agent receives is authoritative.
- Version: 1.0.0
- Card (JSON): https://api.aiskills402.com/v1/skills/kubernetes-manifest-review

## Use it when

Reviews ONE Kubernetes Pod or Deployment manifest for the five settings that most often make a workload unsafe or unpredictable, and lists only those, one line each with a fixed code, the container or volume, why it hurts and the fix - or exactly No findings. It catches a container that is privileged or may run as root, an image with no tag or the latest tag, a container with no memory limit, a secret value written as a literal in env, and a hostPath volume. It leaves out the safe look-alikes, such as a pod that sets runAsNonRoot, an image pinned by digest, a read-only configMap volume and a secret read through secretKeyRef. Use to review a manifest before it is applied, to audit a repository of deployments, or to check a Pod that keeps being killed.

## Not for

Cluster-wide policy, network rules, RBAC, Helm templates, Kustomize overlays and anything that lives outside the pasted file, such as a LimitRange or an admission controller. It reads one Pod or Deployment and judges only what is written in it.

## Tested, honestly

Tested 2026-10-26.

- Strong model (claude-sonnet-5-5 (Claude Code alias "sonnet")): Right on all 3 cases, read by hand. On the shop Deployment it found the image with no tag and the password typed into env, and left out the digest-pinned sidecar, the harmless log level and the pod-level runAsNonRoot. On the node-agent Pod it gave the privileged container, the missing memory limit and the Docker socket mount, and left out the token read through secretKeyRef. On the clean billing Deployment it answered exactly No findings.
- Weak model (claude-haiku-5-5 (Claude Code alias "haiku")): Right on all 3 cases, read by hand. It matched the strong model on both planted manifests with sound fixes and kept the digest-pinned sidecar, the log level, the secretKeyRef token and the read-only configMap volume out of its list. On the clean manifest it answered exactly No findings.

Note: Light test: three cases (two planted, one clean), one run per model; no comparison without the skill. The three inputs were written by us; each planted one carries a safe look-alike and neither planted case has a comment pointing at the defect. Facts come from public Kubernetes documentation, read on 26 October 2026; there are no owner-measured facts.

Full summary: https://aiskills402.com/skills/kubernetes-manifest-review/tests

## Example

### English (claude-sonnet-5-5)

Before:

> apiVersion: apps/v1 kind: Deployment metadata:   name: shop-web spec:   replicas: 2   selector:     matchLabels:       app: shop-web   template:     metadata:       labels:         app: shop-web     spec:       securityContext:         runAsNonRoot: true       containers:         - name: web           image: registry.example.com/shop/web           ports:             - containerPort: 8080…

After:

> MUTABLE-IMAGE — container web, image `registry.example.com/shop/web` — no tag or digest, so Kubernetes assumes `latest` and the running version is unclear — pin a version tag or a digest INLINE-SECRET — container web, env `DB_PASSWORD` with `value: "s3cr3t-Pa55word"` — the password sits in plain text in the manifest and its history — move it to a Secret and read it with `valueFrom.secretKeyRef`

## What is in the file

- What the Kubernetes documentation says, as published on 26 October 2026
- The answer
- The codes
- Rules
- Work in this order
- Short example

## Languages

English

## How to buy

Agent (HTTP):

1. GET https://api.aiskills402.com/v1/skills/kubernetes-manifest-review/file without a payment header. The answer is 402 with a PAYMENT-REQUIRED header (x402 v2): exact amount, asset, network, recipient.
2. Sign `accepts[0]` with an x402 client (for example @x402/core + @x402/evm).
3. Repeat the GET with the signature in the PAYMENT-SIGNATURE header. The answer is 200 with the file, its sha256 and a re-download token.

Agent (MCP): https://mcp.aiskills402.com/mcp — free tools search_skills, get_skill, redownload_skill. Buying itself is over HTTP.

Full flow: https://aiskills402.com/docs

## The file

- Version: 1.0.0
- Size: 6.4 KB (6529 bytes)
- SHA-256: 31798e5b2104d1b08ca463369c32b11e4164aa7576cfe2e812d57aa3575374a7
- Updated: 2026-10-26
- New versions are free through your re-download token.

## Versions

### 1.0.0 (2026-10-26)

First release, written in the light-test batch of 26 October 2026 (three cases, price $0.01). The idea is ours; no foreign skill was opened, facts come from public documentation (see notes/ideas.md). Output: see the skill description.

Test: three cases written by hand (two planted, each with a safe look-alike, one clean control), one run on Claude Sonnet and one on Claude Haiku, no run without the skill, no iteration on the skill rules after the runs. `test/control.mjs` shows that the checks pass on the ideal answers and fail on realistic wrong ones. See `test-summary.json` for the verdicts read by hand.

One wording change after the runs: the reason on the first line of the short example (and one FAQ answer) was reworded so that no sentence of SKILL.md repeats in the public example or listing; rules and codes are unchanged, no re-run.

## License

Perpetual, non-exclusive; use and modify for yourself incl. paid work; no resale or republishing. Holder: Georgi Kalchev, aiskills402.com. Terms: https://aiskills402.com/docs#license

## FAQ

### Pod-level runAsNonRoot with nothing on the container: flagged or not?

Not flagged. The skill follows the Kubernetes Pod Security Standards, where the pod-level field covers the containers. A manifest that sets neither runAsNonRoot nor a non-zero user is listed, because the image's own user is not visible in the file.

### Is an env value read from a Secret reported?

No. Reading the value through a secretKeyRef is the accepted form and earns no line. Only a credential-looking name paired with a typed-in literal is reported; a plain literal such as a log level or a port number is left alone.

### Which manifests went into the test?

Three manifests of our own making. First, a Deployment with two containers: an untagged image and a typed-in database password next to a sidecar pinned by digest. Second, a Pod with a privileged container, the Docker socket mounted from the node and no limits. Third, a clean Deployment. Claude Sonnet and Claude Haiku each read every file once.

### What does a clean manifest return?

Just the sentence No findings., with nothing around it. Each problem otherwise becomes a single line: the code, the container or volume, the harm and the repair. The skill never lists what it examined and found acceptable.

## Measurement limits

- Models other than the two named above were not run.
- Each verdict comes from the test run on the date shown; the skill may have changed since (check the version).
- Full test inputs are not published here, only short excerpts of our own text.
- Results on your own texts, languages and domains can differ.

Offer note: Paid in USDC (USD-pegged) over x402 by an AI agent; one-time.
