diff --git a/.forgejo/workflows/push.yml b/.forgejo/workflows/push.yml
new file mode 100644
index 0000000..0754eff
--- /dev/null
+++ b/.forgejo/workflows/push.yml
@@ -0,0 +1,33 @@
+on: [push]
+jobs:
+  ls:
+    runs-on: docker
+    container:
+      image: git.php.fail/lubiana/container/php:ci
+    steps:
+      - name: Manually checkout
+        env:
+          REPO: '${{ github.repository }}'
+          TOKEN: '${{ secrets.GITHUB_TOKEN }}'
+          GIT_SERVER: 'git.php.fail'
+          COMPOSER_CACHE_DIR: /opt/hostedtoolcache/.composer/cache/files
+        run: |
+          git clone --branch $GITHUB_REF_NAME https://${TOKEN}@${GIT_SERVER}/${REPO}.git .
+          git fetch
+          git checkout ${{ github.head_ref }}
+      - name: create composer cache dir
+        run: |
+          mkdir -p /opt/hostedtoolcache/.composer/cache/files
+      - run: composer install
+      - run: composer lint
+      - name: GIT commit and push all changed files
+        env:
+          CI_COMMIT_MESSAGE: Continuous Integration Fixes
+          CI_COMMIT_AUTHOR: Continuous Integration
+        run: |
+          if [[ -n "$(git status -s)" ]]; then
+            git config --global user.name "${{ env.CI_COMMIT_AUTHOR }}"
+            git config --global user.email "gitbot@users.noreply.php.fail"
+            git commit -am "${{ env.CI_COMMIT_MESSAGE }}"
+            git push
+          fi
\ No newline at end of file