38 tasks done this week across 4 lists
38 done, 27 in progress and 5 blocked across Web, Mobile, Content and Ops. 14 tasks are due next week, and 3 of them are already blocked.
Every Friday: tasks completed, in progress and blocked in each ClickUp list, and what is due next week, ready for the weekly update.
What lands on your board
38 done, 27 in progress and 5 blocked across Web, Mobile, Content and Ops. 14 tasks are due next week, and 3 of them are already blocked.
Friday's status update in ClickUp usually means switching between list views, counting what closed and copying blockers into a doc. Project managers do it from memory when the week was busy, and the blocked task that matters most gets left out.
The agent reads each list you name, counts what was completed this week, what is in progress and what is blocked, and lists the tasks due next week. Each blocked task comes with its assignee and what it is waiting on, so the update says what is needed, not only what is late.
For each list call GET /api/v2/list/{list_id}/task with include_closed=true, subtasks=true and date_done_gt set to Monday 00:00 in Unix milliseconds, paging with page (100 tasks per page).
Call the same endpoint without include_closed and read each task's status.status, assignees and dependencies. A task is blocked when its status is your blocked status (Blocked by default) or it waits on another open task.
Call it once more with due_date_gt next Monday and due_date_lt the Sunday after, in milliseconds, and mark the ones that are already blocked.
One row per list with done, in progress, blocked and due next week; then the blocked tasks with assignee and what they wait on; then next week's due tasks. Save the done count so next Friday can compare.
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/clickup-weekly-status-report/install | shAsk Claude Code:
promptRun the clickup-weekly-status-report skillOr paste the prompt instead of installing:
promptUsing ClickUp (the ClickUp MCP server or API v2), for each of these lists: <list IDs>, count the tasks completed since Monday, the tasks in progress, and the tasks blocked (status Blocked, or waiting on another open task). List the blocked tasks with assignee and what they wait on, and the tasks due next week with the blocked ones marked. Present one row per list, then the blocked tasks, then next week. End with the one blocker I should clear first.Fridays at 15:00, from cron on any machine where Claude Code is signed in:
crontab0 15 * * 5 claude -p "Run the clickup-weekly-status-report 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: clickup-weekly-status-report
description: "Every Friday: tasks completed, in progress and blocked in each ClickUp list, and what is due next week, ready for the weekly update. Use when the user asks for this, or when it runs on a schedule."
---
# ClickUp weekly status report
Every Friday: tasks completed, in progress and blocked in each ClickUp list, and what is due next week, ready for the weekly update.
Friday's status update in ClickUp usually means switching between list views, counting what closed and copying blockers into a doc. Project managers do it from memory when the week was busy, and the blocked task that matters most gets left out.
The agent reads each list you name, counts what was completed this week, what is in progress and what is blocked, and lists the tasks due next week. Each blocked task comes with its assignee and what it is waiting on, so the update says what is needed, not only what is late.
## 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
- The official ClickUp MCP server (`https://mcp.clickup.com/mcp`, OAuth), or a personal API token in `CLICKUP_API_TOKEN` for API v2.
- The list IDs to cover, and the status name your team uses for blocked work.
If something is missing, say what and stop; do not invent numbers.
### Steps
1. **Count what was completed** (ClickUp): For each list call `GET /api/v2/list/{list_id}/task` with `include_closed=true`, `subtasks=true` and `date_done_gt` set to Monday 00:00 in Unix milliseconds, paging with `page` (100 tasks per page).
2. **Read the open work** (ClickUp): Call the same endpoint without `include_closed` and read each task's `status.status`, `assignees` and `dependencies`. A task is blocked when its status is your blocked status (Blocked by default) or it waits on another open task.
3. **Find next week's due dates** (ClickUp): Call it once more with `due_date_gt` next Monday and `due_date_lt` the Sunday after, in milliseconds, and mark the ones that are already blocked.
4. **Write the report**: One row per list with done, in progress, blocked and due next week; then the blocked tasks with assignee and what they wait on; then next week's due tasks. Save the done count so next Friday can compare.
## Route B: the browser
### What you need
- Signed in to ClickUp as a member or guest with view access to each List; the Dependencies column needs the ClickApp enabled in the Space.
If something is missing, say what and stop; do not invent numbers.
### Steps
Start at https://app.clickup.com. The user is signed in already; never type passwords or codes, and ask if a sign-in page appears.
1. **Open each list**: Open `https://app.clickup.com`, which opens your Workspace. In the sidebar open the first List you report on, in **List** view, grouped by **Status**.
2. **Count the week's completions**: Turn on **Show closed** (the **Closed** toggle in the view bar) and add a filter **Date closed** is **This week**. Count the closed tasks, then remove that filter.
3. **Read open and blocked work**: With closed tasks hidden again, count tasks in your in-progress statuses and in **Blocked**. Show the **Dependencies** column: a task that is "waiting on" another open task counts as blocked too. Note each blocked task's assignee and what it waits on.
4. **Find next week's due dates**: Add a filter **Due date** is **Next week** and note the tasks, marking the ones that are already blocked. Repeat the three filters for each List.
5. **Write the report**: One row per list with done, in progress, blocked and due next week, then the blocked tasks with assignee and what they wait on, then next week's due tasks and the blocker to clear first.
Note: Filters you add to a shared view are saved for everyone unless you discard them; use the filter bar's temporary filters or a personal view. For more than five or six Lists, a ClickUp Dashboard with status and closed-this-week cards is quicker than filtering each List.
## The report
- **Per list**: done this week, in progress, blocked, and due next week.
- **Blocked tasks**: task, list, assignee and what it waits on.
- **Due next week**, with the blocked ones marked.
- One line on the blocker to clear 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": "clickup-weekly-status-report/<date of this run, e.g. 2026-10-16>",
"item_key": "clickup-weekly-status-report",
"project": "Acme",
"source": "ClickUp weekly status report skill",
"kind": "update",
"title": "38 tasks done this week across 4 lists",
"summary": "**38 done**, **27 in progress** and **5 blocked** across Web, Mobile, Content and Ops. **14 tasks** are due next week, and 3 of them are already blocked.",
"widget": [
{
"type": "Table",
"props": {
"columns": [
"List",
"Done",
"In progress",
"Blocked",
"Due next week"
],
"align": [
"left",
"right",
"right",
"right",
"right"
],
"rows": [
[
"Web",
14,
9,
2,
5
],
[
"Mobile",
9,
8,
1,
4
],
[
"Content",
11,
6,
0,
3
],
[
"Ops",
4,
4,
2,
2
]
]
}
},
{
"type": "Table",
"props": {
"columns": [
"Blocked task",
"List",
"Assignee",
"Waiting on"
],
"align": [
"left",
"left",
"left",
"left"
],
"rows": [
[
"Checkout redesign QA",
"Web",
"Sam",
"Payment sandbox access"
],
[
"Pricing page copy",
"Web",
"Dana",
"Final prices"
],
[
"Push notification opt-in",
"Mobile",
"Lena",
"Legal review"
],
[
"Status page migration",
"Ops",
"Theo",
"DNS change approval"
],
[
"Backup restore drill",
"Ops",
"Marco",
"Maintenance window"
]
]
}
},
{
"type": "Callout",
"props": {
"text": "3 of next week's 14 due tasks are blocked: checkout redesign QA, push notification opt-in and the status page migration.",
"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: Fridays at 15:00 (`0 15 * * 5`). From cron, with the agent signed in on that machine:
```bash
0 15 * * 5 claude -p "Run the clickup-weekly-status-report 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/clickup-weekly-status-report#schedule
Source: https://briefkin.dev/skills/clickup-weekly-status-report
The official ClickUp MCP server (https://mcp.clickup.com/mcp, OAuth), or a personal API token in CLICKUP_API_TOKEN for API v2.
The list IDs to cover, and the status name your team uses for blocked work.
https://mcp.clickup.com/mcp, OAuth only. In Claude Code, run claude mcp add --transport http clickup https://mcp.clickup.com/mcp, then /mcp to sign in and choose Workspaces; Cursor has an official ClickUp plugin or takes the URL in mcp.json, and Codex and other clients use the same URL. It has about 50 tools for search, tasks, comments, time tracking, Docs and Chat, writes included. Without the Everything AI add-on, calls are capped per Workspace over a rolling 24 hours (100 on Free Forever, 300 on Unlimited, 1,000 on Business), shared by every connected client (docs).pk_), store it in CLICKUP_API_TOKEN with CLICKUP_TEAM_ID, and send it in the Authorization header with no Bearer prefix.A personal token has no scopes and can do anything your account can, so for unattended reports create it on a separate member account that can see only the spaces in the report.
Yes. As of October 2026, without the Everything AI add-on, ClickUp caps MCP calls per workspace per rolling 24 hours (100 on Free Forever, 300 on Core, formerly Unlimited, 1,000 on Business, 2,500 on Business Plus). A weekly report over a few lists fits easily; for many lists, use the REST API with a token, which follows the normal API limits.
Either its status is the one you call blocked, or it has a dependency on a task that is still open. Name your status in the prompt if it is not "Blocked", for example "Waiting on client".
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 ClickUp pages themselves: the agent opens app.clickup.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.