Skip to content
k8s-crd-design-review logo

Kubernetes CRD Design Review

k8s-crd-design-review

Use when reviewing Kubernetes CustomResourceDefinition (CRD) YAML (full manifests or diffs) as the compiled API contract: schema/validation correctness (OpenAPI/CEL), spec vs status boundaries, conditions/observedGeneration conventions, SSA/GitOps list semantics and patchability, printer columns,...

SKILL.md

Full skill instructions

Kubernetes CRD Design Review

Perform a deterministic design + contract review for Kubernetes CRDs (the generated CRD YAML is the compiled API contract).

Inputs

Accept at least one of:

  • CRD YAML (full manifest) or a CRD diff
  • Go API types and/​or kubebuilder markers used to generate the CRD
  • A short description of intended API semantics and controller behavior

If key info is missing, ask for it before concluding compatibility/​migration:

  • Whether a controller exists, what it owns, and whether it writes status
  • Whether this is a new API or a change to an existing API
  • Served versions, storage version, and existing clients
  • Whether objects already exist in clusters (migration needed?)
  • Any GitOps/​SSA constraints (patch strategy, desired stable identities)

Workflow (always follow this order)

1) Identify scope

  • Identify group, kind(s), version(s), and whether this is new vs change.
  • Identify controller existence and ownership boundaries.
  • If reviewing Go types, confirm which generated CRD YAML(s) correspond to them.

2) Contract integrity checks (spec/​status + controller operability)

  • Spec vs status boundary
    • spec = user intent / desired state.
    • status = controller-observed state.
    • Flag lifecycle/​state-machine fields in spec if the controller owns transitions.
  • Require subresources.status when a controller exists and writes status
  • Conditions + observedGeneration
    • Recommend status.conditions using Kubernetes conventions.
    • Recommend status.observedGeneration for tooling/​GitOps correctness.
    • Treat Conditions as a map keyed by type (not a chronological list): avoid duplicate type entries and prefer schema markers that enable map semantics for SSA/​GitOps.
    • Prefer a single high-signal summary condition (Ready for long-running resources; Succeeded for bounded execution) and keep other Conditions secondary.
    • Prefer state-style Condition types (adjectives/​past tense like Ready, Degraded, Succeeded). Transition-style names are usually less clear, but can be acceptable for long-running transitions if modeled as an observed state with consistent True/False/Unknown semantics.
    • Avoid state-machine style status.phase for new APIs; prefer Conditions.
    • Remember status is typically written via the /​status subresource with separate RBAC.

If needed, load ./​references/​conditions-and-status.md

3) Schema correctness (prevent invalid stored objects)

Review the OpenAPI v3 schema (prefer the generated CRD YAML/​diff):

  • Required fields for true invariants

  • Enums for constrained strings

  • Defaulting and nullable behavior

  • Cross-field invalid combinations

    • If the schema cannot express it with basic validation, suggest CEL (x-kubernetes-validations) with minimal, targeted rules.
  • Object references & relationships

    • When a field refers to another Kubernetes object, check that naming and schema follow Kubernetes API conventions:
      • Object references: use fooRef / fooRefs (structured object(s)), also do this if only the name is needed (please load ./​references/​object-references.md for more details on the recommended naming conventions)
      • Name-only references are acceptable for existing situations (e.g. fooName (string)), do NOT use this for new developemnts.
    • Watch for cross-namespace references (security boundary) and for leaking copied values from the referenced object into spec/status.

If needed, load ./​references/​object-references.md. If needed, load ./​references/​validation-and-cel.md.

4) GitOps/​SSA ergonomics

Focus on patchability and stable diffs:

  • List semantics for arrays of objects
    • If items have stable identity (e.g., name, id), prefer map-like lists:
      • x-kubernetes-list-type: map
      • x-kubernetes-list-map-keys: ["..."]
  • Identify ordering sensitivity and full-array replacement hazards.

If needed, load ./​references/​list-semantics-gitops-ssa.md.

5) Operator UX (kubectl)

  • Review/​add additionalPrinterColumns for operator-facing UX:
    • Ready / health signal
    • Status message / reason
    • Key spec fields
  • Do not duplicate default AGE.

If needed, load ./​references/​printer-columns.md.

6) Compatibility & migration impact (mandatory)

