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.
94
Quality
94%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
ScriptRunner Enhanced Search provides advanced JQL functions for complex queries that aren't possible with standard JQL.
ScriptRunner works differently depending on your Jira deployment:
The Jira skill automatically detects your deployment type and validates ScriptRunner availability.
Many ScriptRunner functions require user identifiers. Users are typically known by email or username, not internal account IDs.
Before using user-based ScriptRunner functions, look up the user's account ID:
# Search for user by email or display name
python jira.py search "assignee = 'user@example.com'"
# Or use Jira's user search API
# The response includes accountId field needed for ScriptRunner queriesNote: In Cloud, users are identified by accountId. In Data Center/Server, they may use username or key.
Find issues based on link relationships:
# Find all issues linked to a specific issue
python jira.py search 'issue in linkedIssuesOf("DEMO-123")'
# Find all linked issues recursively (includes links of links)
python jira.py search 'issue in linkedIssuesOfAll("DEMO-123")'
# Find issues with specific link types
python jira.py search 'issue in hasLinkType("Dependency")'
python jira.py search 'issue in hasLinkType("Blocks")'
python jira.py search 'issue in hasLinkType("Relates")'
# Find issues that have any links
python jira.py search 'issue in hasLinks()'
# Find issues with remote links (external URLs)
python jira.py search 'issue in issuesWithRemoteLinks()'
python jira.py search 'issue in hasRemoteLinks()'Common link types:
Blocks / is blocked byDependency / depends onRelates / relates toCloners / is cloned byDuplicate / duplicatesNavigate parent/child and epic relationships:
# Find all subtasks of an issue
python jira.py search 'issue in subtasksOf("DEMO-123")'
# Find parent issues
python jira.py search 'issue in parentsOf("DEMO-456")'
# Find issues that have subtasks
python jira.py search 'project = DEMO AND issue in hasSubtasks()'
# Find the epic for specific issues
python jira.py search 'issue in epicsOf("DEMO-123")'
# Find all issues in specific epics
python jira.py search 'issue in issuesInEpics("EPIC-123")'
python jira.py search 'issue in issuesInEpics("EPIC-123", "EPIC-456")'Find issues based on comments and user interactions:
# IMPORTANT: First look up the user's account ID
# For Cloud (uses accountId):
python jira.py search "assignee = 'user@example.com'" --fields accountId
# Note the accountId from the response, e.g., "5b10a2844c20165700ede21g"
# Then use it in ScriptRunner queries:
python jira.py search 'issue in commentedByUser("5b10a2844c20165700ede21g")'
# For Data Center/Server (uses username):
python jira.py search 'issue in commentedByUser("jsmith")'
# Find issues that have comments
python jira.py search 'issue in issuesWithComments()'
# Find issues last updated by a user
python jira.py search 'issue in lastUpdatedBy("5b10a2844c20165700ede21g")'Workflow for finding issues commented on by a user:
accountId (Cloud) or username (DC/Server)Example:
# Step 1: Find the user's account ID
python jira.py search "assignee = 'john.smith@example.com'" --fields accountId --max-results 1
# Step 2: Use the account ID in ScriptRunner query
python jira.py search 'issue in commentedByUser("5b10a2844c20165700ede21g") AND project = DEMO'Track issue status changes:
# Find issues that have been transitioned
python jira.py search 'issue in transitionedIssues()'
# Find issues transitioned by a specific user
python jira.py search 'issue in transitionedBy("5b10a2844c20165700ede21g")'
# Find issues transitioned from a specific status
python jira.py search 'issue in transitionedFrom("In Progress")'
# Find issues transitioned to a specific status
python jira.py search 'issue in transitionedTo("Done")'
# Combine for complex queries
python jira.py search 'issue in transitionedFrom("In Progress") AND issue in transitionedTo("Done") AND updated >= -7d'Query based on custom field values:
# Find issues with specific field values
python jira.py search 'issue in issuesWithFieldValue("customfield_10001", "value")'
# Find issues that have a value in a specific field
python jira.py search 'issue in hasFieldValue("Story Points")'
# Find recently updated issues
python jira.py search 'issue in lastUpdated("7d")'Advanced expression-based queries:
# Use custom expressions (advanced)
python jira.py search 'issue in expression("issue.assignee == currentUser()")'
# Search issues with custom logic
python jira.py search 'issue in searchIssues("project = DEMO AND priority = High")'# Find all issues that DEMO-123 depends on
python jira.py search 'issue in linkedIssuesOf("DEMO-123") AND issuelinktype = "Dependency"'
# Find what depends on DEMO-123
python jira.py search 'issue in linkedIssuesOf("DEMO-123") AND issuelinktype = "is depended on by"'# Find all incomplete issues in an epic
python jira.py search 'issue in issuesInEpics("EPIC-123") AND status != Done'
# Count subtasks by status
python jira.py search 'issue in subtasksOf("STORY-456") AND status = "In Progress"'# Find all issues a user commented on this week
# (First look up accountId as shown in Comment Functions section)
python jira.py search 'issue in commentedByUser("ACCOUNT_ID") AND updated >= -7d'
# Find issues transitioned by a user today
python jira.py search 'issue in transitionedBy("ACCOUNT_ID") AND updated >= startOfDay()'# Find all issues blocked by open issues
python jira.py search 'issuelinktype = "is blocked by" AND issue in linkedIssuesOf(status = Open)'Error: Function 'linkedIssuesOf' not found
Solution: ScriptRunner is not installed on your Jira instance. Check with:
python jira.py checkIf ScriptRunner is not detected, install it from:
Error: Query returns no results or "User not found"
Solution: Verify you're using the correct identifier type:
accountId (e.g., "5b10a2844c20165700ede21g")username (e.g., "jsmith")Look up the user first:
python jira.py search "assignee = 'user@example.com'" --fields accountId,nameTip: ScriptRunner functions can be slow on large instances. Combine with filters:
# Good: Scoped to recent issues
python jira.py search 'issue in linkedIssuesOf("DEMO-123") AND updated >= -30d'
# Less optimal: Scans all history
python jira.py search 'issue in linkedIssuesOf("DEMO-123")'For complete ScriptRunner documentation, see:
Install with Tessl CLI
npx tessl i odyssey4me/jira