Skip to main content

CONTRIBUTING.md

# Contributing

SquidSonar is an embeddable Phoenix UI for inspecting Squidie workflow runs.
Keep changes small, focused, and easy to review.

## Development

Use the toolchain in `.tool-versions`, then run:

```bash
mix deps.get
mix precommit
```

`mix precommit` runs compile, format checks, and tests.

## Quality Gates

The repo includes strict quality-gate aliases for duplicate-code and code-flow
review:

```bash
mix quality_gates
mix quality_gates.ex_dna
mix quality_gates.reach
```

Current tool versions are `ex_dna` 1.5.2 and `reach` 2.7.1. Both are
dev/test-only dependencies with `runtime: false`.

`mix quality_gates.ex_dna` runs
`mix ex_dna --min-mass 40 --max-clones 0 --format console`. This fails on any
reported clone at the configured mass threshold.

`mix quality_gates.reach` runs `mix reach.check --smells --strict`. This fails
on any Reach smell finding.

These checks are part of `mix precommit` and CI. Do not bundle broad cleanup
with unrelated changes. Fix meaningful findings in the smallest behavior-safe
slice, and suppress an intentional finding only when the source comment explains
the domain reason it should remain.

## Example App Coverage

Every user-facing feature should include matching example-app coverage when the
behavior can be demonstrated in a running Phoenix app. The example app should
make new dashboard behavior visible with real Squidie workflow data.

## Pull Requests

- Use Conventional Commits.
- Keep one coherent intent per PR.
- Include the exact verification commands you ran.
- Include screenshots or video for UI changes when practical.
- Do not include secrets, local paths, hostnames, or machine-specific metadata.