cnb-issue
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseCNB Issue 操作 Skill
CNB Issue 操作Skill
操作 CNB 平台 (https://cnb.cool) 上的 Issue。本 skill 提供了封装好的 工具脚本。
cnb-client.js操作CNB平台(https://cnb.cool)上的Issue。本Skill提供了封装好的 工具脚本。
cnb-client.js前提条件
前提条件
-
安装依赖在 skill 的目录下执行:
scriptsbashcd <skill-base-directory>/scripts npm install其中是本 skill 的安装目录(触发 skill 时会显示 Base directory 信息)。<skill-base-directory> -
获取 API Token
- 登录 https://cnb.cool
- 进入个人设置 -> 访问令牌
- 创建包含 或
repo-issue:r权限的令牌repo-issue:rw
-
设置环境变量bash
export CNB_TOKEN="your-token-here"
-
安装依赖在Skill的目录下执行:
scriptsbashcd <skill-base-directory>/scripts npm install其中是本Skill的安装目录(触发Skill时会显示Base directory信息)。<skill-base-directory> -
获取API Token
- 登录 https://cnb.cool
- 进入个人设置 -> 访问令牌
- 创建包含 或
repo-issue:r权限的令牌repo-issue:rw
-
设置环境变量bash
export CNB_TOKEN="your-token-here"
重要提示
重要提示
- 执行前必须检查 CNB_TOKEN 环境变量是否存在,如果没有设置,立即停止并告知用户需要设置
- 如果执行命令遇到任何错误,立即停止,不要继续尝试其他操作,向用户报告错误信息
- 执行前必须检查CNB_TOKEN环境变量是否存在,如果没有设置,立即停止并告知用户需要设置
- 如果执行命令遇到任何错误,立即停止,不要继续尝试其他操作,向用户报告错误信息
使用 cnb-client.js 工具
使用cnb-client.js工具
本 skill 包含 命令行工具。脚本位于 。
scripts/cnb-client.js<skill-base-directory>/scripts/cnb-client.js本Skill包含 命令行工具。脚本位于 。
scripts/cnb-client.js<skill-base-directory>/scripts/cnb-client.js查询 Issue
查询Issue
bash
undefinedbash
undefined列出仓库的所有 Issue
列出仓库的所有Issue
node <skill-base-directory>/scripts/cnb-client.js list owner/repo
node <skill-base-directory>/scripts/cnb-client.js list owner/repo
带过滤条件查询
带过滤条件查询
node <skill-base-directory>/scripts/cnb-client.js list owner/repo '{"state":"open","labels":"bug"}'
node <skill-base-directory>/scripts/cnb-client.js list owner/repo '{"state":"open","labels":"bug"}'
获取单个 Issue 详情
获取单个Issue详情
node <skill-base-directory>/scripts/cnb-client.js get owner/repo 123
undefinednode <skill-base-directory>/scripts/cnb-client.js get owner/repo 123
undefined创建 Issue
创建Issue
bash
undefinedbash
undefined创建简单 Issue
创建简单Issue
node <skill-base-directory>/scripts/cnb-client.js create owner/repo '{"title":"Bug: 登录页面无法加载","body":"详细描述问题..."}'
node <skill-base-directory>/scripts/cnb-client.js create owner/repo '{"title":"Bug: 登录页面无法加载","body":"详细描述问题..."}'
创建带标签和处理人的 Issue
创建带标签和处理人的Issue
node <skill-base-directory>/scripts/cnb-client.js create owner/repo '{
"title": "[Bug] 支付页面超时",
"body": "## 问题描述\n支付页面在高峰期出现超时情况",
"labels": ["bug", "priority-high"],
"assignees": ["username"]
}'
undefinednode <skill-base-directory>/scripts/cnb-client.js create owner/repo '{
"title": "[Bug] 支付页面超时",
"body": "## 问题描述\n支付页面在高峰期出现超时情况",
"labels": ["bug", "priority-high"],
"assignees": ["username"]
}'
undefined更新 Issue
更新Issue
bash
undefinedbash
undefined更新标题和内容
更新标题和内容
node <skill-base-directory>/scripts/cnb-client.js update owner/repo 123 '{"title":"新标题","body":"新内容"}'
node <skill-base-directory>/scripts/cnb-client.js update owner/repo 123 '{"title":"新标题","body":"新内容"}'
关闭 Issue
关闭Issue
node <skill-base-directory>/scripts/cnb-client.js update owner/repo 123 '{"state":"closed"}'
node <skill-base-directory>/scripts/cnb-client.js update owner/repo 123 '{"state":"closed"}'
重新打开 Issue
重新打开Issue
node <skill-base-directory>/scripts/cnb-client.js update owner/repo 123 '{"state":"open"}'
undefinednode <skill-base-directory>/scripts/cnb-client.js update owner/repo 123 '{"state":"open"}'
undefined管理标签
管理标签
bash
undefinedbash
undefined添加标签
添加标签
node <skill-base-directory>/scripts/cnb-client.js add-labels owner/repo 123 '["bug","urgent"]'
node <skill-base-directory>/scripts/cnb-client.js add-labels owner/repo 123 '["bug","urgent"]'
设置标签(替换现有标签)
设置标签(替换现有标签)
node <skill-base-directory>/scripts/cnb-client.js set-labels owner/repo 123 '["enhancement"]'
node <skill-base-directory>/scripts/cnb-client.js set-labels owner/repo 123 '["enhancement"]'
移除单个标签
移除单个标签
node <skill-base-directory>/scripts/cnb-client.js remove-label owner/repo 123 wontfix
undefinednode <skill-base-directory>/scripts/cnb-client.js remove-label owner/repo 123 wontfix
undefined管理处理人
管理处理人
bash
undefinedbash
undefined添加处理人
添加处理人
node <skill-base-directory>/scripts/cnb-client.js add-assignees owner/repo 123 '["user1","user2"]'
node <skill-base-directory>/scripts/cnb-client.js add-assignees owner/repo 123 '["user1","user2"]'
移除处理人
移除处理人
node <skill-base-directory>/scripts/cnb-client.js remove-assignees owner/repo 123 '["user1"]'
undefinednode <skill-base-directory>/scripts/cnb-client.js remove-assignees owner/repo 123 '["user1"]'
undefined管理评论
管理评论
bash
undefinedbash
undefined添加评论
添加评论
node <skill-base-directory>/scripts/cnb-client.js add-comment owner/repo 123 "这是评论内容"
node <skill-base-directory>/scripts/cnb-client.js add-comment owner/repo 123 "这是评论内容"
查看评论列表
查看评论列表
node <skill-base-directory>/scripts/cnb-client.js list-comments owner/repo 123
undefinednode <skill-base-directory>/scripts/cnb-client.js list-comments owner/repo 123
undefined完整示例:创建 Bug 报告流程
完整示例:创建Bug报告流程
bash
undefinedbash
undefined1. 创建 Issue
1. 创建Issue
ISSUE=$(node <skill-base-directory>/scripts/cnb-client.js create myorg/myproject/myrepo '{
"title": "[Bug] 支付页面超时",
"body": "## 问题描述\n支付页面在高峰期出现超时情况\n\n## 影响范围\n- 移动端用户\n- 高峰期 (18:00-21:00)\n\n## 期望行为\n支付应在 5 秒内完成",
"labels": ["bug", "priority-critical", "payment"],
"assignees": ["backend-team"]
}')
echo "Issue 创建成功: $ISSUE"
ISSUE=$(node <skill-base-directory>/scripts/cnb-client.js create myorg/myproject/myrepo '{
"title": "[Bug] 支付页面超时",
"body": "## 问题描述\n支付页面在高峰期出现超时情况\n\n## 影响范围\n- 移动端用户\n- 高峰期 (18:00-21:00)\n\n## 期望行为\n支付应在5秒内完成",
"labels": ["bug", "priority-critical", "payment"],
"assignees": ["backend-team"]
}')
echo "Issue 创建成功: $ISSUE"
2. 添加初始评论
2. 添加初始评论
node <skill-base-directory>/scripts/cnb-client.js add-comment myorg/myproject/myrepo 123 "已分配给后端团队处理,预计 24 小时内修复。"
undefinednode <skill-base-directory>/scripts/cnb-client.js add-comment myorg/myproject/myrepo 123 "已分配给后端团队处理,预计24小时内修复。"
undefined命令参考
命令参考
| 命令 | 说明 |
|---|---|
| 列出 Issues |
| 获取 Issue 详情 |
| 创建 Issue |
| 更新 Issue |
| 添加标签 |
| 设置标签 |
| 移除标签 |
| 添加处理人 |
| 移除处理人 |
| 添加评论 |
| 列出评论 |
| 命令 | 说明 |
|---|---|
| 列出Issues |
| 获取Issue详情 |
| 创建Issue |
| 更新Issue |
| 添加标签 |
| 设置标签 |
| 移除标签 |
| 添加处理人 |
| 移除处理人 |
| 添加评论 |
| 列出评论 |
API 权限说明
API权限说明
| 权限 | 说明 |
|---|---|
| 读取 Issue |
| 读写 Issue |
| 读取评论 |
| 读写评论 |
| 权限 | 说明 |
|---|---|
| 读取Issue |
| 读写Issue |
| 读取评论 |
| 读写评论 |
仓库路径格式
仓库路径格式
CNB 支持两种仓库路径格式:
- 个人仓库:
username/repo - 组织仓库:
org/project/repo
CNB支持两种仓库路径格式:
- 个人仓库:
username/repo - 组织仓库:
org/project/repo
在 Node.js 中使用
在Node.js中使用
如果需要在 Node.js 脚本中使用,可以导入 的函数:
cnb-client.jsjavascript
// 使用 skill base directory 下的脚本
const {
listIssues,
getIssue,
createIssue,
updateIssue,
addLabels,
addAssignees,
createComment,
getComments
} = require('<skill-base-directory>/scripts/cnb-client');
// 或者在 async 函数中使用
async function main() {
// 列出 Issues
const issues = await listIssues('owner/repo', { state: 'open' });
// 创建 Issue
const issue = await createIssue('owner/repo', {
title: 'Bug report',
body: 'Description...',
labels: ['bug']
});
// 添加评论
await createComment('owner/repo', issue.number, 'Thanks for reporting!');
}如果需要在Node.js脚本中使用,可以导入的函数:
cnb-client.jsjavascript
// 使用skill base directory下的脚本
const {
listIssues,
getIssue,
createIssue,
updateIssue,
addLabels,
addAssignees,
createComment,
getComments
} = require('<skill-base-directory>/scripts/cnb-client');
// 或者在async函数中使用
async function main() {
// 列出Issues
const issues = await listIssues('owner/repo', { state: 'open' });
// 创建Issue
const issue = await createIssue('owner/repo', {
title: 'Bug report',
body: 'Description...',
labels: ['bug']
});
// 添加评论
await createComment('owner/repo', issue.number, 'Thanks for reporting!');
}