Line up your Asana tasks for today in priority order

Weekday mornings: your Asana tasks due today and the ones already overdue, in the order to do them, with the first one to start on.

Runs
Weekdays at 8:00
Uses
Asana
Posts
Report card

From your apps to your board

How the skill works: your agent reads workspace from Asana, weekdays at 8:00, and gives you report card and the report in the chat.

Reads

  • AsanaWorkspace
reads
Your agentClaude Code, Codex, Cursor or GeminiWeekdays at 8:00
posts

You get

  • Report cardOn your board, updated in place every run
  • The report in the chatEvery run, with or without Briefkin

What you get

  • How many tasks are due today and how many are overdue.
  • The list in order: task, project, due, priority.
  • The task to start with, and why.
  • Tasks whose due date keeps moving.

The card on the right is a sample. Yours shows your own numbers and updates in place every run.

What lands on your board

AcmeAsana my tasks today · Claude Code

7 tasks today, 2 of them overdue

Start with Send revised quote to Fieldstone: overdue since Wednesday and marked High.

#TaskProjectDuePriority
1Send revised quote to FieldstoneSalesOverdue 2 daysHigh
2Review Q1 hiring planOpsOverdue 1 dayMedium
3Approve homepage hero copyWebsite relaunchToday 11:00High
4Outline the board updateBoardTodayHigh
5Sign off on September closeFinanceTodayMedium
6Reply to podcast inviteMarketingTodayLow
7Submit offsite expensesOpsTodayLow

Review Q1 hiring plan has had its due date moved 3 times. Give it a fixed slot today or a realistic new date.

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

What it does

My Tasks in Asana shows everything assigned to you, sorted however you last left it. On a busy morning the question is narrower: what is due today, what slipped, and which one first.

The agent pulls your open tasks across projects, keeps the ones due today or earlier, and orders them: overdue first, then by your Priority field if you have one, then by time of day. The card says where to start, and which overdue task has been pushed so often that it needs a real new date.

How it works

  1. 1Find your workspace

    Call GET /users/me for your gid and workspaces, and use the workspace you work in (or each of them, one card per workspace).

  2. 2Pull your open tasks

    Call GET /tasks?assignee=me&workspace={workspace_gid}&completed_since=now&opt_fields=name,due_on,due_at,projects.name,custom_fields.name,custom_fields.display_value,permalink_url. Asana requires the workspace whenever you filter by assignee.

  3. 3Keep today and overdue

    Keep tasks with due_on today or earlier, or a due_at before midnight in your timezone. For the overdue ones, count the due_date_changed stories from GET /tasks/{task_gid}/stories.

  4. 4

    4Put them in order

    Overdue first with the oldest due date on top, then a Priority custom field (High, Medium, Low) if your workspace has one, then tasks with a due time in time order, then the rest by project.

  5. 5

    5Write the list

    A numbered list with project, due and priority, the task to start on, and a note on any task whose due date has moved three times or more.

  6. 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.

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

    Ask Claude Code:

    promptRun the asana-my-tasks-today skill

    Or paste the prompt instead of installing:

    promptFrom Asana (read only), list my incomplete tasks in my workspace (assignee=me with the workspace, completed_since=now) and keep the ones due today or earlier. Order them: overdue first with the oldest due date on top, then by my Priority custom field if there is one (High, Medium, Low), then tasks with a due time in time order, then the rest by project. Give me a numbered list with task, project, due and priority, tell me which one to start with and why, and point out any overdue task whose due date has been changed three or more times.
  3. Put it on a schedule

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

    crontab0 8 * * 1-5 claude -p "Run the asana-my-tasks-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: asana-my-tasks-today
description: "Weekday mornings: your Asana tasks due today and the ones already overdue, in the order to do them, with the first one to start on. Use when the user asks for this, or when it runs on a schedule."
---

# Asana my tasks today

Weekday mornings: your Asana tasks due today and the ones already overdue, in the order to do them, with the first one to start on.

My Tasks in Asana shows everything assigned to you, sorted however you last left it. On a busy morning the question is narrower: what is due today, what slipped, and which one first.

The agent pulls your open tasks across projects, keeps the ones due today or earlier, and orders them: overdue first, then by your Priority field if you have one, then by time of day. The card says where to start, and which overdue task has been pushed so often that it needs a real new date.

## 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

- Your own Asana account through the Asana MCP server or connector, or a personal access token in `ASANA_ACCESS_TOKEN`; read access is enough.

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

### Steps

