Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
170 commits
Select commit Hold shift + click to select a range
62e49e5
feat(helm/v2-alpha): add extra volumes support
camilamacedo86 Feb 21, 2026
feefad4
fix: bump google.golang.org/grpc to v1.79.3 to address CVE
0x48core Mar 27, 2026
ba19509
chore: pin github actions to commit sha hashes
vitorfloriano Mar 27, 2026
6c2142d
Merge pull request #5554 from 0x48core/fix/cve-grpc-incorrect-authori…
k8s-ci-robot Mar 27, 2026
da9cae1
Merge pull request #5555 from vitorfloriano/github-actions-sec-pol
k8s-ci-robot Mar 27, 2026
ac730c1
infra(CI): add pinact workflow
vitorfloriano Mar 27, 2026
86c3e04
infra(CI): actions/checkout version not equal to hash
vitorfloriano Mar 29, 2026
c2db836
Merge pull request #5560 from vitorfloriano/verify-version-comment
k8s-ci-robot Mar 30, 2026
40f5e4c
Merge pull request #5496 from camilamacedo86/extra-volumns
k8s-ci-robot Mar 30, 2026
f2d36bf
Upgrade certmanager from '1.20.0' to '1.20.1'
camilamacedo86 Mar 30, 2026
56bb038
Merge pull request #5563 from camilamacedo86/upgrade-certm
k8s-ci-robot Mar 30, 2026
8673f49
Merge pull request #5556 from vitorfloriano/add-pinact-gh-actions
k8s-ci-robot Mar 30, 2026
e4c6049
chore(go/v4): Add support for multiple controllers per GVK
camilamacedo86 Mar 13, 2026
a54d383
docs(helm/v1alpha): Add deprecation notice
vitorfloriano Mar 29, 2026
5141b4c
Merge pull request #5539 from camilamacedo86/multi-controllers
k8s-ci-robot Mar 30, 2026
6ff785e
Merge pull request #5561 from vitorfloriano/deprecate-helm-v1alpha
k8s-ci-robot Mar 30, 2026
890b118
✨ (go/v4): add support YEAR placeholder in boilerplate for copyright …
felix-kaestner Mar 30, 2026
090e27a
docs: Fix accessibility for assistive tools in documentation notes
camilamacedo86 Mar 30, 2026
5519fd2
infra(CI): add gha linter (zizmor) and fix workflows security issues
vitorfloriano Mar 30, 2026
e04f07c
Merge pull request #5565 from vitorfloriano/fix-github-actions-sec-vuln
k8s-ci-robot Mar 31, 2026
23ac244
:seedling: Bump actions/setup-go from 6.3.0 to 6.4.0
dependabot[bot] Mar 31, 2026
ee7c96a
:seedling: Bump shogo82148/actions-goveralls from 1.10.0 to 1.11.0
dependabot[bot] Mar 31, 2026
9a7fd3c
Merge pull request #5564 from camilamacedo86/doc-test-assesibility
k8s-ci-robot Apr 1, 2026
d0454a8
Merge pull request #5567 from kubernetes-sigs/dependabot/github_actio…
k8s-ci-robot Apr 1, 2026
480e72e
Merge pull request #5568 from kubernetes-sigs/dependabot/github_actio…
k8s-ci-robot Apr 1, 2026
f7bdcb0
infra(CI): zero-trust top-level permissions in workflows
vitorfloriano Apr 1, 2026
32c291d
infra: cleanup stale .firebaserc file
vitorfloriano Apr 1, 2026
6728e2b
fix(helm/v2alpha): fix duplicate tolerations block in generated manag…
v47 Apr 1, 2026
ef589ae
docs: add kubebuilder logo to readme
vitorfloriano Apr 2, 2026
bc4a15f
Merge pull request #5570 from vitorfloriano/fix-toplevel-permission
k8s-ci-robot Apr 2, 2026
1ad3260
Merge pull request #5571 from vitorfloriano/cleanup-firebaserc
k8s-ci-robot Apr 2, 2026
2a585e6
docs: cleanup stale README inside the book
vitorfloriano Apr 2, 2026
0319bae
fix(plugins): security hardening for gh actions
vitorfloriano Apr 2, 2026
8034dd1
Merge pull request #5578 from vitorfloriano/fix-gha-hardening-for-sca…
k8s-ci-robot Apr 2, 2026
11e20fa
Merge pull request #5575 from vitorfloriano/add-logo-to-readme
k8s-ci-robot Apr 2, 2026
8d6524f
Merge pull request #5576 from vitorfloriano/cleanup-readme-logos
k8s-ci-robot Apr 2, 2026
c040452
Merge pull request #5572 from v47/helm-v2-alpha-tolerations-fix
k8s-ci-robot Apr 2, 2026
1df3b69
fix(helm/v2-alpha): remediate missing regular expression anchor
vitorfloriano Mar 31, 2026
530db45
Merge branch 'master' into alert-autofix-147
vitorfloriano Apr 3, 2026
86648aa
Merge pull request #5582 from vitorfloriano/alert-autofix-147
k8s-ci-robot Apr 3, 2026
7214d22
fix(go/v4): disable kubectl kuberc in the e2e tests by default
sanadhis Apr 2, 2026
0f240e9
Merge pull request #5558 from sanadhis/fix-disable-kubectl-kuberc
k8s-ci-robot Apr 4, 2026
a12e918
infra(CI): pin syft download to commit hash
vitorfloriano Apr 4, 2026
ee0a930
Merge pull request #5583 from vitorfloriano/fix-unpinned-deps
k8s-ci-robot Apr 5, 2026
a0a9f99
chore(helm/v2-alpha) smart field exposure - operator fields condition…
camilamacedo86 Apr 2, 2026
249064d
✨ (go/v4): add --license-file flag and preserve boilerplate in alpha …
camilamacedo86 Apr 6, 2026
f4c5c6e
refactor: consolidate verification targets and GitHub Actions workflows
camilamacedo86 Apr 6, 2026
29db579
Merge pull request #5577 from camilamacedo86/helm-expose-values
k8s-ci-robot Apr 6, 2026
9d309e1
feat(helm/v2-alpha): add option to skip manager install
camilamacedo86 Apr 2, 2026
0f5b2ad
Merge pull request #5581 from camilamacedo86/helm-manager-install-skip
k8s-ci-robot Apr 7, 2026
7681e75
Merge pull request #5585 from camilamacedo86/linter-refact
k8s-ci-robot Apr 7, 2026
afbe09b
fix(docs): update broken link on README
vitorfloriano Apr 7, 2026
5dead90
Merge pull request #5590 from vitorfloriano/fix-badge-on-readme
k8s-ci-robot Apr 7, 2026
2a11864
test-chart.yml trying to install different image #5574
sivaramsingana Apr 6, 2026
73be381
test-data and docs regenerated #5574
sivaramsingana Apr 6, 2026
ab17f74
feat(helm/v2-alpha): Add option exposed in the values to add custom l…
camilamacedo86 Apr 2, 2026
9975659
use dot instead of full path inside imagePullSecrets block
v47 Apr 8, 2026
7d56913
fix: broken link
iypetrov Apr 9, 2026
312cde8
Merge pull request #5580 from camilamacedo86/helm-add-labels-annotations
k8s-ci-robot Apr 9, 2026
5d50678
Merge pull request #5594 from iypetrov/fix-broken-link-sub-module-lay…
k8s-ci-robot Apr 9, 2026
ba58779
Merge pull request #5592 from v47/fix-imagePullSecrets
k8s-ci-robot Apr 9, 2026
2cc48c4
fix(cli): change level for plugin discovery log to debug
vitorfloriano Apr 9, 2026
4df46c4
:seedling: Bump golang.org/x/mod from 0.34.0 to 0.35.0
dependabot[bot] Apr 9, 2026
1d9df61
Merge pull request #5600 from kubernetes-sigs/dependabot/go_modules/g…
k8s-ci-robot Apr 10, 2026
253db44
:seedling: Bump helm.sh/helm/v3 from 3.20.1 to 3.20.2
dependabot[bot] Apr 10, 2026
925ab56
Merge pull request #5601 from kubernetes-sigs/dependabot/go_modules/h…
k8s-ci-robot Apr 10, 2026
4d82e07
:seedling: Bump golang.org/x/text from 0.35.0 to 0.36.0
dependabot[bot] Apr 10, 2026
d60b071
Merge pull request #5599 from kubernetes-sigs/dependabot/go_modules/g…
k8s-ci-robot Apr 10, 2026
cf76a5c
:seedling: Bump golang.org/x/tools from 0.43.0 to 0.44.0
dependabot[bot] Apr 10, 2026
b611b64
Merge pull request #5598 from kubernetes-sigs/dependabot/go_modules/g…
k8s-ci-robot Apr 10, 2026
df09cc7
Merge pull request #5586 from sivaramsingana/fix/kubebuilder-test-chart
k8s-ci-robot Apr 10, 2026
e2ba0c9
⚠️ (helm/v2-plugin): enhance RBAC support with namespace-scoped deplo…
camilamacedo86 Apr 10, 2026
6550ef4
fix(helm/v2-alpha): standardize values.yaml comment style
camilamacedo86 Apr 10, 2026
89c1da3
chore(docs): Update sample external plugin mods
camilamacedo86 Apr 10, 2026
60992f9
Merge pull request #5604 from camilamacedo86/fix-layout-helm
k8s-ci-robot Apr 10, 2026
461a457
Merge pull request #5605 from camilamacedo86/update-go-sim-samples-pl…
k8s-ci-robot Apr 10, 2026
384e2eb
:seedling: Bump actions/upload-artifact from 7.0.0 to 7.0.1
dependabot[bot] Apr 10, 2026
8c56039
Merge pull request #5606 from kubernetes-sigs/dependabot/github_actio…
k8s-ci-robot Apr 11, 2026
c42df14
chore(helm/v2-alpha): Expose helm/v2-alpha service account
camilamacedo86 Apr 10, 2026
bad3025
📖 fix(docs): changed comment wording (#5602)
kylittle Apr 12, 2026
0d30959
Merge pull request #5595 from vitorfloriano/fix-plugin-discovery-log
k8s-ci-robot Apr 12, 2026
533317c
fix(kustomize/v2)Add health probe port to manager deployment
camilamacedo86 Apr 12, 2026
2af3e02
chore(helm/v2): Use Chart.appVersion as default image tag in Helm charts
camilamacedo86 Apr 12, 2026
be2765d
🌱 (ci)Enhance test output readability by converting inline comments t…
camilamacedo86 Apr 12, 2026
75fe8cb
chore (go/v4) Enhance test output readability by converting inline co…
camilamacedo86 Apr 12, 2026
a279778
Merge pull request #5611 from camilamacedo86/go-v4-improve
k8s-ci-robot Apr 12, 2026
c066cae
chore(git): ignore kubebuilder binary
vitorfloriano Apr 12, 2026
2de5516
Merge pull request #5613 from vitorfloriano/add-kubebuilder-gitignore
k8s-ci-robot Apr 12, 2026
e086d27
chore(CLI,go/v4): Upgrade golang version from 1.25.3 to 1.25.7
camilamacedo86 Apr 13, 2026
c206f74
Merge pull request #5607 from camilamacedo86/helm-v2-version
k8s-ci-robot Apr 13, 2026
cecec2b
Merge pull request #5608 from camilamacedo86/ports-fix
k8s-ci-robot Apr 13, 2026
e02366b
Merge pull request #5615 from camilamacedo86/upgrade-go-version-patch
k8s-ci-robot Apr 13, 2026
f25e186
🐛(helm/v2-alpha): Ignore 'latest' tag and use commented tag format in…
camilamacedo86 Apr 13, 2026
e7a8f09
chore(ci):Add kube linter to helm verify and linter checks
camilamacedo86 Apr 12, 2026
c8501bc
Merge pull request #5609 from camilamacedo86/ci-lint-kube-linter
k8s-ci-robot Apr 13, 2026
1e7533b
Merge pull request #5603 from camilamacedo86/knob-sa
k8s-ci-robot Apr 13, 2026
d858663
:seedling: Bump zizmorcore/zizmor-action from 0.5.2 to 0.5.3
dependabot[bot] Apr 13, 2026
86e5c0b
Merge pull request #5618 from kubernetes-sigs/dependabot/github_actio…
k8s-ci-robot Apr 14, 2026
3d4a426
fix(helm/v2-alpha): template secretRef/configMapRef names inside envF…
v47 Apr 15, 2026
f31c4a6
Merge pull request #5623 from v47/secret-ref-fix
k8s-ci-robot Apr 15, 2026
9812d2c
fix(helm/v2-alpha): Skip ServiceMonitor scaffolding when provided via…
camilamacedo86 Apr 15, 2026
1cba2d9
Merge pull request #5624 from camilamacedo86/fix-servicemonitor
k8s-ci-robot Apr 15, 2026
54898ed
chore(go/v4): Upgrade cert-mamager version from 1.20.1 to 1.20.2 used…
camilamacedo86 Apr 15, 2026
ecfff49
Merge pull request #5626 from camilamacedo86/up-cert-m
k8s-ci-robot Apr 15, 2026
f15433b
:seedling: Bump github/codeql-action from 4.35.1 to 4.35.2
dependabot[bot] Apr 15, 2026
0a5f47b
Merge pull request #5629 from kubernetes-sigs/dependabot/github_actio…
k8s-ci-robot Apr 16, 2026
feddfb2
🐛 fix(grafana/v1-alpha): Remove `init` subcommand from Grafana plugin…
vitorfloriano Apr 16, 2026
d56dbcc
🐛 fix(autoupdate/v1alpha): Remove `init` subcommand from the Auto Upd…
vitorfloriano Apr 16, 2026
b18d68e
🌱 (helm/v2-alpha): Refactory the code (#5621)
camilamacedo86 Apr 16, 2026
5bdd9b6
fix(deploy-image): Add validation for numeric flags
camilamacedo86 Apr 16, 2026
5626e5f
Merge pull request #5634 from camilamacedo86/fix-deploy-validations
k8s-ci-robot Apr 16, 2026
0a1238e
chore(kubebuilder): Add SKILL and update CONTRIBUTING guide
camilamacedo86 Apr 16, 2026
b36ac6d
chore(CLI): Enhance flags and descriptions following best practices
camilamacedo86 Apr 16, 2026
f8e5755
fix(helm/v2-alpha): Use conditionals for optional K8s fields
camilamacedo86 Apr 16, 2026
e6250bb
refactor(helm/v2-alpha): Remove redundant code comments
camilamacedo86 Apr 16, 2026
2542eb3
docs(plugin-helm): Add comprehensive maintenance skill
camilamacedo86 Apr 16, 2026
242bb44
Merge pull request #5631 from camilamacedo86/add-skils-cli-descriptions
k8s-ci-robot Apr 16, 2026
8ef5f8b
doc(helm/v2-alpha): Sahpe after all changes
camilamacedo86 Apr 16, 2026
c70a204
Merge pull request #5636 from camilamacedo86/use-k8s-con
k8s-ci-robot Apr 16, 2026
b1908e8
Merge pull request #5637 from camilamacedo86/remove-comment-redu
k8s-ci-robot Apr 16, 2026
08b381e
Merge pull request #5635 from camilamacedo86/other-skills
k8s-ci-robot Apr 16, 2026
3c6769a
Merge pull request #5638 from camilamacedo86/shape-helm-v2-docs
k8s-ci-robot Apr 16, 2026
0d932a7
:seedling: Bump devcontainers/ci from 0.3.1900000417 to 0.3.1900000448
dependabot[bot] Apr 16, 2026
b5483b4
:seedling: Bump k8s.io/apimachinery from 0.35.3 to 0.35.4
dependabot[bot] Apr 16, 2026
c400565
Merge pull request #5641 from kubernetes-sigs/dependabot/github_actio…
k8s-ci-robot Apr 17, 2026
b3b3b4e
Merge pull request #5642 from kubernetes-sigs/dependabot/go_modules/k…
k8s-ci-robot Apr 17, 2026
0405958
docs: move link aliases to bottom of files
camilamacedo86 Apr 16, 2026
c6ef955
docs: use descriptive link text
camilamacedo86 Apr 16, 2026
6083102
docs: improve envtest link descriptions
camilamacedo86 Apr 16, 2026
c019c1b
docs: add language tags to code blocks
camilamacedo86 Apr 17, 2026
746acf0
docs: convert headings to sentence case
camilamacedo86 Apr 17, 2026
6d7b71d
docs: convert internal URLs to relative paths
camilamacedo86 Apr 17, 2026
9edb785
docs: convert future tense to present tense
camilamacedo86 Apr 17, 2026
01ec578
docs: replace we with direct address
camilamacedo86 Apr 17, 2026
3cb9835
docs: convert passive voice to active voice
camilamacedo86 Apr 17, 2026
8c9f56d
docs: capitalize Kubernetes in prose
camilamacedo86 Apr 17, 2026
4413dd4
docs: capitalize YAML and JSON in prose
camilamacedo86 Apr 17, 2026
7c462b4
docs: remove contractions
camilamacedo86 Apr 17, 2026
a64f9cf
Merge pull request #5640 from camilamacedo86/docs-enhance
k8s-ci-robot Apr 17, 2026
a4de8bd
doc: Add skill for documentation
camilamacedo86 Apr 17, 2026
2cd4b07
Merge pull request #5639 from camilamacedo86/add-doc-skill
k8s-ci-robot Apr 17, 2026
e67e6d0
chore: remove dependency pins and update
camilamacedo86 Apr 17, 2026
fd7f7cf
:seedling: Bump devcontainers/ci from 0.3.1900000448 to 0.3.1900000449
dependabot[bot] Apr 17, 2026
2b323de
Merge pull request #5646 from kubernetes-sigs/dependabot/github_actio…
k8s-ci-robot Apr 18, 2026
cb53d5a
Merge pull request #5645 from camilamacedo86/up-dep-remove-pin
k8s-ci-robot Apr 18, 2026
ee2f684
:seedling: (cli): correct SKILL canonical entries and normalize root …
nerdeveloper Apr 18, 2026
69fbb5f
:seedling: (cli/alpha): normalize update/generate flag descriptions p…
nerdeveloper Apr 18, 2026
3e73327
docs(grafana/v1alpha): remove init from subcommands
vitorfloriano Apr 18, 2026
05f2078
Merge pull request #5650 from vitorfloriano/docs-update-grafana-subcmds
k8s-ci-robot Apr 19, 2026
934c16b
Merge pull request #5648 from nerdeveloper/fix-skill-cli-descriptions…
k8s-ci-robot Apr 19, 2026
6ea1ca0
Merge pull request #5649 from nerdeveloper/normalize-alpha-cli-flag-d…
k8s-ci-robot Apr 19, 2026
c896d0d
feat(cli): mark kind and version flags as required
vitorfloriano Apr 18, 2026
4ef6a45
Merge pull request #5647 from vitorfloriano/create-api-mark-flags-req…
k8s-ci-robot Apr 19, 2026
ccc59ad
:seedling: Bump goreleaser/goreleaser-action from 7.0.0 to 7.1.0
dependabot[bot] Apr 21, 2026
a50a53a
Merge pull request #5652 from kubernetes-sigs/dependabot/github_actio…
k8s-ci-robot Apr 21, 2026
d251e38
docs(designs): typo commited -> committed in update_action design
SAY-5 Apr 22, 2026
f89cae8
✨ (go/v4): upgrade golangci-lint to v2.11.4 (#5653)
dongjiang1989 Apr 22, 2026
536243d
Merge pull request #5654 from SAY-5/chore/typo-commited
k8s-ci-robot Apr 22, 2026
bb1c0a4
:seedling: Bump github.com/onsi/ginkgo/v2 from 2.28.1 to 2.28.2
dependabot[bot] Apr 28, 2026
038a274
:seedling: Bump goreleaser/goreleaser-action from 7.1.0 to 7.2.1
dependabot[bot] Apr 28, 2026
d8c00e2
:book: Bump github.com/onsi/ginkgo/v2
dependabot[bot] Apr 28, 2026
4c68518
Merge pull request #5659 from kubernetes-sigs/dependabot/go_modules/g…
k8s-ci-robot Apr 28, 2026
b10f00d
Merge pull request #5660 from kubernetes-sigs/dependabot/github_actio…
k8s-ci-robot Apr 28, 2026
b1eb5ab
Merge pull request #5661 from kubernetes-sigs/dependabot/go_modules/d…
k8s-ci-robot Apr 28, 2026
dbffc03
:book: Bump github.com/onsi/ginkgo/v2
dependabot[bot] Apr 28, 2026
0d8acbb
:seedling: Bump github.com/onsi/gomega from 1.39.1 to 1.40.0
dependabot[bot] Apr 28, 2026
3abd173
Merge pull request #5665 from kubernetes-sigs/dependabot/go_modules/g…
k8s-ci-robot Apr 29, 2026
e420ee9
:seedling: Bump github.com/onsi/ginkgo/v2 from 2.28.2 to 2.28.3
dependabot[bot] Apr 29, 2026
61ed3ae
Merge pull request #5662 from kubernetes-sigs/dependabot/go_modules/d…
k8s-ci-robot Apr 29, 2026
505d63f
Merge pull request #5663 from kubernetes-sigs/dependabot/go_modules/g…
k8s-ci-robot Apr 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
298 changes: 298 additions & 0 deletions .agents/skills/cli-descriptions/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,298 @@
---
name: cli-descriptions
description: Standards for CLI command and flag descriptions in Kubebuilder. Use when writing or reviewing CLI flags, commands, or help text.
license: Apache-2.0
metadata:
author: The Kubernetes Authors
---

# CLI Description Standards for Kubebuilder

Use this skill to write, review, or normalize Kubebuilder CLI command descriptions, flag help text, and examples.

## Workflow

1. Identify the CLI element:
- boolean flag
- value flag
- command short description
- command long description
- examples/help text
2. Apply the matching standard below.
3. Rewrite the text to match the standard.
4. If reviewing, explain the issue briefly and propose the corrected wording.

## Core principles

- Prefer clarity over brevity.
- Use consistent patterns across similar flags and commands.
- Include examples, defaults, or fallback behavior when useful.
- Tell users what happens when they use the flag.

## Boolean flags

### Default false (opt-in behavior)

Use this pattern:

```
If set, <what happens>
```

Examples:

- `If set, enable multigroup layout (organize APIs by group)`
- `If set, skip Go version check`
- `If set, attempt to create resource even if it already exists`

### Default true (opt-out behavior)

When a boolean flag defaults to `true`, describe the behavior and how to disable it:

```
<what happens by default>; use --flag=false to <opposite behavior>
```

Or for flags with more context:

```
<what happens> (enabled by default; use --flag=false to disable)
```

Examples:

- `Run 'make generate' after generating files (enabled by default; use --make=false to disable)`
- `Run 'make manifests' after generating files (enabled by default; use --manifests=false to disable)`
- `Resource is namespaced by default; use --namespaced=false to create a cluster-scoped resource`
- `Generate the resource without prompting the user (enabled by default; use --resource=false to disable)`
- `Download dependencies after scaffolding (enabled by default; use --fetch-deps=false to disable)`

### Tri-state (enable/disable/preserve)

When a boolean flag preserves existing values if not provided, and supports both enabling and disabling:

```
Enable or disable <what>; use --flag=false to disable
```

Examples:

- `Enable or disable multigroup layout (organize APIs by group); use --multigroup=false to disable`
- `Enable or disable namespace-scoped deployment (default: cluster-scoped); use --namespaced=false to disable`

### Prompting flags

When a flag controls prompting behavior (prompts by default, but accepts explicit true/false to skip the prompt):

```
Prompt whether to <action> by default; use --flag=true or --flag=false to skip the prompt
```

Examples:

- `Prompt whether to generate the controller by default; use --controller=true or --controller=false to skip the prompt`

## Value flags

Use these patterns:

With an example:
```
<what> (e.g., <example>)
```

With a default:
```
<what> (e.g., <example>). Defaults to <default> if unset
```

With auto-detection:
```
<what> (e.g., <example>); auto-detected <method> if not provided
```

Examples:

- `Go module name (e.g., github.com/user/repo); auto-detected from current directory if not provided`
- `License header to use for boilerplate (e.g., apache2, none). Defaults to apache2 if unset`
- `Project version (e.g., 3). Defaults to CLI version if unset`
- `Domain for your APIs (e.g., example.org creates crew.example.org for API groups)`

## Optional value flags

When a flag is optional and modifies behavior, use:

```
[Optional] <what>. <additional context if useful> (e.g., <example>)
```

Examples:

- `[Optional] Container command to use for image initialization (e.g., --image-container-command="memcached,--memory-limit=64,modern,-o,-v")`
- `[Optional] Container port used by the container image (e.g., --image-container-port="11211")`

## Path flags

Use:

```
Path to <what>; <behavior> (e.g., <example>)
```

Example:

- `Path to custom license file; content copied to hack/boilerplate.go.txt (overrides --license)`

## List flags

For comma-separated lists or arrays:

```
Comma-separated list of <what> (e.g., --flag value1,value2)
```

Example:

- `Comma-separated list of spoke versions to be added to the conversion webhook (e.g., --spoke v1,v2)`

## Deprecated flags

For deprecated flags that will be removed in future versions:

```
[DEPRECATED] If set, <what it does>. This option will be removed in future versions
```

Example:

- `[DEPRECATED] If set, attempts to create resource under the API directory (legacy path). This option will be removed in future versions`

## Command short descriptions

Rules:

- Start with a capital letter.
- Use a brief phrase or sentence.
- Do not end with a period.
- Prefer imperative wording.

Examples:

- `Initialize a new project`
- `Scaffold a Kubernetes API`
- `Scaffold a Kubernetes API or webhook`

## Command long descriptions

Long descriptions should:

- explain what the command does
- mention generated files or directories when relevant
- separate required vs optional/configuration flags when helpful
- use full sentences and punctuation
- include behavioral notes when useful

Use this structure when it fits:

```
Initialize a new project including the following files:
- a "go.mod" with project dependencies
- a "PROJECT" file that stores project configuration
- a "Makefile" with useful make targets

Required flags:
--domain: Domain for your APIs (e.g., example.org creates crew.example.org for API groups)

Configuration flags:
--repo: Go module name (e.g., github.com/user/repo); auto-detected from current directory if not provided

Note: Layout settings can be changed later with 'kubebuilder edit'.
```

## Command examples

Examples should:

- be realistic and valid
- progress from simple to complex
- explain non-obvious cases
- use the command name variable when writing Go examples

Example:

```go
subcmdMeta.Examples = fmt.Sprintf(` # Initialize a new project
%[1]s init --domain example.org

# Initialize with multigroup layout
%[1]s init --domain example.org --multigroup

# Initialize with all options combined
%[1]s init --plugins go/v4,autoupdate/v1-alpha --domain example.org --multigroup --namespaced
`, cliMeta.CommandName)
```

## Common Kubebuilder flag wording

Use these standard descriptions when applicable:

- `--domain`: `Domain for your APIs (e.g., example.org creates crew.example.org for API groups)`
- `--repo`: `Go module name (e.g., github.com/user/repo); auto-detected from current directory if not provided`
- `--plugins`: `Comma-separated list of plugin keys to use (e.g., go/v4, helm/v2-alpha). Defaults to the built-in go/v4 bundle if unset`
- `--multigroup`:
- In `init`: `If set, enable multigroup layout (organize APIs by group)`
- In `edit`: `Enable or disable multigroup layout (organize APIs by group); use --multigroup=false to disable`
- `--skip-go-version-check`:
- When default is `false`: `If set, skip Go version check`
- When default is `true`: `Skip the Go version check (enabled by default; use --skip-go-version-check=false to enforce)`
- `--force`: `If set, attempt to create resource even if it already exists` (or `If set, regenerate all files except Chart.yaml` for helm plugins)
- `--license`:
- In `init`: `License header to use for boilerplate (e.g., apache2, none). Defaults to apache2 if unset`
- In `edit`: `License header to use for boilerplate (e.g., apache2, none). If unset, preserves the existing boilerplate`
- `--owner`: `Owner name for copyright license headers`
- `--namespaced`:
- In `api`: `Resource is namespaced by default; use --namespaced=false to create a cluster-scoped resource`
- In `edit`: `Enable or disable namespace-scoped deployment (default: cluster-scoped); use --namespaced=false to disable`
- `--fetch-deps`: `Download dependencies after scaffolding (enabled by default; use --fetch-deps=false to disable)`
- `--make`: `Run 'make generate' after generating files (enabled by default; use --make=false to disable)`
- `--manifests`: `Run 'make manifests' after generating files (enabled by default; use --manifests=false to disable)`
- `--resource`: `Generate the resource without prompting the user (enabled by default; use --resource=false to disable)`
- `--controller`: `Prompt whether to generate the controller by default; use --controller=true or --controller=false to skip the prompt`

## Review output pattern

When reviewing, use this format:

- **Issue**: one short sentence describing what is wrong
- **Suggested text**: the corrected help text
- **Reason**: one short sentence tying it back to the standard

Example:

- **Issue**: Boolean flag description does not describe the behavior when the flag is present.
- **Suggested text**: `If set, enable multigroup layout (organize APIs by group)`
- **Reason**: Boolean flags should follow the `If set, ...` pattern.

## Checklist

- [ ] Boolean flags that default to `false` use `If set, ...`
- [ ] Boolean flags that default to `true` describe the behavior and how to disable (e.g., "enabled by default; use --flag=false to disable")
- [ ] Value flags include examples with `(e.g., ...)`
- [ ] List flags use `Comma-separated list of ...`
- [ ] Deprecated flags are marked with `[DEPRECATED]`
- [ ] Defaults are explicitly stated when they exist with "if unset" (e.g., "Defaults to X if unset")
- [ ] Auto-detection or fallback behavior is documented
- [ ] Short descriptions are capitalized and do not end with a period
- [ ] Long descriptions are complete and organized
- [ ] Examples are realistic and valid
- [ ] Terminology is consistent across commands and plugins

## Notes

- Apply these standards across all Kubebuilder plugins.
- Prefer consistency across the codebase over one-off wording choices.
- When the same flag appears with equivalent semantics across plugins, use identical descriptions. When semantics differ (e.g., `--force` in `create`/`api`/`edit`, or `--license` in `init`/`edit`), document the per-command variant explicitly.
- Flag descriptions should not end with a period (matches the `--help` convention used by cobra and the rest of Kubebuilder).
- For multi-line flag descriptions in code, use string concatenation with `+` and break at natural boundaries (70-80 characters per line).
- When in doubt, choose the wording that is clearest in `--help` output.
- See [references/REFERENCE.md](references/REFERENCE.md) for technical references and industry standards that inform these guidelines.
11 changes: 11 additions & 0 deletions .agents/skills/cli-descriptions/references/REFERENCE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Technical References

Industry standards and best practices that inform the CLI description standards.

## Standards

- [Cobra Documentation](https://cobra.dev/) - CLI framework used by Kubebuilder and kubectl
- [POSIX Utility Conventions](https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html) - Option syntax and argument handling
- [GNU Coding Standards - Command-Line Interfaces](https://www.gnu.org/prep/standards/html_node/Command_002dLine-Interfaces.html) - Long options and help text
- [Command Line Interface Guidelines](https://clig.dev/) - Modern CLI design patterns
- [Kubernetes kubectl Usage Conventions](https://kubernetes.io/docs/reference/kubectl/conventions/) - Kubernetes CLI patterns
Loading
Loading