---
name: gitlink-community-ops
version: 1.0.0
description: "社区运营自动化：Issue 自动分拣 → 周报生成 → Release Notes 发布。串联 issue-triage、project-health、release-auto 三阶段，实现社区运营全自动化。"
metadata:
  requires:
    bins: ["gitlink-cli", "jq"]
  cliHelp: "gitlink-cli issue --help / gitlink-cli pr --help / gitlink-cli release --help"
---

# gitlink-community-ops（社区运营自动化）

> **前置条件：** 先阅读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md) 了解认证、全局参数和 API 注意事项。
>
> **CRITICAL — 所有 GitLink 操作必须使用 `gitlink-cli`，禁止使用 `gh`（GitHub CLI）操作 GitLink 资源。**

## 说明

本 Skill 串联 **三个已有 Skill** 形成一个完整的社区运营自动化流水线：

1. **Issue 自动分拣** — 新 Issue 自动分类、打标签、分配责任人、添加引导评论
2. **社区周报生成** — 采集 Issue/PR/Commit/Milestone 数据，生成带评分的健康度报告
3. **自动发布 Release Notes** — 分析提交历史，生成结构化 Release Notes 并创建发布

**与子任务二的区别：** 子任务二交付的是单一步骤的 Skill（如只做 Issue 分拣），而本工作流将多个 Skill 串联成完整的端到端解决方案。

---

## 三阶段工作流总览

```mermaid
flowchart LR
    A[新 Issue / 周期触发] --> B[Phase 1: Issue 分拣]
    B --> C[Phase 2: 周报生成]
    C --> D[Phase 3: Release Notes]
    
    subgraph B[Phase 1: Issue Triage]
        B1[采集未分类 Issue] --> B2[关键词权重分析]
        B2 --> B3[自动打标签]
        B3 --> B4[添加引导评论]
    end
    
    subgraph C[Phase 2: 周报]
        C1[采集 Issue/PR/Commit/Milestone] --> C2[计算健康度评分]
        C2 --> C3[生成趋势报告]
    end
    
    subgraph D[Phase 3: Release]
        D1[获取最新 Tag] --> D2[分析提交历史]
        D2 --> D3[语义化版本推荐]
        D3 --> D4[生成 Release Notes]
        D4 --> D5[创建 Release]
    end
```

---

## Phase 1：Issue 自动分拣

**参考 Skill：** [`../gitlink-issue-triage/SKILL.md`](../gitlink-issue-triage/SKILL.md)

### 步骤

```bash
# 1. 获取所有打开的 Issue
gitlink-cli issue +list --owner <owner> --repo <repo> --state open --format json

# 2. 逐个查看 Issue 详情（提取标题和描述用于分析）
gitlink-cli issue +view --owner <owner> --repo <repo> --number <id> --format json

# 3. 关键词权重分析（AI 执行）
#    参见 gitlink-issue-triage 的"关键词权重分类系统"

# 4. 获取可用标签
gitlink-cli label +list --owner <owner> --repo <repo>

# 5. 打标签（dry-run 优先）
gitlink-cli issue +update --owner <owner> --repo <repo> --number <id> --labels <label_id>

# 6. 添加引导评论
gitlink-cli issue +comment --owner <owner> --repo <repo> --number <id> --body "<comment>"
```

### 关键词权重分类矩阵

| 类别 | 关键词 | 权重分 | 建议标签 |
|------|--------|--------|---------|
| Bug | bug(10)、错误(8)、失败(7)、异常(6)、crash(10)、报错(5) | ≥15 | bug |
| 功能需求 | 建议(8)、希望(7)、需要(5)、feature(8)、支持(4)、新增(5) | ≥12 | enhancement |
| 文档 | 文档(10)、README(8)、拼写(5)、缺少(4)、帮助(3) | ≥10 | documentation |
| 安全 | 漏洞(10)、安全(8)、权限(7)、泄露(8)、注入(6) | ≥12 | security |
| 性能 | 慢(8)、卡顿(7)、性能(6)、优化(5)、performance(8) | ≥10 | performance |
| 问题咨询 | 请问(5)、怎么(5)、如何(4)、help(3)、? (2) | ≥6 | question |

---

## Phase 2：社区周报生成

