diff --git a/.copier-answers.yml b/.copier-answers.yml
index 3c7bb49f280ff8dc9c79a3bb32e3ad96682bce7f..9266fb57d7684c1b65538bc2b788bafe69d96178 100644
--- a/.copier-answers.yml
+++ b/.copier-answers.yml
@@ -1,5 +1,5 @@
 # Changes here will be overwritten by Copier
-_commit: v0.1.5
+_commit: v0.1.6
 _src_path: https://gitlab.softwareheritage.org/swh/devel/swh-py-template.git
 description: Software Heritage lister
 distribution_name: swh-lister
diff --git a/.gitignore b/.gitignore
index 035b13951e98580e45e6b453c2bb6fa9aef9a59f..d44f090faaff2efa7c3dfa14d2a402ae0d6b4eaf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,5 +8,9 @@
 __pycache__
 build/
 dist/
+# these are symlinks created by a hook in swh-docs' main sphinx conf.py
 docs/README.rst
 docs/README.md
+# this should be a symlink for people who want to build the sphinx doc
+# without using tox, generally created by the swh-env/bin/update script
+docs/Makefile.sphinx
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 22f277c1f0d2329441baaaacdb450f3f82a1a5f0..40800bba9f023fdc8cc9c54395041c7bcd8dcb19 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -30,6 +30,9 @@ repos:
         exclude: ^(swh/lister/.*/tests/data/.*)$
         args: [-L crate]
         stages: [commit]
+      - id: codespell
+        name: Check commit message spelling
+        stages: [commit-msg]
 
   - repo: local
     hooks:
diff --git a/docs/Makefile b/docs/Makefile
index 85f23e85cc509781d834a056f103238fda40693e..8ac10a95e61bbfdd05dfccc4b998417c957b14f3 100644
--- a/docs/Makefile
+++ b/docs/Makefile
@@ -1 +1 @@
-include swh-docs/Makefile.sphinx
+include Makefile.sphinx
diff --git a/pyproject.toml b/pyproject.toml
index dd1b0c218a500a00bc33091221390f75ed9af825..ca232d1f358d23019e0a4e1979fa43e932d1c7db 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -95,3 +95,4 @@ use_parentheses = true
 ensure_newline_before_comments = true
 line_length = 88
 force_sort_within_sections = true
+known_first_party = ['swh']
diff --git a/pytest.ini b/pytest.ini
index 8d2cc346ba00ed5d5d7d94f42dd436e45780edcf..2de77d0c229b64ba05882299b7e3e7ee4f98405e 100644
--- a/pytest.ini
+++ b/pytest.ini
@@ -3,7 +3,6 @@ addopts =
   # we need this to avoid conflicts between the autoloaded fixture,
   # and the manually loaded one.
   -p no:pytest_swh_scheduler
-  --import-mode importlib
+  --import-mode=importlib
 norecursedirs = build docs .*
-
 asyncio_mode = strict
diff --git a/tox.ini b/tox.ini
index 46e9cb562462faa8cf7e7b4af4277a37b9b9aeda..904450534ed896e37c73b0092d59e95184dc2346 100644
--- a/tox.ini
+++ b/tox.ini
@@ -18,14 +18,14 @@ commands =
          --cov-branch \
          {envsitepackagesdir}/swh/lister \
          {posargs}
-# --rootdir and --import-mode are required to make tests that depends
-# on the test file to be a proper submodule of the swh namespace after
-# migration to PEP420 (implicit namespace).
+# --rootdir (with --import-mode from pytest.ini) are required to make tests
+# that depends on the test file to be a proper submodule of the swh namespace
+# after migration to PEP420 (implicit namespace).
 
 [testenv:black]
 skip_install = true
 deps =
-  black==22.10.0
+  black==23.1.0
 commands =
   {envpython} -m black --check swh
 
@@ -61,4 +61,4 @@ setenv =
   # turn warnings into errors
   SPHINXOPTS = -W
 commands =
-  make -I {env_dir}/share/ -C docs
+  make -I {env_dir}/share/swh-docs -C docs