Diff
1diff --git a/plugins/pulumi/README.md b/plugins/pulumi/README.md
2new file mode 100644
3index 0000000000000000000000000000000000000000..4c771964bde24debb9a1605c2621a59079c1b4a6
4--- /dev/null
5+++ b/plugins/pulumi/README.md
6@@ -0,0 +1,41 @@
7+# Pulumi
8+
9+This is an **Oh My Zsh plugin** for the [**Pulumi CLI**](https://www.pulumi.com/docs/iac/cli/),
10+an Infrastructure as Code (IaC) tool for building, deploying and managing cloud infrastucture.
11+
12+This plugin provides:
13+
14+- 🚀 Short, intuitive aliases for common Pulumi commands
15+- 🎯 Auto-completion support for Pulumi
16+
17+To use it, add `pulumi` to the plugins array in your `.zshrc` file:
18+
19+```zsh
20+plugins=(... pulumi)
21+```
22+
23+## ⚡ Aliases
24+
25+| Alias | Command | Description |
26+| -------- | ---------------------- | ----------------------------- |
27+| `pul` | `pulumi` | Shortcut for Pulumi CLI |
28+| `pulcs` | `pulumi config set` | Set Pulumi configuration |
29+| `puld` | `pulumi destroy` | Destroy all resources |
30+| `pullog` | `pulumi logs -f` | Tail Pulumi logs in real-time |
31+| `pulp` | `pulumi preview` | Show planned changes |
32+| `pulr` | `pulumi refresh` | Refresh state from cloud |
33+| `puls` | `pulumi stack` | Show stack details |
34+| `pulsh` | `pulumi stack history` | Show stack history |
35+| `pulsi` | `pulumi stack init` | Initialize a new stack |
36+| `pulsl` | `pulumi stack ls` | List available stacks |
37+| `pulso` | `pulumi stack output` | Show stack outputs |
38+| `pulss` | `pulumi stack select` | Switch stack |
39+| `pulu` | `pulumi up` | Deploy infrastructure |
40+
41+## 🎯 Autocompletion
42+
43+If `pulumi gen-completion zsh` is available, this plugin **automatically loads Pulumi auto-completion**.
44+
45+## 🛠️ Contribution
46+
47+Feel free to open an issue or PR for improvements! 🚀
48diff --git a/plugins/pulumi/pulumi.plugin.zsh b/plugins/pulumi/pulumi.plugin.zsh
49new file mode 100644
50index 0000000000000000000000000000000000000000..70686017faa54cc885f121550aef21d68acb7b1e
51--- /dev/null
52+++ b/plugins/pulumi/pulumi.plugin.zsh
53@@ -0,0 +1,28 @@
54+if (( ! $+commands[pulumi] )); then
55+ return
56+fi
57+
58+# If the completion file doesn't exist yet, we need to autoload it and
59+# bind it to `pulumi`. Otherwise, compinit will have already done that.
60+if [[ ! -f "$ZSH_CACHE_DIR/completions/_pulumi" ]]; then
61+ typeset -g -A _comps
62+ autoload -Uz _pulumi
63+ _comps[pulumi]=_pulumi
64+fi
65+
66+pulumi gen-completion zsh >| "$ZSH_CACHE_DIR/completions/_pulumi" &|
67+
68+# Aliases
69+alias pul='pulumi'
70+alias pulcs='pulumi config set'
71+alias puld='pulumi destroy'
72+alias pullog='pulumi logs -f'
73+alias pulp='pulumi preview'
74+alias pulr='pulumi refresh'
75+alias puls='pulumi stack'
76+alias pulsh='pulumi stack history'
77+alias pulsi='pulumi stack init'
78+alias pulsl='pulumi stack ls'
79+alias pulso='pulumi stack output'
80+alias pulss='pulumi stack select'
81+alias pulu='pulumi up'