# Development

This page covers repository validation,
local wiki authoring commands,
and the publication path from the wiki submodule to GitHub Pages.

## Repository validation

Before sending changes,
run the repository checks that CRIEW development expects:

```bash
cargo fmt --all -- --check
cargo clippy --all-targets --all-features -- -D warnings
cargo test --all-targets --all-features
./scripts/check-coverage.sh
```

## Local wiki workflow

Use the cargo entry points when you edit `docs/wiki` from a CRIEW checkout:

```bash
cargo wiki lint
cargo wiki build
cargo wiki serve
```

You can also run:

```bash
cargo wiki check
```

That runs the wiki copy lint and then the local site build.

## Local build behavior

- `cargo wiki lint` runs the copy check with `autocorrect`.
- If `autocorrect` is missing,
  the first lint run downloads a local copy into `target/wiki-venv/bin/`.
- `cargo wiki build` stages `docs/wiki` into `target/wiki-docs`
  and builds the local site into `target/wiki-site`.
- `cargo wiki serve` stages the wiki,
  installs MkDocs into `target/wiki-venv`,
  and starts a local preview server.

## Publish path

The publication path is:

`docs/wiki` source repo ->
`scripts/prepare-wiki-site.py` staging ->
`mkdocs.yml` build ->
`.github/workflows/wiki-pages.yml` deploy ->
GitHub Pages

`docs/wiki` is a submodule.
That means the main repository publishes the pinned wiki commit,
not the standalone wiki repository's latest remote state.
After a wiki change lands in the submodule,
the main repository still needs the updated gitlink.

## See also

- [Contribution](Contribution.md)
- [CRIEW wiki home](Home.md)
- [Repository source](https://github.com/ChenMiaoi/CRIEW)
- [Architecture design](https://github.com/ChenMiaoi/CRIEW/blob/develop/docs/architecture/design.md)
