diff --git a/group_vars/all b/group_vars/all
index 5c3d04d5..14adbde3 100644
--- a/group_vars/all
+++ b/group_vars/all
@@ -27,3 +27,4 @@ default_roles:
   - tmuxinator
   - zsh
   - zsh-antigen
+  - debugger
diff --git a/roles/debugger/tasks/main.yaml b/roles/debugger/tasks/main.yaml
new file mode 100644
index 00000000..59cc5b72
--- /dev/null
+++ b/roles/debugger/tasks/main.yaml
@@ -0,0 +1,4 @@
+---
+- include_tasks: php.yaml
+  tags:
+    - debugger
diff --git a/roles/debugger/tasks/php.yaml b/roles/debugger/tasks/php.yaml
new file mode 100644
index 00000000..dade7b55
--- /dev/null
+++ b/roles/debugger/tasks/php.yaml
@@ -0,0 +1,20 @@
+---
+- name: Clone
+  ansible.builtin.git:
+    depth: 1
+    dest: "{{ ansible_user_dir }}/build/vscode-php-debug"
+    repo: https://github.com/xdebug/vscode-php-debug.git
+    single_branch: yes
+  register: clone
+  tags:
+    - debugger
+
+- name: Install
+  ansible.builtin.command: |
+    npm install
+    npm run build
+  args:
+    chdir: "{{ ansible_user_dir }}/build/vscode-php-debug"
+  when: clone.changed
+  tags:
+    - debugger