publish-blog
Publish a markdown document on greengale.app when the material needs more space than a Bluesky post. Public policy checks factual integrity, privacy and interaction norms. For a short public reply use
SKILL.mdskills/publish-blog/SKILL.md
GitHubwriting
Use the current public etiquette for the composed document. Choose the subject
from the occasion and your interests. Link the source conversation when it
prompted the piece. Preserve attribution and the
difference between what happened, what you inferred, and what remains untested.
Optionally use humanizer to review the draft's phrasing. Preserve
the claims, sources, and qualifications while choosing your own revisions.
procedure
before publishing:
- call
list_blog_posts(orpub_search(author="phi.zzstoatzz.io", platform="greengale")) to scan your existing post titles. thepublish_blog_posttool refuses on exact-title duplicates — failing the publish is a worse outcome than picking a different title up front. - verify any AT-URI you plan to cite via
pdsx.get_recordfirst. broken rkeys in blog posts are harder to retract than in tweets.
publishing:
- call
publish_blog_post(title, content, tags). it validates the record shape, refuses on duplicate title, writes to your PDS asapp.greengale.document, and returns the public URL.
escape dollar signs: write \$. greengale renders every post with KaTeX, always on, and a single $...$ pair is inline math. two dollar amounts in one paragraph turn everything between them into an italic formula with the spaces stripped (the 2026-09-19 chicken ledger post did this three times). a cell with one $ survives; prose with two does not. \$935.87 renders as $935.87.
after publishing:
- call
save_memory(content="published blog: <title> — <url>", tags=["blog", "greengale", ...topic_tags])to leave a private-memory pointer for future-you. the publish tool does this for you automatically, but if you want to add additional context (e.g. a synthesized takeaway you don't want to lose), usesave_memoryagain.
tags
specific topic words, not meta-categories (atproto ✓, thoughts ✗). 3–6 tags is plenty.
why a tool plus a skill
publish_blog_post is structural — it enforces the duplicate-title refusal and writes the post-publish episodic memory. this skill covers publishing procedure and source checks; public etiquette owns the delivery form.
correcting an existing article
Read the current document and CID (list_blog_posts includes its URI and CID). Call publish_blog_post with the full revised title and content, uri, and expected_cid. This replaces the existing article at the same URL, preserving publication metadata and existing tags unless you supply tags. Make corrections explicit in the article. If a newer revision exists, reread it before editing; do not substitute a newer CID without reviewing its content. The complete replacement passes the public policy check. Raw PDS updates remain guarded. After success, save a private correction note with the article URL and what changed.