Halo Blog CLI Skill
A command-line tool skill for managing Halo blog instances.
Installation
npm install -g @halo-dev/cli
Verify:
halo --version
halo --help
Requirements: Node.js >= 22
Quick Start
-
Authenticate (see references/auth.md):
halo auth login --profile local --url http://127.0.0.1:8090 --auth-type bearer --token <token> -
Create a post from Markdown (see content.md for full format rules):
halo post import-markdown --file ./article.md --forceMarkdown files are automatically converted to HTML by default; if conversion fails, falls back to raw Markdown import.
-
List posts:
halo post list
Command Areas
| Area | Commands | Reference |
|---|---|---|
| Authentication | halo auth * | auth.md |
| Publishing Rules | Markdown → HTML workflow, front matter, visibility checks | publishing.md |
| Posts & Pages | halo post *, halo single-page * | content.md |
| Themes, Plugins, Attachments, Backups, Moments | halo theme *, halo plugin *, halo attachment *, halo backup *, halo moment * | operations.md |
| Comments & Notifications | halo comment *, halo notification * | moderation.md |
| Public Search | halo search * | search.md |
Shared Conventions
- Profile selection: Use
--profile <name>when working with multiple Halo instances. - JSON output: Use
--jsonfor scripted or automated workflows. - Non-interactive safety: Destructive commands (
delete,uninstall, overwrite imports) usually require--forcewhen run non-interactively. - Basic Auth requirement: If using basic auth instead of bearer token, ensure Halo is started with
--halo.security.basic-auth.disabled=false.
Common Workflows
Switch between environments
halo auth profile list
halo auth profile use production
Export and import a post
halo post export-json my-post --output ./post.json
halo post import-json --file ./post.json --force
Publish via Markdown file
halo post import-markdown --file ./article.md --force
Upgrade all App Store themes/plugins
halo theme upgrade --all
halo plugin upgrade --all --yes
Search public content without login
halo search --keyword "halo" --url https://www.halo.run
Troubleshooting
- Login fails with anonymous user: Basic auth is likely disabled on the Halo server. Add
--halo.security.basic-auth.disabled=falseto Halo startup flags. - Credential issues: Run
halo auth profile doctorto diagnose keyring/config problems. - Profile not found: Ensure
--profilematches an existing profile fromhalo auth profile list.