ln-910-community-engagement

Analyzes community health and delegates engagement tasks. Use when managing GitHub issues, discussions, and announcements.

310 stars

Best use case

ln-910-community-engagement is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Analyzes community health and delegates engagement tasks. Use when managing GitHub issues, discussions, and announcements.

Teams using ln-910-community-engagement should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/ln-910-community-engagement/SKILL.md --create-dirs "https://raw.githubusercontent.com/levnikolaevich/claude-code-skills/main/skills-catalog/ln-910-community-engagement/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/ln-910-community-engagement/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How ln-910-community-engagement Compares

Feature / Agentln-910-community-engagementStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Analyzes community health and delegates engagement tasks. Use when managing GitHub issues, discussions, and announcements.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

> **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}`.

# ln-910-community-engagement

**Type:** L2 Coordinator (active)
**Category:** 9XX Community Engagement

Analyzes current community health and repository state, consults the engagement strategy, and delegates to the appropriate worker. Each worker is also invocable standalone.

---

## Overview

| Aspect | Details |
|--------|---------|
| **Input** | `$ARGUMENTS` (optional): topic, action keyword, or empty for auto-analysis |
| **Output** | Situation report + delegated action via worker skill |
| **Workers** | ln-911 (triager), ln-912 (announcer), ln-913 (debater), ln-914 (responder) |

---

## Phase 0: GitHub Discovery

**MANDATORY READ:** Load `shared/references/community_github_discovery.md`

Execute the discovery protocol. Extract:
- `{owner}/{repo}` for all GitHub operations
- `repo.id` for GraphQL mutations (passed to workers)
- `maintainer` login (authenticated user)
- Discussion category IDs

**Gate checks:** gh authenticated? Discussions enabled?

Load strategy: check `docs/community_engagement_strategy.md` in target project, fallback to `shared/references/community_strategy_template.md`.

---

## Phase 1: Situation Analysis

If `$ARGUMENTS` contains a direct action keyword (`announce`, `debate`, `triage`, `respond`), skip analysis and jump to Phase 3 (Direct Delegation).

Otherwise, gather context from multiple sources in parallel:

### 1a. Community Health

Delegate to triager in summary mode (no interactive preview):

`Skill(skill: "ln-911-github-triager", args: "summary")`

Extract from triager output: red flags, priority counts (P0/P1/P2), health metrics.

### 1b. Unreleased Changes

```bash
# Last announcement date: most recent Announcements discussion
gh api graphql -f query='query($owner: String!, $name: String!) {
  repository(owner: $owner, name: $name) {
    discussions(first: 1, categoryId: "{categories.Announcements}", orderBy: {field: CREATED_AT, direction: DESC}) {
      nodes { createdAt title }
    }
  }
}' -f owner="{owner}" -f name="{repo}"
```

Then check what changed since:
```bash
git log --oneline --since="{last_announcement_date}"
```

Read `CHANGELOG.md` — any entries newer than the last announcement?

### 1c. Cadence Check

From strategy Section 4:
- Days since last announcement → monthly digest overdue if >30 days?
- Any pending architectural decisions that need RFC?

---

## Phase 2: Decision Matrix

Apply strategy Section 1 (Announcement vs Debate) to the gathered context:

| Condition | Priority | Action | Worker |
|-----------|----------|--------|--------|
| Red flags: unanswered discussions >7d | **P0** | Respond to unanswered items | → ln-914 |
| Red flags: PRs needing review | **P0** | List PRs needing review | Recommendations only |
| Unreleased changes in CHANGELOG | **P1** | Announce: new features/fixes | → ln-912 |
| `$ARGUMENTS` contains RFC/debate topic | **P1** | Debate: launch RFC | → ln-913 |
| Monthly digest overdue (>30d) | **P2** | Monthly digest announcement | → ln-912 |
| Design questions identified in Phase 1 | **P2** | Debate: RFC for open decisions | → ln-913 |
| Community health OK, nothing unreleased | **—** | Report "all clear" | No delegation |

### Output: Situation Report

Present to user:

```
## Community Status — {YYYY-MM-DD}

**Repo:** {owner}/{repo}
**Last announcement:** {date} ({days} days ago)
**Open items:** {issues} issues, {prs} PRs, {discussions} discussions

### Red Flags
{list or "None"}

### Recommended Action
{One of: Announce / Debate / Respond to items / No action needed}

