diff --git a/.vscode/tasks.json b/.vscode/tasks.json
new file mode 100644
index 0000000000000000000000000000000000000000..a2883d2b5e481f7cb27d0c2fa8005c96122eaa47
--- /dev/null
+++ b/.vscode/tasks.json
@@ -0,0 +1,44 @@
+{
+  // See https://go.microsoft.com/fwlink/?LinkId=733558
+  // for the documentation about the tasks.json format
+  "version": "2.0.0",
+  "tasks": [
+    {
+      "label": "Install locally",
+      "type": "shell",
+      "command": "go install",
+      "group": {
+        "kind": "build",
+        "isDefault": true
+      },
+      "presentation": {
+        "reveal": "silent"
+      }
+    },
+    {
+      "label": "Setup zsh completion",
+      "dependsOn": ["Install locally"],
+      "type": "shell",
+      "command": "mkdir -p $HOME/.zsh/completions && vaultenv completion zsh > $HOME/.zsh/completions/_vaultenv && rm -f $ZSH_COMPDUMP",
+      "group": {
+        "kind": "build",
+        "isDefault": false
+      },
+      "presentation": {
+        "reveal": "silent"
+      }
+    },
+    {
+      "label": "Publish fig spec",
+      "type": "shell",
+      "command": "go run main.go generate-fig-spec > .fig-spec.ts && npx --yes @fig/publish-spec -n vaultenv -p .fig-spec.ts && rm -f .fig-spec.ts",
+      "group": {
+        "kind": "build",
+        "isDefault": false
+      },
+      "presentation": {
+        "reveal": "silent"
+      }
+    },
+  ]
+}