Merge pull request '新增skills' (#19) from surponess_br into master

This commit is contained in:
Surponess 2026-06-23 17:54:18 +08:00
commit 849d55be15
7 changed files with 878 additions and 0 deletions

View File

@ -0,0 +1,81 @@
---
name: gitlink-auth
version: 1.0.0
description: "认证管理:登录、查看登录状态、管理 Token、退出登录。当用户首次使用 gitlink-cli、遇到 401 认证错误、Token 过期、需要登录或退出时触发。"
metadata:
requires:
bins: ["gitlink-cli"]
cliHelp: "gitlink-cli auth --help"
---
# gitlink-auth认证操作
**CRITICAL — 开始前必须先阅读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md)其中包含认证原理、Token 存储位置、认证错误处理401/403和全局参数。**
**CRITICAL — 认证 Token 属于敏感信息,禁止明文输出到终端或日志。**
**CRITICAL — GitLink 操作只能用 `gitlink-cli`。禁止用 `gh`GitHub CLI操作 GitLink 资源。`gh` 仅适用于 GitHub 平台。**
> **前置条件:** 本 Skill 聚焦于 `gitlink-cli auth` 命令的具体操作;认证的全局规则、错误处理、安全约定见 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md)。
## Shortcuts
| Shortcut | 说明 | 需要认证 |
|----------|------|----------|
| `auth login` | 交互式登录(用户名 + 密码) | 否(登录本身) |
| `auth login --token` | 使用已有 Token 登录 | 否 |
| `auth status` | 查看当前登录状态与 Token 有效期 | 否 |
| `auth logout` | 退出登录并清除本地凭证 | 否 |
## 使用示例
```bash
# 方式 1交互式登录推荐按提示输入用户名和密码
gitlink-cli auth login
# 方式 2粘贴已有 Token 登录(适合已有 GitLink 个人访问令牌的场景)
gitlink-cli auth login --token
# 查看登录状态确认身份、Token 剩余有效期、存储位置)
gitlink-cli auth status
# 退出登录,清除本地凭证
gitlink-cli auth logout
```
## 工作流
### 工作流 1首次使用认证
1. 运行 `gitlink-cli auth login` 完成交互式登录
2. 运行 `gitlink-cli auth status` 确认登录成功
3. 验证可调用受保护接口:`gitlink-cli api GET /users/me --format json`
### 工作流 2Token 过期恢复
遇到 `401 请登录后再操作` 错误时:
1. `gitlink-cli auth status` 确认是否过期
2. 若过期,重新执行 `gitlink-cli auth login`
3. 非交互环境CI/脚本)改用环境变量:`export GITLINK_TOKEN="your-token"`
## 决策规则
| 条件 | 操作 |
|------|------|
| 用户首次使用 / 未登录 | 引导 `auth login` |
| 报错 `401` | Token 失效或过期,重新 `auth login` |
| 报错 `403` | 已登录但无权限,确认 owner/repo 正确性,非认证问题 |
| CI / 脚本等非交互环境 | 使用 `GITLINK_TOKEN` 环境变量,避免交互式登录 |
| 切换账号 | 先 `auth logout``auth login` |
## 注意事项
- GitLink Token 有效期 **7 天**,过期需重新登录或刷新 Token
- Token 存储在系统密钥管理器macOS Keychain / Linux Secret Service / Windows Credential ManagerFallback 为 `~/.config/gitlink-cli/credentials`
- **禁止** 将 Token 明文输出、打印或写入版本控制的文件
- 非交互环境优先使用 `GITLINK_TOKEN` 环境变量,而非交互式 `auth login`
- `auth logout` 会清除本地凭证,下次操作前需重新登录
## References
- [gitlink-shared](../gitlink-shared/SKILL.md) — 认证原理、Token 说明、401/403 错误处理、全局参数、安全规则
- [examples/auth-workflow.md](examples/auth-workflow.md) — 认证完整工作流示例

View File

