diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 9c59cb018232556b7293155488b4d57e7b038fe9..fed82edea2d3aef1c1f86f147e8cd6e1149467cb 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -7,6 +7,7 @@ cache:
 
 stages:
   - test
+  - publish
 
 test:
   stage: test
@@ -14,3 +15,12 @@ test:
     - yarn config set cache-folder "$CI_PROJECT_DIR/_yarn_cache"
     - yarn install
     - yarn run test
+
+publish:
+  stage: publish
+  only:
+    refs:
+      - publish
+  script:
+    - sudo npm install --global can-npm-publish
+    - yarn run publish
diff --git a/package.json b/package.json
index 7a91d2d6fd1edbf8fe9154732bcbaa6c40afbecb..8ed75b7d61659c2b5f40ca53a71fc3ecb58ca994 100644
--- a/package.json
+++ b/package.json
@@ -8,7 +8,8 @@
     "packages/*"
   ],
   "scripts": {
-    "test": "lerna run test"
+    "test": "lerna run test",
+    "publish": "lerna run publish"
   },
   "author": "",
   "license": "LGPL-2.1-or-later",
diff --git a/packages/app-shell/package.json b/packages/app-shell/package.json
index b7ac0f0c042a8c58a152e5b789da1706c79b8392..1f5146c97781228d5e935b72ed0f719e99991567 100644
--- a/packages/app-shell/package.json
+++ b/packages/app-shell/package.json
@@ -45,6 +45,7 @@
     "watch": "npm run watch-local",
     "watch-local": "rollup -c --watch",
     "test": "npm run build-test && karma start --singleRun",
+    "publish": "can-npm-publish --verbose && npm run build && echo 'Todo: Publish'",
     "lint": "eslint ."
   }
 }
diff --git a/packages/check-in-place-select/package.json b/packages/check-in-place-select/package.json
index 9aab2f1158fe2c05488070511cc21b17eca6b7b7..97c71a758f0a17a4571f876a7f108ff284acde59 100644
--- a/packages/check-in-place-select/package.json
+++ b/packages/check-in-place-select/package.json
@@ -44,6 +44,7 @@
     "watch": "npm run watch-local",
     "watch-local": "rollup -c --watch",
     "watch-dev": "rollup -c --watch --environment BUILD:development",
-    "test": "npm run build-test && karma start --singleRun"
+    "test": "npm run build-test && karma start --singleRun",
+    "publish": "can-npm-publish --verbose && npm run build && echo 'Todo: Publish'"
   }
 }
diff --git a/packages/common/package.json b/packages/common/package.json
index ef6f746e1895193a3bc9575b528652e654b968a4..287a8177aa31c1590393a618c3833db945d0bdb9 100644
--- a/packages/common/package.json
+++ b/packages/common/package.json
@@ -28,7 +28,8 @@
     "build-test": "rollup -c --environment BUILD:test",
     "test": "npm run build-test && karma start --singleRun",
     "watch": "rollup -c --watch",
-    "lint": "eslint ."
+    "lint": "eslint .",
+    "publish": "can-npm-publish --verbose && npm run build && echo 'Todo: Publish'"
   },
   "dependencies": {
     "@open-wc/scoped-elements": "^1.3.2",
diff --git a/packages/data-table-view/package.json b/packages/data-table-view/package.json
index efba0c091aa15a3abb290f15944b377c6dd0314a..861cdd71362cfd21fc79f297abcdfed119f4efbd 100644
--- a/packages/data-table-view/package.json
+++ b/packages/data-table-view/package.json
@@ -50,6 +50,7 @@
     "watch": "npm run watch-local",
     "watch-local": "rollup -c --watch",
     "watch-dev": "rollup -c --watch --environment BUILD:development",
-    "test": "npm run build-test && karma start --singleRun"
+    "test": "npm run build-test && karma start --singleRun",
+    "publish": "can-npm-publish --verbose && npm run build && echo 'Todo: Publish'"
   }
 }
diff --git a/packages/file-handling/package.json b/packages/file-handling/package.json
index d5597e8ecab12ce4d97b29497a4917722d4f70e1..4415c8955c7d5067bdc97b68ebaa4a12ef593273 100644
--- a/packages/file-handling/package.json
+++ b/packages/file-handling/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@dbp-toolkit/file-handling",
-  "version": "0.1.5",
+  "version": "0.1.6",
   "main": "src/index.js",
   "license": "LGPL-2.1-or-later",
   "devDependencies": {
@@ -45,6 +45,7 @@
     "watch": "npm run watch-local",
     "watch-local": "rollup -c --watch",
     "watch-dev": "rollup -c --watch --environment BUILD:development",
-    "test": "npm run build-test && karma start --singleRun"
+    "test": "npm run build-test && karma start --singleRun",
+    "publish": "can-npm-publish --verbose && npm run build && echo 'Todo: Publish'"
   }
 }
