Skip to content
Development
Command

/announce

Draft X/Twitter announcement post (or thread) for the latest plugin release

From plugin
2812 skills12 commands
shell
$ npx -y skills add iliaal/whetstone --agent claude-code

Ships with whetstone. Installing the plugin gets this command.

How it fires

How this command gets triggered: by you, by Claude, or both.

  • Fires itselfClaude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/announce

Context preview

What this command does when you run it.

Draft X/Twitter announcement post (or thread) for the latest plugin release

Command definition

announce.md
name: announce
description: Draft X/Twitter announcement post (or thread) for the latest plugin release
argument-hint: "[optional: version to announce, defaults to current]"

Draft release announcement for X

Generate an announcement post for the latest whetstone plugin release. The account is X Premium — one long post usually covers a release; only thread when a second distinct theme justifies the visual pacing.

This command is the dedicated X drafter for whetstone releases. For other repos, other platforms, or non-release posts (benchmark drops, opinion takes, real-time engagement), use `/ia-promote <repo> <platform>` instead.

Step 0: Load promotion-workspace rules

Before drafting, read these to anchor voice, platform constraints, and ethics:

  • `~/ai/promotion/rules/platforms/x.md` — X-specific rules (Premium char limits, hook discipline, when to thread vs single-post)
  • `~/ai/promotion/rules/voice.md` — voice rules (directness, density, banned constructions)
  • `~/ai/promotion/rules/ethics.md` — non-negotiables (no shadow personas, no manufactured urgency, no fake testimonials, no manufactured social proof)
  • `~/ai/promotion/rules/humanizer-check.md` — anti-AI-detection patterns specific to social posts

When this command's inline guidance disagrees with those rules, the rules win — the rules are the canonical source, this command is the orchestration wrapper. Apply the `ia-writing` skill throughout for prose hygiene (no filler, no AI slop, no throat-clearing).

Also check `~/ai/promotion/announcement-matrix.md` for the whetstone row. If `Last announced` already equals the version being drafted, ask the user whether to skip, redraft anyway, or target a different version.

Step 1: Gather context

1. Read the current version from `plugins/whetstone/.claude-plugin/plugin.json` 2. Read CHANGELOG.md -- combine ALL entries newer than the matrix's `Last announced` version for X (from `~/ai/promotion/announcement-matrix.md`, read in Step 0) into one announcement. The announcement covers the full gap, not just the newest version: the matrix can lag several versions behind current, and every unannounced version's user-visible changes belong in this post. If `Last announced` already equals the current version, there is nothing new to announce (see Step 0). 3. Get the ai-skills repo version from its sync commit: `cd ~/ai/ai-skills && git log --oneline --grep '^sync: v' -1 && cd -` 4. Count components (read-only, no writes): `bash scripts/update-metadata.sh --dry-run`

Step 2: Draft the post

X posts are marketing. Assume the reader is scrolling a busy feed — you have the first ~250 characters to earn a click-through. Craft them as a compelling hook that tells the reader what this release is about and why they should care. Everything past that is only read by readers who already opted in.

The account is X Premium (25,000 character limit per post), so most releases fit in one post. Thread only when a second distinct theme genuinely benefits from visual pacing, not to chunk content that belongs together.

**Target 1,500-2,500 chars for most releases.** Rich releases (10+ user-visible changes) condense into 3-5 top-impact bullets plus a link to the full CHANGELOG — do not list every change. Small releases (1-3 user-visible changes) fit in ~800-1,200 chars and skip the changelog link. Practical ceiling is 3,500 chars; beyond that you trade reader attention for completeness.

**Single post structure:**

1. **Opener (first ~250 chars, the feed preview — marketing copy that has to earn the click):**

  • Version line: `whetstone vX.Y.Z` (add `+ ai-skills` only if versions differ)
  • **Thematic hook**: one sentence enumerating the themes this release touches (e.g., "Sharper rules for deploys, code review, swarm orchestration, frontend discipline, and scope creep"). **Never cut the hook when trimming.** It's the attention bait for feed scrollers and maps top-level themes so a reader can self-select what matters.
  • Component counts: N agents, N commands, N skills
  • Top-N pivot line (e.g., "Top 5:") introducing the bullets

2. **Body (the 3-5 top-impact bullets):**

  • Focus on what changed that users will notice. Skip internals.
  • Group by theme, not by file. One bullet per theme, 1-3 sentences max.
  • Lead each bullet with the user benefit, not the implementation detail.
  • Skip internal changes (script fixes, comment updates, metadata, trigger tests, regex expansions) unless they affect users.

3. **Full-changelog link with theme teaser** (rich releases only):

  • One line pointing at the CHANGELOG with a parenthetical teaser of 3-5 themes NOT covered in the top-N bullets.
  • Format: `Full changelog (theme-A, theme-B, theme-C, and the rest): github.com/iliaal/whetstone/blob/master/CHANGELOG.md`
  • The teaser lets readers judge whether clicking through will find what they need.

4. **Install commands:**

  • `Install: /plugin marketplace add https://github.com/iliaal/whetstone && /plugin install whetstone@iliaal-marketplace && /reload-plugins`
  • `Portable skills: npx skills add iliaal/ai-skills`

5. **Repo URL footer (standalone final line):**

  • `github.com/iliaal/whetstone`
  • On its own line, separated from install commands by a blank line. Acts as a click target for readers who want the repo after scanning the post.

**Thread fallback (only when justified):**

Split across multiple posts when the release has two or more clearly distinct themes that benefit from visual pacing in the feed — not because one post would be "too long." Each continuation post still gets the Premium character budget; don't chunk at 280.

  • No tweet should exceed 25,000 characters (hard Premium limit)
  • No artificial chunking — if content belongs together, keep it together

Step 3: Apply writing skill

Invoke the `ia-writing` skill in audit mode on the drafted post. The skill returns an AUDIT (tagged offenses), CORRECTED TEXT, and 5-dimension scores (Directness / Rhythm / Tr

Read more
Read it on GitHub ↗

Showing the first part of this file.

Ships withwhetstone

A Claude Code plugin that makes AI coding agents follow engineering discipline. Plan before coding. Verify before claiming done. Find root cause before patching. Review before merge. Skills activate based on file type and task signals, not manual toggling.

Get the whole plugin, auto-invoked
Stats
28
Stars
0
Views
2
Forks
Active
Maintenance
Python
Language
MIT
License
4d ago
Last commit
5mo ago
Created

Repo: iliaal/whetstone