diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..84079cdeb17fb1e4ad7f51ddaaf8161d86f3ec1f
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,14 @@
+---
+include:
+  - project: shore/ci-stuff
+    file: templates/pre-commit.yml
+  - project: shore/ci-stuff
+    file: templates/python.yml
+
+variables:
+  SKIP_PYPI_UPLOAD: 1
+
+install wheel:
+  extends: .install-wheel
+  script:
+    - sampleproject
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..eaafb92f9ec53c25322a8f01119cb1b004489288
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,59 @@
+---
+repos:
+  - repo: https://github.com/pre-commit/pre-commit-hooks.git
+    rev: v4.0.1
+    hooks:
+      - id: check-merge-conflict
+      - id: check-toml
+      - id: check-yaml
+      - id: end-of-file-fixer
+      - id: trailing-whitespace
+        exclude: \.diff$
+
+  - repo: https://github.com/codespell-project/codespell.git
+    rev: v2.1.0
+    hooks:
+      - id: codespell
+
+  - repo: https://github.com/amperser/proselint.git
+    rev: 0.10.2
+    hooks:
+      - id: proselint
+        types: [plain-text]
+        exclude: LICENSE
+
+  - repo: https://gitlab.com/devopshq/gitlab-ci-linter.git
+    rev: v1.0.2
+    hooks:
+      - id: gitlab-ci-linter
+        args:
+          - "--server"
+          - https://git.shore.co.il
+
+  - repo: https://git.shore.co.il/nimrod/yamltool.git
+    rev: v0.1.2
+    hooks:
+      - id: yamltool
+
+  - repo: https://github.com/adrienverge/yamllint.git
+    rev: v1.26.3
+    hooks:
+      - id: yamllint
+
+  - repo: https://github.com/Lucas-C/pre-commit-hooks-markup.git
+    rev: v1.0.1
+    hooks:
+      - id: rst-linter
+
+  - repo: https://github.com/myint/rstcheck.git
+    rev: master
+    hooks:
+      - id: rstcheck
+
+  - repo: https://github.com/ambv/black.git
+    rev: 22.3.0
+    hooks:
+      - id: black
+        args:
+          - |
+            --line-length=79
diff --git a/README.rst b/README.rst
index 34fe6d16372640b489dc432034a725c95efb9ce1..de4bf1f9dd2687b4d924917477d0579ceb3397ca 100644
--- a/README.rst
+++ b/README.rst
@@ -1,6 +1,10 @@
 Sample Python project
 #####################
 
+.. image:: https://git.shore.co.il/nimrod/samplepyproject/badges/main/pipeline.svg
+    :target: https://git.shore.co.il/nimrod/samplepyproject/-/commits/main
+    :alt: pipeline status
+
 A sample Python project. Meant as an instruction on creating a modern Python
 package with just the standard Python tooling (setuptools, wheel) and without
 additional tools like `Poetry <https://python-poetry.org/>`_, `Flit