diff --git a/packages/knowledge-base-web-page-element-view/package.json b/packages/knowledge-base-web-page-element-view/package.json
index d3602105862166db9d2acaf2c9b68526bc710942..d5d0867be525b7d17cfd5f15b43d64eb51ed2626 100644
--- a/packages/knowledge-base-web-page-element-view/package.json
+++ b/packages/knowledge-base-web-page-element-view/package.json
@@ -43,6 +43,7 @@
     "watch": "npm run watch-local",
     "watch-local": "rollup -c --watch",
     "watch-dev": "rollup -c --watch --environment BUILD:development",
-    "test": "npm run build-test && karma start --singleRun"
+    "test": "npm run build-test && karma start --singleRun",
+    "publish": "can-npm-publish --verbose && npm run build && echo 'Todo: Publish'"
   }
 }
diff --git a/packages/language-select/package.json b/packages/language-select/package.json
index d19abc3478d7c8aa717be0aa8e3aa49347dfd40b..30bda5b2994bdd194be02bab1e5ea29970825a14 100644
--- a/packages/language-select/package.json
+++ b/packages/language-select/package.json
@@ -39,6 +39,7 @@
     "watch": "npm run watch-local",
     "watch-local": "rollup -c --watch",
     "watch-dev": "rollup -c --watch --environment BUILD:development",
-    "test": "npm run build-test && karma start --singleRun"
+    "test": "npm run build-test && karma start --singleRun",
+    "publish": "can-npm-publish --verbose && npm run build && echo 'Todo: Publish'"
   }
 }
diff --git a/packages/notification/package.json b/packages/notification/package.json
index 7ca5d6472a951e67ee59ba602c45b9aed2a3cf69..7a695cb29942d6402df7367b91aa33eee829547b 100644
--- a/packages/notification/package.json
+++ b/packages/notification/package.json
@@ -40,6 +40,7 @@
     "watch": "npm run watch-local",
     "watch-local": "rollup -c --watch",
     "watch-dev": "rollup -c --watch --environment BUILD:development",
-    "test": "npm run build-test && karma start --singleRun"
+    "test": "npm run build-test && karma start --singleRun",
+    "publish": "can-npm-publish --verbose && npm run build && echo 'Todo: Publish'"
   }
 }
diff --git a/packages/person-profile/package.json b/packages/person-profile/package.json
index 26a7dfc7a3ab586d115c51d375d112f610ce33a2..4c93af3b50c9450cac7f056cf49d0661e850d58a 100644
--- a/packages/person-profile/package.json
+++ b/packages/person-profile/package.json
@@ -43,6 +43,7 @@
     "watch": "npm run watch-local",
     "watch-local": "rollup -c --watch",
     "watch-dev": "rollup -c --watch --environment BUILD:development",
-    "test": "npm run build-test && karma start --singleRun"
+    "test": "npm run build-test && karma start --singleRun",
+    "publish": "can-npm-publish --verbose && npm run build && echo 'Todo: Publish'"
   }
 }
diff --git a/packages/person-select/package.json b/packages/person-select/package.json
index eee1bb1ca17c730e1a4bc3eaa8cf63933f9b351e..7a647cceb5f329cf4499c5ab4ecfd207a546ebd3 100644
--- a/packages/person-select/package.json
+++ b/packages/person-select/package.json
@@ -44,6 +44,7 @@
     "watch": "npm run watch-local",
     "watch-local": "rollup -c --watch",
     "watch-dev": "rollup -c --watch --environment BUILD:development",
-    "test": "npm run build-test && karma start --singleRun"
+    "test": "npm run build-test && karma start --singleRun",
+    "publish": "can-npm-publish --verbose && npm run build && echo 'Todo: Publish'"
   }
 }
diff --git a/packages/qr-code-scanner/package.json b/packages/qr-code-scanner/package.json
index 7fac0a40a9e994f882208542df0b25dbfe648266..61bcca6d9a5829e71a685f117edd89176057a056 100644
--- a/packages/qr-code-scanner/package.json
+++ b/packages/qr-code-scanner/package.json
@@ -46,6 +46,7 @@
     "watch-local": "rollup -c --watch",
     "watch-dev": "rollup -c --watch --environment BUILD:development",
     "test": "npm run build-test && karma start --singleRun",
-    "lint": "eslint ."
+    "lint": "eslint .",
+    "publish": "can-npm-publish --verbose && npm run build && echo 'Todo: Publish'"
   }
 }