CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

jira

Search and manage Jira issues using JQL queries, create/update tickets, and manage workflows. Use when asked to find Jira tickets, check the backlog, manage sprints, track bugs, or work with Atlassian project management.

Quality

81%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

SKILL.md
Quality
Evals
Security

Jira

Interact with Jira for issue tracking, search, and workflow management.

Resolving script paths

SKILL_DIR in the examples is the directory containing this loaded SKILL.md. Set it to that absolute path before running commands; do not assume the agent sets this shell variable. Quote the script path if it contains spaces.

Installation

  1. Install Python dependencies:

    pip install --user requests keyring pyyaml pyadf
  2. Download the skill from Releases or use directly from this repository.

Setup Verification

After installation, verify the skill configuration by running:

$SKILL_DIR/scripts/jira.py check

This will check:

  • Python dependencies (requests, keyring, pyyaml, pyadf)
  • Authentication configuration
  • Connectivity to Jira

If anything is missing, the check command will provide setup instructions.

Network access

Jira API commands require outbound HTTPS to the configured Jira host. Remote operations require outbound network access. If the agent environment restricts it, obtain access through that environment's approval or network controls before the first remote command, reusing authorization already granted. Local help and file processing do not need network access. Skill instructions do not grant network permission. Report DNS, connection, and timeout failures as network errors; do not reset credentials to resolve them. If approved access also fails, stop and report it. Authentication and permission errors require user action.

Authentication

This skill supports Jira Cloud only.

Configure Jira authentication using one of these methods:

Option 1: Environment Variables (Recommended)

export JIRA_BASE_URL="https://yourcompany.atlassian.net"
export JIRA_EMAIL="you@example.com"
export JIRA_API_TOKEN="your-token"

Add these to your ~/.bashrc or ~/.zshrc for persistence.

Option 2: Config File

Create ~/.config/agent-skills/jira.yaml:

url: https://yourcompany.atlassian.net
email: you@example.com
token: your-token

Required Credentials

Configuration Defaults

Optionally configure defaults (JQL scope, fields, custom fields, project defaults) in ~/.config/agent-skills/jira.yaml. CLI arguments always override config defaults. See configuration.md for the full config format and defaults behavior.

# Show all configuration
$SKILL_DIR/scripts/jira.py config show

# Show project-specific defaults
$SKILL_DIR/scripts/jira.py config show --project DEMO

Commands

See permissions.md for read/write classification of each command.

check

Verify configuration and connectivity.

$SKILL_DIR/scripts/jira.py check

This validates:

  • Python dependencies are installed
  • Authentication is configured
  • Can reach the Jira Cloud API
  • Automation API access
  • Custom field mappings

search

Search for issues using JQL (Jira Query Language).

$SKILL_DIR/scripts/jira.py search "project = DEMO AND status = Open"
$SKILL_DIR/scripts/jira.py search "assignee = currentUser() ORDER BY updated DESC" --max-results 20

Arguments:

  • jql: JQL query string (required unless --contributor, --team, or --team-name is used)
  • --contributor: Search for issues where this user is a contributor (reporter, assignee, or updater). Prefer an accountId or exact email; display names can be ambiguous.
  • --project: Project key to scope a --contributor search
  • --max-results: Maximum number of results (default: 50)
  • --fields: Comma-separated list of fields to include
  • --team: Team ID to scope the search; repeatable
  • --team-name: Team name to resolve (shared teams only); repeatable

Text output renders summary, type, parent, status, resolution and assignee; use --json for other fields.

Bulk comment authors: see examples.md.

JQL patterns: See jql-reference.md for Cloud-native JQL patterns (status, dates, fields, ordering, linked issues, hierarchy).

issue

Get, create, update, or comment on issues.

# Get issue details (--fields, --contributors)
$SKILL_DIR/scripts/jira.py issue get DEMO-123
$SKILL_DIR/scripts/jira.py issue get DEMO-123 --fields "summary,status,assignee" --contributors

# Batch several issues into one search call
$SKILL_DIR/scripts/jira.py issue get DEMO-1,DEMO-2,DEMO-3 --contributors

# List comments
$SKILL_DIR/scripts/jira.py issue comments DEMO-123

# List child issues and subtasks, or only their distinct assignees
$SKILL_DIR/scripts/jira.py issue children EPIC-123
$SKILL_DIR/scripts/jira.py issue children EPIC-123 --assignees-only
$SKILL_DIR/scripts/jira.py issue children EPIC-1,EPIC-2 --assignees-only

