Jira Ticket Creator with Web Research
Create Jira tickets whose content is enriched by web search. Follow these phases in order.
Setup
Three environment variables are required:
- -
JIRA_BASE_URL — your Atlassian instance (e.g. https://yourteam.atlassian.net) - INLINECODE2 — the email tied to your Atlassian account
- INLINECODE3 — an API token from https://id.atlassian.com/manage-profile/security/api-tokens
All Jira API calls use Basic auth via curl -u and force HTTP/1.1:
CODEBLOCK0
Phase 1 — Parse Arguments
Parse the user's request to extract:
| Field | Required | Description |
|---|
| project | yes | Jira project key (e.g. ENG, OPS) |
| issuetype |
no |
Task,
Bug,
Story,
Epic (default:
Task) |
| summary | yes | Short title for the ticket |
| search_query | no | Topic to web-search for enriching the description |
| priority | no |
Highest,
High,
Medium,
Low,
Lowest (default:
Medium) |
| assignee | no | Atlassian account email or ID |
| labels | no | Comma-separated labels |
| components | no | Comma-separated component names |
If the user does not provide a project key, ask for it before proceeding.
Phase 2 — Web Research (if applicable)
If the user asked for research, or if the ticket would benefit from context (e.g. a bug report referencing an external API, a story about integrating a third-party service):
- 1. Use the
web_search tool to search for the relevant topic. - Use the
xurl tool or curl to fetch key pages for details. - Extract the most relevant information: error descriptions, API docs, best practices, version notes, or solution approaches.
Compile findings into a structured summary:
CODEBLOCK1
If no research is needed, skip to Phase 3.
Phase 3 — Compose Ticket Content
Build the ticket description in Atlassian Document Format (ADF). Combine:
- - The user's original request/context
- Research findings from Phase 2 (if any)
- Acceptance criteria (when creating Stories)
- Steps to reproduce (when creating Bugs)
Keep the description concise and actionable.
ADF Structure
Jira API v3 uses ADF for the description field. Minimal example:
CODEBLOCK2
For richer formatting (headings, bullet lists, links):
CODEBLOCK3
Phase 4 — Validate Project and Fields
Before creating the ticket, verify the project exists and discover available fields:
CODEBLOCK4
If the project or issue type is invalid, report the error and ask the user to correct it.
Phase 5 — Create the Ticket
CODEBLOCK5
Extract the response:
CODEBLOCK6
If the API returns an error, display the error message and suggest corrections.
Phase 6 — Report
Present the result to the user:
- - Issue key: e.g. INLINECODE21
- URL: direct link to the ticket
- Summary: the title that was set
- Research included: yes/no, with sources listed
Notes
- - The Jira REST API v3 requires ADF for descriptions — plain text or markdown will be rejected.
- Rate limits: Jira Cloud allows ~100 requests per minute per user.
- The
jira.yaml network policy preset in NemoClaw already allows *.atlassian.net, auth.atlassian.com, and api.atlassian.com on port 443. - To use this skill inside NemoClaw's sandbox, enable the Jira preset in your sandbox policy.
Examples
CODEBLOCK7
具备网络调研功能的Jira工单创建工具
创建内容经过网络搜索丰富化的Jira工单。请按顺序执行以下阶段。
设置
需要三个环境变量:
- - JIRABASEURL — 您的Atlassian实例(例如 https://yourteam.atlassian.net)
- JIRAEMAIL — 与您的Atlassian账户关联的邮箱
- JIRAAPI_TOKEN — 来自 https://id.atlassian.com/manage-profile/security/api-tokens 的API令牌
所有Jira API调用均通过 curl -u 使用基本认证,并强制使用HTTP/1.1:
bash
curl --http1.1 -s -u $JIRAEMAIL:$JIRAAPITOKEN -H Content-Type: application/json $JIRABASE_URL/rest/api/3/...
阶段1 — 解析参数
解析用户请求以提取以下信息:
| 字段 | 必填 | 描述 |
|---|
| project | 是 | Jira项目键(例如 ENG、OPS) |
| issuetype |
否 | Task、Bug、Story、Epic(默认:Task) |
| summary | 是 | 工单的简短标题 |
| search_query | 否 | 用于丰富描述的网络搜索主题 |
| priority | 否 | Highest、High、Medium、Low、Lowest(默认:Medium) |
| assignee | 否 | Atlassian账户邮箱或ID |
| labels | 否 | 逗号分隔的标签 |
| components | 否 | 逗号分隔的组件名称 |
如果用户未提供项目键,请先询问后再继续。
阶段2 — 网络调研(如适用)
如果用户要求调研,或者工单需要上下文信息(例如引用外部API的Bug报告、关于集成第三方服务的Story):
- 1. 使用 web_search 工具搜索相关主题。
- 使用 xurl 工具或 curl 获取关键页面以获取详细信息。
- 提取最相关的信息:错误描述、API文档、最佳实践、版本说明或解决方案方法。
将调研结果整理成结构化摘要:
调研摘要
- - 来源:[URL]
- 关键发现:...
- 相关细节:...
如果不需要调研,则跳至阶段3。
阶段3 — 编写工单内容
以Atlassian文档格式(ADF)构建工单描述。结合以下内容:
- - 用户的原始请求/上下文
- 阶段2的调研结果(如有)
- 验收标准(创建Story时)
- 复现步骤(创建Bug时)
保持描述简洁且可操作。
ADF结构
Jira API v3使用ADF格式作为描述字段。最小示例:
json
{
type: doc,
version: 1,
content: [
{
type: paragraph,
content: [{ type: text, text: 此处填写描述文本。 }]
}
]
}
更丰富的格式(标题、项目符号列表、链接):
json
{
type: doc,
version: 1,
content: [
{
type: heading,
attrs: { level: 3 },
content: [{ type: text, text: 摘要 }]
},
{
type: bulletList,
content: [
{
type: listItem,
content: [
{
type: paragraph,
content: [{ type: text, text: 项目一 }]
}
]
}
]
},
{
type: paragraph,
content: [
{ type: text, text: 来源: },
{
type: text,
text: 链接文本,
marks: [{ type: link, attrs: { href: https://example.com } }]
}
]
}
]
}
阶段4 — 验证项目和字段
在创建工单之前,验证项目是否存在并发现可用字段:
bash
验证项目
curl --http1.1 -s -u $JIRA
EMAIL:$JIRAAPI_TOKEN -H Content-Type: application/json \
$JIRA
BASEURL/rest/api/3/project/$PROJECT_KEY | jq {key, name, id}
列出项目的可用问题类型
curl --http1.1 -s -u $JIRA
EMAIL:$JIRAAPI_TOKEN -H Content-Type: application/json \
$JIRA
BASEURL/rest/api/3/project/$PROJECT_KEY/statuses | jq .[].name
如果项目或问题类型无效,报告错误并要求用户更正。
阶段5 — 创建工单
bash
curl --http1.1 -s -X POST \
-u $JIRAEMAIL:$JIRAAPI_TOKEN \
-H Content-Type: application/json \
$JIRABASEURL/rest/api/3/issue \
-d {
fields: {
project: { key: PROJECT_KEY },
summary: 此处填写工单摘要,
issuetype: { name: Task },
priority: { name: Medium },
description: { ADF_OBJECT },
labels: [label1, label2]
}
}
提取响应:
bash
解析响应以获取问题键和URL
ISSUE_KEY=$(echo $RESPONSE | jq -r .key)
ISSUE
URL=$JIRABASE
URL/browse/$ISSUEKEY
如果API返回错误,显示错误信息并建议更正。
阶段6 — 报告
向用户呈现结果:
- - 问题键:例如 ENG-1234
- URL:工单的直接链接
- 摘要:已设置的标题
- 是否包含调研:是/否,并列出来源
备注
- - Jira REST API v3要求描述使用ADF格式 — 纯文本或Markdown将被拒绝。
- 速率限制:Jira Cloud允许每个用户每分钟约100个请求。
- NemoClaw中的 jira.yaml 网络策略预设已允许 *.atlassian.net、auth.atlassian.com 和 api.atlassian.com 的443端口。
- 要在NemoClaw的沙箱中使用此技能,请在沙箱策略中启用Jira预设。
示例
创建简单任务
/jira-ticket ENG 更新API速率限制文档
创建带有网络调研的Bug
/jira-ticket ENG --type Bug --search Node.js fetch超时ECONNRESET 修复支付服务中偶发的ECONNRESET错误
创建带有优先级和标签的Story
/jira-ticket PLATFORM --type Story --priority High --labels q2,backend 为移动客户端添加OAuth2 PKCE流程