{
  "schemaVersion": "1.0",
  "item": {
    "slug": "clawhub-jira-pat-skill",
    "name": "Clawhub Jira Pat Skill",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/dejanb/clawhub-jira-pat-skill",
    "canonicalUrl": "https://clawhub.ai/dejanb/clawhub-jira-pat-skill",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/clawhub-jira-pat-skill",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=clawhub-jira-pat-skill",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "_meta.json",
      "scripts/jira-pat.sh"
    ],
    "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/clawhub-jira-pat-skill"
    },
    "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/clawhub-jira-pat-skill",
    "agentPageUrl": "https://openagent3.xyz/skills/clawhub-jira-pat-skill/agent",
    "manifestUrl": "https://openagent3.xyz/skills/clawhub-jira-pat-skill/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/clawhub-jira-pat-skill/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": "Jira PAT Skill",
        "body": "Manage Jira issues on self-hosted/enterprise Jira instances using Personal Access Tokens (PAT). This skill is designed for environments where Basic Auth doesn't work due to SSO/SAML authentication."
      },
      {
        "title": "When to Use This Skill",
        "body": "Use this skill when working with:\n\nSelf-hosted Jira instances (e.g., Red Hat, enterprise deployments)\nJira instances with SSO/SAML authentication\nEnvironments where jira-cli or Basic Auth fails\n\nNote: For Atlassian Cloud with email + API token auth, use the clawdbot-jira-skill instead."
      },
      {
        "title": "Prerequisites",
        "body": "Personal Access Token (PAT): Create one in Jira:\n\nGo to your Jira profile → Personal Access Tokens\nCreate a new token with appropriate permissions\nStore it in environment variable JIRA_PAT\n\n\n\nJira Base URL: Your Jira instance URL in JIRA_URL"
      },
      {
        "title": "Environment Variables",
        "body": "export JIRA_PAT=\"your-personal-access-token\"\nexport JIRA_URL=\"https://issues.example.com\""
      },
      {
        "title": "Tools",
        "body": "This skill uses curl and jq for all operations."
      },
      {
        "title": "Get Issue Details",
        "body": "Fetch full details of a Jira issue:\n\ncurl -s -H \"Authorization: Bearer $JIRA_PAT\" \\\n  \"$JIRA_URL/rest/api/2/issue/PROJECT-123\" | jq\n\nGet specific fields only:\n\ncurl -s -H \"Authorization: Bearer $JIRA_PAT\" \\\n  \"$JIRA_URL/rest/api/2/issue/PROJECT-123?fields=summary,status,description\" | jq"
      },
      {
        "title": "Search Issues (JQL)",
        "body": "# Find child issues of an epic\ncurl -s -H \"Authorization: Bearer $JIRA_PAT\" \\\n  \"$JIRA_URL/rest/api/2/search?jql=parent=EPIC-123\" | jq\n\n# Complex queries (URL-encoded)\ncurl -s -H \"Authorization: Bearer $JIRA_PAT\" \\\n  \"$JIRA_URL/rest/api/2/search?jql=project%3DPROJ%20AND%20status%3DOpen\" | jq\n\nCommon JQL patterns:\n\nparent=EPIC-123 - Child issues of an epic\nproject=PROJ AND status=Open - Open issues in project\nassignee=currentUser() - Your assigned issues\nlabels=security - Issues with specific label\nupdated >= -7d - Recently updated"
      },
      {
        "title": "Get Available Transitions",
        "body": "Before changing status, query available transitions:\n\ncurl -s -H \"Authorization: Bearer $JIRA_PAT\" \\\n  \"$JIRA_URL/rest/api/2/issue/PROJECT-123/transitions\" | jq '.transitions[] | {id, name}'"
      },
      {
        "title": "Transition (Change Status)",
        "body": "Close an issue with a comment:\n\ncurl -s -X POST \\\n  -H \"Authorization: Bearer $JIRA_PAT\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"transition\": {\"id\": \"61\"},\n    \"update\": {\n      \"comment\": [{\"add\": {\"body\": \"Closed via API\"}}]\n    }\n  }' \\\n  \"$JIRA_URL/rest/api/2/issue/PROJECT-123/transitions\""
      },
      {
        "title": "Add a Comment",
        "body": "curl -s -X POST \\\n  -H \"Authorization: Bearer $JIRA_PAT\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"body\": \"Comment added via API.\"}' \\\n  \"$JIRA_URL/rest/api/2/issue/PROJECT-123/comment\""
      },
      {
        "title": "Update Issue Fields",
        "body": "curl -s -X PUT \\\n  -H \"Authorization: Bearer $JIRA_PAT\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"fields\": {\n      \"summary\": \"Updated summary\",\n      \"labels\": [\"api\", \"automated\"]\n    }\n  }' \\\n  \"$JIRA_URL/rest/api/2/issue/PROJECT-123\""
      },
      {
        "title": "Create an Issue",
        "body": "curl -s -X POST \\\n  -H \"Authorization: Bearer $JIRA_PAT\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"fields\": {\n      \"project\": {\"key\": \"PROJ\"},\n      \"summary\": \"New issue via API\",\n      \"description\": \"Issue description\",\n      \"issuetype\": {\"name\": \"Task\"},\n      \"parent\": {\"key\": \"EPIC-123\"}\n    }\n  }' \\\n  \"$JIRA_URL/rest/api/2/issue\""
      },
      {
        "title": "Useful jq Filters",
        "body": "# Summary and status\njq '{key: .key, summary: .fields.summary, status: .fields.status.name}'\n\n# List search results\njq '.issues[] | {key: .key, summary: .fields.summary, status: .fields.status.name}'\n\n# Issue links\njq '.fields.issuelinks[] | {type: .type.name, key: (.inwardIssue // .outwardIssue).key}'"
      },
      {
        "title": "Troubleshooting",
        "body": "ErrorCauseSolution401 UnauthorizedInvalid/expired PATRegenerate token, check Bearer format404 Not FoundIssue doesn't exist or no accessVerify issue key and permissions400 Bad Request on transitionInvalid transition IDQuery available transitions first"
      },
      {
        "title": "Comparison with Basic Auth Skills",
        "body": "This skill uses Bearer token authentication (Authorization: Bearer <PAT>), which works with self-hosted Jira instances using SSO/SAML. For Atlassian Cloud with email + API token, use skills that implement Basic Auth instead."
      }
    ],
    "body": "Jira PAT Skill\n\nManage Jira issues on self-hosted/enterprise Jira instances using Personal Access Tokens (PAT). This skill is designed for environments where Basic Auth doesn't work due to SSO/SAML authentication.\n\nWhen to Use This Skill\n\nUse this skill when working with:\n\nSelf-hosted Jira instances (e.g., Red Hat, enterprise deployments)\nJira instances with SSO/SAML authentication\nEnvironments where jira-cli or Basic Auth fails\n\nNote: For Atlassian Cloud with email + API token auth, use the clawdbot-jira-skill instead.\n\nPrerequisites\n\nPersonal Access Token (PAT): Create one in Jira:\n\nGo to your Jira profile → Personal Access Tokens\nCreate a new token with appropriate permissions\nStore it in environment variable JIRA_PAT\n\nJira Base URL: Your Jira instance URL in JIRA_URL\n\nEnvironment Variables\nexport JIRA_PAT=\"your-personal-access-token\"\nexport JIRA_URL=\"https://issues.example.com\"\n\nTools\n\nThis skill uses curl and jq for all operations.\n\nInstructions\nGet Issue Details\n\nFetch full details of a Jira issue:\n\ncurl -s -H \"Authorization: Bearer $JIRA_PAT\" \\\n  \"$JIRA_URL/rest/api/2/issue/PROJECT-123\" | jq\n\n\nGet specific fields only:\n\ncurl -s -H \"Authorization: Bearer $JIRA_PAT\" \\\n  \"$JIRA_URL/rest/api/2/issue/PROJECT-123?fields=summary,status,description\" | jq\n\nSearch Issues (JQL)\n# Find child issues of an epic\ncurl -s -H \"Authorization: Bearer $JIRA_PAT\" \\\n  \"$JIRA_URL/rest/api/2/search?jql=parent=EPIC-123\" | jq\n\n# Complex queries (URL-encoded)\ncurl -s -H \"Authorization: Bearer $JIRA_PAT\" \\\n  \"$JIRA_URL/rest/api/2/search?jql=project%3DPROJ%20AND%20status%3DOpen\" | jq\n\n\nCommon JQL patterns:\n\nparent=EPIC-123 - Child issues of an epic\nproject=PROJ AND status=Open - Open issues in project\nassignee=currentUser() - Your assigned issues\nlabels=security - Issues with specific label\nupdated >= -7d - Recently updated\nGet Available Transitions\n\nBefore changing status, query available transitions:\n\ncurl -s -H \"Authorization: Bearer $JIRA_PAT\" \\\n  \"$JIRA_URL/rest/api/2/issue/PROJECT-123/transitions\" | jq '.transitions[] | {id, name}'\n\nTransition (Change Status)\n\nClose an issue with a comment:\n\ncurl -s -X POST \\\n  -H \"Authorization: Bearer $JIRA_PAT\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"transition\": {\"id\": \"61\"},\n    \"update\": {\n      \"comment\": [{\"add\": {\"body\": \"Closed via API\"}}]\n    }\n  }' \\\n  \"$JIRA_URL/rest/api/2/issue/PROJECT-123/transitions\"\n\nAdd a Comment\ncurl -s -X POST \\\n  -H \"Authorization: Bearer $JIRA_PAT\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"body\": \"Comment added via API.\"}' \\\n  \"$JIRA_URL/rest/api/2/issue/PROJECT-123/comment\"\n\nUpdate Issue Fields\ncurl -s -X PUT \\\n  -H \"Authorization: Bearer $JIRA_PAT\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"fields\": {\n      \"summary\": \"Updated summary\",\n      \"labels\": [\"api\", \"automated\"]\n    }\n  }' \\\n  \"$JIRA_URL/rest/api/2/issue/PROJECT-123\"\n\nCreate an Issue\ncurl -s -X POST \\\n  -H \"Authorization: Bearer $JIRA_PAT\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"fields\": {\n      \"project\": {\"key\": \"PROJ\"},\n      \"summary\": \"New issue via API\",\n      \"description\": \"Issue description\",\n      \"issuetype\": {\"name\": \"Task\"},\n      \"parent\": {\"key\": \"EPIC-123\"}\n    }\n  }' \\\n  \"$JIRA_URL/rest/api/2/issue\"\n\nUseful jq Filters\n# Summary and status\njq '{key: .key, summary: .fields.summary, status: .fields.status.name}'\n\n# List search results\njq '.issues[] | {key: .key, summary: .fields.summary, status: .fields.status.name}'\n\n# Issue links\njq '.fields.issuelinks[] | {type: .type.name, key: (.inwardIssue // .outwardIssue).key}'\n\nTroubleshooting\nError\tCause\tSolution\n401 Unauthorized\tInvalid/expired PAT\tRegenerate token, check Bearer format\n404 Not Found\tIssue doesn't exist or no access\tVerify issue key and permissions\n400 Bad Request on transition\tInvalid transition ID\tQuery available transitions first\nComparison with Basic Auth Skills\n\nThis skill uses Bearer token authentication (Authorization: Bearer <PAT>), which works with self-hosted Jira instances using SSO/SAML. For Atlassian Cloud with email + API token, use skills that implement Basic Auth instead."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/dejanb/clawhub-jira-pat-skill",
    "publisherUrl": "https://clawhub.ai/dejanb/clawhub-jira-pat-skill",
    "owner": "dejanb",
    "version": "0.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/clawhub-jira-pat-skill",
    "downloadUrl": "https://openagent3.xyz/downloads/clawhub-jira-pat-skill",
    "agentUrl": "https://openagent3.xyz/skills/clawhub-jira-pat-skill/agent",
    "manifestUrl": "https://openagent3.xyz/skills/clawhub-jira-pat-skill/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/clawhub-jira-pat-skill/agent.md"
  }
}