@ -0,0 +1,159 @@
---
name: gitlink-digest
version: 1.0.0
description: "每日简报:聚合仓库 Issue/PR/CI/通知动态生成一份可读的项目简报。当用户提到「每日简报」「今天发生了什么」「项目动态」「日报」「digest」「简报」「汇总」时触发。"
metadata:
requires:
bins: ["gitlink-cli"]
cliHelp: "gitlink-cli --help"
---
# gitlink-digest每日简报
**CRITICAL — 开始前必须先阅读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md),其中包含认证、权限处理和 API 注意事项。**
**CRITICAL — GitLink 操作只能用 `gitlink-cli`。禁止用 `gh`GitHub CLI操作 GitLink 资源。`gh` 仅适用于 GitHub 平台。**
**CRITICAL — 本 Skill 只读聚合,不产生任何写操作,安全可随时运行。**
> **前置条件:** 先阅读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md) 了解认证和全局参数。
## 功能定位
解决「信息太分散」的体验痛点:用户不用挨个刷 Issue/PR/CI/通知AI 一次性采集多源数据,聚合分类,输出**一份按优先级排序的 Markdown 简报**。
| 阶段 | 操作 | AI Agent 角色 |
|------|------|--------------|
| ① 采集 | 并行拉取 Issue/PR/CI/通知/活跃度 | 执行 CLI 命令采集多源数据 |
| ② 分类 | 按主题归类(新增/动态/CI/需关注) | 去重、排序、标注优先级 |
| ③ 聚合 | 合并成一份简报 | 生成结构化 Markdown |
| ④ 输出 | 可选发布到 Wiki/Issue | 生成或发布简报 |
### 与 `gitlink-notification-digest` 的分工(避免重复)
项目已有 `gitlink-notification-digest`,专注**通知/消息中心**messages API、按 source 分类、标记已读)。本 Skill 定位不同——做**项目全景日报**
| 维度 | notification-digest团队已有 | digest本 Skill |
|------|-------------------------------|-------------------|
| 范围 | 通知/消息messages | 项目全景Issue + PR + CI + 活跃度 + 通知 |
| 重点 | 通知分类、标记已读、清理未读 | 跨源聚合、按优先级出日报 |
| 输出 | 通知摘要P0P3 | 项目简报(需关注/新增/进行中/指标) |
> 本 Skill **不做**通知标记已读(那是 notification-digest 的职责),只把通知作为简报的一个输入源。
## 数据源(均为只读)
| 数据 | 命令 | 说明 |
|------|------|------|
| 近期 Issue | `gitlink-cli issue +list --state open --format json` | 新增/开放 Issue |
| 近期 PR | `gitlink-cli pr +list --state open --format json` | PR 动态 |
| CI 构建 | `gitlink-cli ci +builds --owner <owner> --repo <repo> --format json` | 构建成功/失败 |
| 通知消息 | `gitlink-cli api GET "users/{owner}/messages.json"` | @我/系统通知 |
| 活跃度 | `gitlink-cli api GET "users/{owner}/statistics/activity.json"` | 贡献活跃度 |
> 注:通知/活跃度为 Raw API路径以 API 文档为准;首次使用建议带 `--debug` 确认 CLI 的路径前缀行为。
## 使用示例
```bash
# 1. 采集近期 Issue默认从 git remote 解析 owner/repo
gitlink-cli issue +list --state open --format json
# 2. 采集近期 PR
gitlink-cli pr +list --state open --format json
# 3. 采集 CI 构建状态
gitlink-cli ci +builds --owner <owner> --repo <repo> --format json
# 4. 采集通知消息Raw API
gitlink-cli api GET /api/users/<your-username>/messages.json
# 5. 采集活跃度统计Raw API
gitlink-cli api GET /api/users/<your-username>/statistics/activity.json
```
## 工作流
### 工作流 1生成每日简报核心
**场景**:用户问「今天我的项目发生了什么 / 给我一份简报」。
#### Step 1并行采集多源数据
```bash
gitlink-cli issue +list --state open --format json
gitlink-cli pr +list --state open --format json
gitlink-cli ci +builds --owner <owner> --repo <repo> --format json
gitlink-cli api GET /api/users/<me>/messages.json
gitlink-cli api GET /api/users/<me>/statistics/activity.json
```
#### Step 2AI 分类聚合
对采集到的数据按以下维度归类:
- **🔴 需立即关注**:失败的 CI、@我的紧急消息、阻塞型 PR
- **🟢 新增动态**:新开的 Issue、新提交的 PR
- **🔵 进行中**:有更新的 Issue/PR、待 review 的 PR
- **📊 健康指标**活跃度数字、Issue/PR 增减趋势
#### Step 3输出简报
按下方「输出模板」生成 Markdown。
### 工作流 2发布简报
**场景**:把简报发布为 Wiki 或 Issue 评论(写操作,需确认)。
```bash
# 发布为 Wiki 页面(⚠️ 写操作,需确认)
gitlink-cli wiki +create --name "Daily-<date>" --content "<简报内容>"
# 或发布为 Issue 评论
gitlink-cli issue +comment --number <n> --body "<简报内容>"
```
## 决策规则
| 条件 | 处理 |
|------|------|
| 数据量大Issue/PR > 50 | 只取最近 24h 或 top 20其余汇总计数 |
| CI 有失败 | 置顶到「需立即关注」,附 build 号 |
| 有 @我 的消息 | 置顶,标注来源 Issue/PR |
| 采集某数据源失败403/404 | 跳过该源,简报中标注「⚠️ XX 数据未获取」 |
| 简报需对外发布 | 写操作,必须先确认用户意图 |
## 输出模板
```markdown
# 📰 项目简报 — <owner>/<repo><YYYY-MM-DD>
## 🔴 需立即关注
1. ❌ CI 构建 #<n> 失败(分支 master<错误摘要>
2. 🔔 @你 在 Issue #<n><消息摘要>
## 🟢 今日新增
- **新 Issue**<n> 个,其中 bug <x> / enhancement <y>
- **新 PR**<n>
## 🔵 进行中
- 待 Review 的 PR#<n>、#<n>
- 有更新的 Issue#<n>、#<n>
## 📊 健康指标
- 开放 Issue<n>(较昨日 +<x>
- 开放 PR<n>
- 近期活跃度:<activity 分数>
---
*由 gitlink-digest Skill 于 <时间> 生成*
```
## 注意事项
- 本 Skill **纯只读聚合**,不修改任何资源,可放心运行
- 多源数据采集建议用 `--format json` 便于 AI 解析
- 通知/活跃度是 Raw API路径前缀以实际 CLI 行为准(首次 `--debug` 验证)
- 时间范围默认「近期」,可由用户指定(如「本周」「最近 3 天」)
- 简报对外发布Wiki/Issue 评论)属写操作,必须先确认
## References
- 全局参数与安全规则:[gitlink-shared/SKILL.md](../gitlink-shared/SKILL.md)

