See your Linear issues for today, by priority and due date

Each weekday morning: the Linear issues assigned to you, Urgent and due today first, split into the current cycle and everything else.

Runs
Weekdays at 8:15
Uses
Linear
Posts
Report card

What lands on your board

AcmeLinear my issues today · Claude Code

Start with ENG-917: Urgent and due today

9 open issues are assigned to you, 6 in Cycle 42. One is overdue, one is due today, and ENG-874 got a comment from Sara overnight.

IssuePriorityStateDue
ENG-917 Webhook retries flood the queueUrgentIn ProgressToday
ENG-901 Proration rounding on annual plansHighTodoOct 14, 2 days late
ENG-874 Plan picker shows old pricesHighIn Review
ENG-889 Plan IDs in the invoice exportMediumTodoOct 20
ENG-912 Flaky test in checkout.specMediumTodo
ENG-895 Remove the v1 pricing tableLowTodo

3 more sit in the backlog outside the cycle, none of them Urgent.

Done
An example with made-up numbers. Your agent posts your real ones.

What it does

If you start the day in the terminal, opening Linear just to decide what to work on is a context switch you can skip. My Issues also mixes the cycle you are in with everything in your backlog, and it does not say what changed overnight.

The agent asks Linear for your open issues, puts Urgent and anything due today on top, separates the current cycle from the rest, and notes issues that picked up a comment, a priority change or a new due date since yesterday. The card ends with the one issue to start on.

How it works

  1. 1Fetch your open issues

    Query viewer { assignedIssues(first: 100, filter: { state: { type: { nin: ["completed", "canceled"] } } }) { nodes { identifier title priority dueDate state { name type } cycle { number isActive } updatedAt url } } }.

  2. 2

    2Sort by priority and date

    Linear priorities are numbers: 1 Urgent, 2 High, 3 Medium, 4 Low, 0 No priority. Sort 1 to 4 with 0 last, then by dueDate. Anything with a dueDate before today is overdue.

  3. 3Check what changed overnight

    For issues with updatedAt in the last 24 hours, read comments(last: 1) and history(last: 5) to see a new comment, a priority change or a moved due date, and who made it.

  4. 4

    4Write the day plan

    Overdue and due today first, then Urgent and High in the active cycle, then the rest of the cycle, then a count of issues outside it. Leave triage and backlog issues out unless they are Urgent.

  5. Post it to the board

    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.

What you get

  • Due: overdue and due today, with how late.
  • This cycle: your Urgent and High issues, then the rest.
  • Changed overnight: new comments, priority bumps and new due dates, with who made them.
  • Outside the cycle: a count, naming any Urgent ones.
  • The issue to start with.

Install and run it

Pick your agent, where the data comes from and how to schedule it; the commands below follow.

Agent
Data
Schedule
  1. Install the skill

    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/linear-my-issues-today/install | sh
  2. Run it

    Ask Claude Code:

    promptRun the linear-my-issues-today skill

    Or paste the prompt instead of installing:

    promptUsing the Linear GraphQL API (or the Linear MCP server), get my assigned issues that are not completed or canceled (viewer.assignedIssues), with identifier, title, priority, dueDate, state, cycle and updatedAt. Put overdue and due-today issues first, then issues in the active cycle sorted Urgent, High, Medium, Low, then No priority, then a count of what is outside the cycle. For issues updated in the last 24 hours, tell me what changed (new comment, priority, due date) and who changed it. End with the one issue I should start with and why.
  3. Put it on a schedule

    Weekdays at 8:15, from cron on any machine where Claude Code is signed in:

    crontab15 8 * * 1-5 claude -p "Run the linear-my-issues-today 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.

  4. Send it to your board

    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

View the SKILL.mdRaw file
SKILL.md---
name: linear-my-issues-today
description: "Each weekday morning: the Linear issues assigned to you, Urgent and due today first, split into the current cycle and everything else. Use when the user asks for this, or when it runs on a schedule."
---

# Linear my issues today

Each weekday morning: the Linear issues assigned to you, Urgent and due today first, split into the current cycle and everything else.

If you start the day in the terminal, opening Linear just to decide what to work on is a context switch you can skip. My Issues also mixes the cycle you are in with everything in your backlog, and it does not say what changed overnight.

The agent asks Linear for your open issues, puts Urgent and anything due today on top, separates the current cycle from the rest, and notes issues that picked up a comment, a priority change or a new due date since yesterday. The card ends with the one issue to start on.

## 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 Linear seat; the API returns issues only from teams you are a member of.
- The Linear MCP server or connector, or a personal API key (created under Settings > Account > Security & access) in `LINEAR_API_KEY`.

If something is missing, say what and stop; do not invent numbers.

### Steps

1. **Fetch your open issues** (Linear): Query `viewer { assignedIssues(first: 100, filter: { state: { type: { nin: ["completed", "canceled"] } } }) { nodes { identifier title priority dueDate state { name type } cycle { number isActive } updatedAt url } } }`.
2. **Sort by priority and date**: Linear priorities are numbers: 1 Urgent, 2 High, 3 Medium, 4 Low, 0 No priority. Sort 1 to 4 with 0 last, then by `dueDate`. Anything with a `dueDate` before today is overdue.
3. **Check what changed overnight** (Linear): For issues with `updatedAt` in the last 24 hours, read `comments(last: 1)` and `history(last: 5)` to see a new comment, a priority change or a moved due date, and who made it.
4. **Write the day plan**: Overdue and due today first, then Urgent and High in the active cycle, then the rest of the cycle, then a count of issues outside it. Leave `triage` and `backlog` issues out unless they are Urgent.

