/announce
Draft X/Twitter announcement post (or thread) for the latest plugin release
$ npx -y skills add iliaal/whetstone --agent claude-codeShips 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.mdname: 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
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
Showing the first part of this file.
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.
Repo: iliaal/whetstone
Other commands on whetstone.
- /analyze-misfires
Identify skills injected where not needed, propose regex and description tightening
Open command - /audit-plugin
Deep quality audit of all skills, agents, and commands for inconsistencies, gaps, duplication, and token waste
Open command - /diagnose-negatives
Analyze negative-signal sessions for a skill, identify failure patterns, propose and apply fixes
Open command - /eval-skills
Eval all skills with sufficient data, rank by composite score, identify candidates for optimization
Open command - /evolve-skill
Run the full skill evolution pipeline -- harvest sessions, discover signals, build golden dataset, eval baseline, evolve via DSPy, compare scores
Open command - /prune-sync-log
Prune stale entries from the whetstone sync decision log
Open command

