diff --git a/.github/workflows/npmpublish.yml b/.github/workflows/npmpublish.yml
new file mode 100644
index 0000000..431705e
--- /dev/null
+++ b/.github/workflows/npmpublish.yml
@@ -0,0 +1,24 @@
+
+name: Build and Deploy Npm Package
+
+on: push
+jobs:
+ publish:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: 🛎️ Setup Node.js
+ uses: actions/setup-node@v1
+ with:
+ node-version: 12
+ - name: 🔧 Install dependencies
+ run: npm install
+ - name: 🚧 Run tests
+ run: npm test
+ #- name: 👷 Build app
+ # run: npm run build
+ - name: 🚀 Semantic release
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
+ run: npx semantic-release
\ No newline at end of file
diff --git a/README.md b/README.md
index 998212a..cec4bea 100644
--- a/README.md
+++ b/README.md
@@ -39,3 +39,19 @@ You can set your own communication protocol. Default is via CLI, but http is als
```
obsidian --protocoll http
```
+
+
+## Development
+
+
+### Publish new version to npm
+There is an github action with checks on commit messages.
+
+| Commit message | Release type |
+|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------|
+| `fix(pencil): stop graphite breaking when too much pressure applied` | Patch Release |
+| `feat(pencil): add 'graphiteWidth' option` | ~~Minor~~ Feature Release |
+| `perf(pencil): remove graphiteWidth option`
`BREAKING CHANGE: The graphiteWidth option has been removed.`
`The default graphite width of 10mm is always used for performance reasons.` | ~~Major~~ Breaking Release |
+
+
+More infrmation: [semantic-release](https://github.com/semantic-release/semantic-release#how-does-it-work)
\ No newline at end of file