# Contribute

Set up a local development environment and submit your first merge request. YotoShelf is built to welcome AI-assisted contributors.

YotoShelf is open source (MIT) and actively maintained. Contributions are welcome — bug fixes, new features, documentation improvements, and test coverage all count.

## Before you start

Read [AGENTS.md](https://gitlab.com/yotoshelf/yotoshelf/-/blob/main/AGENTS.md) in the repository root before making any changes. It documents the required workflow, architecture constraints, and the validation checklist every merge request must pass. The site you are reading is a rendering — the repository file is the source of truth.

AI-assisted contributors should fetch [/llms-full.txt](https://yotoshelf.dev/llms-full.txt) for a complete machine-readable rendition of this documentation.

## Sections in this guide

- [How It Works](/contribute/how-it-works) — the AGENTS.md contract summarised: stop conditions, blast radius limits, the one-thing-at-a-time rule
- [Architecture](/contribute/architecture) — Go + huma + SQLite/sqlc/goose; Astro 6/Svelte 5 frontend; go-yoto client; design system submodule
- [Dev Loop](/contribute/dev-loop) — clone, mise, just recipes, fixture seeding, E2E
- [CI](/contribute/ci) — the yotoshelf/ci catalog components, what each gate checks, the renovate preset
- [Conventions](/contribute/conventions) — file-size limits, structural conformity, conventional commits, i18n

## Quick orientation

```sh
git clone --recurse-submodules https://gitlab.com/yotoshelf/yotoshelf.git
cd yotoshelf
mise install   # pins Go, Node, sqlc, golangci-lint from .mise.toml
just dev       # backend :8080 + frontend :4300, hot reload
```

After every change, run `just check`. If it passes locally, it passes in CI.
