halo-cli-content
Installation
SKILL.md
Halo CLI Content
Use this skill for halo post and halo single-page.
If auth may not be ready, check halo auth current first or load halo-cli-auth.
Commands
halo post --help
halo single-page --help
Post workflows:
listget <name>open <name>createupdate <name>delete <name>export-json <name>import-jsoncategory(subcommand)tag(subcommand)
Single-page workflows:
listget <name>open <name>createupdate <name>delete <name>export-json <name>import-json
Posts
List and inspect:
halo post list
halo post list --keyword halo --publish-phase PUBLISHED
halo post get my-post --json
Create or update:
halo post create --title "Hello Halo" --content "# Hello Halo" --publish true
halo post create --title "Hello Halo" --content "<h1>Hello Halo</h1>" --raw-type html
halo post update my-post --title "Updated title"
halo post update my-post --content "Updated content" --publish true
halo post update my-post --new-name my-post-renamed
Taxonomy-aware create/update:
halo post create \
--title "Release Notes" \
--content "Release notes content" \
--categories News,CLI \
--tags Halo,Release
JSON round-trip:
halo post export-json my-post --output ./post.json
halo post import-json --file ./post.json --force
Markdown round-trip:
halo post export-markdown my-post
halo post export-markdown my-post --output ./post.md
halo post import-markdown --file ./post.md --force
Rules:
--raw-typedefaults tomarkdown, so--contentis rendered as Markdown unless you set--raw-type html.- Prefer
--contentfor direct inline updates, or useimport-markdownfor Markdown files. openonly works for published content; with--jsonit returns the URL.- Import payload must contain
post.metadata.name. - Import payload must contain
content.raworcontent.content.
Post Categories
Manage post categories:
halo post category list
halo post category list --keyword Technology
halo post category get category-abc123
halo post category create --display-name "Technology" --slug "tech"
halo post category create --display-name "News" --description "Latest news" --priority 100
halo post category update category-abc123 --display-name "Tech News"
halo post category delete category-abc123 --force
Post Tags
Manage post tags:
halo post tag list
halo post tag list --keyword Halo
halo post tag get tag-abc123
halo post tag create --display-name "Halo" --slug "halo" --color "#1890ff"
halo post tag update tag-abc123 --display-name "Halo CMS"
halo post tag delete tag-abc123 --force
Single Pages
List and inspect:
halo single-page list
halo single-page get about --json
Create or update:
halo single-page create --title "About" --content "# About" --publish true
halo single-page create --title "About" --content "<h1>Hello Halo</h1>" --raw-type html
halo single-page update about --title "About Halo"
halo single-page update about --new-name about-page
JSON round-trip:
halo single-page export-json about --output ./about.json
halo single-page import-json --file ./about.json --force
Rules:
- The command name is
single-page, notsinglePage. - Single pages do not use post category/tag flows.
- There is no
--pinnedoption forsingle-page. - Import payload must contain
page.metadata.name.
Safety And Automation
- Use
--profile <name>when more than one Halo profile exists. - Use
--jsonfor scripts. - Use
--forcefor destructive non-interactive commands likedeleteor overwrite-style imports. - Read current state before mutating when the target resource is uncertain.