gitlink-cli/examples/workflows/community-ops/architecture.html

154 lines
12 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<h2 class="sr-only">社区运营自动化工作流架构图</h2>
<div style="font-family: var(--font-sans, sans-serif); max-width: 720px; margin: 0 auto; padding: 20px;">
<h1 style="font-size: 18px; font-weight: 500; text-align: center; margin-bottom: 8px;">GitLink 社区运营自动化工作流</h1>
<p style="font-size: 13px; text-align: center; color: var(--color-text-secondary, #555); margin-bottom: 24px;">四个 Skill 统一编排 · C1 纯文档模式 · 跨平台兼容</p>
<svg viewBox="0 0 680 560" width="100%" role="img">
<title>社区运营自动化工作流架构图</title>
<desc>四个 Skill 统一编排三阶段</desc>
<defs>
<marker id="arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse">
<path d="M2 1L8 5L2 9" fill="none" stroke="context-stroke" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</marker>
</defs>
<style>
.th{font:500 13px var(--font-sans,sans-serif);fill:var(--color-text-primary,#000)}
.ts{font:400 12px var(--font-sans,sans-serif);fill:var(--color-text-secondary,#555)}
.tb{font:400 12px var(--font-sans,sans-serif);fill:var(--color-text-secondary,#555)}
.tc{font:500 12px var(--font-sans,sans-serif);fill:var(--color-text-primary,#000)}
</style>
<!-- 统一入口 Skill -->
<rect x="170" y="20" width="340" height="50" rx="10" fill="#EEEDFE" stroke="#534AB7" stroke-width="0.5"/>
<text class="th" x="340" y="38" text-anchor="middle" dominant-baseline="central">gitlink-community-ops</text>
<text class="ts" x="340" y="56" text-anchor="middle" dominant-baseline="central">统一入口 Skill (编排 Step 1→2→3)</text>
<!-- 三个子 Skill -->
<line x1="340" y1="70" x2="340" y2="95" stroke="#534AB7" stroke-width="1.5" fill="none" marker-end="url(#arrow)"/>
<!-- Step 1 -->
<rect x="20" y="100" width="210" height="130" rx="12" fill="#E1F5EE" stroke="#0F6E56" stroke-width="0.5"/>
<text class="th" x="125" y="120" text-anchor="middle" dominant-baseline="central">Step 1: Issue 分类+分配</text>
<text class="ts" x="125" y="138" text-anchor="middle" dominant-baseline="central">gitlink-issue-triage-rules</text>
<rect x="35" y="150" width="90" height="28" rx="5" fill="#fff" stroke="#0F6E56" stroke-width="0.5"/>
<text class="tc" x="80" y="164" text-anchor="middle" dominant-baseline="central">规则匹配</text>
<rect x="135" y="150" width="85" height="28" rx="5" fill="#fff" stroke="#0F6E56" stroke-width="0.5"/>
<text class="tc" x="177" y="164" text-anchor="middle" dominant-baseline="central">LLM 兜底</text>
<rect x="35" y="185" width="90" height="28" rx="5" fill="#fff" stroke="#0F6E56" stroke-width="0.5"/>
<text class="tc" x="80" y="199" text-anchor="middle" dominant-baseline="central">双语翻译</text>
<rect x="135" y="185" width="85" height="28" rx="5" fill="#fff" stroke="#0F6E56" stroke-width="0.5"/>
<text class="tc" x="177" y="199" text-anchor="middle" dominant-baseline="central">PATCH 写回</text>
<!-- Step 2 -->
<rect x="240" y="100" width="210" height="130" rx="12" fill="#F1EFE8" stroke="#5F5E5A" stroke-width="0.5"/>
<text class="th" x="345" y="120" text-anchor="middle" dominant-baseline="central">Step 2: 社区周报</text>
<text class="ts" x="345" y="138" text-anchor="middle" dominant-baseline="central">gitlink-community-report</text>
<rect x="255" y="150" width="85" height="28" rx="5" fill="#fff" stroke="#5F5E5A" stroke-width="0.5"/>
<text class="tc" x="297" y="164" text-anchor="middle" dominant-baseline="central">数据采集</text>
<rect x="350" y="150" width="90" height="28" rx="5" fill="#fff" stroke="#5F5E5A" stroke-width="0.5"/>
<text class="tc" x="395" y="164" text-anchor="middle" dominant-baseline="central">时间过滤</text>
<rect x="255" y="185" width="85" height="28" rx="5" fill="#fff" stroke="#5F5E5A" stroke-width="0.5"/>
<text class="tc" x="297" y="199" text-anchor="middle" dominant-baseline="central">生成周报</text>
<rect x="350" y="185" width="90" height="28" rx="5" fill="#fff" stroke="#5F5E5A" stroke-width="0.5"/>
<text class="tc" x="395" y="199" text-anchor="middle" dominant-baseline="central">Issue 发布</text>
<!-- Step 3 -->
<rect x="460" y="100" width="210" height="130" rx="12" fill="#E6F1FB" stroke="#185FA5" stroke-width="0.5"/>
<text class="th" x="565" y="120" text-anchor="middle" dominant-baseline="central">Step 3: Release Notes</text>
<text class="ts" x="565" y="138" text-anchor="middle" dominant-baseline="central">gitlink-release-notes</text>
<rect x="475" y="150" width="85" height="28" rx="5" fill="#fff" stroke="#185FA5" stroke-width="0.5"/>
<text class="tc" x="517" y="164" text-anchor="middle" dominant-baseline="central">版本去重</text>
<rect x="570" y="150" width="90" height="28" rx="5" fill="#fff" stroke="#185FA5" stroke-width="0.5"/>
<text class="tc" x="615" y="164" text-anchor="middle" dominant-baseline="central">Issue 分类</text>
<rect x="475" y="185" width="85" height="28" rx="5" fill="#fff" stroke="#185FA5" stroke-width="0.5"/>
<text class="tc" x="517" y="199" text-anchor="middle" dominant-baseline="central">生成 Notes</text>
<rect x="570" y="185" width="90" height="28" rx="5" fill="#fff" stroke="#185FA5" stroke-width="0.5"/>
<text class="tc" x="615" y="199" text-anchor="middle" dominant-baseline="central">Release 创建</text>
<!-- 依赖关系箭头 Step 1 → Step 2 → Step 3 -->
<line x1="230" y1="165" x2="240" y2="165" stroke="#0F6E56" stroke-width="1.5" fill="none" marker-end="url(#arrow)"/>
<line x1="450" y1="165" x2="460" y2="165" stroke="#5F5E5A" stroke-width="1.5" fill="none" marker-end="url(#arrow)"/>
<!-- 底层 CLI -->
<rect x="100" y="260" width="480" height="44" rx="8" fill="#FAEEDA" stroke="#854F0B" stroke-width="0.5"/>
<text class="th" x="340" y="282" text-anchor="middle" dominant-baseline="central">gitlink-cli / gh / glab / curl → 各平台 REST API</text>
<!-- CLI 命令清单 -->
<line x1="340" y1="304" x2="340" y2="320" stroke="#854F0B" stroke-width="1.5" fill="none" marker-end="url(#arrow)"/>
<rect x="20" y="320" width="640" height="230" rx="12" fill="#f8f8f8" stroke="#ccc" stroke-width="0.5"/>
<text class="th" x="340" y="340" text-anchor="middle" dominant-baseline="central">串联的 CLI 命令清单 (14 项)</text>
<!-- Step 1 命令 -->
<text class="ts" x="40" y="370">Step 1 (gitlink-issue-triage-rules):</text>
<rect x="40" y="380" width="110" height="22" rx="4" fill="#E1F5EE" stroke="#0F6E56" stroke-width="0.3"/>
<text class="tb" x="95" y="394" text-anchor="middle" dominant-baseline="central">auth status</text>
<rect x="160" y="380" width="110" height="22" rx="4" fill="#E1F5EE" stroke="#0F6E56" stroke-width="0.3"/>
<text class="tb" x="215" y="394" text-anchor="middle" dominant-baseline="central">issue +list</text>
<rect x="280" y="380" width="110" height="22" rx="4" fill="#E1F5EE" stroke="#0F6E56" stroke-width="0.3"/>
<text class="tb" x="335" y="394" text-anchor="middle" dominant-baseline="central">label +list</text>
<rect x="400" y="380" width="110" height="22" rx="4" fill="#E1F5EE" stroke="#0F6E56" stroke-width="0.3"/>
<text class="tb" x="455" y="394" text-anchor="middle" dominant-baseline="central">member +list</text>
<rect x="520" y="380" width="120" height="22" rx="4" fill="#E1F5EE" stroke="#0F6E56" stroke-width="0.3"/>
<text class="tb" x="580" y="394" text-anchor="middle" dominant-baseline="central">issue +view</text>
<rect x="40" y="410" width="110" height="22" rx="4" fill="#E1F5EE" stroke="#0F6E56" stroke-width="0.3"/>
<text class="tb" x="95" y="424" text-anchor="middle" dominant-baseline="central">api PATCH</text>
<rect x="160" y="410" width="110" height="22" rx="4" fill="#E1F5EE" stroke="#0F6E56" stroke-width="0.3"/>
<text class="tb" x="215" y="424" text-anchor="middle" dominant-baseline="central">+comment</text>
<rect x="280" y="410" width="110" height="22" rx="4" fill="#E1F5EE" stroke="#0F6E56" stroke-width="0.3"/>
<text class="tb" x="335" y="424" text-anchor="middle" dominant-baseline="central">issue +view</text>
<!-- Step 2 命令 -->
<text class="ts" x="40" y="450">Step 2 (gitlink-community-report):</text>
<rect x="40" y="460" width="110" height="22" rx="4" fill="#F1EFE8" stroke="#5F5E5A" stroke-width="0.3"/>
<text class="tb" x="95" y="474" text-anchor="middle" dominant-baseline="central">auth status</text>
<rect x="160" y="460" width="110" height="22" rx="4" fill="#F1EFE8" stroke="#5F5E5A" stroke-width="0.3"/>
<text class="tb" x="215" y="474" text-anchor="middle" dominant-baseline="central">issue +list</text>
<rect x="280" y="460" width="110" height="22" rx="4" fill="#F1EFE8" stroke="#5F5E5A" stroke-width="0.3"/>
<text class="tb" x="335" y="474" text-anchor="middle" dominant-baseline="central">release +list</text>
<rect x="400" y="460" width="110" height="22" rx="4" fill="#F1EFE8" stroke="#5F5E5A" stroke-width="0.3"/>
<text class="tb" x="455" y="474" text-anchor="middle" dominant-baseline="central">member +list</text>
<rect x="520" y="460" width="120" height="22" rx="4" fill="#F1EFE8" stroke="#5F5E5A" stroke-width="0.3"/>
<text class="tb" x="580" y="474" text-anchor="middle" dominant-baseline="central">issue +create</text>
<!-- Step 3 命令 -->
<text class="ts" x="40" y="500">Step 3 (gitlink-release-notes):</text>
<rect x="40" y="510" width="110" height="22" rx="4" fill="#E6F1FB" stroke="#185FA5" stroke-width="0.3"/>
<text class="tb" x="95" y="524" text-anchor="middle" dominant-baseline="central">auth status</text>
<rect x="160" y="510" width="110" height="22" rx="4" fill="#E6F1FB" stroke="#185FA5" stroke-width="0.3"/>
<text class="tb" x="215" y="524" text-anchor="middle" dominant-baseline="central">issue +list</text>
<rect x="280" y="510" width="110" height="22" rx="4" fill="#E6F1FB" stroke="#185FA5" stroke-width="0.3"/>
<text class="tb" x="335" y="524" text-anchor="middle" dominant-baseline="central">release +list</text>
<rect x="400" y="510" width="110" height="22" rx="4" fill="#E6F1FB" stroke="#185FA5" stroke-width="0.3"/>
<text class="tb" x="455" y="524" text-anchor="middle" dominant-baseline="central">release +create</text>
</svg>
<div style="margin-top: 28px; font-size: 13px; line-height: 1.7;">
<h3 style="font-size: 14px; font-weight: 500; margin-bottom: 8px;">Skill 编排流程</h3>
<p style="color: var(--color-text-secondary, #555); margin-bottom: 16px;">
<strong>gitlink-community-ops</strong> 是统一入口,编排三个子 Skill<br>
Step 1: <strong>gitlink-issue-triage-rules</strong> — Issue 自动分类 + 分配责任人 (规则匹配 + LLM 兜底)<br>
Step 2: <strong>gitlink-community-report</strong> — 社区周报自动生成 + 发布<br>
Step 3: <strong>gitlink-release-notes</strong> — Release Notes 自动生成 + 发布<br>
每个子 Skill 独立做 dry-run 预览 + 用户确认,上下文参数 (OWNER/REPO/BACKEND) 自动继承。
</p>
<h3 style="font-size: 14px; font-weight: 500; margin-bottom: 8px;">关键依赖</h3>
<p style="color: var(--color-text-secondary, #555); margin-bottom: 16px;">
Step 1 必须先完成 → Issue 才有标签 → Step 2 周报标签分布准确 → Step 3 Release Notes 按 Bug/Feature 正确分类。
容错:某步骤失败不阻塞后续。
</p>
<h3 style="font-size: 14px; font-weight: 500; margin-bottom: 8px;">执行方式</h3>
<pre style="background: var(--color-background-secondary, #f5f5f5); padding: 12px; border-radius: 8px; font-size: 12px; overflow-x: auto;"><code># Skill 方式 (Agent 对话触发)
"帮我跑 Angel123456/gitlink-cli 的完整社区运营工作流"
# 脚本方式 (无 Agent 环境)
python3 community-ops.py --owner Angel123456 --repo gitlink-cli --skill-md SKILL.md # dry-run
python3 community-ops.py --owner Angel123456 --repo gitlink-cli --skill-md SKILL.md --apply # 真实写回</code></pre>
</div>
</div>