Skip to content

v2.21.0 — the collection can finally publish what it makes

Choose a tag to compare

@Mikefluff Mikefluff released this 03 Aug 15:32
· 65 commits to main since this release

Every skill in this collection stopped at ./generated/. Three files said so on purpose. This release closes that last mile.

New skill: post-publisher

Publishes finished assets to Instagram, Threads, TikTok, X, YouTube, Telegram and LinkedIn through the official APIs. It takes a carousel-builder or reel-builder output directory, reads captions.md, and sends it.

post-publisher ./generated/carousel/<slug>/ --platform threads,telegram      # dry run
post-publisher ./generated/carousel/<slug>/ --platform instagram --draft --yes
python3 -m common.runners.cli.auth --platform threads                        # connect once

Dry-run is the default and --yes is what leaves it — inverting the convention elsewhere in this repo, where --yes skips the cost prompt. A wasted generation costs cents; a wasted publish costs an audience. Each platform confirms separately, and posted.json receipts stop the same content going out twice.

Start with Telegram (no OAuth, five minutes) or Threads (simplest OAuth, text posts need no S3). Instagram is the worst place to start: Business account, registered app and an S3 bucket before the first post, because it fetches media from a URL rather than accepting bytes.

Setup per platform: post-publisher/references/oauth-setup.md · Walkthrough: publish-to-social.md

Worth knowing before you use it

  • TikTok defaults to the inbox, not to publishing. Direct posting needs an audited app; without one every post is forced to SELF_ONLY while the API reports success — the only failure mode in the set that looks like a success.
  • Instagram needs a Business or Creator account. No API publishes to personal accounts. The browser fallback covers that case honestly rather than implying an endpoint exists.
  • Endpoints move. API versions are env-overridable (INSTAGRAM_API_VERSION, LINKEDIN_API_VERSION, X_UPLOAD_URL, …) and platform-limits.md carries a verification procedure. Check it against live vendor docs before relying on this in anger.

Fixed: npm and Docker shipped a 17-skill subset

Dockerfile and package.json both listed exactly the v1.x prose set, frozen since ~v2.3 while twenty-five skills were added around them — so install.sh inside the container warned about twenty-five missing skills, inside the artifact meant to contain them. Both lists regenerated from skills.json, and check-docs-consistency.sh gained a gate comparing them to it. The image is 117 MB; the subset was drift, not a decision.

If you use the Docker image or the npm package, this release is the one that actually contains the media and orchestrator skills.

Also in this release

Fixes that had accumulated unreleased: the writer linter's density verdict no longer counts hard bans (a document with forty-eight ordinary Russian em-dashes read as "neuroslop suspected"), exit code 3 no longer masks exit code 2 for the pre-commit hook, --quiet is quiet again, and the launch copy is both rewritten for what the project now is and actually linted by CI.

Full detail: CHANGELOG

Install

curl -fsSL https://raw.githubusercontent.com/Mikefluff/skills/main/install.sh | bash