1. **Find your workspace** (Asana): Call `GET /users/me` for your gid and workspaces, and use the workspace you work in (or each of them, one card per workspace).
2. **Pull your open tasks** (Asana): Call `GET /tasks?assignee=me&workspace={workspace_gid}&completed_since=now&opt_fields=name,due_on,due_at,projects.name,custom_fields.name,custom_fields.display_value,permalink_url`. Asana requires the workspace whenever you filter by assignee.
3. **Keep today and overdue** (Asana): Keep tasks with `due_on` today or earlier, or a `due_at` before midnight in your timezone. For the overdue ones, count the `due_date_changed` stories from `GET /tasks/{task_gid}/stories`.
4. **Put them in order**: Overdue first with the oldest due date on top, then a Priority custom field (High, Medium, Low) if your workspace has one, then tasks with a due time in time order, then the rest by project.
5. **Write the list**: A numbered list with project, due and priority, the task to start on, and a note on any task whose due date has moved three times or more.

## Route B: the browser

### What you need

- Signed in to your own Asana account; My tasks only ever shows the signed-in person's tasks, so no extra permission is needed.

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

### Steps

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

1. **Open My tasks**: Click **My tasks** in the left sidebar and switch to the **List** tab. If you belong to several workspaces, pick the one to report on from the switcher at the top left; My tasks is per workspace.
2. **Keep today and overdue**: Click **Filter** and choose **Incomplete tasks**, then **Sort: Due date**. Read every task whose due date is today or earlier; tasks with no due date drop to the bottom and are left out. Show the **Projects** and **Priority** columns through the **+** at the end of the header if they are hidden.
3. **Check how often the overdue ones moved**: Open each overdue task and scroll its activity at the bottom; count the "changed the due date" entries. Three or more earns a note.
4. **Order and write the list**: Overdue first with the oldest due date on top, then by Priority (High, Medium, Low), then tasks with a due time in time order, then the rest by project. Name the task to start with and why.

Note: My tasks shows one workspace at a time; switch workspaces and repeat for another. The activity feed hides older entries behind a **Show more** link on busy tasks, so the agent clicks it before counting.

## The report

- How many tasks are due today and how many are overdue.
- The list in order: task, project, due, priority.
- The task to start with, and why.
- Tasks whose due date keeps moving.

## 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": "asana-my-tasks-today/<date of this run, e.g. 2026-10-16>",
  "item_key": "asana-my-tasks-today",
  "project": "Acme",
  "source": "Asana my tasks today skill",
  "kind": "update",
  "title": "7 tasks today, 2 of them overdue",
  "summary": "Start with **Send revised quote to Fieldstone**: overdue since Wednesday and marked High.",
  "widget": [
    {
      "type": "Table",
      "props": {
        "columns": [
          "#",
          "Task",
          "Project",
          "Due",
          "Priority"
        ],
        "rows": [
          [
            1,
            "Send revised quote to Fieldstone",
            "Sales",
            "Overdue 2 days",
            "High"
          ],
          [
            2,
            "Review Q1 hiring plan",
            "Ops",
            "Overdue 1 day",
            "Medium"
          ],
          [
            3,
            "Approve homepage hero copy",
            "Website relaunch",
            "Today 11:00",
            "High"
          ],
          [
            4,
            "Outline the board update",
            "Board",
            "Today",
            "High"
          ],
          [
            5,
            "Sign off on September close",
            "Finance",
            "Today",
            "Medium"
          ],
          [
            6,
            "Reply to podcast invite",
            "Marketing",
            "Today",
            "Low"
          ],
          [
            7,
            "Submit offsite expenses",
            "Ops",
            "Today",
            "Low"
          ]
        ]
      }
    },
    {
      "type": "Callout",
      "props": {
        "text": "Review Q1 hiring plan has had its due date moved 3 times. Give it a fixed slot today or a realistic new date.",
        "tone": "warn"
      }
    }
  ]
}
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:00 (`0 8 * * 1-5`). From cron, with the agent signed in on that machine:

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

Source: https://briefkin.dev/skills/asana-my-tasks-today

What your agent needs

  • Your own Asana account through the Asana MCP server or connector, or a personal access token in ASANA_ACCESS_TOKEN; read access is enough.

Connecting Asana

  1. Asana MCP server, Asana's official remote server at https://mcp.asana.com/v2/mcp, signed in with OAuth. Asana also offers an Asana app for Claude; the older beta endpoint (/sse) is deprecated (docs).
  2. API with a personal access token. Create one in the Asana developer console, store it in ASANA_ACCESS_TOKEN with ASANA_WORKSPACE_GID, and send it as a Bearer token.
  3. OAuth app. For a shared or unattended setup, an OAuth app can request narrower scopes such as tasks:read and projects:read.

A personal access token carries all of your Asana permissions, so for scheduled runs use read-scoped OAuth or a separate account with comment-only access to the projects in the report.

Questions

Does it include tasks other people assigned me this morning?

Yes: anything assigned to you and due by today, whoever assigned it and whichever project it sits in. Tasks with no due date stay out unless you ask for them, so the list stays about today.

I have several Asana workspaces. Does it cover all of them?

It runs per workspace, since Asana scopes the assignee filter to one. Ask for all of them and the agent repeats the query for each workspace listed by GET /users/me, posting one card per workspace.

Do I need Briefkin to use the Asana my tasks 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 Asana pages themselves: the agent opens app.asana.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.

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.