2 overdue, 3 due this week
14 open issues are assigned to you. ACME-482 is 3 days late and Highest priority: start there.
Each weekday morning: your unresolved Jira issues grouped by priority, with anything overdue or due this week pulled to the top.
What lands on your board
14 open issues are assigned to you. ACME-482 is 3 days late and Highest priority: start there.
Jira's "Assigned to me" list sorts by last update, so the issue due Friday sits under the one that got a comment this morning. Across three projects and two boards, the only reliable way to see what is due is a saved filter you have to remember to open.
This skill is that filter, run for you before standup. The agent queries every project you can see, pulls overdue and due-this-week issues to the top, groups the rest by priority and points at issues you have not touched in ten days, which tend to be the ones that slipped your mind.
Call GET /rest/api/3/search/jql with jql=assignee = currentUser() AND statusCategory != Done ORDER BY priority DESC, duedate ASC, fields=summary,status,priority,duedate,project,updated and maxResults=100. Follow nextPageToken until isLast is true.
An issue is overdue when duedate is before today, and due this week when it falls between today and the end of the week (the same split as duedate < startOfDay() and duedate <= endOfWeek() in JQL). Issues without a due date stay in their priority group.
Bucket by priority.name (Highest, High, Medium, Low, Lowest, or your site's own scheme) and keep due-date order inside each bucket. Mark any issue whose updated is more than 10 days old.
Lead with three counts: open, overdue, due this week. Then the overdue and due-this-week issues with key, summary, status and due date, one line per priority group after that, and a link for each key to https://<site>.atlassian.net/browse/<KEY>.
With BRIEFKIN_TOKEN set, the agent sends the result as one card that updates in place every run. Without it, you get the report in the chat.
Pick your agent, where the data comes from and how to schedule it; the commands below follow.
One command. It puts the SKILL.md in ~/.claude/skills and in ~/.agents/skills, which Codex, Cursor, Gemini CLI, Copilot CLI and OpenCode read too.
shellcurl -fsSL https://briefkin.dev/skills/jira-my-open-issues-summary/install | shAsk Claude Code:
promptRun the jira-my-open-issues-summary skillOr paste the prompt instead of installing:
promptUsing the Jira Cloud REST API (GET /rest/api/3/search/jql), find every issue matching assignee = currentUser() AND statusCategory != Done, with summary, status, priority, duedate, project and updated. Put overdue issues (due date before today) first, then the ones due by the end of this week, each with key, summary, status and due date. Group everything else by priority, Highest to Lowest. List issues I have not updated in 10 days or more separately. Start with three counts (open, overdue, due this week) and end with the one issue I should pick up first and why.Weekdays at 8:30, from cron on any machine where Claude Code is signed in:
crontab30 8 * * 1-5 claude -p "Run the jira-my-open-issues-summary skill"Add it with crontab -e. A laptop asleep at that time runs it when it wakes if you use launchd or Task Scheduler instead; GitHub Actions works for the API route.
Connect Briefkin once with curl -fsSL https://briefkin.dev/install | sh and every run lands on your board as a report card. How setup works
SKILL.md---
name: jira-my-open-issues-summary
description: "Each weekday morning: your unresolved Jira issues grouped by priority, with anything overdue or due this week pulled to the top. Use when the user asks for this, or when it runs on a schedule."
---
# Jira: my open issues, summarized
Each weekday morning: your unresolved Jira issues grouped by priority, with anything overdue or due this week pulled to the top.
Jira's "Assigned to me" list sorts by last update, so the issue due Friday sits under the one that got a comment this morning. Across three projects and two boards, the only reliable way to see what is due is a saved filter you have to remember to open.
This skill is that filter, run for you before standup. The agent queries every project you can see, pulls overdue and due-this-week issues to the top, groups the rest by priority and points at issues you have not touched in ten days, which tend to be the ones that slipped your mind.
## Two ways to get the data
Use the API or MCP route when you have an MCP server, a CLI or an API token for the app. Otherwise, if you can drive a browser the user is signed in to (Claude in Chrome, a Playwright or Chrome DevTools MCP server), use the browser route. Say which one you used.
## Route A: API or MCP server
### What you need
- A Jira Cloud user who can browse the projects your issues are in; the query only returns what that user can see.
- A Jira MCP server or connector, or an API token from id.atlassian.com in `JIRA_API_TOKEN` with your email in `JIRA_EMAIL` and the site URL in `JIRA_BASE_URL`, used as basic auth.
If something is missing, say what and stop; do not invent numbers.
### Steps
1. **Query your open issues** (Jira): Call `GET /rest/api/3/search/jql` with `jql=assignee = currentUser() AND statusCategory != Done ORDER BY priority DESC, duedate ASC`, `fields=summary,status,priority,duedate,project,updated` and `maxResults=100`. Follow `nextPageToken` until `isLast` is true.
2. **Pull out what is due**: An issue is overdue when `duedate` is before today, and due this week when it falls between today and the end of the week (the same split as `duedate < startOfDay()` and `duedate <= endOfWeek()` in JQL). Issues without a due date stay in their priority group.
3. **Group the rest by priority**: Bucket by `priority.name` (Highest, High, Medium, Low, Lowest, or your site's own scheme) and keep due-date order inside each bucket. Mark any issue whose `updated` is more than 10 days old.
4. **Write the summary**: Lead with three counts: open, overdue, due this week. Then the overdue and due-this-week issues with key, summary, status and due date, one line per priority group after that, and a link for each key to `https://<site>.atlassian.net/browse/<KEY>`.
## Route B: the browser
### What you need
- Signed in to Atlassian with the Jira account whose work you want to see; it needs Browse permission on the projects, which any assignee already has.
If something is missing, say what and stop; do not invent numbers.
### Steps
Start at https://home.atlassian.com/. The user is signed in already; never type passwords or codes, and ask if a sign-in page appears.
1. **Open the work item search**: From Atlassian Home, open Jira (the site is `https://<site>.atlassian.net`). In the left sidebar choose **Filters**, then **View all work items**. Jira now calls issues "work items" in its interface; the JQL below is unchanged.
2. **Switch to JQL and run the query**: Click **JQL** next to the search bar (the toggle may read **Switch to JQL**) and enter `assignee = currentUser() AND statusCategory != Done ORDER BY priority DESC, duedate ASC`. Use list view, and under **Columns** make sure Key, Summary, Status, Priority, Due date and Updated are shown.
3. **Read what is due**: The total sits above the list. Rows with a due date before today are overdue, rows due through the end of this week are due this week. For exact counts run the same JQL twice more with `AND duedate < startOfDay()` and `AND duedate >= startOfDay() AND duedate <= endOfWeek()`.
4. **Group the rest and mark the quiet ones**: Read the remaining rows in priority order, keeping due-date order inside each priority. Mark any row whose Updated value is more than 10 days ago, or run the query once more with `AND updated <= -10d`.
5. **Write the summary**: Three counts first (open, overdue, due this week), then the overdue and due-this-week rows with key, summary, status and due date, one line per priority after that, and the quiet rows at the end. Each key links to `https://<site>.atlassian.net/browse/<KEY>`.
Note: The list shows 50 rows per page; past 100 open items, use **Export work items** (CSV) and read the file instead of paging. Sites still on the old navigation have the same list under **Your work** > **Assigned to me**, sorted by last update rather than due date.
## The report
- **Counts**: open issues, overdue, due this week.
- **Overdue**: key, summary, status and how many days late.
- **Due this week**: key, summary, status and the day it is due.
- **By priority**: everything else under Highest, High, Medium and Low.
- **Gone quiet**: issues you have not updated in 10 days or more.
- One line on what to pick up first.
## Post it to Briefkin
When `BRIEFKIN_TOKEN` is set, or `~/.config/briefkin/env` exists (the installer from https://briefkin.dev/docs writes it), also send the result to the user's Briefkin board as one card. Keep the `item_key` the same on every run so the card updates in place, use a new `event_id` per run, and put today's real numbers in place of the example ones. If the request fails, say so once and carry on.
```bash
[ -n "${BRIEFKIN_TOKEN:-}" ] || . ~/.config/briefkin/env
curl -sS -X POST "${BRIEFKIN_URL:-https://briefkin.dev}/v1/events" \
-H "authorization: Bearer $BRIEFKIN_TOKEN" \
-H "content-type: application/json" \
-d @- <<'JSON'
{
"v": 1,
"event_id": "jira-my-open-issues-summary/<date of this run, e.g. 2026-10-16>",
"item_key": "jira-my-open-issues-summary",
"project": "Acme",
"source": "Jira: my open issues, summarized skill",
"kind": "update",
"title": "2 overdue, 3 due this week",
"summary": "**14 open** issues are assigned to you. ACME-482 is 3 days late and Highest priority: start there.",
"widget": [
{
"type": "Table",
"props": {
"columns": [
"Issue",
"Priority",
"Status",
"Due"
],
"align": [
"left",
"left",
"left",
"right"
],
"rows": [
[
"ACME-482 Refund webhook retries on a 502",
"Highest",
"In Progress",
"Oct 13, 3 days late"
],
[
"ACME-455 CSV export drops rows past 10,000",
"High",
"To Do",
"Oct 15, 1 day late"
],
[
"ACME-501 Audit log entry for SSO logins",
"High",
"In Review",
"Today"
],
[
"ACME-497 Retry button on failed imports",
"Medium",
"To Do",
"Today"
],
[
"ACME-510 Empty state for the reports page",
"Medium",
"To Do",
"Oct 17"
]
]
}
},
{
"type": "Badges",
"props": {
"items": [
{
"label": "Highest 1",
"tone": "bad"
},
{
"label": "High 4",
"tone": "warn"
},
{
"label": "Medium 6"
},
{
"label": "Low 3"
},
{
"label": "2 quiet for 10+ days",
"tone": "info"
}
]
}
}
]
}
JSON
```
Widgets come from the Briefkin catalog (https://briefkin.dev/v1/catalog). Without a token, just give the user the report.
## Run it on a schedule
Suggested: Weekdays at 8:30 (`30 8 * * 1-5`). From cron, with the agent signed in on that machine:
```bash
30 8 * * 1-5 claude -p "Run the jira-my-open-issues-summary skill"
# Codex: codex exec, Gemini CLI: gemini -p, Copilot CLI: copilot -p, OpenCode: opencode run
```
Or use the agent's own scheduler (Claude Code routines, Codex automations, Claude or ChatGPT scheduled tasks): https://briefkin.dev/skills/jira-my-open-issues-summary#schedule
Source: https://briefkin.dev/skills/jira-my-open-issues-summary
A Jira Cloud user who can browse the projects your issues are in; the query only returns what that user can see.
A Jira MCP server or connector, or an API token from id.atlassian.com in JIRA_API_TOKEN with your email in JIRA_EMAIL and the site URL in JIRA_BASE_URL, used as basic auth.
https://mcp.atlassian.com/v2/mcp. In Claude, add the Atlassian connector from the directory; in Claude Code, run claude mcp add --transport http atlassian https://mcp.atlassian.com/v2/mcp and authenticate with /mcp. It signs in with OAuth 2.1 or an API token and respects your Jira permissions (getting started).acli jira auth login, acli jira workitem search --jql "sprint in openSprints()" --json returns the same issues from a terminal.JIRA_EMAIL, JIRA_API_TOKEN and JIRA_BASE_URL (https://acme.atlassian.net) and uses basic auth. A scoped token limited to read:jira-work and read:jira-user is narrower; scoped tokens call https://api.atlassian.com/ex/jira/{cloudId} instead of your site URL.A classic token can do anything your account can, so prefer a scoped token with read scopes only, or an account that just has Browse permission on the projects in the report.
Yes, unless you narrow it. currentUser() matches your account across the whole site. To keep it to some projects, add AND project in (ACME, WEB) to the JQL; to drop sub-tasks, add AND issuetype not in subTaskIssueTypes().
Then the overdue and due-this-week sections stay empty and the report is grouped by priority alone. If you plan by sprint, add AND sprint in openSprints() so the list is what you committed to, and order by Rank to match the board.
No. The skill runs with your own agent and gives you the report in the chat. With a Briefkin token set, each run also posts it to your board as a report card, so you can glance at it instead of asking again.
Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot CLI, OpenCode, Windsurf and Amp all read SKILL.md files. The install command puts it in ~/.claude/skills and ~/.agents/skills, where they look. ChatGPT, the Claude app and Grok take the prompt instead. Pick your agent under "Install and run it" and the commands change to match.
Yes. Switch the data source to "Your browser" and the steps change to the Jira pages themselves: the agent opens home.atlassian.com in a browser you are signed in to and reads the numbers off the page. Claude Code, Codex, Cursor, Claude app and ChatGPT can drive a browser out of the box; Gemini CLI, Copilot CLI and OpenCode need a Playwright or Chrome DevTools MCP server first. It is slower than the API and needs you signed in, so it suits a report you run by hand or from a scheduler on your own computer.
Skills are free to use with any agent. Briefkin is where their results land: one board for every report, number and question your agents send, with a ping when something needs you.
Free during the open beta. No card.