From community-engagement
Compose and publish GitHub Discussion announcements: gather context, classify, compose, fact-check, review, publish via GraphQL
npx claudepluginhub 0xtaoist/taogate --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.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Automates semantic versioning and release workflow for Claude Code plugins: bumps versions in package.json, marketplace.json, plugin.json; verifies builds; creates git tags, GitHub releases, changelogs.
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.
Type: L3 Worker (standalone) Category: 9XX Community Engagement Caller: ln-910-community-engagement (or standalone)
Composes and publishes structured announcements to GitHub Discussions (Announcements category).
MANDATORY READ: Load ../ln-910-community-engagement/references/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 ../ln-910-community-engagement/references/community_strategy_template.md. Extract Section 2 (Announcement Triggers) and Section 6 (Tone Guide).
MANDATORY READ: Load ../ln-910-community-engagement/references/discussion_formatting.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}Determine the type based on gathered context:
| 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 Announcement Structure Pattern from discussion_formatting.md (loaded in Phase 0).
Skill-specific additions beyond the shared pattern:
### 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] alertBefore presenting to user, verify every verifiable claim in the draft:
README.md for each command/snippet in the draft. If command not found -> replace with the actual command. Never invent install/update commands.ls {path}. Remove or fix broken links.git diff --name-only | grep -c SKILL.md or ls -d ln-*/SKILL.md | wc -l.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