posting-to-atproto

Post to AT Protocol with grapheme limits and facet creation.

23|1|Updated Jan 24, 2026
One-click install
npx skills add https://github.com/just-cameron/central --skill posting-to-atproto-just-cameron
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: posting-to-atproto
Source: https://github.com/just-cameron/central/tree/main/.skills/posting-to-atproto
Command: npx skills add https://github.com/just-cameron/central --skill posting-to-atproto-just-cameron

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires httpx, python-dotenv, and includes scripts (resource) components.

What problem does it solve?

Guides users to post to ATProtocol/Bluesky, handling the 300 grapheme limit and creating correct facets for mentions and URLs, including support for long-form GreenGale posts.

Core Features & Use Cases

  • Short Posts: respect the 300 grapheme limit and automatically create facets for mentions and links.
  • Threads & Replies: compose multi-part posts and thread replies that link together correctly.
  • GreenGale Blog Posts: publish long-form content as app.greengale.document records for public viewing.

Quick Start

Post a short update or start a thread by providing your text to the thread tool.

Frequently Asked Questions about posting-to-atproto

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I post to Bluesky with correct facets for mentions and URLs?

To post to Bluesky with correct facets, this Skill generates byte-offset facets for mentions and URLs while respecting the 300 grapheme limit. It provides client-side scripts to handle short posts, threaded replies, and long-form content creation.

Why does my Bluesky post fail when hitting the 300 grapheme limit?

Bluesky posts fail at the 300 grapheme limit when text encoding exceeds protocol constraints. This Skill enforces the 300 grapheme limit automatically and calculates correct byte-offsets for facets, ensuring your mentions and links parse without errors.

How do I create a multi-part thread on ATProtocol?

To create a multi-part thread on ATProtocol, this Skill links sequential posts together as replies. It handles the parent and reply references required by the protocol to correctly compose and publish threaded conversations.

Can I publish long-form GreenGale blog posts on ATProtocol?

You can publish long-form GreenGale blog posts on ATProtocol using this Skill. It formats your content as app.greengale.document records, bypassing the standard 300 grapheme limit to allow public viewing of extended blog entries.

Do I need httpx and python-dotenv to post to ATProtocol?

Yes, you need httpx and python-dotenv installed to use this Skill. These dependencies enable the client-side scripts required to authenticate, format facets, and successfully submit posts to the ATProtocol network.

What is the best way to handle byte-offset facets for ATProtocol mentions?

The best way to handle byte-offset facets for ATProtocol mentions is to calculate exact character byte positions rather than grapheme counts. This Skill automates that facet creation process, ensuring your mentions and URLs link correctly within Bluesky posts.