argot-cmd 0.1.2

An agent-first command interface framework for Rust
Documentation
# Contributing to argot

Thank you for your interest in contributing!

## Getting Started

1. Fork the repository and clone your fork
2. Ensure Rust ≥ 1.75.0 is installed (`rustup update stable`)
3. Run the test suite: `cargo test --all-features`
4. Run clippy: `cargo clippy --all-features -- -D warnings`
5. Run formatter: `cargo fmt --all`

## Development Workflow

### Running Tests

```sh
cargo test                        # default features
cargo test --features fuzzy       # with fuzzy search
cargo test --features derive      # with proc-macro derive
cargo test --features mcp         # with MCP transport
cargo test --all-features         # everything
```

### Documentation

```sh
RUSTDOCFLAGS="-D warnings" cargo doc --all-features --no-deps --open
```

### Security Audit

```sh
cargo audit
```

## Pull Request Guidelines

- Every PR must pass `cargo test --all-features`, `cargo clippy --all-features -- -D warnings`, and `cargo fmt --all -- --check`
- New public API items must have rustdoc with `# Examples`, `# Errors`, and `# Panics` sections where applicable
- New features should include tests; bug fixes should include a regression test
- Update `CHANGELOG.md` under `[Unreleased]` with a brief description
- Keep PRs focused; one feature or fix per PR

## Code Style

- Follow standard Rust conventions (`rustfmt` enforced)
- Prefer `thiserror` for error types
- Builders use consuming `self -> Self` pattern
- All public items must be documented (`#![warn(missing_docs)]` is enforced)
- Use `serde_json::Value` for untyped metadata; avoid `HashMap<String, String>` for structured data

## Versioning

See [STABILITY.md](STABILITY.md) for API stability guarantees and versioning policy.

## Project Layout

```
src/
  lib.rs            — public API surface
  model/            — Command, Argument, Flag, Example types and builders
  resolver/         — string → Command resolution
  parser/           — argv tokenization and binding
  query/            — Registry with search
  render/           — plain-text and Markdown renderers
  cli/              — high-level Cli entry point
  transport/        — MCP stdio transport (feature: mcp)
argot-cmd-derive/       — #[derive(ArgotCommand)] proc-macro
examples/           — runnable example programs
tests/              — integration tests
```