$npx -y skills add halo-dev/cli --skill halo-cli-operationsUse when operating Halo themes, plugins, attachments, backups, or moments from the terminal. This includes install, upgrade, activate, enable, disable, upload, download, create, delete, reload, and batch maintenance flows. Trigger this skill whenever the user mentions Halo themes
| 1 | # Halo CLI Operations |
| 2 | |
| 3 | Use this skill for `halo theme`, `halo plugin`, `halo attachment`, `halo backup`, and `halo moment`. |
| 4 | |
| 5 | ## Commands |
| 6 | |
| 7 | ```bash |
| 8 | halo theme --help |
| 9 | halo plugin --help |
| 10 | halo attachment --help |
| 11 | halo backup --help |
| 12 | halo moment --help |
| 13 | ``` |
| 14 | |
| 15 | ## Themes |
| 16 | |
| 17 | ```bash |
| 18 | halo theme list |
| 19 | halo theme current |
| 20 | halo theme get <name> |
| 21 | halo theme install --file ./theme.zip |
| 22 | halo theme install --url https://example.com/theme.zip |
| 23 | halo theme activate <name> |
| 24 | halo theme reload <name> |
| 25 | halo theme upgrade <name> |
| 26 | halo theme upgrade <name> --online |
| 27 | halo theme upgrade --all --online --yes |
| 28 | halo theme delete <name> --force |
| 29 | ``` |
| 30 | |
| 31 | Rules: |
| 32 | |
| 33 | - `theme list` marks the active theme in table output. |
| 34 | - Local theme install uses `--file`. |
| 35 | - `theme install --url` and `theme upgrade --url` prompt for confirmation when the remote host is not `www.halo.run`; use `--yes` to bypass that prompt in automation or other non-interactive runs. |
| 36 | - App Store upgrades use `--online`. `upgrade --all --online --yes` upgrades all themes from the App Store without prompting. |
| 37 | |
| 38 | ## Plugins |
| 39 | |
| 40 | ```bash |
| 41 | halo plugin list |
| 42 | halo plugin get <name> |
| 43 | halo plugin install --file ./plugin.jar |
| 44 | halo plugin install --url https://example.com/plugin.jar |
| 45 | halo plugin install --app-id app-SnwWD |
| 46 | halo plugin enable <name> |
| 47 | halo plugin disable <name> --force |
| 48 | halo plugin upgrade <name> |
| 49 | halo plugin upgrade <name> --online |
| 50 | halo plugin upgrade --all --online --yes |
| 51 | halo plugin uninstall <name> --force |
| 52 | ``` |
| 53 | |
| 54 | Rules: |
| 55 | |
| 56 | - Install from the Halo App Store with `--app-id`. |
| 57 | - App Store upgrades use `--online`. `upgrade --all --online --yes` upgrades all plugins from the App Store without prompting. |
| 58 | - `plugin install --url` and `plugin upgrade --url` prompt for confirmation when the remote host is not `www.halo.run`; use `--yes` to bypass that prompt in automation or other non-interactive runs. |
| 59 | - Treat `disable`, `upgrade`, and `uninstall` as mutating operations. |
| 60 | |
| 61 | ## Attachments |
| 62 | |
| 63 | ```bash |
| 64 | halo attachment list |
| 65 | halo attachment get <name> |
| 66 | halo attachment upload --file ./image.png |
| 67 | halo attachment upload --url https://example.com/image.png |
| 68 | halo attachment download <name> --output ./downloads/image.png |
| 69 | halo attachment delete <name> --force |
| 70 | ``` |
| 71 | |
| 72 | Rules: |
| 73 | |
| 74 | - Use exactly one upload source: `--file` or `--url`. |
| 75 | - Upload and download show progress in TTY mode unless `--json` is enabled. |
| 76 | |
| 77 | ## Backups |
| 78 | |
| 79 | ```bash |
| 80 | halo backup list |
| 81 | halo backup get <name> |
| 82 | halo backup create |
| 83 | halo backup create my-backup |
| 84 | halo backup create --wait |
| 85 | halo backup create --wait --wait-timeout 300 |
| 86 | halo backup create --format zip --expires-at "2026-12-31T23:59:59Z" |
| 87 | halo backup download <name> --output ./backup.zip |
| 88 | halo backup delete <name> --force |
| 89 | ``` |
| 90 | |
| 91 | Rules: |
| 92 | |
| 93 | - `backup create [name]` accepts an optional backup name. |
| 94 | - `backup create --wait` polls until completion or timeout. |
| 95 | - `--format` sets the backup format (default: `zip`). |
| 96 | - `--expires-at` sets an expiration time in ISO-8601 format. |
| 97 | |
| 98 | ## Moments |
| 99 | |
| 100 | ```bash |
| 101 | halo moment list |
| 102 | halo moment get <name> |
| 103 | halo moment create --content "Hello from Halo CLI" |
| 104 | halo moment create --content "<p>Hello Halo</p>" --visible PUBLIC --tags life,cli --approved true |
| 105 | halo moment update <name> --content "Updated content" |
| 106 | halo moment update <name> --visible PRIVATE --tags updated |
| 107 | halo moment delete <name> --force |
| 108 | ``` |
| 109 | |
| 110 | Rules: |
| 111 | |
| 112 | - `--visible` accepts `PUBLIC` or `PRIVATE`. |
| 113 | - `--tags` is comma-separated. |
| 114 | - `--release-time` accepts ISO-8601 datetime. |
| 115 | - `--approved` accepts `true` or `false`. |
| 116 | |
| 117 | ## Safety And Automation |
| 118 | |
| 119 | - Use `--profile <name>` for the intended environment. |
| 120 | - Use `--json` when another tool needs structured output. |
| 121 | - Use `--force` for destructive non-interactive actions. |
| 122 | - Prefer `list` or `get` before batch or destructive maintenance. |