首页龙虾技能列表 › Jira — 通过 Maton 管理的 Jira API 集成

Jira — 通过 Maton 管理的 Jira API 集成

v1.0.5

通过 Maton 网关和 OAuth 认证,搜索 Jira 问题(使用 JQL)、创建和更新问题、管理项目和工作流。适用于用户与 Jira 问题、项目或工作流交互的场景。

7· 5,400·6 当前·7 累计
by @byungkyu·MIT-0
下载技能包
License
MIT-0
最后更新
2026/2/26
安全扫描
VirusTotal
无害
查看报告
OpenClaw
安全
medium confidence
该技能内部一致地使用 Maton 网关和单一的 MATON_API_KEY,无意外二进制文件、安装或文件 I/O,但模型调用技能和未知第三方网关的能力值得谨慎对待。
评估建议
该技能如其所述,通过 Maton 代理 Jira API 调用并管理 OAuth 连接,仅需单一的 MATON_API_KEY。安装前,请验证信任 maton.ai 服务,限制 API_KEY 权限,避免使用高权限生产密钥,考虑在测试后旋转密钥。如果不希望代理自主执行 Jira 修改,请确保平台可以禁用模型调用技能或设置为需要明确用户调用。首先使用非生产 Jira 账户或项目测试。...
详细分析 ▾
用途与能力
名称/描述与 SKILL.md 中的行为匹配:它通过 maton.ai 端点代理 Jira Cloud API 调用并管理 OAuth 连接。单一必需环境变量 (MATON_API_KEY) 适合 API 网关服务。
指令范围
运行时指令仅限于向 gateway.maton.ai 和 ctrl.maton.ai 发送 HTTP 请求以及从环境中读取 MATON_API_KEY。指令不要求代理读取无关文件、系统配置或其他环境变量。
安装机制
未提供安装规范或代码文件(仅指令技能),因此安装期间不会写入磁盘或获取内容。这样可以最小化安装时风险。
凭证需求
仅需 MATON_API_KEY,这对于网关管理的 OAuth Jira 集成是合理的。没有未解释的 SECRET/TOKEN/PASSWORD 环境变量要求。
持久化与权限
标志未设置 disableModelInvocation,因此模型可以自主调用技能。由于技能可以创建、更新和删除 Jira 问题,持有该 API 密钥的代理可以在没有明确用户确认的情况下执行破坏性或影响隐私的操作。技能未标记为 always:true,这降低了一些风险,但仍然可能有模型调用修改。
安全有层次,运行前请审查代码。

License

MIT-0

可自由使用、修改和再分发,无需署名。

运行时依赖

无特殊依赖

版本

latestv1.0.52026/2/2

添加了 clawdbot 元数据(包括表情符号和必需环境变量 MATON_API_KEY)到 SKILL.md,无功能或用户指令变化。

● 无害

安装命令 点击复制

官方npx clawhub@latest install jira-api
镜像加速npx clawhub@latest install jira-api --registry https://cn.clawhub-mirror.com

技能文档

通过托管 OAuth 认证访问 Jira Cloud API。使用 JQL 搜索问题、创建和管理问题、自动化工作流。

快速开始

# 首先,获取 cloud ID
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/jira/oauth/token/accessible-resources')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

# 然后搜索问题 python <<'EOF' import urllib.request, os, json req = urllib.request.Request('https://gateway.maton.ai/jira/ex/jira/{cloudId}/rest/api/3/search/jql?jql=project%3DKEY&maxResults=10') req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}') print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2)) EOF

基础 URL

https://gateway.maton.ai/jira/{原生API路径}

{原生API路径} 替换为实际的 Jira API 端点路径。网关将请求代理到 api.atlassian.com 并自动注入你的 OAuth token。

获取 Cloud ID

Jira Cloud 需要 cloud ID。首先获取:

GET /jira/oauth/token/accessible-resources

响应:

[{
  "id": "62909843-b784-4c35-b770-e4e2a26f024b",
  "url": "https://yoursite.atlassian.net",
  "name": "yoursite"
}]

认证

所有请求需要在 Authorization 头中包含 Maton API Key:

Authorization: Bearer $MATON_API_KEY

环境变量: 将 API Key 设置为 MATON_API_KEY

export MATON_API_KEY="YOUR_API_KEY"

获取 API Key

连接管理

https://ctrl.maton.ai 管理你的 Jira OAuth 连接。

列出连接

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=jira&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

创建连接

python <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'jira'}).encode()
req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

获取连接

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

响应:

{
  "connection": {
    "connection_id": "21fd90f9-5935-43cd-b6c8-bde9d915ca80",
    "status": "ACTIVE",
    "creation_time": "2025-12-08T07:20:53.488460Z",
    "last_updated_time": "2026-01-31T20:03:32.593153Z",
    "url": "https://connect.maton.ai/?session_token=...",
    "app": "jira",
    "metadata": {}
  }
}

在浏览器中打开返回的 url 完成 OAuth 授权。

