# CLI Commands
> For project-wide conventions and anti-patterns, see [CLAUDE.md](../../../../CLAUDE.md) and [agent-rules.md](../../../../docs/agent-rules.md).
## WHERE TO LOOK
| `mod.rs` | Common commands: `status`, `run_list`, `run_show`, `run_approve`, `run_cancel`, `run_workflow_chain`, `stats` |
| `issue.rs` | `IssueCommands` enum — `plan`, `build` |
| `pr.rs` | `PrCommands` enum — `review`, `fix`, `merge` |
| `sat.rs` | `SatCommands` enum — `run` (daemon mode + standalone mode) |
| `milestone.rs` | `handle_sweep` — milestone sweep operations |
## LOCAL CONVENTIONS
- Each subcommand module defines its own `#[derive(Subcommand)]` enum and `handle()` function
- `handle()` in submodules delegates to `run_workflow_chain()` or direct `client.send()` calls in `mod.rs`
- `run_workflow_chain()` (`mod.rs:202`) sends a workflow request, subscribes to daemon events, and waits for completion
- `client.call()` for one-shot responses; `client.send()` for daemon-initiated workflows
- Output formatting lives here — daemon returns raw JSON, commands format for terminal
- No direct `Api` access — CLI must go through daemon
- No business logic — commands are pure serialization/deserialization layers