Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -368,6 +368,27 @@ Use the shared helpers in **`pkg/cmd/helptext.go`** for resource commands so Sho

When adding a **new resource** that follows the same CRUD/get/list/delete/disable/enable/create/upsert pattern, add a new constant (e.g. `ResourceDestination`) and use the same Short/Long intro helpers; extend `helptext.go` only when you need a new *pattern* (e.g. a new verb), not for each resource. Keep command-specific wording (e.g. "Create a connection between a source and destination", list filter descriptions) in the command file.

### Labelling something beta

**Default: no label.** A command, flag or MCP tool that ships in a release is supported. Do not mark it beta because it is new, lightly used, or has had no feedback from a beta release — a label on a GA command discourages the use that would build confidence, and newness is not a risk.

Label something beta **only when one of these holds:**

1. **Operational risk.** Misuse can disrupt delivery or lose data in a way the CLI cannot guard against — delivery groups is the example.
2. **A planned breaking change.** Its interface — flags, output shape, tool names or arguments — is expected to change within the next minor release, and you can say what will change.
3. **The feature it wraps is beta.** The API capability behind it is itself beta or behind a feature flag.

**Never** label for newness, low usage, missing beta-tester feedback, or doubt that it works — if it may not work, it is not ready to ship; test it more.

**When a label is justified:**

- **Label the narrowest thing** that is at risk — a flag or an output field, not the whole command.
- **Say what is unstable or risky** in the label's text. A generic "This feature is in beta" tells the reader nothing to act on.
- **Record the exit criterion** — what has to be true for the label to come off, and roughly when — at the moment the label goes on.
- **Review every label at each minor release.** A label with no exit criterion does not come off: the Event Gateway commands carried `[BETA]` from at least v2.0.0 until v3.0.3, through several GA releases.

This is separate from **beta releases** (`vX.Y.Z-beta.N`, npm `@beta`, the `hookdeck-beta` formula), which are a release channel, not a label on a command.

### Cobra Example and output for website docs

CLI content is generated for the website via `tools/generate-reference`. The generator emits usage, **arguments** (if `Annotations["cli.arguments"]` is set), flags, and the command's `Example` field. Human-injected content in the website (output examples, scenario walkthroughs, behavioral notes) is **required**—it improves docs beyond what generation provides.
Expand Down
Loading