删除连接

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

指定连接

如果你有多个 Jira 连接,使用 Maton-Connection 头指定使用哪个:

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/jira/ex/jira/{cloudId}/rest/api/3/project')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Maton-Connection', '21fd90f9-5935-43cd-b6c8-bde9d915ca80')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

如果省略,网关使用默认(最早的)活跃连接。

API 参考

项目

列出项目

GET /jira/ex/jira/{cloudId}/rest/api/3/project

获取项目

GET /jira/ex/jira/{cloudId}/rest/api/3/project/{projectKeyOrId}

问题

搜索问题(JQL)

GET /jira/ex/jira/{cloudId}/rest/api/3/search/jql?jql=project%3DKEY%20order%20by%20created%20DESC&maxResults=20&fields=summary,status,assignee

获取问题

GET /jira/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}

创建问题

POST /jira/ex/jira/{cloudId}/rest/api/3/issue
Content-Type: application/json

{ "fields": { "project": {"key": "PROJ"}, "summary": "问题摘要", "issuetype": {"name": "Task"} } }

更新问题

PUT /jira/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}
Content-Type: application/json

{ "fields": { "summary": "更新后的摘要" } }

删除问题

DELETE /jira/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}

分配问题

PUT /jira/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/assignee
Content-Type: application/json

{ "accountId": "712020:5aff718e-6fe0-4548-82f4-f44ec481e5e7" }

状态流转

获取可用的流转

GET /jira/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/transitions

执行流转(更改状态)

POST /jira/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/transitions
Content-Type: application/json

{ "transition": {"id": "31"} }

评论

获取评论

GET /jira/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/comment

添加评论

POST /jira/ex/jira/{cloudId}/rest/api/3/issue/{issueIdOrKey}/comment
Content-Type: application/json

{ "body": { "type": "doc", "version": 1, "content": [{"type": "paragraph", "content": [{"type": "text", "text": "评论文本"}]}] } }

用户

获取当前用户

GET /jira/ex/jira/{cloudId}/rest/api/3/myself

搜索用户

GET /jira/ex/jira/{cloudId}/rest/api/3/user/search?query=john

元数据

列出问题类型

GET /jira/ex/jira/{cloudId}/rest/api/3/issuetype

列出优先级

GET /jira/ex/jira/{cloudId}/rest/api/3/priority

列出状态

GET /jira/ex/jira/{cloudId}/rest/api/3/status

代码示例

JavaScript

// 先获取 cloud ID
const resources = await fetch(
  'https://gateway.maton.ai/jira/oauth/token/accessible-resources',
  { headers: { 'Authorization': Bearer ${process.env.MATON_API_KEY} } }
).then(r => r.json());

const cloudId = resources[0].id;

// 搜索问题 const issues = await fetch( https://gateway.maton.ai/jira/ex/jira/${cloudId}/rest/api/3/search/jql?jql=project=KEY, { headers: { 'Authorization': Bearer ${process.env.MATON_API_KEY} } } ).then(r => r.json());

Python

import os
import requests

headers = {'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'}

# 获取 cloud ID resources = requests.get( 'https://gateway.maton.ai/jira/oauth/token/accessible-resources', headers=headers ).json()

cloud_id = resources[0]['id']

# 搜索问题 issues = requests.get( f'https://gateway.maton.ai/jira/ex/jira/{cloud_id}/rest/api/3/search/jql', headers=headers, params={'jql': 'project=KEY', 'maxResults': 10} ).json()

注意事项

  • 始终先使用 /oauth/token/accessible-resources 获取 cloud ID
  • JQL 查询必须有边界条件(如 project=KEY
  • JQL 查询参数需要 URL 编码
  • 更新、删除、流转成功时返回 HTTP 204
  • Agile API 需要额外的 OAuth 范围。如果收到范围错误,联系 Maton 支持 support@maton.ai,说明你需要的具体操作/API 和用例
  • 重要:使用 curl 命令时,当 URL 包含方括号(fields[]sort[]records[])时使用 curl -g 禁用 glob 解析
  • 重要:将 curl 输出管道到 jq 或其他命令时,$MATON_API_KEY 等环境变量在某些 shell 环境中可能无法正确展开。管道操作时可能出现"Invalid API key"错误

错误处理

状态码含义
400缺少 Jira 连接或无效 JQL
401无效或缺少 Maton API Key
429速率限制(每账户每秒 10 请求)
4xx/5xxJira API 透传错误

故障排除:API Key 问题

  • 检查 MATON_API_KEY 环境变量是否已设置:
echo $MATON_API_KEY
  • 通过列出连接验证 API Key 是否有效:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

故障排除:无效的应用名称

  • 确保 URL 路径以 jira 开头。例如:
  • 正确:https://gateway.maton.ai/jira/ex/jira/{cloudId}/rest/api/3/project
  • 错误:https://gateway.maton.ai/ex/jira/{cloudId}/rest/api/3/project

资源

数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制

免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制

了解定制服务