**参考 Skill：** [`../gitlink-project-health/SKILL.md`](../gitlink-project-health/SKILL.md)

### 数据采集

```bash
# Issue 数据
gitlink-cli issue +list --owner <owner> --repo <repo> --state all --format json
gitlink-cli issue +list --owner <owner> --repo <repo> --state open
gitlink-cli issue +list --owner <owner> --repo <repo> --state closed --limit 50

# PR 数据
gitlink-cli pr +list --owner <owner> --repo <repo> --state all --format json
gitlink-cli pr +list --owner <owner> --repo <repo> --state merged --limit 50

# 贡献者数据
gitlink-cli commit +list --owner <owner> --repo <repo> --limit 50

# 里程碑
gitlink-cli milestone +list --owner <owner> --repo <repo>
```

### 评分维度

| 维度 | 计算方法 | 权重 |
|------|----------|------|
| Issue 健康度 | 关闭率 + 平均响应时间 | 30% |
| PR 健康度 | 合并率 + 平均合并时间 | 30% |
| 贡献者活跃度 | 贡献者数 + 提交频率 | 25% |
| 里程碑进度 | 完成度 + 逾期风险 | 15% |

### 综合评分

```
综合得分 = Issue得分 × 30% + PR得分 × 30% + 活跃度得分 × 25% + 里程碑得分 × 15%

9-10 → 🟢 优秀    7-8 → 🟢 良好
5-6  → 🟡 一般    3-4 → 🔴 堪忧
0-2  → 🔴 危险
```

---

## Phase 3：自动 Release Notes

**参考 Skill：** [`../gitlink-release-auto/SKILL.md`](../gitlink-release-auto/SKILL.md)

### 步骤

```bash
# 1. 获取最新 Release 确定基线版本
gitlink-cli release +list --owner <owner> --repo <repo> --format json

# 2. 获取从上一版本到当前的提交历史
git log <last_tag>..HEAD --format="%H|%s|%an|%ad" --date=short --stat

# 3. AI 分析提交分类（按 Conventional Commits 规范）
#    feat: → ✨ 新功能    fix: → 🐛 Bug 修复
#    docs: → 📝 文档      refactor: → ♻️ 重构
#    perf: → ⚡ 性能优化   test: → ✅ 测试
#    chore: → 🔧 工程     revert: → ⏪ 回退

# 4. 语义化版本推荐
#    BREAKING CHANGE → 主版本 +1
#    feat → 次版本 +1
#    fix/docs/refactor → 修订号 +1

# 5. 创建 Release（dry-run 模式优先）
gitlink-cli release +create --owner <owner> --repo <repo> \
  --tag <new_version> --name "<new_version>" \
  --body "<generated_release_notes>" --target master
```

---

## 可复现脚本

本 Skill 提供可直接执行的 Bash 脚本，位于 `scripts/` 目录：

| 脚本 | 功能 | 使用方式 |
|------|------|----------|
| `01-issue-triage.sh` | Phase 1 Issue 分拣 | `bash 01-issue-triage.sh <owner> <repo>` |
| `02-weekly-health-report.sh` | Phase 2 周报生成 | `bash 02-weekly-health-report.sh <owner> <repo>` |
| `03-auto-release-notes.sh` | Phase 3 Release Notes | `bash 03-auto-release-notes.sh <owner> <repo>` |
| `community-ops-full.sh` | 全流程串联 | `bash community-ops-full.sh <owner> <repo>` |

**所有脚本默认 dry-run 模式**（不会实际修改数据），确认无误后通过环境变量切换：

```bash
# Dry-run（默认，安全）
DRY_RUN=true bash scripts/community-ops-full.sh z2_cc gitlink-cli

# 实际执行
DRY_RUN=false bash scripts/community-ops-full.sh z2_cc gitlink-cli
```

---

## 注意事项

1. **dry-run 优先**：所有写操作（`issue +update`、`issue +comment`、`release +create`）默认不应实际执行
2. **Token 有效**：运行前确认 `gitlink-cli auth status` 返回正常
3. **关键词准确率**：AI 的分类结果建议人工复核，特别是边缘情况
4. **版本号冲突**：如果最新 tag 不是 release 版本，需人工确认基线
5. **输出文件**：所有 JSON 数据保存到 `scripts/_output/` 目录供审计