**Reason:** {brief explanation based on strategy criteria}
```

**Wait for user approval before proceeding.**

---

## Phase 3: Delegate

After user approves the recommended action:

### Direct Delegation (when `$ARGUMENTS` specifies action)

| Argument | Delegation |
|----------|-----------|
| `announce` or `announce {topic}` | `Skill(skill: "ln-912-community-announcer", args: "{topic}")` |
| `debate` or `debate {topic}` | `Skill(skill: "ln-913-community-debater", args: "{topic}")` |
| `triage` or `triage {scope}` | `Skill(skill: "ln-911-github-triager", args: "{scope}")` |
| `respond` or `respond {#number}` | `Skill(skill: "ln-914-community-responder", args: "{#number or batch}")` |

### Analysis-Based Delegation

| Recommended action | Delegation |
|-------------------|-----------|
| Announce | `Skill(skill: "ln-912-community-announcer")` — worker gathers its own context |
| Debate | `Skill(skill: "ln-913-community-debater", args: "{identified topic}")` |
| Respond to items | `Skill(skill: "ln-914-community-responder", args: "batch")` |
| No action needed | Report status, done |

---

## Shared References

| File | Purpose |
|------|---------|
| `shared/references/community_github_discovery.md` | Phase 0: dynamic repo/category/user discovery |
| `shared/references/community_strategy_template.md` | Default engagement strategy (fallback) |
| `shared/references/community_discussion_formatting.md` | GitHub Discussion formatting rules |

---

## Strategy Override

Each target project can override the default strategy by creating `docs/community_engagement_strategy.md`. All skills check project-local first, then fall back to the template in `shared/references/`.

---

## Phase 4: Meta-Analysis

**MANDATORY READ:** Load `shared/references/meta_analysis_protocol.md`

Skill type: `planning-coordinator`. Run after Phase 3 completes. Output to chat using the `planning-coordinator` format.

---

**TodoWrite format (mandatory):**
```
- GitHub discovery (in_progress)
- Situation analysis (pending)
- Apply decision matrix (pending)
- Invoke ln-911-github-triager (pending)
- Invoke ln-912-community-announcer (pending)
- Invoke ln-913-community-debater (pending)
- Invoke ln-914-community-responder (pending)
- Report outcome to user (pending)
```

## Worker Invocation (MANDATORY)

| Phase | Worker | Context |
|-------|--------|---------|
| 1 | ln-911-github-triager | Shared (Skill tool) — community health summary |
| 3 | ln-912-community-announcer | Shared (Skill tool) — feature/release announcements |
| 3 | ln-913-community-debater | Shared (Skill tool) — RFC / architectural debates |
| 3 | ln-914-community-responder | Shared (Skill tool) — respond to unanswered items |

**All workers:** Invoke via Skill tool — workers see coordinator context.

## Definition of Done

- [ ] GitHub discovery complete (owner/repo, categories, maintainer extracted)
- [ ] Situation analyzed (health + unreleased changes + cadence) OR direct delegation triggered
- [ ] Decision matrix applied with priority-based action selection
- [ ] Worker delegated or recommendations shown to user
- [ ] User informed of outcome

---

**Version:** 1.0.0
**Last Updated:** 2026-03-13

Related Skills

ln-914-community-responder

310
from levnikolaevich/claude-code-skills

Responds to unanswered GitHub discussions and issues with codebase-informed replies. Use when clearing community question backlog.

ln-913-community-debater

310
from levnikolaevich/claude-code-skills

Launches RFC and debate discussions on GitHub. Use when proposing changes that need community input or voting.

ln-912-community-announcer

310
from levnikolaevich/claude-code-skills

Composes and publishes announcements to GitHub Discussions. Use when sharing releases, updates, or news with the community.

ln-911-github-triager

310
from levnikolaevich/claude-code-skills

Produces prioritized triage report from open GitHub issues, PRs, and discussions. Use when reviewing community backlog.

ln-840-benchmark-compare

310
from levnikolaevich/claude-code-skills

Runs built-in vs hex-line benchmark with scenario manifests, activation checks, and diff-based correctness. Use when measuring hex-line MCP performance against built-in tools.

ln-832-bundle-optimizer

310
from levnikolaevich/claude-code-skills

Reduces JS/TS bundle size via tree-shaking, code splitting, and unused dependency removal. Use when optimizing frontend bundle size.

ln-831-oss-replacer

310
from levnikolaevich/claude-code-skills

Replaces custom modules with OSS packages using atomic keep/discard testing. Use when migrating custom code to established libraries.

ln-830-code-modernization-coordinator

310
from levnikolaevich/claude-code-skills

Modernizes codebase via OSS replacement and bundle optimization. Use when acting on audit findings to reduce custom code.

ln-823-pip-upgrader

310
from levnikolaevich/claude-code-skills

Upgrades Python pip/poetry/pipenv dependencies with breaking change handling. Use when updating Python dependencies.

ln-822-nuget-upgrader

310
from levnikolaevich/claude-code-skills

Upgrades .NET NuGet packages with breaking change handling. Use when updating .NET dependencies.

ln-821-npm-upgrader

310
from levnikolaevich/claude-code-skills

Upgrades npm/yarn/pnpm dependencies with breaking change handling. Use when updating JavaScript/TypeScript dependencies.

ln-820-dependency-optimization-coordinator

310
from levnikolaevich/claude-code-skills

Upgrades dependencies across all detected package managers. Use when updating npm, NuGet, or pip packages project-wide.