View File

@ -0,0 +1,84 @@
# 每日简报完整工作流示例
**场景**项目负责人早上想快速了解「昨天项目发生了什么」AI 采集多源数据生成一份简报。
## 前置条件
- `gitlink-cli` 已登录
- 在目标仓库目录下(自动解析 owner/repo或手动传 `--owner/--repo`
## 工作流步骤
### Step 1并行采集多源数据
```bash
# 近期 Issue
gitlink-cli issue +list --state open --format json
# 近期 PR
gitlink-cli pr +list --state open --format json
# CI 构建状态
gitlink-cli ci +builds --owner myorg --repo myproject --format json
# 通知消息Raw API
gitlink-cli api GET "users/zhangsan/messages.json"
# 活跃度统计Raw API
gitlink-cli api GET "users/zhangsan/statistics/activity.json"
```
### Step 2AI 分类聚合
输出示例:
```markdown
# 📰 项目简报 — myorg/myproject2026-06-23
## 🔴 需立即关注
1. ❌ CI 构建 #156 失败(分支 master— test_phase 报错:连接超时
2. 🔔 @你 在 PR #88:「请帮忙看下认证模块的重试逻辑」
## 🟢 今日新增
- **新 Issue**4 个bug 2 / enhancement 1 / question 1
- #201 登录页面 500 错误
- #202 支持导出 CSV
- **新 PR**2 个
- #90 feat: 增加批量导入
## 🔵 进行中
- 待 Review 的 PR#88、#87
- 有更新的 Issue#198、#195
## 📊 健康指标
- 开放 Issue23较昨日 +3
- 开放 PR5
- 近期活跃度94
---
*由 gitlink-digest Skill 于 2026-06-23 09:15 生成*
```
### Step 3可选发布简报
```bash
# 发布为 Wiki 页面(⚠️ 写操作,需确认)
gitlink-cli wiki +create --name "Daily-2026-06-23" --content "<简报内容>"
```
---
## 完整命令速览
```bash
gitlink-cli issue +list --state open --format json
gitlink-cli pr +list --state open --format json
gitlink-cli ci +builds --owner <owner> --repo <repo> --format json
gitlink-cli api GET "users/<me>/messages.json"
gitlink-cli api GET "users/<me>/statistics/activity.json"
```
## 注意事项
- 纯只读聚合,安全可随时运行
- 通知/活跃度为 Raw API首次使用带 `--debug` 确认路径

View File

@ -0,0 +1,190 @@
---
name: gitlink-snippet
version: 1.0.0
description: "本地代码片段管理:创建、查看、搜索、更新、删除、导出个人代码片段库。当用户需要保存/查找常用代码片段、代码片段管理、代码片段检索时触发。"
metadata:
requires:
bins: ["gitlink-cli"]
cliHelp: "gitlink-cli snippet --help"
---
# gitlink-snippet本地代码片段管理
**CRITICAL — 所有删除操作(`snippet +delete`)前必须确认用户意图,删除不可恢复。**
**CRITICAL — 本技能为本地功能,不调用 GitLink 平台 API、不需要登录认证。**
**CRITICAL — `--content -` 表示从 stdin 读取内容,适合粘贴大段代码。**
> **与其它 Skill 的区别**:本 Skill 操作的是本地代码片段库(存储在 `~/.config/gitlink-cli/snippets.json`),不涉及 GitLink 平台的 Issue/PR/Repo 等资源。若需操作平台资源,请使用对应域的 Skill`gitlink-issue`、`gitlink-pr`)。
## 功能定位
gitlink-snippet 是开发者的「个人代码片段收藏夹」,帮助 AI Agent 和用户:
- **沉淀常用代码**把反复查阅的片段SQL 模板、正则、初始化脚本)存起来
- **快速检索**:按标签、语言、关键词或全文检索定位片段
- **复用与导出**:把片段导出为文件,或直接粘贴到当前任务中
## Shortcuts
| Shortcut | 说明 | 操作类型 |
|----------|------|----------|
| `snippet +create` | 创建代码片段 | ⚠️ Write |
| `snippet +list` | 列出所有片段(支持过滤) | Read |
| `snippet +view` | 查看片段详情 | Read |
| `snippet +search` | 全文搜索片段 | Read |
| `snippet +update` | 更新片段字段 | ⚠️ Write |
| `snippet +delete` | 删除片段 | 🔴 Destructive |
| `snippet +export` | 导出片段到文件 | Read |
## 参数参考
### snippet +create
| 参数 | 简写 | 必填 | 说明 |
|------|------|:----:|------|
| `--title` | `-t` | ✅ | 片段标题 |
| `--language` | `-l` | 否 | 编程语言(如 `go`、`python` |
| `--tags` | `-g` | 否 | 标签(逗号分隔,如 `sql,template` |
| `--content` | `-c` | 否 | 片段内容;传 `-` 表示从 stdin 读取 |
### snippet +list
| 参数 | 简写 | 必填 | 说明 |
|------|------|:----:|------|
| `--tag` | `-t` | 否 | 按标签过滤 |
| `--language` | `-l` | 否 | 按语言过滤 |
| `--keyword` | `-k` | 否 | 按标题关键词过滤 |
### snippet +view / +update / +delete / +export
| 参数 | 简写 | 必填 | 说明 |
|------|------|:----:|------|
| `--id` | `-i` | ✅ | 片段 ID8 位十六进制,从 `+list` 获取) |
`+update` 额外支持 `--title / -t`、`--language / -l`、`--tags / -g`、`--content / -c`(至少传一个字段)。
`+export` 额外支持 `--output / -o`(输出文件路径,默认打印到 stdout
### snippet +search
| 参数 | 简写 | 必填 | 说明 |
|------|------|:----:|------|
| `--query` | `-q` | ✅ | 搜索关键词(全文匹配) |
## 使用示例
```bash
# 创建片段(直接传内容)
gitlink-cli snippet +create \
--title "Postgres 慢查询检查" \
--language sql \
--tags db,performance \
--content "SELECT * FROM pg_stat_statements ORDER BY total_time DESC LIMIT 10;"
# 创建片段(从 stdin 读取大段代码)
cat ./init_script.py | gitlink-cli snippet +create \
--title "项目初始化脚本" \
--language python \
--tags init \
--content -
# 列出所有片段
gitlink-cli snippet +list --format json
# 按标签 + 语言过滤
gitlink-cli snippet +list --tag sql --language sql
# 按标题关键词过滤
gitlink-cli snippet +list --keyword "Postgres"
# 查看片段详情
gitlink-cli snippet +view --id a1b2c3d4 --format json
# 全文搜索
gitlink-cli snippet +search --query "慢查询"
# 更新片段标题和标签
gitlink-cli snippet +update --id a1b2c3d4 --title "PG 慢查询 Top 10" --tags db,perf
# 导出片段到文件
gitlink-cli snippet +export --id a1b2c3d4 --output ./slow_query.sql
# 删除片段(⚠️ 不可恢复)
gitlink-cli snippet +delete --id a1b2c3d4
```
## 输出示例(`+list --format json`
```json
{
"ok": true,
"data": [
{
"id": "a1b2c3d4",
"title": "Postgres 慢查询检查",
"language": "sql",
"tags": ["db", "performance"],
"content": "SELECT * FROM pg_stat_statements ORDER BY total_time DESC LIMIT 10;",
"created_at": "2026-06-15T10:30:00+08:00",
"updated_at": "2026-06-15T10:30:00+08:00"
}
]
}
```
## 工作流
### 工作流 1沉淀反复使用的代码
**场景**:在排查/开发中遇到一段值得复用的代码,保存下来供日后使用。
```bash
# 1. 把代码通过 stdin 存入(适合多行)
cat ./docker-compose-template.yml | gitlink-cli snippet +create \
--title "通用 docker-compose 模板" \
--language yaml \
--tags docker,template \
--content -
# 2. 验证已保存
gitlink-cli snippet +list --keyword "docker"
```
### 工作流 2按需检索并复用
**场景**:写新代码时想调用之前存的片段。
```bash
# 1. 按关键词搜索
gitlink-cli snippet +search --query "慢查询"
# 2. 查看命中的片段内容
gitlink-cli snippet +view --id a1b2c3d4
# 3. 导出为文件后直接使用,或由 AI Agent 直接读取 content 字段复用
gitlink-cli snippet +export --id a1b2c3d4 --output ./tmp_query.sql
```
## 决策规则
| 场景 | 推荐命令 |
|------|---------|
| 已知片段 ID想看内容 | `snippet +view --id <id>` |
| 只记得片段大概是关于什么 | `snippet +search --query "<关键词>"` |
| 想按标签浏览一类片段 | `snippet +list --tag <tag>` |
| 要批量查看某种语言的片段 | `snippet +list --language <lang>` |
| 大段代码要保存 | `snippet +create --content -`stdin |
| 要把片段给到脚本/工具用 | `snippet +export --id <id> --output <file>` |
## 注意事项
- **纯本地存储**:片段存于 `~/.config/gitlink-cli/snippets.json`,可通过 `GITLINK_CONFIG_DIR` 环境变量改变存储目录
- **不需要登录**:本 Skill 不调用 GitLink API不依赖 `auth login`
- **ID 格式**8 位十六进制随机串(如 `a1b2c3d4`),通过 `+list` / `+search` 获取
- **`+delete` 不可恢复**:删除前用 `+view` 确认内容,避免误删
- **stdin 模式**`--content -` 表示从标准输入读取,适合保存剪贴板或多行代码
- **标签是字符串数组**`--tags` 用逗号分隔(`sql,template`),不支持空格
- **全文搜索**`+search` 匹配 title 和 content若只想按标题找`+list --keyword`
## References
- 全局参数与输出格式:[gitlink-shared/SKILL.md](../gitlink-shared/SKILL.md)

View File

@ -0,0 +1,131 @@
# 本地代码片段管理完整工作流示例
**场景**开发者想在本地沉淀常用代码片段SQL、模板、脚本并按需检索复用。
## 前置条件
- `gitlink-cli` 已安装
- **无需登录认证**(本功能为本地存储,不调用 GitLink 平台 API
## 工作流步骤
### Step 1创建代码片段
```bash
# 方式 1直接传内容
gitlink-cli snippet +create \
--title "Postgres 慢查询检查" \
--language sql \
--tags db,performance \
--content "SELECT * FROM pg_stat_statements ORDER BY total_time DESC LIMIT 10;"
```
**输出示例:**
```json
{
"ok": true,
"data": {
"id": "a1b2c3d4",
"title": "Postgres 慢查询检查",
"language": "sql",
"tags": ["db", "performance"]
}
}
```
```bash
# 方式 2从 stdin 读取大段代码(推荐用于多行)
cat ./init_script.py | gitlink-cli snippet +create \
--title "项目初始化脚本" \
--language python \
--tags init,setup \
--content -
```
### Step 2浏览与过滤片段
```bash
# 列出所有片段
gitlink-cli snippet +list --format json
# 按标签过滤
gitlink-cli snippet +list --tag db
# 按语言过滤
gitlink-cli snippet +list --language python
# 按标题关键词过滤
gitlink-cli snippet +list --keyword "Postgres"
```
### Step 3检索与查看
```bash
# 全文搜索(匹配 title 和 content
gitlink-cli snippet +search --query "慢查询"
# 查看片段详情
gitlink-cli snippet +view --id a1b2c3d4 --format json
```
### Step 4更新片段
```bash
# 更新标题和标签
gitlink-cli snippet +update --id a1b2c3d4 --title "PG 慢查询 Top 10" --tags db,perf
# 更新内容stdin
echo "SELECT * FROM pg_stat_statements ORDER BY mean_exec_time DESC LIMIT 20;" | \
gitlink-cli snippet +update --id a1b2c3d4 --content -
```
### Step 5导出与复用
```bash
# 导出到文件
gitlink-cli snippet +export --id a1b2c3d4 --output ./slow_query.sql
# 导出后直接执行
psql -d mydb -f ./slow_query.sql
```
### Step 6清理不需要的片段 需确认)
```bash
# 先确认要删除的内容
gitlink-cli snippet +view --id a1b2c3d4
# 确认无误后删除(不可恢复)
gitlink-cli snippet +delete --id a1b2c3d4
```
---
## 完整命令速览
```bash
# 增
gitlink-cli snippet +create --title "..." --language <lang> --tags <t1,t2> --content "<code>"
gitlink-cli snippet +create --title "..." --content - # stdin
# 查
gitlink-cli snippet +list [--tag <t>] [--language <lang>] [--keyword <kw>] --format json
gitlink-cli snippet +view --id <id> --format json
gitlink-cli snippet +search --query "<keyword>"
# 改
gitlink-cli snippet +update --id <id> [--title "..." --tags "..." --content "..."]
# 删 / 导出
gitlink-cli snippet +delete --id <id>
gitlink-cli snippet +export --id <id> --output <file>
```
---
## 注意事项
- 片段存储于 `~/.config/gitlink-cli/snippets.json`(可用 `GITLINK_CONFIG_DIR` 改路径)
- 不需要 `auth login`,纯本地功能
- `+delete` 不可恢复,删除前用 `+view` 确认
- `--content -` 表示从 stdin 读取,适合保存剪贴板或多行代码

View File

@ -0,0 +1,151 @@
---
name: gitlink-todo
version: 1.0.0
description: "我的待办:跨 Issue/PR 汇总「分配给我的 / @我的 / 我的 PR 被 review 的」,生成个人待办清单。当用户提到「我的待办」「我有什么要做的」「@我」「待办清单」「todo」「我的任务」时触发。"
metadata:
requires:
bins: ["gitlink-cli"]
cliHelp: "gitlink-cli --help"
---
# gitlink-todo我的待办
**CRITICAL — 开始前必须先阅读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md),其中包含认证、权限处理和 API 注意事项。**
**CRITICAL — GitLink 操作只能用 `gitlink-cli`。禁止用 `gh`GitHub CLI操作 GitLink 资源。`gh` 仅适用于 GitHub 平台。**
**CRITICAL — 本 Skill 默认只读汇总;自动回复/关闭等写操作必须先确认用户意图。**
> **前置条件:** 先阅读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md) 了解认证和全局参数。
## 功能定位
解决「没有『我的』视角」的体验痛点GitLink 的 Issue/PR 分散在各处,用户难以一眼看到「**哪些事在等我**」。本 Skill 聚合个人维度的待办,按紧急度排序输出清单。
| 阶段 | 操作 | AI Agent 角色 |
|------|------|--------------|
| ① 识别身份 | 获取当前登录用户 | `api GET /users/me` |
| ② 多维查询 | 分配我的 / @我的 / 我的PR | 并行采集三类待办 |
| ③ 排序 | 按紧急度(@我 > PR待review > 指派issue | 标注优先级与停留时长 |
| ④ 输出 | 个人待办清单 | 生成 Markdown |
## 数据源(均为只读)
| 待办类型 | 命令 | 说明 |
|---------|------|------|
| 分配给我的 Issue | `gitlink-cli search +issues --assignee <me> --category opened` | 我的负责项 |
| @我的消息 | `gitlink-cli api GET "users/<me>/messages.json"` | 被提及/被通知 |
| 我的 PR 状态 | `gitlink-cli pr +list --format json` | 我提的 PR 是否被 review/合并 |
| 待我 Review 的 PR | `gitlink-cli pr +list --state open --format json` | 分配我 review 的 |
> `search +issues --assignee`(简写 `-a`)已确认可用(`shortcuts/search/search.go`)。
## 使用示例
```bash
# 1. 获取当前用户身份
gitlink-cli api GET "users/me" --format json
# 2. 找分配给我的开放 Issue
gitlink-cli search +issues --assignee <me> --category opened
# 3. 找 @我 的消息
gitlink-cli api GET "users/<me>/messages.json"
# 4. 查看我的 PR 状态(按作者过滤)
gitlink-cli pr +list --format json
```
## 工作流
### 工作流 1生成我的待办核心
**场景**:用户问「我今天有什么要做的 / 给我看看我的待办」。
#### Step 1识别身份
```bash
gitlink-cli api GET "users/me" --format json
# 从返回取 login / user_name 作为 <me>
```
#### Step 2多维并行查询
```bash
# 分配给我的 Issue
gitlink-cli search +issues --assignee <me> --category opened
# @我的消息
gitlink-cli api GET "users/<me>/messages.json"
# 我的 PR 状态
gitlink-cli pr +list --format json
```
#### Step 3AI 排序聚合
按紧急度分级:
- **🔴 紧急**@我且停留 >24h 的消息、被阻塞的 PR
- **🟡 本周内**:分配我的 Issue、待我 review 的 PR
- **🔵 可延后**:低优先级 Issue、我的 PR 已 review 待合并
#### Step 4输出待办清单
按下方「输出模板」生成。
### 工作流 2批量处理待办写操作
**场景**:用户看完待办后,想批量更新状态。
```bash
# 批量关闭已解决的 Issue 先 dry-run
gitlink-cli issue +batch-close --numbers 12,15 --dry-run
# 给待办 Issue 加优先级标签
gitlink-cli issue +batch-update --ids 20,21 --tag-ids 3 --dry-run
# 回复 @我的 消息
gitlink-cli issue +comment --number <n> --body "<回复内容>"
```
## 决策规则
| 条件 | 处理 |
|------|------|
| 用户身份未知 | 先 `api GET /users/me`,失败则提示登录 |
| @我 的消息停留 >24h | 标为 🔴 紧急置顶 |
| 我的 PR 长期未 review | 提醒「PR #<n><x> 天未 review@维护者」 |
| 待办过多(>20 | 按优先级截断 top 20其余计数 |
| 批量写操作 | 必须 `--dry-run` 预览后确认 |
## 输出模板
```markdown
# ✅ 我的待办 — <me><YYYY-MM-DD>
## 🔴 紧急(<n>
1. 🔔 Issue #<n> @你<消息>(停留 2 天)
2. 🔀 PR #<n> 你被指派 review已等待 3 天
## 🟡 本周内(<n>
- 分配给你的 Issue
- #<n> <标题>(优先级 high
- #<n> <标题>
- 待 Review 的 PR#<n>、#<n>
## 🔵 你的 PR<n>
- #<n> <标题> — ✅ 已 review待合并
- #<n> <标题> — ⏳ 等待 review2 天)
---
*由 gitlink-todo Skill 生成,共 <n> 项待办*
```
## 注意事项
- 本 Skill 核心是**只读汇总**,不修改资源
- `search +issues --assignee` 需传用户标识login 或 id先用 `/users/me` 获取
- 批量处理(关闭/打标签/回复)属写操作,必须先确认或 `--dry-run`
- 待办优先级由 AI 根据停留时长、@提及、阻塞情况综合判定
## References
- 全局参数与安全规则:[gitlink-shared/SKILL.md](../gitlink-shared/SKILL.md)

View File

@ -0,0 +1,82 @@
# 我的待办完整工作流示例
**场景**:开发者上班第一件事,想知道「今天有哪些事在等我」。
## 前置条件
- `gitlink-cli` 已登录
## 工作流步骤
### Step 1识别身份
```bash
gitlink-cli api GET "users/me" --format json
# 取 login = zhangsan
```
### Step 2多维查询
```bash
# 分配给我的开放 Issue
gitlink-cli search +issues --assignee zhangsan --category opened
# @我的消息
gitlink-cli api GET "users/zhangsan/messages.json"
# 我的 PR 状态
gitlink-cli pr +list --format json
```
### Step 3AI 生成待办清单
输出示例:
```markdown
# ✅ 我的待办 — zhangsan2026-06-23
## 🔴 紧急2
1. 🔔 Issue #188 @你:「认证模块的重试逻辑需要你确认」(停留 2 天)
2. 🔀 PR #90 你被指派 review已等待 3 天
## 🟡 本周内4
- 分配给你的 Issue
- #180 修复搜索分页(优先级 high
- #175 补充 API 文档
- 待 Review 的 PR#90、#87
## 🔵 你的 PR2
- #92 feat: 批量导入 — ✅ 已 review待合并
- #88 fix: 登录超时 — ⏳ 等待 review2 天)
---
*由 gitlink-todo Skill 生成,共 8 项待办*
```
### Step 4可选批量处理
```bash
# 回复 @我 的消息
gitlink-cli issue +comment --number 188 --body "已确认,今天处理"
# 批量给待办加优先级标签(⚠️ 先 dry-run
gitlink-cli issue +batch-update --ids 180,175 --tag-ids 3 --dry-run
```
---
## 完整命令速览
```bash
gitlink-cli api GET "users/me" --format json
gitlink-cli search +issues --assignee <me> --category opened
gitlink-cli api GET "users/<me>/messages.json"
gitlink-cli pr +list --format json
gitlink-cli issue +comment --number <n> --body "..."
gitlink-cli issue +batch-update --ids <ids> --tag-ids <ids> --dry-run
```
## 注意事项
- 核心只读汇总;批量写操作必须先确认或 `--dry-run`
- `--assignee` 需传 login/id先用 `/users/me` 获取