Install
$ agentstack add skill-adaptocms-adapto-cms-agent-skills-adapto-publish ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
adapto:publish
The terminal step of the draft-first loop: every other skill writes draft content; this one takes the reviewed drafts live (draft → published), or archives them back (published → archived) as a walk-back. It's stateless — it discovers what's publishable rather than remembering a session.
When to use
- "Publish", "publish my drafts", "take it live", "go live", "unpublish/archive this" — typically after
reviewing the seeded/translated drafts on the dev server.
When not to use
- Creating or editing content → the content pipeline (
content-create→content-upload) oradapto:translate. - Just checking the environment →
adapto:doctor.
Inputs
- Mode:
publish(default) orarchive(the inverse / walk-back). - Optional filters: type (Articles / Pages / collection items), language, or a specific collection / item set.
- Collections enumerated from
.adapto/schema.json(if present) oradapto collections list --json.
Outputs
- The selected Articles / Pages / collection items moved
draft → published(orpublished → archived). - The ledger updated (acted-on pieces →
published) and.adapto/calendar.mdrefreshed. - A report of acted-on + skipped, with ids.
- Next step: the cycle is complete — suggest the next content cycle (
adapto:content-research) or
adapto:translate to localize what just went live.
Preconditions
- Preflight with the
adapto:doctorchecks (CLAUDE.md §3.14). - Hard-block on an authenticated CLI (
adapto auth me) and a selected tenant — this skill writes.
Confirm the working tenant first (CLAUDE.md §3.5); never assume the active one.
adaptoCLI>= 0.0.7.
Plan phase
- Discover candidates in the relevant status (publish →
draft; archive →published):
``bash adapto articles list --status draft --json [--language ] adapto pages list --status draft --json [--language ] adapto collections list --json # enumerate collections (or read .adapto/schema.json) adapto collections items list --status draft --json ``
- Present them as
type · title · slug · language · status. - Let the user select — all or a subset (by type, language, or specific items). "Publish
everything I just seeded" = select all; targeted = pick a few.
- Print a machine-parseable plan: the exact set to act on (count, per type, titles/slugs, languages) and the
transition (draft → published or published → archived). List items already in the target state as skipped. Wait for an explicit approve. No cost/token figures (§3.10). Nothing to act on → say so and stop.
Apply phase
Runs only after approval. Per-item loop (no batch on publish); --json on each. Verified verbs:
# publish (draft → published)
adapto articles publish --json
adapto pages publish --json
adapto collections items publish --json
# archive (published → archived) — the walk-back
adapto articles archive --json
adapto pages archive --json
adapto collections items archive --json
- Idempotent: skip items already in the target state (re-publishing a published item is a no-op skip).
- Partial failure: report what was acted on, then stop; re-running is safe.
- Collection items require iterating collections (per-collection
items listthen per-item publish). - Report acted-on + skipped, with ids — judge success from each call's
--json, not the shell exit code, and
end the loop exit 0 on success so a clean batch never shows a red Error: Exit code 1 (§8).
- Update the ledger. For each acted-on piece tracked in
.adapto/ledger.json, set itsstatus→
published (or back to its prior state on archive) and refresh .adapto/calendar.md. (Items not in the ledger — e.g. backoffice-created — simply aren't tracked; that's fine.)
- Then restart the dev server (stop→start) and keep it running so the now-published content appears —
never kill it (starters sync content at startup — §14).
Errors and recovery
- No candidates in the requested status → say so; suggest
adapto:content-seed/adapto:translatefirst
(publish mode), or note nothing is published yet (archive mode).
- Item already in the target state → skip (idempotent); report it, don't error.
- Partial failure mid-loop (no batch on publish) → report what was acted on, then stop; re-run is safe.
- Not authenticated / no tenant → stop; route to
adapto auth login+ tenant selection.
Forbidden actions
- Never publish without an approved plan (plan-then-apply, §3.8) — publishing makes content live.
- Never assume the working tenant — confirm it before any write (§3.5).
- Never modify the scaffolded read-client (§3.11 / [forbidden-actions.md](../../shared/forbidden-actions.md)).
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: adaptocms
- Source: adaptocms/adapto-cms-agent-skills
- License: MIT
- Homepage: https://adaptocms.com/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.