## Route B: the browser

### What you need

- Signed in to Linear with your own account in the workspace, since My Issues always shows the signed-in user's work.

If something is missing, say what and stop; do not invent numbers.

### Steps

Start at https://linear.app/. The user is signed in already; never type passwords or codes, and ask if a sign-in page appears.

1. **Open My Issues**: Linear opens your last workspace; switch with the workspace menu in the top left if you have several. Click **My Issues** in the sidebar and stay on the **Assigned** tab, which lists only issues assigned to you that are not completed or canceled.
2. **Set the view**: Open **View options** (the sliders icon in the top right). Set **Grouping** to `Cycle`, **Ordering** to `Priority`, and under **Display properties** turn on `Due date`, `Status` and `Updated`.
3. **Read what is due**: Due dates in the past show in red and today's in orange. Note those issues first, then the Urgent and High rows in the group for the active cycle, then the rest of that group.
4. **Check overnight changes**: For each issue whose **Updated** value is under a day, open it and read the activity feed under the description for a new comment, a priority change or a new due date, and who made it. Close it with `Esc` and move on.
5. **Count the rest**: Collapse the cycle group and count the issues in the Backlog and no-cycle groups, noting any marked Urgent. Then write the day plan ending with the one issue to start on.

Note: My Issues also has Created and Subscribed tabs; the Assigned tab is the one that matches this report. The Updated column shows a relative time, so an issue touched 23 hours ago and one touched 25 hours ago both read as about a day.

## The report

- **Due**: overdue and due today, with how late.
- **This cycle**: your Urgent and High issues, then the rest.
- **Changed overnight**: new comments, priority bumps and new due dates, with who made them.
- **Outside the cycle**: a count, naming any Urgent ones.
- The issue to start with.

## 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": "linear-my-issues-today/<date of this run, e.g. 2026-10-16>",
  "item_key": "linear-my-issues-today",
  "project": "Acme",
  "source": "Linear my issues today skill",
  "kind": "update",
  "title": "Start with ENG-917: Urgent and due today",
  "summary": "9 open issues are assigned to you, **6 in Cycle 42**. One is overdue, one is due today, and ENG-874 got a comment from Sara overnight.",
  "widget": [
    {
      "type": "Table",
      "props": {
        "columns": [
          "Issue",
          "Priority",
          "State",
          "Due"
        ],
        "align": [
          "left",
          "left",
          "left",
          "right"
        ],
        "rows": [
          [
            "ENG-917 Webhook retries flood the queue",
            "Urgent",
            "In Progress",
            "Today"
          ],
          [
            "ENG-901 Proration rounding on annual plans",
            "High",
            "Todo",
            "Oct 14, 2 days late"
          ],
          [
            "ENG-874 Plan picker shows old prices",
            "High",
            "In Review",
            ""
          ],
          [
            "ENG-889 Plan IDs in the invoice export",
            "Medium",
            "Todo",
            "Oct 20"
          ],
          [
            "ENG-912 Flaky test in checkout.spec",
            "Medium",
            "Todo",
            ""
          ],
          [
            "ENG-895 Remove the v1 pricing table",
            "Low",
            "Todo",
            ""
          ]
        ]
      }
    },
    {
      "type": "Text",
      "props": {
        "text": "3 more sit in the backlog outside the cycle, none of them Urgent.",
        "variant": "muted"
      }
    }
  ]
}
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:15 (`15 8 * * 1-5`). From cron, with the agent signed in on that machine:

```bash
15 8 * * 1-5 claude -p "Run the linear-my-issues-today 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/linear-my-issues-today#schedule

Source: https://briefkin.dev/skills/linear-my-issues-today

What your agent needs

  • A Linear seat; the API returns issues only from teams you are a member of.

  • The Linear MCP server or connector, or a personal API key (created under Settings > Account > Security & access) in LINEAR_API_KEY.

Connecting Linear

  1. Linear MCP server, Linear's official remote server at https://mcp.linear.app/mcp. Add Linear from Claude's connector directory, or run claude mcp add --transport http linear https://mcp.linear.app/mcp in Claude Code, and sign in with OAuth.
  2. GraphQL API with a personal API key. Create a key in Linear's settings under Security & access, store it in LINEAR_API_KEY, and send it as the Authorization header with no Bearer prefix. For a workspace bot, an OAuth app with the read scope does the same job.

When you create the key, give it Read access and only the teams in the report; it then can't create or edit issues.

Questions

Does it include issues I follow but am not assigned?

No, only assignedIssues. Add viewer.createdIssues, or a subscribers filter, if you want issues you reported or follow, and keep them in their own section so the day plan stays about your own work.

Most of our issues have no priority.

No priority sorts last, after Low, the same way Linear sorts it. If that covers most of your list, ask the skill to sort by cycle and sortOrder instead, which follows the manual order on your board.

Do I need Briefkin to use the Linear my issues today skill?

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.

Which agents can run it?

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.

Can it work without an API or MCP server, from my browser?

Yes. Switch the data source to "Your browser" and the steps change to the Linear pages themselves: the agent opens linear.app 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.

Read this report on your board, not in a chat log

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.