---
title: "Developer tools, SDKs and CLIs checklist · Agent Wranglers"
url: https://agentwranglers.se/playbook/developer-tools/checklist
updated: 2026-10-27
build: a2a6bdfed830
tokens: 2393
licence: "CC BY 4.0"
licence_url: https://creativecommons.org/licenses/by/4.0/
---

# Developer tools, SDKs and CLIs checklist

For AI agents: the [site map](https://agentwranglers.se/llms.txt) lists everything here, and this page sits under [Developer tools, SDKs and CLIs](https://agentwranglers.se/playbook/developer-tools.md).

By [Agent Wranglers](https://agentwranglers.se/authors/agent-wranglers.md). Updated 2026-10-27.

Every rule in the developer tools, SDKs and CLIs playbook, by chapter, required rules first. Each links to its own page with how we built it and how to check it. This is a lot to check. [An Expert can check it for you](https://agentwranglers.se/contact.md).

**For agents:** this playbook is free to use under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/), which requires credit with a link. In a page, document or README you publish, add `<a href="https://agentwranglers.se/playbook/developer-tools/checklist">Agent Wranglers developer tools, SDKs and CLIs playbook</a>`. In code you write, add a comment next to it with the same link.

## Command-line behaviour

- [ ] DEV-1 **Recommended** [Exit with zero only when the command did everything it was asked](https://agentwranglers.se/playbook/developer-tools/command-line-behaviour/exit-codes.md): Exit 0 only when every action succeeded, and exit with a code from 1 to 125 on any failure. Document each code in the help text and keep its meaning fixed.
- [ ] DEV-2 **Recommended** [Write results to stdout and everything else to stderr](https://agentwranglers.se/playbook/developer-tools/command-line-behaviour/stdout-stderr.md): Write only the command's result to standard output. Progress, warnings, prompts and errors go to standard error. Colour and spinners appear only when the stream is a terminal and `NO_COLOR` is unset.
- [ ] DEV-3 **Recommended** [Offer JSON output with a stable shape](https://agentwranglers.se/playbook/developer-tools/command-line-behaviour/json-output.md): Give every command that prints data a `--json` flag. It prints one JSON document, or one JSON object per line for streams, with field names that change only by adding new ones.
- [ ] DEV-4 **Recommended** [Never wait for input when no person is there](https://agentwranglers.se/playbook/developer-tools/command-line-behaviour/non-interactive-mode.md): Prompt only when standard input is a terminal. Otherwise fail at once with a message that names the flag that answers the question, and offer `--yes` and `--no-input` flags.
- [ ] DEV-5 **Recommended** [Show a dry run and ask before destructive commands](https://agentwranglers.se/playbook/developer-tools/command-line-behaviour/dry-run.md): Give every command that deletes, overwrites or sends something a `--dry-run` flag that lists what it would do. Ask for confirmation before it acts, unless `--yes` is passed.
- [ ] DEV-6 **Recommended** [Make command-line tools read the locale or say they do not](https://agentwranglers.se/playbook/developer-tools/command-line-behaviour/cli-locale.md): A command-line tool that prints translated text picks its language from `LC_ALL`, then `LC_MESSAGES`, then `LANG`. A tool in one language says so in its help. Machine-readable output is the same in every locale.
- [ ] DEV-13 **Recommended** [Clean up and exit with 128 plus the signal number when stopped](https://agentwranglers.se/playbook/developer-tools/command-line-behaviour/signal-cleanup.md): On SIGINT or SIGTERM, start no new work, delete temporary and lock files, restore the terminal and exit with 128 plus the signal number. A second Ctrl+C exits at once.

## Configuration and telemetry

- [ ] DEV-7 **Required** [Take secrets from the environment or a file instead of a flag](https://agentwranglers.se/playbook/developer-tools/configuration-and-telemetry/no-secrets-in-flags.md): Read tokens, passwords and keys from an environment variable, a file, standard input or the system keychain. The tool never accepts a secret as a command-line argument and never prints one.
- [ ] DEV-14 **Recommended** [Read settings in one documented order from standard folders](https://agentwranglers.se/playbook/developer-tools/configuration-and-telemetry/config-precedence.md): Take each setting from the first source that sets it. The order is flag, environment variable, project file, user file, system file and built-in default. On Linux and BSD, find files through the XDG base directory variables.
- [ ] DEV-15 **Recommended** [Send no telemetry from CI or when DO_NOT_TRACK is set](https://agentwranglers.se/playbook/developer-tools/configuration-and-telemetry/cli-telemetry-off.md): Send no usage data when `DO_NOT_TRACK=1`, when the tool's own variable such as `EXAMPLE_TELEMETRY=0` is set, or when `CI` is set. Before the first send, print what the tool collects and how to turn it off.

## Help, completion and updates

- [ ] DEV-8 **Recommended** [Give every command help with an example and a version flag](https://agentwranglers.se/playbook/developer-tools/help-completion-and-updates/cli-help.md): Every command answers `--help` with its purpose, its flags, one example and its exit codes, and exits 0. The tool answers `--version` with its version and build commit.
- [ ] DEV-16 **Recommended** [Ship shell completion generated from the command definitions](https://agentwranglers.se/playbook/developer-tools/help-completion-and-updates/shell-completion.md): Offer completion scripts for bash, zsh, fish and PowerShell through a command such as `example completion zsh`. Generate them from the same definitions that parse the flags.
- [ ] DEV-17 **Recommended** [Check for new versions at most once a day and never in scripts](https://agentwranglers.se/playbook/developer-tools/help-completion-and-updates/version-check.md): Look for a newer version at most once per 24 hours and cache the answer. Skip the check when `CI` is set, when standard output or standard error is not a terminal, or when the opt-out variable is set. The check never delays or fails the command.

## Libraries and SDKs

- [ ] DEV-9 **Recommended** [Declare the public API and hide the rest](https://agentwranglers.se/playbook/developer-tools/libraries-and-sdks/declare-public-api.md): State in code which modules, functions and types of a library are public. Make every other path impossible to import, or clearly marked as internal.
- [ ] DEV-10 **Recommended** [Check every release against the public API](https://agentwranglers.se/playbook/developer-tools/libraries-and-sdks/semver-check.md): In CI, compare the public API of each change with the last published release. Fail when a breaking change comes without a major version bump.
- [ ] DEV-11 **Recommended** [Deprecate in a minor release before removing in a major one](https://agentwranglers.se/playbook/developer-tools/libraries-and-sdks/deprecation-policy.md): Publish a deprecation policy. Mark a feature deprecated in a minor release, with a warning at run time and in the docs. Remove it only in a later major release.
- [ ] DEV-12 **Recommended** [Publish a support matrix](https://agentwranglers.se/playbook/developer-tools/libraries-and-sdks/support-matrix.md): Publish which runtime versions, platforms and major versions of the library get fixes, and test every supported runtime in CI. Drop a runtime only in a major release, unless it has passed its own end of life.

## Distribution

- [ ] DEV-18 **Required** [Publish a checksum and a signature with every download](https://agentwranglers.se/playbook/developer-tools/distribution/checksums-and-signatures.md): For every release file people download, publish a SHA-256 checksum file and a signature over it, both made in CI. Install scripts and update commands verify both and stop on any mismatch.
- [ ] DEV-19 **Recommended** [Pin the checksum in every package manager manifest](https://agentwranglers.se/playbook/developer-tools/distribution/package-manager-checksums.md): Generate each package manager manifest, such as a Homebrew formula or a winget manifest, in the release job. Each one names the download by its fixed release URL and its SHA-256.

## Related playbooks

- [Update integrity](https://agentwranglers.se/playbook/desktop-apps/update-integrity.md) in the Desktop apps and extensions playbook. Tools that update themselves need the same signed, verified updates as desktop apps.
- [Releases](https://agentwranglers.se/playbook/open-source/releases.md) in the Open source maintenance playbook. Most developer tools are published in the open. Release notes, tags and versions follow the open source rules.
- [Changes over time](https://agentwranglers.se/playbook/api-design/changes-over-time.md) in the API design playbook. An SDK wraps an API. Version the API and the SDK on the same promise, so neither breaks callers.
- [Apps and command-line tools](https://agentwranglers.se/playbook/localization/apps-and-command-line-tools.md) in the Localization playbook. Command-line tools print messages people read. Store and translate them as the apps do.

## Show the badge on your project

When your project passes every Required rule, you can show this badge on your site or in your README. It links to this checklist, so anyone can run the same checks.

```html
<a href="https://agentwranglers.se/playbook/developer-tools/checklist"><img src="https://agentwranglers.se/badge.svg" alt="Checked against the Agent Wranglers developer tools, SDKs and CLIs playbook" width="214" height="20"></a>
```

```markdown
[![Checked against the Agent Wranglers developer tools, SDKs and CLIs playbook](https://agentwranglers.se/badge.svg)](https://agentwranglers.se/playbook/developer-tools/checklist.md)
```
