Thanks for contributing to GitLab Orbit, the service that turns GitLab SDLC data and source code into a queryable property graph.
Community contributions go through the community fork. GitLab team members contribute directly to this repository.
Install mise, then:
git clone https://gitlab.com/gitlab-org/orbit/knowledge-graph.git
cd knowledge-graph
mise install
mise buildCore tasks:
For the full local setup (Caproni cluster with GitLab, ClickHouse, NATS, and Siphon), see Local development.
mise test:fast runs the unit tests with no Docker. mise test:integration runs the container tests. On macOS, start Docker for them with colima start gkg --memory 12.
For all test layers, the CI jobs, and where to add a test, see Testing.
mise lint:code # Clippy with warnings as errors
mise lint:code:fix # Apply auto-fixable Clippy suggestions
mise lint:docs # markdownlint + Vale + lychee link checksRun mise lint:docs before pushing any documentation changes.
- Comments explain why. Do not narrate what the code shows.
- Reuse existing infrastructure before adding new infrastructure.
- Before changing an area, read its design document and the crate-local
AGENTS.md, if present. - Treat the ontology as the single source of truth for graph-shape facts.
- Read
docs/pages/engineering/development/sox-billing-boundary.mdbefore changing billing.
- Do not change any file under
docs/in an MR that changes code. Change it only when a CI or build check fails without it. Thedocs-in-code-mr-checkCI job enforces this rule. When a check needs the change, add thedocs-in-code-mrlabel and retry the job. - Rewrite or remove stale text instead of preserving history.
- Keep
README.mda front page: what GitLab Orbit is, the quickstart, and links. Put lists such as languages, entity types, and commands only in the page that owns them, and link to that page. Link to repository files by relative path, so thecheck_docs_markdownCI job checks each link. - When you add, move, or remove an owning guide, update its pointers in the
byte-identical
AGENTS.mdandCLAUDE.mdfiles. - Use the canonical terms in
CONTEXT.md. Add a term only when a new domain concept could confuse a new contributor. - Follow the GitLab documentation principles in
.ai/principles/distilled/when writing pages underdocs/docs-gitlab-com/. A greenmise lint:docsrun does not mean a page follows them.
- A person creates each issue and epic. An agent that runs the create call needs the author's approval of the draft first. The request to do the work is not that approval.
- Agents may draft content. The author keeps every section above the Agent context block in their own words. Put generated content in that block.
MR titles must follow Conventional Commits format:
type(scope): short description
Examples: fix(compiler): correct aggregation undercount, docs: add CONTRIBUTING.md.
- Non-trivial MRs (features, refactors, architectural changes) must reference an issue:
Closes #NorRelates to #N. - Trivial MRs (typos, minor dependency bumps, or formatting-only changes) do not need an issue.
- Keep each MR focused on one concern.
- Use the MR and issue templates under
.gitlab/. - Read each template's
TEMPLATE CONVENTIONblock before you write. - Load the
/orbit-planningskill before you draft or label an issue, epic, or MR.
Keep the reviewer summary to two or three plain sentences. Describe the symptom and fix without implementation names.
Put mechanics, alternatives, and file details in the Agent context block. In comments, lead with the verdict and collapse long reasoning when it helps.
- Open issues — the
orbit::hackathonlabel marks good entry points. - AGENTS.md — tooling entry point and map to the owning guides.
- CONTEXT.md — domain glossary. Use the canonical terms when writing code, docs, or MR descriptions.
