Agent skill

Ghost

by magnus919 in magnus919/agent-skills

Manage Ghost CMS content over the Admin API — browse posts, pages, and tags, draft and publish content, schedule posts, and inspect site info from the terminal.

MITAuto-check passedDevOps & Cloud

Install Ghost

skills CLI
$ npx skills add magnus919/agent-skills --skill ghost -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install magnus919/agent-skills ghost --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/magnus919/agent-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/ghost .claude/skills/ghost && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
ghost
GitHub stars
116
Token cost
~2.4k tokens
SKILL.md length
804 words
Files
10 (incl. scripts, references)
Skills in repo
130
Repo updated
First seen
Licence
MIT

At a glance

Manage Ghost CMS content over the Admin API — browse posts, pages, and tags, draft and publish content, schedule posts, and inspect site info from the terminal.

  • Works in 4 steps: In Ghost Admin → Settings →… → Copy its Admin API Key — one string, two… → At request time the CLI signs a… → …
  • Ghost server installation
  • SKILL.md covers Setup, Essential commands, Pipeline recipes and JSON output and jq, plus 6 more sections
  • Runs Python scripts from its folder; calls jq; needs GHOST_ADMIN_KEY and RECORD_KEY

What it does

Ghost is an agent skill from magnus919/agent-skills. Manage Ghost CMS content over the Admin API — browse posts, pages, and tags, draft and publish content, schedule posts, and inspect site info from the terminal. Do not use this skill for Ghost server installation or site administration (installing, nginx, SSL, systemd, updates); those belong to the official npm ghost-cli tooling.

Its SKILL.md is about 2.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 12 other files, including scripts and reference files (for example `README.md`, `evals/evals.json` and `references/admin-auth-and-basics.md`). Compatibility notes: Requires GHOSTURL and GHOSTADMINKEY env vars. Admin key in "id:secret" format from Ghost Admin → Integrations. Python 3.8+ and the requests library.

It sits in DevOps & Cloud, covering Cloud networking and Linux administration. It works with NGINX, npm and Linux. The repository describes itself as: Curated collection of AI agent skills for Hermes and other agent frameworks. The licence is MIT.

