# Contributing to 99problems

## Development Setup

```bash
git clone https://github.com/mbe24/99problems
cd 99problems

# Optional: install local pre-commit hook (fmt + clippy)
cp .githooks/pre-commit .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit

cargo build
cargo test
```

Ignored integration tests (live APIs):

```bash
cargo test -- --include-ignored --skip jira_
```

## Local Quality Gates

Run these before committing:

```bash
cargo fmt
cargo clippy --all-targets --no-deps -- -D warnings
cargo clippy --all-targets --no-deps -- -W clippy::pedantic
cargo test
```

## Help and Man Pages

The CLI help and man pages are generated from the clap command model.

Regenerate man pages after CLI/help changes:

```bash
cargo run -- man --output docs/man --section 1
```

Verify no drift:

```bash
git diff -- docs/man
```

## Command Module Layout

Hybrid command-module convention:

- simple commands: `src/cmd/<name>.rs`
- complex commands: `src/cmd/<name>/mod.rs` with submodules

## Pull Requests

1. Create a feature branch.
2. Keep commits focused and compile-safe.
3. Run local quality gates.
4. Open a PR with problem statement + design summary.
