Token导航 LogoToken导航TokenDH.com
研究检索需要联网github未标认证来源可访问许可证需确认审计通过

kubebuilder-api-designkubebuilder API 设计

Agent Skill

用于辅助 API 设计、接口文档、请求响应结构和服务集成说明。它适合让 Agent 梳理 endpoint、生成 OpenAPI 草稿、检查字段命名、整理错误码或辅助前后端联调。使用时需要确认真实业务语义、鉴权方式、分页和错误处理规则;涉及生成接口文档时,应避免凭空补字段,最好从现有代码、schema 或接口样例中提取事实。

总安装

672

周安装

28

GitHub Stars

公开资料未说明

下载量

224
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:kubebuilder-api-design(kubebuilder API 设计)
来源仓库:https://github.com/configbutler/skills
仓库路径:skills/kubebuilder-api-design
安装命令:
npx skills add https://github.com/configbutler/skills --skill kubebuilder-api-design
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/configbutler/skills --skill kubebuilder-api-design

简介

kubebuilder-api-design 用于辅助 API 设计、

  • 接口文档和请求响应结构整理。
  • 适合让 Agent 梳理 endpoint、生成 OpenAPI 草稿或检查字段命名。
  • 使用时需要确认真实业务语义和鉴权方式, 避免凭空补字段。kubebuilder-api-design 属于研究检索类 Skill,可作为该场景下的辅助能力补充。

SKILL.md

Kubebuilder API Design (Go)

Design Kubernetes APIs with Kubebuilder in Go (primarily for Kubernetes operators): CRD type definitions, schema markers, status/conditions, and the core scaffold/regenerate workflow.

Default scope: API design + CRD generation. Do not implement controller/webhook business logic unless explicitly requested.

Tooling assumptions (what needs to exist for generation)

This skill can help with pure API design (Go types + markers) without running anything, but to scaffold and to regenerate CRDs/manifests the user’s environment/project typically needs:

  • go toolchain (matching the project’s go.mod requirements)
  • kubebuilder CLI (or Operator SDK if they wrap Kubebuilder)
  • make (Kubebuilder projects drive generation via Makefile)

Notes:

  • controller-gen is usually installed automatically by the project’s Makefile target(s) (pinned version), so it’s not always a separate prerequisite.
  • Cluster tooling (kubectl, kind, etc.) is only needed if they want to run/test against a cluster; keep this out of scope unless explicitly requested.

Relationship to k8s-crd-design-review

Treat the generated CRD YAML as the *compiled API contract*. After shaping Go types + markers and running generation, run a design review on the generated CRD YAML (or diff) using ../k8s-crd-design-review/SKILL.md.

SSA / GitOps note: list semantics are part of the API contract.

Versioning / multi-version CRDs (pointer)

If the user is designing a multi-version API (e.g., v1alpha1v1beta1v1) or needs conversion webhooks:

Designing relations (object references) in Spec/Status

When a CRD needs to point at another Kubernetes object (or one of its fields/keys), treat “references” as API design, not a convenience import.

Prefer well-scoped, API-owned reference types (avoid generic core types)

Avoid embedding generic Kubernetes reference structs like corev1.LocalObjectReference or corev1.ObjectReference in *new* APIs.

Kubernetes upstream explicitly discourages new uses of corev1.LocalObjectReference and corev1.ObjectReference because it is underspecified and hard to validate/document per usage:

  • Key takeaway: “Instead of using these generic types, create a locally provided and used type that is well-focused on your reference.

This guidance applies equally to other overly-generic reference types you may find in older APIs (they tend to have unclear semantics, inconsistent validation, and awkward defaults).

Pattern: define a dedicated <Thing>Ref type per relationship

Define a small, *purpose-built* struct for each relationship, tailored to your CRD:

  • Make required fields actually required (don’t mirror upstream backward-compatibility tricks like omitempty + default empty string)
  • Encode the relationship’s real constraints in schema (name format, allowed kinds, namespace rules)
  • Add per-field documentation that matches the domain (so kubectl explain is useful)

Example (same-namespace reference by name):

// ConfigMapRef identifies a ConfigMap in the same namespace.
// The referenced ConfigMap must exist before this resource becomes Ready.
type ConfigMapRef struct {
    // Name is the name of the referenced ConfigMap.
    // +kubebuilder:validation:MinLength=1
    // Consider adding a stricter pattern if you want to enforce DNS-1123 label.
    Name string `json:"name"`
}

Example (namespace + name, if cross-namespace is allowed by design):

// SecretRef identifies a Secret.
// If Namespace is omitted, it defaults to the resource namespace.
type SecretRef struct {
    // +kubebuilder:validation:MinLength=1
    Name string `json:"name"`

    // +optional
    // +kubebuilder:validation:MinLength=1
    Namespace string `json:"namespace,omitempty"`
}

Decide (and document) the reference semantics up front

