# Adding Commands

Most commands are defined as TOML in the `commands/` directory. See [`commands/SAMPLE.toml`](https://github.com/michaeldhopkins/safe-chains/blob/main/commands/SAMPLE.toml) for a documented reference of every supported field.

## Steps

1. Add the command to the appropriate `commands/*.toml` file (or create a new one — `build.rs` auto-discovers any `*.toml` under `commands/`)
2. Run `cargo test` and `cargo clippy -- -D warnings`
3. Run `./generate-docs.sh` to regenerate documentation
4. Run `cargo install --path .` to update the installed binary

For commands that need custom validation logic, add a Rust handler in `src/handlers/` and reference it with `handler = "name"` in the TOML.

{{#include includes/cta-new-command.md}}

## Reporting vulnerabilities

{{#include includes/cta-vulnerability.md}}
