Agent skill

JQL Query Builder

Build and optimize JQL (Jira Query Language) queries for searching issues. Use when the user needs to search Jira issues, filter by complex criteria, find specific bugs or features, or when they mention JQL, queries, or searching Jira.

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/product/jql-query-builder

SKILL.md

JQL Query Builder

Expert assistance for constructing JQL (Jira Query Language) queries to search and filter Jira issues efficiently.

When to Use This Skill

  • User wants to search for specific issues
  • User needs to filter issues by multiple criteria
  • User mentions JQL or queries
  • User wants to find bugs, features, or tasks matching certain conditions
  • User needs help understanding JQL syntax

JQL Basics

Field Operators

Operator Description Example
= Equals status = "In Progress"
!= Not equals priority != Low
>, < Greater/less than created > -7d
>=, <= Greater/less or equal priority >= High
~ Contains text summary ~ "login"
IN Matches any value status IN (Open, "In Progress")
NOT IN Doesn't match priority NOT IN (Low)
IS EMPTY Field is empty assignee IS EMPTY
IS NOT EMPTY Field has value dueDate IS NOT EMPTY

Common Fields

  • project: Project key (e.g., project = PROJ)
  • status: Issue status (e.g., status = "In Progress")
  • priority: Priority level (e.g., priority = High)
  • assignee: Assigned user (e.g., assignee = currentUser())
  • reporter: Who created it (e.g., reporter = currentUser())
  • created: Creation date (e.g., created >= -30d)
  • updated: Last update (e.g., updated > -7d)
  • type: Issue type (e.g., type = Bug)
  • labels: Labels (e.g., labels = urgent)
  • summary: Title text (e.g., summary ~ "authentication")
  • description: Description text (e.g., description ~ "error")

Date Functions

  • -1d, -7d, -30d: Relative dates (days ago)
  • -1w, -4w: Weeks ago
  • startOfDay(), endOfDay(): Day boundaries
  • startOfWeek(), endOfWeek(): Week boundaries

User Functions

  • currentUser(): The logged-in user
  • membersOf("group-name"): Users in a group

Logical Operators

  • AND: Both conditions must be true
  • OR: Either condition must be true
  • NOT: Negate a condition

Common Query Patterns

My Open Issues

jql
assignee = currentUser() AND status != Done

Recently Updated Bugs

jql
type = Bug AND updated >= -7d ORDER BY updated DESC

High Priority Unassigned Issues

jql
priority = High AND assignee IS EMPTY AND status != Done

Issues Created This Sprint

jql
project = PROJ AND created >= -14d AND type IN (Story, Task)

Overdue Issues

jql
dueDate < now() AND status != Done ORDER BY dueDate ASC

Issues Mentioning Specific Feature

jql
(summary ~ "authentication" OR description ~ "authentication") AND status != Done

Team's Work This Week

jql
assignee IN membersOf("dev-team") AND updated >= startOfWeek()

Epics Without Stories

jql
type = Epic AND issueFunction NOT IN linkedIssuesOf("type = Story")

Building Complex Queries

Step-by-Step Approach

  1. Start with project:

    jql
    project = PROJ
    
  2. Add status filter:

    jql
    project = PROJ AND status IN ("To Do", "In Progress")
    
  3. Add assignee:

    jql
    project = PROJ AND status IN ("To Do", "In Progress") AND assignee = currentUser()
    
  4. Add time filter:

    jql
    project = PROJ AND status IN ("To Do", "In Progress") AND assignee = currentUser() AND created >= -30d
    
  5. Add sorting:

    jql
    project = PROJ AND status IN ("To Do", "In Progress") AND assignee = currentUser() AND created >= -30d ORDER BY priority DESC, updated DESC
    

Optimization Tips

Use Specific Fields

Slow: text ~ "bug"Fast: summary ~ "bug" OR description ~ "bug"

Limit Date Ranges

Slow: created <= now()Fast: created >= -90d

Use IN Instead of Multiple OR

Verbose: status = "To Do" OR status = "In Progress" OR status = "Review"Clean: status IN ("To Do", "In Progress", "Review")

Order Matters for AND

Put most restrictive conditions first:

jql
assignee = currentUser() AND status != Done AND type = Bug

Testing Queries

When I build a query for you, I'll:

  1. Explain the logic: Break down what each part does
  2. Test it: Use /jira-search to verify results
  3. Refine: Adjust based on results
  4. Optimize: Suggest improvements for performance

Common Use Cases

Sprint Planning

jql
project = PROJ AND status = "To Do" AND sprint IS EMPTY ORDER BY priority DESC

Bug Triage

jql
type = Bug AND status = "To Do" AND priority IS EMPTY ORDER BY created DESC

Release Readiness

jql
fixVersion = "v2.0" AND status != Done

Stale Issues

jql
status = "In Progress" AND updated <= -30d

Blocked Work

jql
status = Blocked OR labels = blocked ORDER BY priority DESC

Advanced Patterns

Find Issues Without Estimates

jql
project = PROJ AND "Story Points" IS EMPTY AND type IN (Story, Task)

Parent Issues with Incomplete Subtasks

jql
issueFunction IN parentsOf("status != Done")

Issues Mentioned in Comments

jql
comment ~ "needs review"

Cross-Project Search

jql
project IN (PROJ1, PROJ2, PROJ3) AND assignee = currentUser()

How I'll Help

When you need a JQL query, I will:

  1. Understand your requirements: What are you trying to find?
  2. Build the query: Construct JQL step-by-step
  3. Explain each part: Help you understand the syntax
  4. Test it: Run the query using /jira-search
  5. Refine: Adjust based on results
  6. Save for reuse: Document the query for future use

Example Interaction

You: "Find all high-priority bugs assigned to me that were updated in the last week"

Me: "I'll build a JQL query for that:

jql
type = Bug AND priority = High AND assignee = currentUser() AND updated >= -7d ORDER BY updated DESC

Breaking it down:

  • type = Bug: Only bugs
  • priority = High: High priority only
  • assignee = currentUser(): Assigned to you
  • updated >= -7d: Updated in last 7 days
  • ORDER BY updated DESC: Newest first

Let me search for these issues using /jira-search..."

References

For more JQL details:

Didn't find tool you were looking for?

Be as detailed as possible for better results