# Create (--project, --type, --summary required; --description, --priority, --labels, --assignee, --parent, --set-field, --link, --from-file, --json)
$SKILL_DIR/scripts/jira.py issue create --project DEMO --type Task --summary "New task"
$SKILL_DIR/scripts/jira.py issue create --project DEMO --type Story --summary "New story" --parent EPIC-123
$SKILL_DIR/scripts/jira.py issue create --from-file issue.md --priority Critical

# Update (--summary, --description, --priority, --labels, --assignee, --parent, --remove-parent, --set-field, --link, --unlink, --from-file)
$SKILL_DIR/scripts/jira.py issue update DEMO-123 --summary "Updated" --set-field story_points=5
$SKILL_DIR/scripts/jira.py issue update DEMO-123 --parent EPIC-456
$SKILL_DIR/scripts/jira.py issue update DEMO-123 --remove-parent
$SKILL_DIR/scripts/jira.py issue update DEMO-123 --link "Blocks:DEMO-456"
$SKILL_DIR/scripts/jira.py issue update DEMO-123 --unlink "Blocks:DEMO-456"

# Comment (--security-level for private comments)
$SKILL_DIR/scripts/jira.py issue comment DEMO-123 "This is a comment"

--contributors reports each person with the roles they hold: reporter, assignee, and commenter. Every comment is read, so a commenter late in a long thread is still reported. With --json, _contributors is [{"name": "Jane Doe", "roles": ["reporter", "commenter"]}]. A batch reads the comment field from the search result, falls back to the full thread when the page is truncated, and uses the default fields (no description, issue links or web links); pass --fields to request more.

issue children --assignees-only prints just the distinct assignee names — the cheap way to get the collaborator set.

See from-file-format.md for the --from-file format and link direction, and examples.md for more patterns.

transitions

Manage issue workflow transitions.

# List available transitions
$SKILL_DIR/scripts/jira.py transitions list DEMO-123

# Transition issue
$SKILL_DIR/scripts/jira.py transitions do DEMO-123 "In Progress"
$SKILL_DIR/scripts/jira.py transitions do DEMO-123 "Done" --comment "Completed"

# Transition with private comment
$SKILL_DIR/scripts/jira.py transitions do DEMO-123 "Done" --comment "Internal resolution notes" --security-level "Internal"

Additional Commands

See advanced-commands.md for full documentation of these commands:

  • config — view/manage configuration defaults and discover custom field mappings
  • fields — list available fields (global or per project/issue type)
  • statuses — list statuses and status categories
  • user — search users by email/name (returns accountId on Cloud)
  • collaboration — discover cross-team collaboration patterns across issue types
  • automations — list and inspect Jira automation rules (Cloud-only)
  • versions — list project versions (releases) and view release reports

JQL Reference

Common JQL queries and patterns: see jql-reference.md.

Quick reference — combine with AND, OR, and ORDER BY:

assignee = currentUser() AND statusCategory != Done ORDER BY priority DESC

Use statusCategory ("To Do", "In Progress", Done) for queries that work across projects.

Examples

Common Jira workflows:

Search and view:

# Find all open tasks assigned to you
jira search "assignee = currentUser() AND status = Open"

# Get issue details
jira issue get DEMO-123 --fields "summary,status,assignee"

# List issue comments
jira issue comments DEMO-123

Create and update:

# Create a new bug
jira issue create --project DEMO --type Bug --summary "Login page broken"

# Create a story under an epic
jira issue create --project DEMO --type Story --summary "Implement feature" --parent EPIC-123

# Set or change an issue's parent (works for any hierarchy level)
jira issue update DEMO-123 --parent EPIC-456

# Remove an issue's parent
jira issue update DEMO-123 --remove-parent

# Update an issue and add a comment
jira issue update DEMO-123 --priority High --assignee "user@example.com"
jira issue comment DEMO-123 "Assigned to review"

Workflow:

# List available transitions
jira transitions list DEMO-123

# Move issue to Done
jira transitions do DEMO-123 "Done" --comment "Completed"

Model Guidance

This skill makes API calls requiring structured input/output. A standard-capability model is recommended.

Repository

odyssey4me/agent-skills

Path

skills/jira/SKILL.md

Last updated
First committed

Also appears in

odyssey4me/jira
Stale

last in sync Mar 12, 2026

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.