wordpress-posts
Skill1 starsChanged 12 days agoMITView on GitHub
Use when the user wants to draft, edit, schedule, publish, or delete blog posts on their connected WordPress site. Triggers on "write a blog post", "draft a post about X", "publish my post", "update the last post", "schedule this for tomorrow", "delete the post called X".
In this repository29 other files it gives its agents.
- ads-studioSkill
- blog-post-and-newsletterSkill
- calendarSkill
- chapter-draftingSkill
- character-mergeSkill
- financeSkill
- getting-startedSkill
- manuscript-importSkill
- manuscript-revisionsSkill
- markersSkill
- marketing-studioSkill
- mentionsSkill
- pen-namesSkill
- quick-task-captureSkill
- sales-studioSkill
- social-handoffSkill
- story-bibleSkill
- stos-setupSkill
- tasksSkill
- timelineSkill
- time-trackingSkill
- wordpress-connectSkill
- wordpress-llm-optimizationSkill
- wordpress-mediaSkill
- wordpress-pagesSkill
- wordpress-productsSkill
- wordpress-seoSkill
- worldbuilding-mergeSkill
- worldbuildingSkill
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 1 is distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 82
Do not store post content as Markdown — WordPress doesn't render it natively.
- Very specific: line 83
Do not pass tag IDs to tags.
- Very specific: line 84
Do not assume the user wants to publish.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
WordPress posts
The user's connected WordPress site is the source of truth for blog posts. This skill writes to it through StorytellerOS.
Tools
stos_wp_posts_list({ status, search, page, per_page })
stos_wp_posts_get({ id })
stos_wp_posts_create({ fields: { title, content, excerpt, slug, status, date, categories, tags, featured_media } })
stos_wp_posts_update({ id, fields: { ... } })
stos_wp_posts_delete({ id }) // moves the post to WordPress trash; permanent deletion is done in WordPress itselfAll tools take an optional penNameId — the user can connect one WordPress site per pen name plus an account default. Omit for the account default; pass a pen name id (from stos_pen_names_list) to act on that pen name's site. When the user has multiple pen names and it's ambiguous which site they mean, ask.
Field shapes
| Field | Type | Notes |
title | string | Plain text. |
content | string | HTML allowed — preserved by WordPress. Most authors prefer paragraphs separated by \n\n. |
excerpt | string | Short summary used in feeds. |
slug | string | URL fragment. Omit to let WordPress generate from the title. |
status | draft | publish | pending | private | future | future requires date in the future. |
date | ISO 8601 | Future date for scheduled publish. |
categories | number[] | Category IDs. Look up via stos_wp_categories_list. |
tags | string[] | Tag NAMES (WordPress find-or-creates). |
featured_media | number | Media ID. Look up via stos_wp_media_list or upload via stos_wp_media_create. |
Patterns
Draft a new post
const post = await stos_wp_posts_create({
fields: {
title: "Why I Killed My Side Plot",
content: "<p>Three rewrites in, the side plot was dead weight. Here's how I cut it without losing the emotional through-line.</p>",
excerpt: "Why side plots fail and what to do about them.",
status: "draft",
tags: ["craft", "revision"],
}
});Schedule for later
stos_wp_posts_create({
fields: {
title: "Launch day post",
content: "<p>...</p>",
status: "future",
date: "2026-06-01T08:00:00Z",
}
});Publish an existing draft
stos_wp_posts_update({ id: 123, fields: { status: "publish" } });Add a featured image from a public URL
const media = await stos_wp_media_create({
fields: { url: "https://stos-cdn/cover-2026-launch.jpg", alt: "Launch banner" }
});
stos_wp_posts_update({ id: 123, fields: { featured_media: media.id } });Anti-patterns
- Do not store post content as Markdown — WordPress doesn't render it natively. Convert to HTML before sending.
- Do not pass tag IDs to
tags. WordPress's REST API for our plugin accepts tag names only; IDs are categories' domain. - Do not assume the user wants to publish. Default to
status: "draft"unless they explicitly say "publish".
Composes well with
wordpress-media— upload featured imagesblog-post-and-newsletter— full pipeline that drafts post + image + newsletter from one prompt
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