Always include an explicit compatibility assessment.

  • Classify change as non-breaking vs potentially breaking.
  • Consider more than removals:
    • tightening validation
    • type changes
    • list semantic changes
    • defaulting changes
    • semantic behavior changes
  • If version evolution is involved:
    • serving multiple versions
    • conversion webhook need
    • storage version migration reminders
    • deprecation playbook

If needed, load ./​references/​versioning-and-migrations.md.

7) Summarize

  • Provide ranked risks + why they matter.
  • Provide actionable changes + snippets.
  • Provide a minimal, PR-sized improvement plan.
  • Provide a copy/​paste PR review template block.

Output format (always use this template)

What’s good

  • …

Top risks (ranked)

  1. … — why it matters: …
  2. … — why it matters: …
  3. … — why it matters: …

Recommended changes (actionable)

  • Change: …
    • Why: …
    • Snippet:
      # ...
      

Compatibility & migration impact (mandatory)

  • Breaking? Yes/​No
  • Why: …
  • If breaking or risky:
    • Migration / deprecation steps:
      1. …
      2. …
    • Rollout plan checklist:
      • …
      • …
    • Versioning notes: served versions, storage version, conversion considerations

Minimal improvement plan (PR-sized)

  1. …
  2. …
  3. …

PR-ready review template (copy/​paste)

Load and reuse the canonical template in ./​references/​review-template.md. If it does not match the context, adapt it but keep the same section headings.

More DevOps & CI/CD skills

Project scaffolding, deployment configuration, and CI/CD setup for Google ADK agents.

6K 472.6K
View

Set up tracing, logging, and monitoring for deployed ADK agents across Cloud Trace, BigQuery, and third-party platforms.

6K 472.6K
View

Enterprise Azure infrastructure architect generating Bicep or Terraform from workload descriptions.

1.5K 454.3K
View
azure-kubernetes logo
DevOps & CI/CD

azure-kubernetes

Plan and configure production-ready Azure Kubernetes Service clusters with Day-0 and Day-1 best practices.

1.5K 447.1K
View

Raw mechanical interfaces fusing Swiss typographic print with military terminal aesthetics. Rigid grids, extreme type scale contrast, utilitarian color, analog degradation effects. For data-heavy dashboards, portfolios, or editorial sites that need to feel like declassified blueprints.

92.7K 354.9K
View
just-scrape logo
DevOps & CI/CD

just-scrape

Web search, scraping, extraction, crawling, and monitoring via ScrapeGraph AI CLI.

69 245K
View

Skill for working with Firebase Hosting (Classic). Use this when you want to deploy static web apps, Single Page Apps (SPAs), or simple microservices. Do NOT use for Firebase App Hosting.

462 159.7K
View

Deploy and manage web apps with Firebase App Hosting. Use this skill when deploying Next.js/Angular apps with backends.

462 159.1K
View
deploy-to-vercel logo
DevOps & CI/CD

deploy-to-vercel

Deploy applications and websites to Vercel. Use when the user requests deployment actions like "deploy my app", "deploy and give me the link", "push this live", or "create a preview deployment".

31.9K 146.6K
View
programmatic-seo logo
DevOps & CI/CD

programmatic-seo

Build SEO-optimized pages at scale using templates, data, and proven playbook patterns.

53.3K 140.1K
View

Design and build isolated, reusable Convex backend components with clear boundaries and app-facing wrappers.

63 123.5K
View

Deploy and manage projects on Vercel using token-based authentication. Use when working with Vercel CLI using access tokens rather than interactive login — e.g. "deploy to vercel", "set up vercel", "add environment variables to vercel".

31.9K 116.1K
View

Coding & apps AI tools

Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View
Imagica logo
Coding & apps

Imagica

Build a no-code AI app in minutes.

Freemium
View
E
Coding & apps

Emergent.sh

An IDE for code migration from legacy to modern frameworks through coding agents.

Freemium
View
Wonder Dynamics logo
Coding & apps

Wonder Dynamics

Automate CGI animation in live-action scenes

Paid
View
M
Coding & apps

Mixo

Launch a website in seconds with AI.

Paid
View
AI Code Convert logo
Coding & apps

AI Code Convert

Streamline Your Coding Experience with AI Code Helper

Free
View