con un clic
grounding-announcements
Convert product changes into grounded community announcements
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
Convert product changes into grounded community announcements
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
Single-pass network health observation. Checks API liveness, namespace freshness, drift, computes Network Health Score.
Deep investigation of a single construct. Identity-reality drift, maintenance pattern, composition analysis.
Single-pass network health observation. Checks API liveness, namespace freshness, drift, computes Network Health Score.
Autonomous observation loop. Time-boxed cycles with ratcheting health score, commits findings to grimoires.
Synthesize observations into a readable network health report. Aggregates patterns and trends from observation cycles.
Single-pass coherence sense of an ARBITRARY estate (a registry/state pair). Resolves the read-command from operator-local estate-config, shells the estate's own doctor read-only, emits exactly the STATUS|SIGNAL|MISMATCH tile. Sense-only — never mutates the estate.
| name | grounding-announcements |
| description | Convert product changes into grounded community announcements |
| user-invocable | true |
| aliases | ["announce","community-update"] |
| allowed-tools | Read, Glob, Grep, Bash, Task, Edit |
Convert product changes, feature removals, and releases into community-facing announcements grounded in code reality. Every claim is verifiable. Every date comes from git. Nothing is promised that hasn't shipped.
/announce [what changed]
Before writing, load two artifacts:
Read contexts/voice/voice.md for register, vocabulary, tone, rhythm, and audience settings.
If voice.md doesn't exist, use these defaults:
Read contexts/voice/principles.md for non-negotiable constraints.
If principles.md doesn't exist, enforce these defaults:
We Say:
We Never Say:
Read contexts/voice/voice.md
Read contexts/voice/principles.md
Parse into working constraints for Phase 3.
Check if a chronicle exists for the scope:
Read grimoires/herald/chronicles/{scope}-chronicle.md
If no chronicle exists, research directly:
For removals/sunsets:
# When did the feature first ship?
git log --all --oneline --grep="<feature>" --reverse | head -5
# What does the code actually do?
# Read the main component, page, route
# What contracts/integrations does it touch?
# Check constants, hooks, API routes
# Is there a sunset/deprecation marker?
# Look for SunsetBanner, isLocked, etc.
# What's the external reason?
# Check recent PRs, sprint docs
For new features/releases:
# What PR/commits introduced this?
git log --oneline --since="2 weeks ago" --grep="<feature>"
# What does the code do right now?
# Read the implementation files
# What's accessible to users?
# Check routes, navigation, locked states
For structural changes:
# What moved where?
git diff main -- <relevant files>
# What's the before and after?
# Read constants/navigation/routing
Collect for each item:
Apply voice profile to structure. Choose template based on change type:
Removal/Sunset:
1. The action (what's being removed)
2. Grounded history (what these were, when, from code)
3. Concrete reason (why now — named external event)
4. Deadline + user action
5. What survives or changes
6. Closer (from voice.md rhythm.closer)
7. Itemized list (one-line descriptions from code)
New Feature/Release:
1. What shipped (present tense)
2. What it does (from code, not roadmap)
3. How to access it
4. Known limitations (if any, honestly)
Structural Change:
1. What moved/changed
2. What it means for users
3. What stays the same
Run every sentence through principles.md constraints:
VALIDATION PASS:
[ ] Every feature description matches what the code does
[ ] Every date comes from git history
[ ] Zero forward-looking statements
[ ] Zero mentions of unshipped features
[ ] Zero banned vocabulary (from voice.md)
[ ] Zero apologies or hedging
[ ] Practical action items are clear and deadlined
[ ] Things that never shipped are labeled as such
[ ] Concrete external reasons are named
[ ] Tone matches voice.md register
If any check fails, rewrite the offending sentence before proceeding.
Phase 4 is HERALD's own subjective judgment. This phase is the deterministic floor it
cannot self-grade past (Honored Verification: the construct reasons, the tool verifies,
HERALD honors the exit code). The verifier is declared in construct.yaml (verifiers[],
id ai-stench); GECKO owns its evolving lexicon.
node scripts/ai-stench-check.mjs --json <draft> # or: printf '%s' "$draft" | node scripts/ai-stench-check.mjs -
hits[], rewrite ONLY the flagged spans in human voice, then
re-run. Loop until exit 0. Do NOT rationalize a near miss; the exit code is the gate, not
your opinion of it.forge.herald.stench_gated
with {scope, high: 0, verdict: "honored"}.pbcopy)grimoires/herald/announcements/{date}-{scope}.md with metadata:---
date: {ISO date}
scope: {what changed}
type: {removal|release|structural}
voice: {voice.md hash or "defaults"}
principles: {principles.md hash or "defaults"}
evidence:
commits: [{hashes}]
files_read: [{paths}]
dates_verified: true
---
{announcement text}
we have initiated the self-destruction of the following apps from the henlo arcade.
these shipped with the arcade in september. vault and lock earned BGT and oBERO
through AquaBera and Beradrome. wall turned liquidity deposits into a community
brick feed. incineraffle and casting never left the lobby.
berachain's POL update removed the reward flows these depended on. rather than
patch around it, we're removing them.
Every claim is verifiable. Dates from git. Descriptions from code. Reason is a named external event. Unshipped features called out honestly.
after careful consideration, we've decided to sunset several arcade features
as we streamline the henlo experience for the next chapter.
"Careful consideration" is vague. "Streamline" is corporate. "Next chapter" is forward-looking. None of it is grounded. It reads like every other project sunset announcement because it's not built from evidence.
we're removing some features now but trust us, what's coming next is going to
blow your minds. we've been cooking something huge. stay tuned.
This converts a neutral announcement into a forward-looking promise. Six months later, if "what's coming" hasn't shipped, this screenshot becomes evidence of another broken promise. This is the exact pattern that destroys team credibility over time.
LOAD:
voice.md <- tone, vocabulary, register, rhythm
principles.md <- "we say" / "we never say" constraints
RESEARCH:
git log dates <- never guess dates
read components <- describe what code does
check contracts <- name integrations accurately
find the "why" <- external reasons > internal feelings
DRAFT:
lead with action <- what happened, first sentence
ground in history <- when it shipped, what it did
name the reason <- concrete, external, verifiable
practical actions <- what users need to do now
itemize changes <- one line per item, past tense for removed
VALIDATE:
principles check <- every sentence against constraints
voice check <- tone, vocabulary, banned words
evidence check <- every claim traceable to git/code
NEVER:
forward-look <- the future announces itself when it ships
hype <- no "stay tuned," no "something big"
apologize <- curation is not failure
hedge <- "unfortunately" is banned
promise <- words don't ship, code does