From community-engagement
Composes and publishes structured announcements to GitHub Discussions. Use for sharing releases, updates, or community news from CHANGELOG and git changes.
npx claudepluginhub levnikolaevich/claude-code-skills --plugin community-engagementThis skill is limited to using the following tools:
> **Paths:** File paths (`shared/`, `references/`, `../ln-*`) are relative to skills repo root. If not found at CWD, locate this SKILL.md directory and go up one level for repo root. If `shared/` is missing, fetch files via WebFetch from `https://raw.githubusercontent.com/levnikolaevich/claude-code-skills/master/skills/{path}`.
Generates dated changelog entries in docs/changelog.md from free text, git commits, or GitHub PRs. Outputs tweet threads, LinkedIn posts, email snippets, and one-liners.
Generates witty changelogs from recent main branch merges, categorizing PRs into features, bug fixes, breaking changes, improvements, with contributor shoutouts and deployment notes.
Generates user-facing changelogs with impact notes and support guidance from git history using Keep a Changelog format. Use for drafting release notes from commits.
Share bugs, ideas, or general feedback.
Paths: File paths (
shared/,references/,../ln-*) are relative to skills repo root. If not found at CWD, locate this SKILL.md directory and go up one level for repo root. Ifshared/is missing, fetch files via WebFetch fromhttps://raw.githubusercontent.com/levnikolaevich/claude-code-skills/master/skills/{path}.
Type: L3 Worker (standalone) Category: 9XX Community Engagement Composes and publishes structured announcements to GitHub Discussions (Announcements category).
MANDATORY READ: Load shared/references/community_github_discovery.md
Execute the discovery protocol. Extract:
{owner}/{repo} for URLs and git commandsrepo.id for GraphQL mutationcategories["Announcements"] category ID for publishingLoad strategy: check docs/community_engagement_strategy.md in target project, fallback to shared/references/community_strategy_template.md. Extract Section 2 (Announcement Triggers) and Section 6 (Tone Guide).
MANDATORY READ: Load shared/references/community_discussion_formatting.md
MANDATORY READ: Load announcement_styles.md
MANDATORY READ: Load shared/references/humanizer_checklist.md
CHANGELOG.md -- extract the latest entry (or the entry matching $ARGUMENTS date if provided)README.md -- check current version badge, any WARNING/IMPORTANT calloutsgit log --oneline -20 -- recent commits for context$ARGUMENTS contains a topic keyword (not a date), use it as the announcement subjectgit diff --name-only (uncommitted) or git diff --name-only HEAD~1..HEAD (last commit) -- build the list of changed files$ARGUMENTS topic):
git diff -- {file}| Type | Trigger | Emoji |
|---|---|---|
| Release | New version in CHANGELOG | :rocket: |
| Breaking Change | WARNING callout in README or "breaking" in CHANGELOG | :warning: |
| New Features | New feature entries in CHANGELOG | :sparkles: |
| Architecture | Structural changes (new categories, plugin splits) | :building_construction: |
| Community | Non-technical updates (events, milestones) | :people_holding_hands: |
Use the Style Selection Matrix from announcement_styles.md to pick a primary style based on announcement type. Check the last 3 announcements in Discussions — if they all used the same style, pick a different one for variety.
Optionally mix: use a hook from one style with the body from another (see Mixing Styles table in announcement_styles.md).
Use the selected style template from announcement_styles.md as the structural basis, and discussion_formatting.md for GitHub markdown syntax.
Required elements (all styles):
### Contributors section after ### What's Next — thank contributors by @mention if applicable (skip for solo work)*Full changelog: [CHANGELOG.md](https://github.com/{owner}/{repo}/blob/{default_branch}/CHANGELOG.md)*> [!IMPORTANT] alertannouncement_styles.md)Before presenting to user, verify every verifiable claim in the draft:
Commands & code blocks -- grep README.md for each command/snippet in the draft. If command not found -> replace with the actual command. Never invent install/update commands.
File paths & links -- verify each linked file exists: ls {path}. Remove or fix broken links.
Numbers -- verify counts mentioned against actual data: git diff --name-only | grep -c SKILL.md or ls -d ln-*/SKILL.md | wc -l.
Feature descriptions -- re-read the key source file (from Phase 1 step 7) and confirm the draft accurately describes what changed. No hallucinated capabilities.
Names -- verify names match actual directory/file names in the repo.
Humanizer audit -- run the audit protocol from humanizer_checklist.md. If 3+ AI patterns found, rewrite flagged sections.
Gate: If any check fails, fix the draft before proceeding.
Present the composed announcement title + body to the user. Wait for explicit approval before publishing.
After approval, publish via GraphQL using discovery context:
gh api graphql -f query='
mutation($title: String!, $body: String!, $repoId: ID!, $catId: ID!) {
createDiscussion(input: {
repositoryId: $repoId,
categoryId: $catId,
title: $title,
body: $body
}) {
discussion { url }
}
}
' -f title="TITLE_HERE" -f body="BODY_HERE" -f repoId="{repo.id}" -f catId="{categories.Announcements}"
Report the discussion URL to the user.
Note: Pinning is not available via API -- remind the user to pin manually in GitHub UI if the announcement is important.
If the announcement is a release or breaking change, suggest:
gh release create vX.Y.Z --notes "See discussion: URL"Version: 1.0.0 Last Updated: 2026-03-13