From community-engagement
Launch RFC/debate discussions on GitHub: define topic, classify type, compose structured RFC/poll, 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)
Launches structured debate discussions in GitHub Discussions for decisions that benefit from community input.
MANDATORY READ: Load ../ln-910-community-engagement/references/github_discovery.md
Execute the discovery protocol. Extract:
{owner}/{repo} for URLs and codebase contextrepo.id for GraphQL mutationcategories["Ideas"] for RFC/Proposal discussionscategories["Polls"] for Prioritization pollsLoad strategy: check docs/community_engagement_strategy.md in target project, fallback to ../ln-910-community-engagement/references/community_strategy_template.md. Extract Section 3 (Debate Triggers) and Section 1 (Decision Matrix).
MANDATORY READ: Load ../ln-910-community-engagement/references/discussion_formatting.md
If $ARGUMENTS provided, use as the topic seed. Otherwise, ask the user what they want to debate.
Gather context:
| Type | Prefix | Category | When to use |
|---|---|---|---|
| Maintainer RFC -- design mostly done, seeking validation | [RFC] | Ideas | End of design process, soft announcement |
| Community RFC -- early stage, genuinely open to alternatives | [RFC] | Ideas | Beginning of design, kickstart discussion |
| Proposal -- new feature or restructuring | [Proposal] | Ideas | Concrete idea with use case |
| Workflow Change -- pipeline, task flow, or conventions | [RFC] | Ideas | Affects multiple areas or user workflows |
| Prioritization -- what to build next, feature ranking | [Poll] | Polls | Multiple options, need community vote |
If type is Prioritization, switch to Polls flow (Phase 4).
Use the RFC Structure Pattern from discussion_formatting.md (loaded in Phase 0).
Skill-specific additions beyond the shared pattern:
## Unresolved Details section after Open Questions — implementation details not yet decided, to be resolved during development## Decision Criteria section — how the decision will be made (metrics, feedback threshold)GitHub Discussions Polls are created via UI only. Instead, compose a reaction-based voting discussion:
## {Topic}
{1-2 sentence context}
**Vote by reacting to the options below** (each option is posted as a separate comment -- use :+1: to vote).
### Context
{Why this decision matters now}
After creating the discussion, post each option as a separate comment for reaction-based voting.
Present the composed 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 id }
}
}
' -f title="TITLE_HERE" -f body="BODY_HERE" -f repoId="{repo.id}" -f catId="{categories.Ideas or categories.Polls}"
For Polls, after creating the discussion, post each option as a comment:
gh api graphql -f query='
mutation($discussionId: ID!, $body: String!) {
addDiscussionComment(input: {
discussionId: $discussionId,
body: $body
}) {
comment { url }
}
}
' -f discussionId="DISCUSSION_NODE_ID" -f body="**Option N:** {description}"
Report the discussion URL to the user.
Version: 1.0.0 Last Updated: 2026-03-13