diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 1f821b10dd65e48ddedae5f87d6c2101776083cf..bdd5bbdb15782391e4f56fa192bd0ad84a91677b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -64,6 +64,16 @@ gitlab-opentofu-image:build:
       --push
       .
 
+check-readme:
+  stage: test
+  needs: []
+  image: alpine:latest
+  before_script:
+    - apk add coreutils make git
+  script:
+    - make docs
+    - git diff --exit-code
+
 container_scanning:
   extends: .opentofu-versions
   needs: ['gitlab-opentofu-image:build']
diff --git a/.gitlab/README.md b/.gitlab/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..ac12ae0e9fb2791dae1a91c611202edb02335b0f
--- /dev/null
+++ b/.gitlab/README.md
@@ -0,0 +1,112 @@
+# OpenTofu CI/CD component
+
+> 🚨 🚧 **NOTE** 🚧 🚨 
+> 
+> This component is **work in progress**, where inputs, template names and the entire interface in general may 
+> change at any time until version 1.0.0 is reached. From where on this CI/CD component will be versioned using [semver 2.0](https://semver.org/).
+> The progress of implementing such a version can be tracked in https://gitlab.com/groups/gitlab-org/-/epics/12401.
+>
+> The `src/gitlab-tofu.sh` script is still merely a copy from [`gitlab-terraform`](https://gitlab.com/gitlab-org/terraform-images).
+> Therefore, lots of things in this script and in the templates are still Terraform-related and haven't
+> been changed to their OpenTofu equivalents.
+
+This project is home to the **OpenTofu CI/CD component** and it's related assets, 
+like the `gitlab-tofu` wrapper script and OCI images containing that script
+together with an OpenTofu version.
+
+Read more:
+
+- [CI/CD components](https://docs.gitlab.com/ee/ci/components)
+- [Development guide for GitLab CI/CD components](https://docs.gitlab.com/ee/development/cicd/components)
+- [CI/CD Catalog](https://docs.gitlab.com/ee/ci/components/index.html#cicd-catalog)
+
+## Usage
+
+```yaml
+include:
+  - component: gitlab.com/components/opentofu/full-pipeline@<VERSION>
+    inputs:
+      # The version must currently be specified explicitly as an input,
+      # to find the correctly associated images. # This can be removed 
+      # once https://gitlab.com/gitlab-org/gitlab/-/issues/438275 is solved.
+      version: <VERSION>
+      opentofu_version: <OPENTOFU_VERSION>
+
+stages: [validate, test, build, deploy, cleanup]
+```
+
+A concrete example may look like this:
+
+```yaml
+# Using `latest`
+include:
+  - component: gitlab.com/components/opentofu/full-pipeline@latest
+    inputs:
+      # The version must currently be specified explicitly as an input,
+      # to find the correctly associated images. # This can be removed 
+      # once https://gitlab.com/gitlab-org/gitlab/-/issues/438275 is solved.
+      version: latest
+      opentofu_version: 1.6.0
+
+stages: [validate, test, build, deploy, cleanup]
+
+---
+
+# ... or using `0.0.0-alpha1`:
+include:
+  - component: gitlab.com/components/opentofu/full-pipeline@0.0.0-alpha1
+    inputs:
+      # The version must currently be specified explicitly as an input,
+      # to find the correctly associated images. # This can be removed 
+      # once https://gitlab.com/gitlab-org/gitlab/-/issues/438275 is solved.
+      version: 0.0.0-alpha1
+      opentofu_version: 1.6.0
+
+stages: [validate, test, build, deploy, cleanup]
+```
+
+### Inputs
+
+| Name | Default | Description |
+| ---- | ------- | ----------- |
+<INPUTS>
+
+## Releases & Versioning
+
+This project currently releases tagged commits. 
+An overview of releases can be found on the [Releases page](https://gitlab.com/components/opentofu/-/releases).
+
+Each release is accessible in the [CI/CD Catalog](https://gitlab.com/explore/catalog).
+
+### Component Versions
+
+The component release versions follow [Semantic Versioning 2.0.0](https://semver.org/).
+
+### Image Versions
+
+This project releases multiple OCI image variants that can be used with the component.
+The intention is that the images used in a component have the same version and or not mixed.
+Due to the limitations described in https://gitlab.com/gitlab-org/gitlab/-/issues/438275 
+it's currently required to provide the component version in the `component` include field
+and as the `version` input. Check out the [Usage](#Usage) section for examples.
+
+Each component release deploys the following images:
+
+- `registry.gitlab.com/components/opentofu/gitlab-opentofu:<VERSION>-opentofu<OPENTOFU_VERSION>`
+- `registry.gitlab.com/components/opentofu/gitlab-opentofu:<VERSION>-opentofu`
+  - Includes the latest stable OpenTofu version at the time of releasing the component
+- `registry.gitlab.com/components/opentofu/gitlab-opentofu:<VERSION>`
+  - Includes the latest stable OpenTofu version at the time of releasing the component
+
+In the above examples `<VERSION>` references the component version and `<OPENTOFU_VERSION>` 
+an OpenTofu release, from [here](https://github.com/opentofu/opentofu/releases).
+
+*Note: unfortunately, these image versions are not SemVer compatible,
+because `-` indicates a prerelease (which they are not in this case).
+However, we cannot use the alternative `+` which would indicate build metadata
+as we'd like.
+See https://github.com/distribution/distribution/issues/1201*
+
+## Contributing
+
+See the [CONTRIBUTING.md](CONTRIBUTING.md) guide.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 5d86df350132469864d5b6469d3913d712bb1ec7..45524e8fc7016c32d35f24c354d8d4860a999f37 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -2,6 +2,11 @@
 
 Please read about CI/CD components and best practices at: https://docs.gitlab.com/ee/ci/components
 
+## README
+
+The [`README.md`](README.md) file is generated using `make docs` (see [`Makefile`](Makefile))
+from [`.gitlab/README.md`](.gitlab/README.md).
+
 ## Upgrade OpenTofu versions
 
 When adding new OpenTofu versions the following places need to be updated:
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..4c9c0c8dae450e093a00d0becc0babcb12fda90e
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,8 @@
+docs:
+	csplit -sf readme -n 1 .gitlab/README.md '/<INPUTS>/'
+	yq '.spec.inputs | .[] | "| `" + key + "` | `" + .default + "` | " + .description + " |"' templates/full-pipeline.yml > readme_inputs.md
+	echo '<!-- This document is generated by `make docs` from `.gitlab/README.md` -->\n' > README.md
+	cat readme0 >> README.md
+	cat readme_inputs.md >> README.md
+	tail -n+2 readme1 >> README.md
+	rm -f readme0 readme1 readme_inputs.md
diff --git a/README.md b/README.md
index d095123e3a6e2cf4493f591e2cea5bc54157eea7..842cdfa95c896664eceba84aa76d2dd1bdf5f645 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,5 @@
+<!-- This document is generated by `make docs` from `.gitlab/README.md` -->
+
 # OpenTofu CI/CD component
 
 > 🚨 🚧 **NOTE** 🚧 🚨 
@@ -65,6 +67,23 @@ include:
 stages: [validate, test, build, deploy, cleanup]
 ```
 
+### Inputs
+
+| Name | Default | Description |
+| ---- | ------- | ----------- |
+| `stage_validate` | `validate` | Defines the validate stage |
+| `stage_test` | `test` | Defines the test stage |
+| `stage_build` | `build` | Defines the build stage |
+| `stage_deploy` | `deploy` | Defines the deploy stage |
+| `stage_cleanup` | `cleanup` | Defines the cleanup stage |
+| `version` | `latest` | Version of this component |
+| `opentofu_version` | `1.6.0` | Released version of upstream OpenTofu |
+| `gitlab_opentofu_image` | `$CI_REGISTRY/components/opentofu/gitlab-opentofu:$[[ inputs.version ]]-opentofu$[[ inputs.opentofu_version ]]` | Image name of the gitlab-opentofu image |
+| `root_dir` | `${CI_PROJECT_DIR}` | Root directory for the OpenTofu project |
+| `state_name` | `default` | State name |
+| `auto_apply` | `false` | Whether the apply job is manual or automatically run |
+| `auto_destroy` | `false` | Whether the destroy job is manual or automatically run |
+
 ## Releases & Versioning
 
 This project currently releases tagged commits.