# Contributing

Start with the owner who supplied your checkout. The repository and CLI distribution currently have restricted access; a public issue tracker and contribution URL are not available yet.

## Make a useful report

Include the documentation URL, product revision, compiler and environment, exact command, expected result and actual coverage or error. A small reproducer is more useful than a screenshot of a total. Remove unrelated private source and credentials before sharing.

## Change a check

Work from the approved behavior contract for that check. Record an independent expectation before changing implementation. Include positive, control and unknown-boundary cases, and preserve evidence for the admitted source forms and profile. Do not promote availability, maturity or a blocking policy from a test count alone.

## Change documentation with the product

A change to a command, option, default, schema, supported environment, registration or evidence requires a documentation impact review in the same change. Update the curated English source and its structured provenance, then regenerate HTML/Markdown/JSON. Run drift, example and static-site checks relevant to the changed claim.

In the owner-provided checkout, use Node 24.18.0 and npm 11.16.0. From the repository root:

```sh
npm ci --prefix landing
npm ci --prefix website
npm run check:drift --prefix website
npm run test:catalog --prefix website
python3 website/scripts/reproduce-public.py
npm test --prefix landing
npm run build --prefix landing
npm exec --prefix landing -- playwright install chromium firefox webkit
npm run test:browser --prefix website
npm run audit:links --prefix website
```

The documentation test command regenerates the static site before checking its public representations. The reproduction command installs locked dependencies in a fresh temporary source directory and compares every exported file; add `--offline` only when the npm cache is complete. The link audit requires both static builds and internet access; an unresolved external target is a failure. The browser tests start local servers for the two artifacts. These commands do not publish anything.

On the documented native Swift profile, `python3 website/scripts/verify-cli-snapshot.py` builds the pinned analyzer and replays the three examples. It needs dependency access and may take several minutes. Run one outer SwiftPM build at a time. The optional macOS CI job needs a separately configured compatible runner; this documentation does not establish that one is available.

## Review and publish

Content and implementation evidence need review before publication. Check the exact static artifact, every link and fragment, its accessibility and browser behavior, and the rollback package. Required real assistive-technology sessions cannot be replaced by automated DOM checks. The pre-prod remains noindex.


---

Language: en
Canonical: https://docs.swift-analyzer.com/project/contributing/
Product revision: 524fa07e0ae4153c84ac12ae9eb6559df89ec2be
Catalog revision: 4558458d
Documentation digest: 1f17ba58ab08627e0de898f1442067b09e960b48cd5605d6529e9275f8930d68
Channel: pre-prod; maturity: experimental; access: owner-provided checkout.
