{
  "schemaVersion": "1.0",
  "item": {
    "slug": "jira-rest-v3",
    "name": "Jira REST API v3 Commons",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/TheCyberCore/jira-rest-v3",
    "canonicalUrl": "https://clawhub.ai/TheCyberCore/jira-rest-v3",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/jira-rest-v3",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=jira-rest-v3",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "manifest.json",
      "SKILL.md",
      "refs/app-embedding-quickref.md",
      "refs/jira-json-quickref.md",
      "refs/jql-cheatsheet.md",
      "refs/openclaw_env_example.json"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/jira-rest-v3"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/jira-rest-v3",
    "agentPageUrl": "https://openagent3.xyz/skills/jira-rest-v3/agent",
    "manifestUrl": "https://openagent3.xyz/skills/jira-rest-v3/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/jira-rest-v3/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "What this skill is for",
        "body": "Use this skill to perform everyday Jira work from openClaw:\n\nfind/triage issues (JQL search)\nread/update issues (fields, assignee, status transition)\ncreate issues\nmanage comments (list/add/update/delete)\nlog time (worklogs)\nwork with boards/backlogs/sprints (Jira Software Agile API)\n\nThis skill assumes Jira Cloud."
      },
      {
        "title": "Required environment variables (openclaw.json -> \"env\")",
        "body": "All variables MUST use the ATREST_ prefix."
      },
      {
        "title": "Jira site + authentication",
        "body": "ATREST_JIRA_BASE_URL\n\nExample: https://your-domain.atlassian.net\nDo NOT include a trailing slash.\n\n\nATREST_JIRA_AUTH_MODE\n\nbasic (recommended for scripts) or bearer\n\n\nATREST_JIRA_EMAIL\n\nRequired when ATREST_JIRA_AUTH_MODE=basic\n\n\nATREST_JIRA_API_TOKEN\n\nRequired when ATREST_JIRA_AUTH_MODE=basic\n\n\nATREST_JIRA_BEARER_TOKEN\n\nRequired when ATREST_JIRA_AUTH_MODE=bearer\n\n\nATREST_JIRA_USER_AGENT\n\nExample: openClaw-jira-atrest/1.0"
      },
      {
        "title": "Defaults (optional but practical)",
        "body": "ATREST_JIRA_DEFAULT_PROJECT_KEY\nATREST_JIRA_DEFAULT_ISSUE_TYPE\n\nExample: Task, Bug, Story\n\n\nATREST_JIRA_DEFAULT_BOARD_ID\nATREST_JIRA_DEFAULT_MAX_RESULTS\n\nExample: 50\n\n\nATREST_JIRA_DEFAULT_FIELDS\n\nComma-separated list for search/read, e.g. summary,status,assignee,priority,updated"
      },
      {
        "title": "Resilience (optional)",
        "body": "ATREST_HTTP_TIMEOUT_MS (e.g. 30000)\nATREST_HTTP_RETRY_MAX (e.g. 3)\nATREST_HTTP_RETRY_BACKOFF_MS (e.g. 1000)\n\nSee also: refs/openclaw_env_example.json."
      },
      {
        "title": "API base paths (two families)",
        "body": "Jira Cloud Platform REST API v3 (issues, comments, projects, users, worklogs, …)\n\nBase: ${ATREST_JIRA_BASE_URL}/rest/api/3\n\nJira Software Agile REST API (boards, sprints, backlog, ranking, …)\n\nBase: ${ATREST_JIRA_BASE_URL}/rest/agile/1.0"
      },
      {
        "title": "If AUTH_MODE = basic",
        "body": "Use HTTP Basic Auth with email + API token.\nEither:\n\nSet Authorization: Basic base64(email:apiToken), or\nUse the HTTP client’s built-in basic auth feature (username=email, password=api token)."
      },
      {
        "title": "If AUTH_MODE = bearer",
        "body": "Set Authorization: Bearer ${ATREST_JIRA_BEARER_TOKEN}\n\nNever print secrets, never echo tokens into logs, never store tokens in repo."
      },
      {
        "title": "Rich-text fields (ADF)",
        "body": "Jira Cloud v3 uses Atlassian Document Format (ADF) for:\n\nissue description, environment, and textarea custom fields\ncomment body\nworklog comment\n\nWhen the user provides plain text, wrap it into minimal ADF.\nSee refs/jira-json-quickref.md#adf-minimal."
      },
      {
        "title": "ATREST request contract (openClaw)",
        "body": "When executing a command, perform an HTTP request with:\n\nmethod: GET|POST|PUT|DELETE\nurl: ${ATREST_JIRA_BASE_URL} + path\nheaders:\n\nAccept: application/json\nContent-Type: application/json (for JSON bodies)\nUser-Agent: ${ATREST_JIRA_USER_AGENT} (if set)\nAuthorization: ... (per auth mode)\n\n\nquery: object (encoded as querystring)\nbody: object (JSON)\n\nAlways:\n\nhandle pagination (see each command)\nhandle 429 rate limits (respect Retry-After if present, then retry with backoff)\nhandle 401/403 by reporting missing permissions/auth setup\nfor destructive actions (delete), ask for explicit confirmation unless the user already asked to delete."
      },
      {
        "title": "jira.projects.search",
        "body": "GET /rest/api/3/project/search\nQuery: startAt, maxResults, (optional filters per Jira)\nUse for: selecting a project id/key, listing available projects.\nOutput: id, key, name, projectTypeKey/style if available."
      },
      {
        "title": "jira.users.search",
        "body": "GET /rest/api/3/user/search\nQuery: query (string), optional pagination params supported by Jira\nUse for: resolving a person name/email fragment into accountId."
      },
      {
        "title": "jira.issues.searchJql (Enhanced search)",
        "body": "GET /rest/api/3/search/jql  (or POST for very long JQL)\nQuery: jql, nextPageToken, maxResults, fields[], expand, properties[], fieldsByKeys, failFast, reconcileIssues[]\nPagination: use nextPageToken until isLast=true.\nDefault: use ATREST_JIRA_DEFAULT_MAX_RESULTS and ATREST_JIRA_DEFAULT_FIELDS if provided.\nOutput: list of issues with key fields."
      },
      {
        "title": "jira.issues.get",
        "body": "GET /rest/api/3/issue/{issueIdOrKey}\nQuery: fields (comma-separated or array, depending on client), expand\nOutput: key, summary, status, assignee, description (ADF), priority, labels, updated."
      },
      {
        "title": "jira.issues.changelog",
        "body": "GET /rest/api/3/issue/{issueIdOrKey}/changelog\nQuery: startAt, maxResults\nOutput: recent changes (field, from, to, author, created)."
      },
      {
        "title": "jira.issues.create",
        "body": "POST /rest/api/3/issue\nBody: see refs/jira-json-quickref.md#issue-create\nRequired fields: project, issuetype, summary\nCommon optional: description (ADF), priority, labels, assignee (accountId)\nOutput: created issue key + self link."
      },
      {
        "title": "jira.issues.edit",
        "body": "PUT /rest/api/3/issue/{issueIdOrKey}\nQuery: notifyUsers, returnIssue, overrideScreenSecurity, overrideEditableFlag, expand\nBody: fields and/or update (operations)\nRule: transitions are NOT done here (use transitions endpoint).\nBody reference: refs/jira-json-quickref.md#issue-edit\nOutput: 204 (no content) unless returnIssue=true (then return updated issue)."
      },
      {
        "title": "jira.issues.assign",
        "body": "PUT /rest/api/3/issue/{issueIdOrKey}/assignee\nBody: { \"accountId\": \"...\" } (or null for unassigned where allowed)\nUse for: assigning to a user by accountId.\nOutput: 204."
      },
      {
        "title": "jira.issues.transitions.list",
        "body": "GET /rest/api/3/issue/{issueIdOrKey}/transitions\nQuery: expand, optional filters supported by Jira\nUse for: retrieving available workflow transitions (and ids).\nOutput: list transitions: id, name, to.status."
      },
      {
        "title": "jira.issues.transitions.apply",
        "body": "POST /rest/api/3/issue/{issueIdOrKey}/transitions\nBody: { \"transition\": { \"id\": \"X\" }, ... } optionally plus update.comment.add etc.\nBody reference: refs/jira-json-quickref.md#issue-transition\nOutput: 204."
      },
      {
        "title": "jira.issues.delete  (destructive)",
        "body": "DELETE /rest/api/3/issue/{issueIdOrKey}\nQuery: deleteSubtasks (optional)\nRequire explicit user intent before calling.\nOutput: 204."
      },
      {
        "title": "jira.comments.list",
        "body": "GET /rest/api/3/issue/{issueIdOrKey}/comment\nQuery: startAt, maxResults, orderBy, expand\nOutput: comment id, author, created/updated, body (ADF), visibility."
      },
      {
        "title": "jira.comments.add",
        "body": "POST /rest/api/3/issue/{issueIdOrKey}/comment\nBody: { \"body\": <ADF>, \"visibility\": <optional>, \"properties\": <optional> }\nBody reference: refs/jira-json-quickref.md#comment-add\nOutput: created comment (id, timestamps, body)."
      },
      {
        "title": "jira.comments.update",
        "body": "PUT /rest/api/3/issue/{issueIdOrKey}/comment/{id}\nBody: same shape as add (body/visibility/properties)\nOutput: updated comment."
      },
      {
        "title": "jira.comments.delete  (destructive)",
        "body": "DELETE /rest/api/3/issue/{issueIdOrKey}/comment/{id}\nRequire explicit user intent before calling.\nOutput: 204."
      },
      {
        "title": "jira.worklogs.list",
        "body": "GET /rest/api/3/issue/{issueIdOrKey}/worklog\nOutput: worklog entries (id, author, started, timeSpentSeconds, comment ADF)."
      },
      {
        "title": "jira.worklogs.add",
        "body": "POST /rest/api/3/issue/{issueIdOrKey}/worklog\nBody reference: refs/jira-json-quickref.md#worklog-add\nOutput: created worklog."
      },
      {
        "title": "jira.boards.list",
        "body": "GET /rest/agile/1.0/board\nQuery: startAt, maxResults, filters like type, name, projectKeyOrId, etc.\nOutput: board id, name, type."
      },
      {
        "title": "jira.boards.get",
        "body": "GET /rest/agile/1.0/board/{boardId}\nOutput: board details (location, type)."
      },
      {
        "title": "jira.boards.backlog",
        "body": "GET /rest/agile/1.0/board/{boardId}/backlog\nQuery: startAt, maxResults, jql, fields, expand\nOutput: backlog issues."
      },
      {
        "title": "jira.boards.issues",
        "body": "GET /rest/agile/1.0/board/{boardId}/issue\nQuery: startAt, maxResults, jql, fields, expand\nOutput: issues currently on the board (by board column mapping)."
      },
      {
        "title": "jira.boards.sprints",
        "body": "GET /rest/agile/1.0/board/{boardId}/sprint\nQuery: startAt, maxResults, state\nOutput: sprints (id, name, state, dates)."
      },
      {
        "title": "jira.boards.sprint.issues",
        "body": "GET /rest/agile/1.0/board/{boardId}/sprint/{sprintId}/issue\nQuery: startAt, maxResults, optional filters\nOutput: issues in that sprint (board view)."
      },
      {
        "title": "jira.sprints.create",
        "body": "POST /rest/agile/1.0/sprint\nBody reference: refs/jira-json-quickref.md#sprint-create\nOutput: created sprint."
      },
      {
        "title": "jira.sprints.get",
        "body": "GET /rest/agile/1.0/sprint/{sprintId}\nOutput: sprint details."
      },
      {
        "title": "jira.sprints.update",
        "body": "PUT /rest/agile/1.0/sprint/{sprintId}\nBody: full sprint object fields (note: missing fields become null!)\nUse for: rename, goal, start/close by state changes when allowed."
      },
      {
        "title": "jira.sprints.issues",
        "body": "GET /rest/agile/1.0/sprint/{sprintId}/issue\nOutput: sprint issues."
      },
      {
        "title": "jira.sprints.addIssues",
        "body": "POST /rest/agile/1.0/sprint/{sprintId}/issue\nBody: { \"issues\": [\"PROJ-1\",\"PROJ-2\", ...] }\nOutput: 204 on success."
      },
      {
        "title": "Output conventions (recommended)",
        "body": "When replying to the user after an API call:\n\nFor issue lists: show KEY — Summary (Status) [Assignee] updated <date>\nFor single issue: show key fields + the user-requested detail (description/comments/etc.)\nFor updates/transitions: confirm what changed + resulting status/assignee"
      },
      {
        "title": "Quickref — embedding app data into Jira issue text",
        "body": "For patterns and ready-to-copy ADF payload snippets (including an example for “ContentCraft: Mermaid Diagrams for Jira”), see:\n\nrefs/app-embedding-quickref.md"
      },
      {
        "title": "JSON references",
        "body": "refs/jira-json-quickref.md (payload shapes, short parameter notes, ADF helper)\nrefs/jql-cheatsheet.md (ready-to-use JQL patterns)\nrefs/openclaw_env_example.json (env snippet)\nrefs/app-embedding-quickref.md (how to embed app data into Jira text bodies; includes ContentCraft Mermaid example)"
      }
    ],
    "body": "File: skills/jira-rest-v3/SKILL.md\nopenClaw Skill — Jira Daily Work via ATREST (Jira Cloud REST API v3 + Jira Software Agile API)\nWhat this skill is for\n\nUse this skill to perform everyday Jira work from openClaw:\n\nfind/triage issues (JQL search)\nread/update issues (fields, assignee, status transition)\ncreate issues\nmanage comments (list/add/update/delete)\nlog time (worklogs)\nwork with boards/backlogs/sprints (Jira Software Agile API)\n\nThis skill assumes Jira Cloud.\n\nRequired environment variables (openclaw.json -> \"env\")\n\nAll variables MUST use the ATREST_ prefix.\n\nJira site + authentication\nATREST_JIRA_BASE_URL\nExample: https://your-domain.atlassian.net\nDo NOT include a trailing slash.\nATREST_JIRA_AUTH_MODE\nbasic (recommended for scripts) or bearer\nATREST_JIRA_EMAIL\nRequired when ATREST_JIRA_AUTH_MODE=basic\nATREST_JIRA_API_TOKEN\nRequired when ATREST_JIRA_AUTH_MODE=basic\nATREST_JIRA_BEARER_TOKEN\nRequired when ATREST_JIRA_AUTH_MODE=bearer\nATREST_JIRA_USER_AGENT\nExample: openClaw-jira-atrest/1.0\nDefaults (optional but practical)\nATREST_JIRA_DEFAULT_PROJECT_KEY\nATREST_JIRA_DEFAULT_ISSUE_TYPE\nExample: Task, Bug, Story\nATREST_JIRA_DEFAULT_BOARD_ID\nATREST_JIRA_DEFAULT_MAX_RESULTS\nExample: 50\nATREST_JIRA_DEFAULT_FIELDS\nComma-separated list for search/read, e.g. summary,status,assignee,priority,updated\nResilience (optional)\nATREST_HTTP_TIMEOUT_MS (e.g. 30000)\nATREST_HTTP_RETRY_MAX (e.g. 3)\nATREST_HTTP_RETRY_BACKOFF_MS (e.g. 1000)\n\nSee also: refs/openclaw_env_example.json.\n\nAPI base paths (two families)\nJira Cloud Platform REST API v3 (issues, comments, projects, users, worklogs, …)\nBase: ${ATREST_JIRA_BASE_URL}/rest/api/3\nJira Software Agile REST API (boards, sprints, backlog, ranking, …)\nBase: ${ATREST_JIRA_BASE_URL}/rest/agile/1.0\nAuthentication rules (must follow)\nIf AUTH_MODE = basic\nUse HTTP Basic Auth with email + API token.\nEither:\nSet Authorization: Basic base64(email:apiToken), or\nUse the HTTP client’s built-in basic auth feature (username=email, password=api token).\nIf AUTH_MODE = bearer\nSet Authorization: Bearer ${ATREST_JIRA_BEARER_TOKEN}\n\nNever print secrets, never echo tokens into logs, never store tokens in repo.\n\nRich-text fields (ADF)\n\nJira Cloud v3 uses Atlassian Document Format (ADF) for:\n\nissue description, environment, and textarea custom fields\ncomment body\nworklog comment\n\nWhen the user provides plain text, wrap it into minimal ADF. See refs/jira-json-quickref.md#adf-minimal.\n\nATREST request contract (openClaw)\n\nWhen executing a command, perform an HTTP request with:\n\nmethod: GET|POST|PUT|DELETE\nurl: ${ATREST_JIRA_BASE_URL} + path\nheaders:\nAccept: application/json\nContent-Type: application/json (for JSON bodies)\nUser-Agent: ${ATREST_JIRA_USER_AGENT} (if set)\nAuthorization: ... (per auth mode)\nquery: object (encoded as querystring)\nbody: object (JSON)\n\nAlways:\n\nhandle pagination (see each command)\nhandle 429 rate limits (respect Retry-After if present, then retry with backoff)\nhandle 401/403 by reporting missing permissions/auth setup\nfor destructive actions (delete), ask for explicit confirmation unless the user already asked to delete.\nCommand Catalog\n1) Projects & Users (Platform v3)\njira.projects.search\nGET /rest/api/3/project/search\nQuery: startAt, maxResults, (optional filters per Jira)\nUse for: selecting a project id/key, listing available projects.\nOutput: id, key, name, projectTypeKey/style if available.\njira.users.search\nGET /rest/api/3/user/search\nQuery: query (string), optional pagination params supported by Jira\nUse for: resolving a person name/email fragment into accountId.\n2) Issue search & read (Platform v3)\njira.issues.searchJql (Enhanced search)\nGET /rest/api/3/search/jql (or POST for very long JQL)\nQuery: jql, nextPageToken, maxResults, fields[], expand, properties[], fieldsByKeys, failFast, reconcileIssues[]\nPagination: use nextPageToken until isLast=true.\nDefault: use ATREST_JIRA_DEFAULT_MAX_RESULTS and ATREST_JIRA_DEFAULT_FIELDS if provided.\nOutput: list of issues with key fields.\njira.issues.get\nGET /rest/api/3/issue/{issueIdOrKey}\nQuery: fields (comma-separated or array, depending on client), expand\nOutput: key, summary, status, assignee, description (ADF), priority, labels, updated.\njira.issues.changelog\nGET /rest/api/3/issue/{issueIdOrKey}/changelog\nQuery: startAt, maxResults\nOutput: recent changes (field, from, to, author, created).\n3) Create & update issues (Platform v3)\njira.issues.create\nPOST /rest/api/3/issue\nBody: see refs/jira-json-quickref.md#issue-create\nRequired fields: project, issuetype, summary\nCommon optional: description (ADF), priority, labels, assignee (accountId)\nOutput: created issue key + self link.\njira.issues.edit\nPUT /rest/api/3/issue/{issueIdOrKey}\nQuery: notifyUsers, returnIssue, overrideScreenSecurity, overrideEditableFlag, expand\nBody: fields and/or update (operations)\nRule: transitions are NOT done here (use transitions endpoint).\nBody reference: refs/jira-json-quickref.md#issue-edit\nOutput: 204 (no content) unless returnIssue=true (then return updated issue).\njira.issues.assign\nPUT /rest/api/3/issue/{issueIdOrKey}/assignee\nBody: { \"accountId\": \"...\" } (or null for unassigned where allowed)\nUse for: assigning to a user by accountId.\nOutput: 204.\njira.issues.transitions.list\nGET /rest/api/3/issue/{issueIdOrKey}/transitions\nQuery: expand, optional filters supported by Jira\nUse for: retrieving available workflow transitions (and ids).\nOutput: list transitions: id, name, to.status.\njira.issues.transitions.apply\nPOST /rest/api/3/issue/{issueIdOrKey}/transitions\nBody: { \"transition\": { \"id\": \"X\" }, ... } optionally plus update.comment.add etc.\nBody reference: refs/jira-json-quickref.md#issue-transition\nOutput: 204.\njira.issues.delete (destructive)\nDELETE /rest/api/3/issue/{issueIdOrKey}\nQuery: deleteSubtasks (optional)\nRequire explicit user intent before calling.\nOutput: 204.\n4) Comments (Platform v3)\njira.comments.list\nGET /rest/api/3/issue/{issueIdOrKey}/comment\nQuery: startAt, maxResults, orderBy, expand\nOutput: comment id, author, created/updated, body (ADF), visibility.\njira.comments.add\nPOST /rest/api/3/issue/{issueIdOrKey}/comment\nBody: { \"body\": <ADF>, \"visibility\": <optional>, \"properties\": <optional> }\nBody reference: refs/jira-json-quickref.md#comment-add\nOutput: created comment (id, timestamps, body).\njira.comments.update\nPUT /rest/api/3/issue/{issueIdOrKey}/comment/{id}\nBody: same shape as add (body/visibility/properties)\nOutput: updated comment.\njira.comments.delete (destructive)\nDELETE /rest/api/3/issue/{issueIdOrKey}/comment/{id}\nRequire explicit user intent before calling.\nOutput: 204.\n5) Worklogs (Platform v3)\njira.worklogs.list\nGET /rest/api/3/issue/{issueIdOrKey}/worklog\nOutput: worklog entries (id, author, started, timeSpentSeconds, comment ADF).\njira.worklogs.add\nPOST /rest/api/3/issue/{issueIdOrKey}/worklog\nBody reference: refs/jira-json-quickref.md#worklog-add\nOutput: created worklog.\n6) Boards & Sprints (Agile API)\njira.boards.list\nGET /rest/agile/1.0/board\nQuery: startAt, maxResults, filters like type, name, projectKeyOrId, etc.\nOutput: board id, name, type.\njira.boards.get\nGET /rest/agile/1.0/board/{boardId}\nOutput: board details (location, type).\njira.boards.backlog\nGET /rest/agile/1.0/board/{boardId}/backlog\nQuery: startAt, maxResults, jql, fields, expand\nOutput: backlog issues.\njira.boards.issues\nGET /rest/agile/1.0/board/{boardId}/issue\nQuery: startAt, maxResults, jql, fields, expand\nOutput: issues currently on the board (by board column mapping).\njira.boards.sprints\nGET /rest/agile/1.0/board/{boardId}/sprint\nQuery: startAt, maxResults, state\nOutput: sprints (id, name, state, dates).\njira.boards.sprint.issues\nGET /rest/agile/1.0/board/{boardId}/sprint/{sprintId}/issue\nQuery: startAt, maxResults, optional filters\nOutput: issues in that sprint (board view).\n7) Sprint lifecycle (Agile API)\njira.sprints.create\nPOST /rest/agile/1.0/sprint\nBody reference: refs/jira-json-quickref.md#sprint-create\nOutput: created sprint.\njira.sprints.get\nGET /rest/agile/1.0/sprint/{sprintId}\nOutput: sprint details.\njira.sprints.update\nPUT /rest/agile/1.0/sprint/{sprintId}\nBody: full sprint object fields (note: missing fields become null!)\nUse for: rename, goal, start/close by state changes when allowed.\njira.sprints.issues\nGET /rest/agile/1.0/sprint/{sprintId}/issue\nOutput: sprint issues.\njira.sprints.addIssues\nPOST /rest/agile/1.0/sprint/{sprintId}/issue\nBody: { \"issues\": [\"PROJ-1\",\"PROJ-2\", ...] }\nOutput: 204 on success.\nOutput conventions (recommended)\n\nWhen replying to the user after an API call:\n\nFor issue lists: show KEY — Summary (Status) [Assignee] updated <date>\nFor single issue: show key fields + the user-requested detail (description/comments/etc.)\nFor updates/transitions: confirm what changed + resulting status/assignee\nQuickref — embedding app data into Jira issue text\n\nFor patterns and ready-to-copy ADF payload snippets (including an example for “ContentCraft: Mermaid Diagrams for Jira”), see:\n\nrefs/app-embedding-quickref.md\nJSON references\nrefs/jira-json-quickref.md (payload shapes, short parameter notes, ADF helper)\nrefs/jql-cheatsheet.md (ready-to-use JQL patterns)\nrefs/openclaw_env_example.json (env snippet)\nrefs/app-embedding-quickref.md (how to embed app data into Jira text bodies; includes ContentCraft Mermaid example)"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/TheCyberCore/jira-rest-v3",
    "publisherUrl": "https://clawhub.ai/TheCyberCore/jira-rest-v3",
    "owner": "TheCyberCore",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/jira-rest-v3",
    "downloadUrl": "https://openagent3.xyz/downloads/jira-rest-v3",
    "agentUrl": "https://openagent3.xyz/skills/jira-rest-v3/agent",
    "manifestUrl": "https://openagent3.xyz/skills/jira-rest-v3/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/jira-rest-v3/agent.md"
  }
}