diff --git a/skills/gitlink-auth/SKILL.md b/skills/gitlink-auth/SKILL.md new file mode 100644 index 0000000..667c7d2 --- /dev/null +++ b/skills/gitlink-auth/SKILL.md @@ -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` + +### 工作流 2:Token 过期恢复 + +遇到 `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 Manager),Fallback 为 `~/.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) — 认证完整工作流示例 diff --git a/skills/gitlink-digest/SKILL.md b/skills/gitlink-digest/SKILL.md new file mode 100644 index 0000000..497dcda --- /dev/null +++ b/skills/gitlink-digest/SKILL.md @@ -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 + 活跃度 + 通知 | +| 重点 | 通知分类、标记已读、清理未读 | 跨源聚合、按优先级出日报 | +| 输出 | 通知摘要(P0–P3) | 项目简报(需关注/新增/进行中/指标) | + +> 本 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 --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 --repo --format json + +# 4. 采集通知消息(Raw API) +gitlink-cli api GET /api/users//messages.json + +# 5. 采集活跃度统计(Raw API) +gitlink-cli api GET /api/users//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 --repo --format json +gitlink-cli api GET /api/users//messages.json +gitlink-cli api GET /api/users//statistics/activity.json +``` + +#### Step 2:AI 分类聚合 + +对采集到的数据按以下维度归类: +- **🔴 需立即关注**:失败的 CI、@我的紧急消息、阻塞型 PR +- **🟢 新增动态**:新开的 Issue、新提交的 PR +- **🔵 进行中**:有更新的 Issue/PR、待 review 的 PR +- **📊 健康指标**:活跃度数字、Issue/PR 增减趋势 + +#### Step 3:输出简报 + +按下方「输出模板」生成 Markdown。 + +### 工作流 2:发布简报 + +**场景**:把简报发布为 Wiki 或 Issue 评论(写操作,需确认)。 + +```bash +# 发布为 Wiki 页面(⚠️ 写操作,需确认) +gitlink-cli wiki +create --name "Daily-" --content "<简报内容>" + +# 或发布为 Issue 评论 +gitlink-cli issue +comment --number --body "<简报内容>" +``` + +## 决策规则 + +| 条件 | 处理 | +|------|------| +| 数据量大(Issue/PR > 50) | 只取最近 24h 或 top 20,其余汇总计数 | +| CI 有失败 | 置顶到「需立即关注」,附 build 号 | +| 有 @我 的消息 | 置顶,标注来源 Issue/PR | +| 采集某数据源失败(403/404) | 跳过该源,简报中标注「⚠️ XX 数据未获取」 | +| 简报需对外发布 | 写操作,必须先确认用户意图 | + +## 输出模板 + +```markdown +# 📰 项目简报 — /) + +## 🔴 需立即关注 +1. ❌ CI 构建 # 失败(分支 master)— <错误摘要> +2. 🔔 @你 在 Issue #:<消息摘要> + +## 🟢 今日新增 +- **新 Issue**: 个,其中 bug / enhancement +- **新 PR**: 个 + +## 🔵 进行中 +- 待 Review 的 PR:#、# +- 有更新的 Issue:#、# + +## 📊 健康指标 +- 开放 Issue:(较昨日 +) +- 开放 PR: +- 近期活跃度: + +--- +*由 gitlink-digest Skill 于 <时间> 生成* +``` + +## 注意事项 + +- 本 Skill **纯只读聚合**,不修改任何资源,可放心运行 +- 多源数据采集建议用 `--format json` 便于 AI 解析 +- 通知/活跃度是 Raw API,路径前缀以实际 CLI 行为准(首次 `--debug` 验证) +- 时间范围默认「近期」,可由用户指定(如「本周」「最近 3 天」) +- 简报对外发布(Wiki/Issue 评论)属写操作,必须先确认 + +## References + +- 全局参数与安全规则:[gitlink-shared/SKILL.md](../gitlink-shared/SKILL.md) diff --git a/skills/gitlink-digest/examples/digest-workflow.md b/skills/gitlink-digest/examples/digest-workflow.md new file mode 100644 index 0000000..86591e5 --- /dev/null +++ b/skills/gitlink-digest/examples/digest-workflow.md @@ -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 2:AI 分类聚合 + +输出示例: + +```markdown +# 📰 项目简报 — myorg/myproject(2026-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 + +## 📊 健康指标 +- 开放 Issue:23(较昨日 +3) +- 开放 PR:5 +- 近期活跃度: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 --repo --format json +gitlink-cli api GET "users//messages.json" +gitlink-cli api GET "users//statistics/activity.json" +``` + +## 注意事项 + +- 纯只读聚合,安全可随时运行 +- 通知/活跃度为 Raw API,首次使用带 `--debug` 确认路径 diff --git a/skills/gitlink-snippet/SKILL.md b/skills/gitlink-snippet/SKILL.md new file mode 100644 index 0000000..1240dae --- /dev/null +++ b/skills/gitlink-snippet/SKILL.md @@ -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` | ✅ | 片段 ID(8 位十六进制,从 `+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 ` | +| 只记得片段大概是关于什么 | `snippet +search --query "<关键词>"` | +| 想按标签浏览一类片段 | `snippet +list --tag ` | +| 要批量查看某种语言的片段 | `snippet +list --language ` | +| 大段代码要保存 | `snippet +create --content -`(stdin) | +| 要把片段给到脚本/工具用 | `snippet +export --id --output ` | + +## 注意事项 + +- **纯本地存储**:片段存于 `~/.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) diff --git a/skills/gitlink-snippet/examples/snippet-workflow.md b/skills/gitlink-snippet/examples/snippet-workflow.md new file mode 100644 index 0000000..8ab7de4 --- /dev/null +++ b/skills/gitlink-snippet/examples/snippet-workflow.md @@ -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 --tags --content "" +gitlink-cli snippet +create --title "..." --content - # stdin + +# 查 +gitlink-cli snippet +list [--tag ] [--language ] [--keyword ] --format json +gitlink-cli snippet +view --id --format json +gitlink-cli snippet +search --query "" + +# 改 +gitlink-cli snippet +update --id [--title "..." --tags "..." --content "..."] + +# 删 / 导出 +gitlink-cli snippet +delete --id +gitlink-cli snippet +export --id --output +``` + +--- + +## 注意事项 + +- 片段存储于 `~/.config/gitlink-cli/snippets.json`(可用 `GITLINK_CONFIG_DIR` 改路径) +- 不需要 `auth login`,纯本地功能 +- `+delete` 不可恢复,删除前用 `+view` 确认 +- `--content -` 表示从 stdin 读取,适合保存剪贴板或多行代码 diff --git a/skills/gitlink-todo/SKILL.md b/skills/gitlink-todo/SKILL.md new file mode 100644 index 0000000..5842df3 --- /dev/null +++ b/skills/gitlink-todo/SKILL.md @@ -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 --category opened` | 我的负责项 | +| @我的消息 | `gitlink-cli api GET "users//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 --category opened + +# 3. 找 @我 的消息 +gitlink-cli api GET "users//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 作为 +``` + +#### Step 2:多维并行查询 + +```bash +# 分配给我的 Issue +gitlink-cli search +issues --assignee --category opened + +# @我的消息 +gitlink-cli api GET "users//messages.json" + +# 我的 PR 状态 +gitlink-cli pr +list --format json +``` + +#### Step 3:AI 排序聚合 + +按紧急度分级: +- **🔴 紧急**:@我且停留 >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 --body "<回复内容>" +``` + +## 决策规则 + +| 条件 | 处理 | +|------|------| +| 用户身份未知 | 先 `api GET /users/me`,失败则提示登录 | +| @我 的消息停留 >24h | 标为 🔴 紧急置顶 | +| 我的 PR 长期未 review | 提醒「PR # 天未 review,可 @维护者」 | +| 待办过多(>20) | 按优先级截断 top 20,其余计数 | +| 批量写操作 | 必须 `--dry-run` 预览后确认 | + +## 输出模板 + +```markdown +# ✅ 我的待办 — ) + +## 🔴 紧急() +1. 🔔 Issue # @你:<消息>(停留 2 天) +2. 🔀 PR # 你被指派 review,已等待 3 天 + +## 🟡 本周内() +- 分配给你的 Issue: + - # <标题>(优先级 high) + - # <标题> +- 待 Review 的 PR:#、# + +## 🔵 你的 PR() +- # <标题> — ✅ 已 review,待合并 +- # <标题> — ⏳ 等待 review(2 天) + +--- +*由 gitlink-todo Skill 生成,共 项待办* +``` + +## 注意事项 + +- 本 Skill 核心是**只读汇总**,不修改资源 +- `search +issues --assignee` 需传用户标识(login 或 id),先用 `/users/me` 获取 +- 批量处理(关闭/打标签/回复)属写操作,必须先确认或 `--dry-run` +- 待办优先级由 AI 根据停留时长、@提及、阻塞情况综合判定 + +## References + +- 全局参数与安全规则:[gitlink-shared/SKILL.md](../gitlink-shared/SKILL.md) diff --git a/skills/gitlink-todo/examples/todo-workflow.md b/skills/gitlink-todo/examples/todo-workflow.md new file mode 100644 index 0000000..917cfb2 --- /dev/null +++ b/skills/gitlink-todo/examples/todo-workflow.md @@ -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 3:AI 生成待办清单 + +输出示例: + +```markdown +# ✅ 我的待办 — zhangsan(2026-06-23) + +## 🔴 紧急(2) +1. 🔔 Issue #188 @你:「认证模块的重试逻辑需要你确认」(停留 2 天) +2. 🔀 PR #90 你被指派 review,已等待 3 天 + +## 🟡 本周内(4) +- 分配给你的 Issue: + - #180 修复搜索分页(优先级 high) + - #175 补充 API 文档 +- 待 Review 的 PR:#90、#87 + +## 🔵 你的 PR(2) +- #92 feat: 批量导入 — ✅ 已 review,待合并 +- #88 fix: 登录超时 — ⏳ 等待 review(2 天) + +--- +*由 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 --category opened +gitlink-cli api GET "users//messages.json" +gitlink-cli pr +list --format json +gitlink-cli issue +comment --number --body "..." +gitlink-cli issue +batch-update --ids --tag-ids --dry-run +``` + +## 注意事项 + +- 核心只读汇总;批量写操作必须先确认或 `--dry-run` +- `--assignee` 需传 login/id,先用 `/users/me` 获取