When your agent uses it

  • Ghost server installation
  • Site administration (installing
  • Those belong to the official npm ghost-cli tooling

Example prompts

  • “/ghost”

Requirements

  • Python 3
  • A credential in GHOST_ADMIN_KEY
  • A credential in RECORD_KEY
  • Compatibility (from SKILL.md): Requires GHOST_URL and GHOST_ADMIN_KEY env vars. Admin key in "id:secret" format from Ghost Admin → Integrations. Python 3.8+ and the `requests` library.

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. In Ghost Admin → Settings → Integrations, create (or open) a Custom Integration.
  2. Copy its Admin API Key — one string, two colon-separated hex halves (id:secret). The separate Content API key from the same screen will…
  3. At request time the CLI signs a short-lived JWT per call: HS256 signature keyed by the secret half after hex-decoding it to raw bytes, kid…
  4. help and --dry-run work without credentials (lazy auth).

What it can do on your machine

Read from SKILL.md and the folder at commit c545c2b. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 2 files in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • jq

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • GHOST_ADMIN_KEY
    • RECORD_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Requires GHOST_URL and GHOST_ADMIN_KEY env vars. Admin key in "id:secret" format from Ghost Admin → Integrations. Python 3.8+ and the `requests` library.

    From compatibility in the SKILL.md frontmatter.

Context cost

Ghost loads about 2.4k tokens when it runs, and up to ~8.9k if it reads all its reference files. Until then it costs about 84 tokens; SKILL.md has 804 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~84
When it runs · the whole SKILL.md, loaded when a task matches
~2.4k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~8.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from magnus919/agent-skills at commit c545c2b, republished under its MIT licence (© magnus919). 804 words, ~2,353 tokens.

Download SKILL.mdSave it as .claude/skills/ghost/SKILL.md (or your agent's skills folder). This skill also uses 9 other files; get the full folder from GitHub.
name
ghost
description
Manage Ghost CMS content over the Admin API — browse posts, pages, and tags, draft and publish content, schedule posts, and inspect site info from the terminal. Do not use this skill for Ghost server installation or site administration (installing, nginx, SSL, systemd, updates); those belong to the official npm ghost-cli tooling.
compatibility
Requires GHOST_URL and GHOST_ADMIN_KEY env vars. Admin key in "id:secret" format from Ghost Admin → Integrations. Python 3.8+ and the `requests` library.
license
MIT
metadata.tags
ghost, cms, blog, blogging, post, page, tag, ghost-cms, content-management, api-client
metadata.sources
https://docs.ghost.org/admin-api/, https://docs.ghost.org/content-api/

ghost — Ghost CMS content from the terminal

Drive a Ghost CMS site's Admin API (v5/v6, Accept-Version: v6.0): list posts by status including drafts, create and publish pages and posts, manage tags, and check site info. Drafts, scheduled posts, and published content are all visible here because every call authenticates with a per-request Admin JWT built from your id:secret integration key.

Setup

bash
export GHOST_URL="https://your-ghost-site.com"
export GHOST_ADMIN_KEY="<RECORD_KEY>"   # id:secret from Ghost Admin → Integrations
  1. In Ghost Admin → Settings → Integrations, create (or open) a Custom Integration.
  2. Copy its Admin API Key — one string, two colon-separated hex halves (id:secret). The separate Content API key from the same screen will NOT let you see drafts; see Known Gotchas.
  3. At request time the CLI signs a short-lived JWT per call: HS256 signature keyed by the secret half after hex-decoding it to raw bytes, kid header carrying the id half, audience /admin/, exp five minutes after iat, sent as Authorization: Ghost <token>. You never handle the token yourself.
  4. --help and --dry-run work without credentials (lazy auth).

Essential commands

Inspect
bash
ghost site                       # title, url, description, version
ghost get-post POST_ID           # full record incl. exact updated_at for edits
Browse (intent: find content)
bash
ghost posts                                   # latest 20
ghost posts --status draft                    # unpublished work queue
ghost posts --status scheduled                # what publishes next
ghost posts --limit 100 --page 2              # paginate (max page size 100)
ghost posts --order "updated_at desc"         # SQL-style ordering
ghost pages                                   # static pages
ghost tags                                    # tags with usage counts
Create and publish
bash
ghost create-post --title "Notes"                              # safe default: draft
ghost create-post --title "Hello" --html "<p>Hi</p>"
ghost create-post --title "Launch" --status published --html "<p>We're live</p>"
ghost create-post --title "Later" --status scheduled \
  --published-at "2026-09-01T09:00:00.000Z"                    # future ISO-8601 required together
ghost create-page --title "About" --html "<p>…</p>" --slug about
ghost create-tag --name "Engineering" --description "Technical posts"
Edit and remove
bash
ghost update-post POST_ID --title "New title" \
  --updated-at "<RECORD_UPDATED_AT>"          # REQUIRED: latest updated_at, re-read first
ghost update-post POST_ID --status published --updated-at "<RECORD_UPDATED_AT>"
ghost delete-post POST_ID                     # permanent, 204-style removal

Pipeline recipes

Draft now, publish after review
bash
ghost --json create-post --title "Release notes" > /tmp/post.json
id=$(jq -r '.post.id // .post_id // empty' /tmp/post.json)
ghost get-post "$id"                          # read fresh updated_at
ghost update-post "$id" --status published \
  --updated-at "<exact string from get-post output>"

Never fabricate updated_at; copy it verbatim from a fresh read or Ghost rejects the edit with HTTP 409 UpdateCollisionError.

Review queue across statuses
bash
for s in draft scheduled; do
  ghost posts --status "$s" --json | jq -r '.posts[] | "\(.status)\t\(.title)\t\(.slug)"'
done
Complete export

Loop pages by meta.pagination.next (surfaced as .page.next) instead of trusting totals:

bash
page=1
while :; do
  ghost posts --limit 100 --page "$page" --json > "/tmp/posts-$page.json"
  jq -r '.posts[].id' "/tmp/posts-$page.json"
  next=$(jq -r '.page.next // empty' "/tmp/posts-$page.json")
  [ -z "$next" ] && break
  page=$next; sleep 0.2
done

JSON output and jq

--json works before or after the subcommand:

bash
ghost --json posts        # same as: ghost posts --json

JSON shapes worth knowing:

  • Lists emit {"total", "page": {pagination}, "posts": [...]}; detail/create emit the resource under its noun (post, page, tag, site).
  • Pagination mirrors the API: .page = {"page", "limit", "pages", "total", "next", "prev"}; next/prev are numbers or null.
  • --dry-run --json emits the executed plan instead of results: {"dry_run": true, "method", "url", "params"/"json"} — preview the exact request before running it live.
  • Errors exit non-zero with the API's own message plus code on stderr; JSON mode never wraps errors in stdout JSON.

Global flags

FlagEffect
--jsonMachine-readable JSON (position-independent)
--dry-runPrint the planned API call (method, URL, payload) without executing
--quietSuppress diagnostics
--verboseDebug logging

Known gotchas

  • Drafts need the Admin plane. The public Content API (that key-as-query-param API) serves published posts only and hides drafts silently — no error, just absent, even with a perfectly valid key. Its filters like status:draft are ignored rather than rejected. Everything this CLI does goes through the Admin API precisely so drafts and scheduled posts stay reachable.
  • Two keys, same integration screen. The Content key is browser-safe but read-only-public; the Admin key (GHOST_ADMIN_KEY) signs mutations and reaches drafts. Never point scripts at the Content key and expect draft visibility.
  • Five-minute tokens. Each JWT lives at most 300 seconds (exp ≤ iat + 300) and the verifier caps token age too, so long batch jobs must re-sign per request (the CLI does). Skewed clocks break signing windows; keep NTP healthy.
  • HS256 only, decoded-secret keying. Tokens signed with HS512 are refused ("invalid algorithm"); signing without first hex-decoding the secret half produces "valid-looking" garbage that 401s. The CLI handles both rules.
  • Authorization: Ghost, not Bearer. Bearer scheme answers 401 INVALID_AUTH_HEADER.
  • Edits require collision guards. PUTs without the post's current updated_at fail with 409; relation arrays (tags, authors) replace wholesale rather than merge.
  • --html requires source=html and stays lossy. Every write carrying an html payload (create-post, update-post, create-page) must send the ?source=html query flag — the CLI attaches it automatically, and dry-run plans show it in params — or Ghost parses the body as mobiledoc/lexical. Even with the flag, conversion is lossy: send proper Lexical, or wrap fixed markup in HTML card comments.
  • Pagination caps at 100 since Ghost 6 removed limit=all; oversized limits silently return ≤100 rows, so always loop by next.
  • Deletion is permanent and takes effect on the public site immediately.
Show full SKILL.md (194 more words)Show less

When to use

Use this skill whenever the task is content workflow against a running Ghost site: browsing or exporting posts, drafting, publishing, scheduling, tag upkeep, page creation, or diagnosing those flows (auth errors, pagination, missing drafts).

When not to use

Do not use it to install, host, or operate a Ghost server (ghost install, nginx/SSL/systemd setup, upgrades, backups) — that is Ghost's official npm ghost-cli site-management tool, unrelated despite the shared name. Not for other publishing platforms (WordPress, Hugo have their own tooling), not for theme development, and not for site configuration better done once in the Admin dashboard (staff accounts, membership tiers).

Reference files

FileUse it for
references/admin-auth-and-basics.mdFull JWT signing walkthrough, key format, audience/expiry rules, auth error table
references/content-vs-admin-api.mdChoosing between planes; the draft-visibility trap; diagnostic checklist
references/posts-pages-tags-endpoints.mdEndpoint map, field semantics, pagination loop, error envelope
references/worked-recipes.mdCopy-paste workflows: draft→publish, exports, scheduling, triage
references/gotchas-field-guide.mdSymptom-first incident lookup for auth, editing, volume problems

Scripts and prerequisites

  • scripts/ghost — executable Python CLI (stdlib + requests only). Flags above; lazy auth; structured logging.
  • scripts/test_ghost.py — offline test suite (mocked HTTP, zero network).
  • Python 3.8+, requests. Nothing listens, nothing installs; scope limited to one configured site via GHOST_URL.

© magnus919, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 9 other files (scripts, references) in ghost of magnus919/agent-skills.

  • SKILL.md
  • README.md
  • evals/evals.json
  • references/admin-auth-and-basics.md
  • references/content-vs-admin-api.md
  • references/gotchas-field-guide.md
  • references/posts-pages-tags-endpoints.md
  • references/worked-recipes.md
  • scripts/ghost
  • scripts/test_ghost.py

Open the folder on GitHubat commit c545c2b

Compare with similar skills

Ghost next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Ghost compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Ghost this skillmagnus919/agent-skills116—~2.4kAutomated safety check: PassMIT
Linux Service TriageaAAaqwq/AGI-Super-Team1052 repos~799Automated safety check: PassMIT
Setup Cpu Proxy Serverdrawthingsai/draw-things-community582—~3.8kAutomated safety check: PassGPL-3.0
Aliyun Swas Managecinience/alicloud-skills397—~1.9kAutomated safety check: PassMIT
Frappe Ops DeploymentImpertio-Studio/Frappe_Claude_Skill_Package188—~2.4kAutomated safety check: NotesMIT
npm Proxysundial-org/awesome-openclaw-skills663—~440Automated safety check: PassNone

Similar skills

  • Linux Service Triage

    aAAaqwq/AGI-Super-Team

    Diagnoses common Linux service issues using logs, systemd/PM2, file permissions, Nginx reverse proxy checks, and DNS sanity checks.

    105 GitHub starsUsed in 2 repos~799 tokens
    DevOps & CloudAuto-check passed
  • Setup Cpu Proxy Server

    drawthingsai/draw-things-community

    Set up and verify a new Draw Things CPU proxy and Envoy server using the scripts in Scripts/ServerManagement/CPUScript.

    582 GitHub stars~3.8k tokensUpdated yesterday
    DevOps & CloudAuto-check passed
  • Aliyun Swas Manage

    cinience/alicloud-skills

    A skill your agent uses when managing Alibaba Cloud Simple Application Server (SWAS OpenAPI 2020-06-01) resources end-to-end, including querying instances, starting/stopping/rebooting, executing…

    397 GitHub stars~1.9k tokensUpdated 1 mo ago
    DevOps & CloudAuto-check passed
  • Frappe Ops Deployment

    Impertio-Studio/Frappe_Claude_Skill_Package

    A skill your agent uses when deploying Frappe/ERPNext to production, configuring Nginx or Supervisor, setting up Docker, enabling SSL, or hardening security.

    188 GitHub stars~2.4k tokensUpdated 22 days ago
    DevOps & CloudAuto-check: notes
  • npm Proxy

    sundial-org/awesome-openclaw-skills

    Manage Nginx Proxy Manager (NPM) hosts, certificates, and access lists.

    663 GitHub stars~440 tokensUpdated 7 mo ago
    DevOps & CloudAuto-check passed
  • Linux Hardening

    BagelHole/DevOps-Security-Agent-Skills

    Apply CIS benchmarks and secure Linux servers. An agent skill from BagelHole/DevOps-Security-Agent-Skills.

    1.1k GitHub stars~662 tokensUpdated 4 mo ago
    DevOps & CloudAuto-check: notes

More from magnus919/agent-skills

All 130 skills in this repo
  • Artifact Pyramids

    magnus919/agent-skills

    Organize durable agent research outputs as summaries, analysis, and evidence dossiers.

    116 GitHub stars~2.7k tokensUpdated yesterday
    Auto-check passed
  • Ascii City Engine

    magnus919/agent-skills

    Build portable, first-person colored ASCII city engines and small GIS-derived city packs.

    116 GitHub stars~1.1k tokensUpdated yesterday
    Auto-check passed
  • Color Management

    magnus919/agent-skills

    Manage color workflows with ICC profiles, working spaces, gamut mapping, and color science.

    116 GitHub stars~2.6k tokensUpdated yesterday
    Auto-check: notes
  • Data Scientist

    magnus919/agent-skills

    A skill your agent uses for PhD-level expertise in data science, statistics, and machine learning: rigorous statistical analysis, experimental design, causal inference, advanced modeling, research…

    116 GitHub stars~4.1k tokensUpdated yesterday
    Auto-check passed
  • Docker Compose

    magnus919/agent-skills

    Use Docker Compose to define, run, debug, and harden multi-container applications.

    116 GitHub stars~2k tokensUpdated yesterday
    Auto-check: notes
  • Fpga Development

    magnus919/agent-skills

    Design, review, simulate, and verify FPGA logic using explicit RTL contracts, clock and reset models, CDC analysis, timing constraints, and reproducible implementation evidence.

    116 GitHub stars~2.7k tokensUpdated yesterday
    Auto-check passed

Works with

Categories

Questions about Ghost

What does Ghost do?

Manage Ghost CMS content over the Admin API — browse posts, pages, and tags, draft and publish content, schedule posts, and inspect site info from the terminal. Ghost is an agent skill from magnus919/agent-skills. Manage Ghost CMS content over the Admin API — browse posts, pages, and tags, draft and publish content, schedule posts, and inspect site info from the terminal.

When should I use Ghost?

Ghost fits situations like: ghost server installation; site administration (installing; those belong to the official npm ghost-cli tooling.

How do I install Ghost in Claude Code?

Run `npx skills add magnus919/agent-skills --skill ghost -a claude-code`. Or copy the skill folder (ghost in magnus919/agent-skills) into .claude/skills/ghost in your project. Claude Code loads it when a task matches its description.

How do I install Ghost in Codex?

Run `npx skills add magnus919/agent-skills --skill ghost -a codex`. Or copy the skill folder (ghost in magnus919/agent-skills) into .agents/skills/ghost in your project. Codex loads it when a task matches its description.

Can I use Ghost in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add magnus919/agent-skills --skill ghost -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ghost, .gemini/skills/ghost, .github/skills/ghost and .opencode/skills/ghost in your project.

What does Ghost need to run?

Going by SKILL.md and its folder, Ghost needs Python for the scripts in its folder, the command-line tools its instructions call (jq) and credentials named GHOST_ADMIN_KEY and RECORD_KEY. Our summary lists: Python 3; A credential in GHOST_ADMIN_KEY; A credential in RECORD_KEY. Compatibility (from SKILL.md): Requires GHOST_URL and GHOST_ADMIN_KEY env vars. Admin key in "id:secret" format from Ghost Admin → Integrations. Python 3.8+ and the `requests` library..

Does Ghost access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Ghost safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Ghost use?

Ghost is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Ghost use?

About 2.4k tokens (SKILL.md is roughly 9.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 6.6k tokens, read only when the agent opens those files.

What are the alternatives to Ghost?

Skills that share tags, products or a category with Ghost: Linux Service Triage (aAAaqwq/AGI-Super-Team, 105 stars), Setup Cpu Proxy Server (drawthingsai/draw-things-community, 582 stars), Aliyun Swas Manage (cinience/alicloud-skills, 397 stars) and Frappe Ops Deployment (Impertio-Studio/Frappe_Claude_Skill_Package, 188 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Ghost?

magnus919 (a GitHub user) maintains it in magnus919/agent-skills, which has 116 GitHub stars. The repository holds 130 skills in this directory. The repository was last updated on October 8, 2026.

Source: magnus919/agent-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.