ln-910-community-engagement
Analyzes community health and delegates engagement tasks. Use when managing GitHub issues, discussions, and announcements.
What this skill does
> **Paths:** File paths (`references/`, `../ln-*`) are relative to this skill directory.
# 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 `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 `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 |
|------|---------|
| `references/community_github_discovery.md` | Phase 0: dynamic repo/category/user discovery |
| `references/community_strategy_template.md` | Default engagement strategy (fallback) |
| `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 `references/`.
---
## Phase 4: Meta-Analysis
Optional reference: load `references/meta_analysis_protocol.md` only when the user asks for post-run meta-analysis or protocol-formatted run reflection.
Skill type: `planning-coordinator`. When requested, 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)
**Host Skill Invocation:** `Skill(skill: "...", args: "...")` is mandatory delegation.
- Claude: call the Skill tool exactly as shown.
- Codex: if no Skill tool exists, locate the named skill in available skills, read its `SKILL.md`, treat `args` as `$ARGUMENTS`, execute that skill workflow, then return here with its result/artifact.
- Do not inline worker logic or mark the worker complete without executing the target skill.
| 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 in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.