For each relation, explicitly choose and document:

  • Scope: same-namespace only vs cross-namespace (cross-namespace typically needs extra authorization/guardrails)
  • Identity: name only vs name+namespace vs (rarely) UID/resourceVersion (most APIs should stick to name/namespace)
  • Allowed targets: fixed Kind (recommended) vs “one-of” kinds (if so, model it explicitly)
  • Lifecycle behavior: what happens if the target is missing, renamed, deleted, or recreated
  • Status mirroring: if you surface resolved details (e.g., observed UID), put them in Status not Spec

If the user asks for “a reference to an arbitrary object”, push back and narrow it: require a specific Kind or a small, explicit set of Kinds, then reflect that in the API type.

Workflow

Step 0 — Gather inputs (ask only what’s needed)

  1. API identity: Group, Version, Kind, Plural, Scope (Namespaced vs Cluster)
  2. Desired Spec fields (including which are required) and any immutability expectations
  3. Status needs: conditions? observedGeneration? summary fields?
  4. Any constraints: enum values, ranges, patterns, max items, uniqueness, references to other objects

When the user mentions relations/references, capture:

  • target kind(s) and whether cross-namespace is allowed
  • whether the reference is required
  • whether they need to reference a whole object or a sub-field (e.g., secretKeyRef)
  • expected behavior when the target does not exist or changes

If the user already has YAML for the CRD, treat it as the contract and map it into Go types + markers.

Step 1 — Draft the Go API types

Create:

  • type <Kind>Spec struct {...}
  • type <Kind>Status struct {...}
  • type <Kind> struct {metav1.TypeMeta; metav1.ObjectMeta; Spec; Status}
  • type <Kind>List struct {metav1.TypeMeta; metav1.ListMeta; Items []<Kind>}

Rules of thumb:

  • Use pointers for optional scalars and optional structs to preserve “unset vs zero”.
  • Prefer Kubernetes-native types when relevant (metav1.Time, resource.Quantity, intstr.IntOrString).
  • Keep Status separate from Spec. Include ObservedGeneration and Conditions when useful.
  • For relations, prefer API-owned <Thing>Ref structs over embedding generic Kubernetes reference types (see “Designing relations”).

Read ./references/go-type-patterns.md for common Go/Kubernetes type choices.

Step 2 — Add Kubebuilder markers (validation, defaults, printing)

Add markers to match the desired API contract:

  • Root + subresources:

- +kubebuilder:object:root=true - +kubebuilder:subresource:status

  • Validation + defaults on fields (min/max, pattern, enum, length, items, etc.)
  • List semantics for SSA and correctness (listType=set|map, listMapKey=...)
  • Printer columns that reflect the most important status/spec at a glance

Read ./references/kubebuilder-markers.md.

For a compact “what marker do I need?” cheat-sheet (root markers, field validation/defaults, list semantics, and printer columns), see ./references/api_reference.md.

Step 3 — Shape Status + Conditions

Prefer []metav1.Condition unless you have a strong reason to roll your own condition type. Include helper summary fields only if they serve UX.

Read ./references/status-and-conditions.md (Kubebuilder/Go implementation appendix). For canonical conceptual semantics and review heuristics, defer to k8s-crd-design-review/references/conditions-and-status.md.

Step 3.5 — Kubebuilder workflow essentials (scaffolding + generation)

When the user needs help with Kubebuilder scaffolding and regeneration steps (but not controller/webhook business logic), follow the short checklist in ./references/kubebuilder-workflow-essentials.md.

Step 4 — Provide a “generate + verify” checklist (don’t implement)

Give the user the standard Kubebuilder steps to regenerate CRDs and verify the schema, without writing controller logic:

  • Run make generate / make manifests
  • Inspect the generated CRD YAML and confirm:

- required fields match expectations - defaults appear where intended - list semantics and map keys are correct - printer columns render

Then (recommended): run a contract review pass against the generated CRD YAML (or diff) using ../k8s-crd-design-review/SKILL.md, focusing on compatibility/migration impact, lifecycle/status semantics, and SSA/GitOps ergonomics.

When the user needs more API-shape guidance, point them to the offical long read of the Kubernetes API conventions.

Output format

When delivering code, output a single Go snippet per file:

  1. package + imports
  2. markers
  3. Spec, Status
  4. root object + list
  5. any type aliases and nested structs

Use concise comments. Put rationale (why a pointer, why listType map, etc.) in short bullet notes after the code.

Resources

Kubebuilder book (upstream docs mirror in this repo)

If you need canonical Kubebuilder explanations (beyond this skill’s cheat-sheets), prefer these pages:

references/

Load these only when needed (to keep context small):


This skill currently only bundles references/. Add scripts/ or assets/ later if you want automation helpers or boilerplate templates.

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

34.68%
按下载量换算78

Claude

29.55%
按下载量换算66

Cursor

19.3%
按下载量换算43

Gemini CLI

10.94%
按下载量换算25

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills