diff --git a/README.md b/README.md
index 80b0617c344766652f66dbdbcced5c04d0dca9ec..a1f77fd006b9a44006bae2f8383ecd0a06228047 100644
--- a/README.md
+++ b/README.md
@@ -200,9 +200,115 @@ Here are some advices about your **secrets** (variables marked with a :lock:):
 3. Don't forget to escape special characters (ex: `$` -> `$$`).
 4. You can also manage secrets using Vault variant
 
+## Using semantic-release with other to-be-continuous templates
+
+The semantic-release template has been designed to interoperate gracefully with release-capable to-be-continuous templates.
+
+Unfortunaltely, there can't be one single configuration that fits all needs.
+Instead, the semantic-release template configuration will have to be adapted to your case.
+
+There are actually 2 questions that will determine the required configuration:
+
+1. which [Delivery Mode](https://to-be-continuous.gitlab.io/doc/understand/#delivery-modes) are you using in your project?
+    * _Application Deployment_ mode should trigger the release directly from your production branch (`main` or `master` by default),
+    * _Software Distribution_ mode should trigger the release through a tag pipeline.
+2. does the release involve **changing files in your repository** (and therefore creating a Git commit)?
+    * that will be the case if you use plugins such as [@semantic-release/changelog](https://github.com/semantic-release/changelog) or the [semantic-release-replace](https://github.com/jpoehnelt/semantic-release-replace-plugin)
+
+### Case 1: _Application Deployment_ mode
+
+As said previously, if you're using the _Application Deployment_ delivery mode in your project, you should trigger the release directly from your production branch (`main` or `master` by default).
+
+In that case you'll need to:
+
+1. enable the [semantic-release info job](#semantic-release-info-job),
+   * by setting `info-on` / `SEMREL_INFO_ON` to `prod` (or any suitable non-empty value)
+2. disable the [semantic-release job](#semantic-release-job),
+   * by setting `release-disabled` / `SEMREL_RELEASE_DISABLED` to `true`
+3. make sure the other template(s) provide a semantic-release integration to perform the release from the semantic-release info job. 
+   Templates supporting it:
+   * Docker,
+   * Helm,
+   * Maven,
+   * Python,
+   * S2I.
+
+### Case 2: _Software Distribution_ mode without any Git commit
+
+This is the easiest case as nothing specific has to be done to address it:
+
+* by default the semantic-release will analyse each commit on your production branch, and will possibly create a Git tag (but no Git commit) if it determined a release has to be performed,
+* the Git tag will trigger a tag pipeline during which every to-be-continuous template will take care of publishing its versioned package (using the Git tag as the version) to an appropriate packages repository.
+
+### Case 3: _Software Distribution_ mode with a Git commit
+
+This case will occur if you configure semantic-release to modify one or several files in your Git repository (ex: `pom.xml`, `pyproject.toml`, `CHANGELOG.md`, `README.md`...)
+
+In that case, when semantic-release determines a release is required, it will:
+
+* modify the files,
+* create a Git commit with the changes,
+* create a Git tag with the next release version,
+* push the commit + the tag.
+
+Problem: by default, semantic-release creates a Git commit with comment `chore(release): release ${nextRelease.version} [skip ci]`.
+The `[skip ci]` part prevents GitLab from triggering the tag pipeline, therefore preventing other to-be-continuous templates from publishing their versioned packages.
+
+To fix this, you'll have to override the default semantic-release Git commit comment in order not to prevent the tag pipeline from being triggered.
+With this done:
+
+* the semantic-release will analyse each commit on your production branch, and will possibly create a Git tag if it determined a release has to be performed,
+* the Git tag will trigger a tag pipeline during which every to-be-continuous template will take care of publishing its versioned package (using the Git tag as the version) to an appropriate packages repository.
+
+#### How to override the Git commit comment
+
+In most cases it is recommended to use `chore(release): release ${nextRelease.version} [skip ci on prod]` (the `[skip ci on prod]` part prevents GitLab from triggering the pipeline on your production branch only, **but not the tag pipeline**).
+
+If you're configuring semantic-release with a configuration file in your repository, then the Git commit message has to be configured in the [@semantic-release/git](https://github.com/semantic-release/git#message) plugin section.
+
+Here is a configuration example that auto-generates the changelog file, and also replaces the project version in the `pyproject.toml` using the [semantic-release-replace](https://github.com/jpoehnelt/semantic-release-replace-plugin) plugin:
+
+```yaml
+plugins:
+  - '@semantic-release/commit-analyzer'
+  - '@semantic-release/release-notes-generator'
+  - '@semantic-release/gitlab'
+  # generates the CHANGELOG.md
+  - '@semantic-release/changelog'
+  # emulates bumpversion (replaces version in pyproject.toml)
+  - - semantic-release-replace-plugin
+    - replacements:
+        - files:
+            - pyproject.toml
+          from:
+            - ^version *= *"\d+\.\d+\.\d+"
+          to: 'version = "${nextRelease.version}"'
+          countMatches: true
+  # git commit/push modified files (CHANGELOG.md & pyproject.toml)
+  - - '@semantic-release/git'
+    - assets:
+        - '*.md'
+        - '*.toml'
+      # the commit MUST trigger a pipeline on tag (to perform publish jobs)
+      # can be skipped on prod branch
+      message: 'chore(release): release ${nextRelease.version} [ci skip on prod]'
+branches:
+  - main
+  - master
+tagFormat: '${version}'
+```
+
+If you're not configuring semantic-release with a configuration file (but using default configuration provided by the template), then the Git commit message can be configured with the `commit-message` / `SEMREL_COMMIT_MESSAGE` input / variable:
+
+```yaml
+variables:
+  # the '$' has to be doubled to prevent GitLab from expanding it as a variable
+  SEMREL_COMMIT_MESSAGE: 'chore(release): release $${nextRelease.version} [ci skip on prod]'
+```
+
 ## Variants
 
-The Docker template can be used in conjunction with template variants to cover specific cases.
+The semantic-release template can be used in conjunction with template variants to cover specific cases.
 
 ### Vault variant