See what moved in your Attio pipeline this week, and which deals went quiet

Every Monday: Attio deals by stage, the ones that are new or changed stage last week, and the deals with no movement or contact for 14 days.

Runs
Mondays at 8:00
Uses
Attio
Posts
Report card

From your apps to your board

How the skill works: your agent reads stages from Attio; deals list from What you tell it, mondays at 8:00, and gives you report card and the report in the chat.

Reads

  • AttioStages
  • What you tell itDeals list
reads
Your agentClaude Code, Codex, Cursor or GeminiMondays 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

  • Pipeline by stage: deal count and value.
  • New this week and moved stage, with from and to.
  • Gone quiet: no stage change and no email or meeting for 14 days, with the owner.
  • One line on the deal to raise first.

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

What lands on your board

AcmeAttio weekly pipeline report · Claude Code

6 deals moved stage, 4 have gone quiet

31 open deals worth $1.18M. 3 are new and 6 changed stage last week. 4 deals worth $261,000 have not moved or had an email or meeting in 14 days.

DealStageValueNote
Kestrel LabsNegotiation$140,000Quiet 14 days
NorthwindProposal$84,000Quiet 21 days
BluepeakDemo$22,000Quiet 17 days
HalcyonQualified$15,000Quiet 15 days
GlobexNegotiation$96,000Moved from Proposal
InitechWon$72,000Moved from Negotiation
Qualified 11Demo 8Proposal 7Negotiation 54 quiet
Done
An example with made-up numbers. Your agent posts your real ones.

What it does

Attio makes it easy to keep deals in a board, and just as easy to stop noticing the ones at the bottom of a column. A deal that has sat in Proposal for three weeks with no email or meeting looks exactly like one that moved yesterday.

The agent reads every deal and its stage history each Monday. It reports the board by stage, the deals that are new or changed stage in the last week, and the ones that have neither moved nor had an email or meeting for 14 days. Those are the deals to raise in the pipeline meeting.

How it works

  1. 1Read the stages

    GET /v2/objects/deals/attributes/stage/statuses for the stage titles in board order. Workspaces rename and add stages, so never assume the defaults.

  2. 2Read every deal

    POST /v2/objects/deals/records/query with limit: 500 and offset, taking name, stage (its status title and active_from), value, owner, associated_company and created_at. Through Attio's MCP server, use list-records on deals.

  3. 3

    3Find what moved

    New: created_at in the last 7 days. Moved: the current stage's active_from is in the last 7 days. To fetch only those, filter with {"stage": {"active_from": {"$gte": "<date>"}}}.

  4. 4Find deals gone quiet

    Open deals whose stage active_from is over 14 days old. For each, read the associated company's last_email_interaction and last_calendar_interaction; quiet means neither is in the last 14 days. These enriched attributes are not on every Attio plan, so fall back to stage age alone.

  5. 5

    5Write the report

    Deals and value by stage, then new and moved deals with from and to stages, then quiet deals with days since anything happened and the owner.

  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/attio-weekly-pipeline-report/install | sh
  2. Run it

    Ask Claude Code:

    promptRun the attio-weekly-pipeline-report skill

    Or paste the prompt instead of installing:

    promptUsing the Attio REST API (or Attio's MCP server), read the deal stages in order and every deal with its stage, the stage's active_from date, value, owner, associated company and created_at. Report open deals and value by stage. List deals created in the last 7 days and deals whose current stage became active in the last 7 days, with from and to stages. Then list open deals whose stage has not changed in 14 days and whose company has had no email or calendar interaction in 14 days (last_email_interaction, last_calendar_interaction, if available), with owner and days quiet. End with the deal to raise first.
  3. Put it on a schedule

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

    crontab0 8 * * 1 claude -p "Run the attio-weekly-pipeline-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.

  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: attio-weekly-pipeline-report
description: "Every Monday: Attio deals by stage, the ones that are new or changed stage last week, and the deals with no movement or contact for 14 days. Use when the user asks for this, or when it runs on a schedule."
---

# Attio weekly pipeline report

Every Monday: Attio deals by stage, the ones that are new or changed stage last week, and the deals with no movement or contact for 14 days.

Attio makes it easy to keep deals in a board, and just as easy to stop noticing the ones at the bottom of a column. A deal that has sat in Proposal for three weeks with no email or meeting looks exactly like one that moved yesterday.

The agent reads every deal and its stage history each Monday. It reports the board by stage, the deals that are new or changed stage in the last week, and the ones that have neither moved nor had an email or meeting for 14 days. Those are the deals to raise in the pipeline meeting.

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

- An Attio user or access token with `record_permission:read` and `object_configuration:read`.
- Attio's MCP server (`https://mcp.attio.com/mcp`, OAuth; read tools run without confirmation) or an access token in `ATTIO_ACCESS_TOKEN` for the REST API.

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

### Steps

1. **Read the stages** (Attio): `GET /v2/objects/deals/attributes/stage/statuses` for the stage titles in board order. Workspaces rename and add stages, so never assume the defaults.
2. **Read every deal** (Attio): `POST /v2/objects/deals/records/query` with `limit: 500` and `offset`, taking `name`, `stage` (its status title and `active_from`), `value`, `owner`, `associated_company` and `created_at`. Through Attio's MCP server, use `list-records` on deals.
3. **Find what moved**: New: `created_at` in the last 7 days. Moved: the current stage's `active_from` is in the last 7 days. To fetch only those, filter with `{"stage": {"active_from": {"$gte": "<date>"}}}`.
4. **Find deals gone quiet** (Attio): Open deals whose stage `active_from` is over 14 days old. For each, read the associated company's `last_email_interaction` and `last_calendar_interaction`; quiet means neither is in the last 14 days. These enriched attributes are not on every Attio plan, so fall back to stage age alone.
5. **Write the report**: Deals and value by stage, then new and moved deals with from and to stages, then quiet deals with days since anything happened and the owner.

## Route B: the browser

### What you need

- Signed in to Attio as a workspace member who can view the Deals object; saved views you create are visible to the team unless kept private.

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

### Steps

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

1. **Open the Deals object**: The URL opens the workspace you used last; switch from the workspace menu at the top left if needed. Open **Deals** in the left sidebar and use a **Kanban** view grouped by **Stage**, with column sums on Value turned on, to read the deal count and value per stage.
2. **Find what is new or moved**: Switch to a **Table** view. Filter **Created at** is within the last 7 days for new deals. Then filter on **Stage** with its time condition (when the deal entered its current stage) set to the last 7 days for moved deals; the record's activity feed shows the stage it came from.
3. **Find deals gone quiet**: Filter open stages whose entered date is more than 14 days ago. Add the company's **Last email interaction** and **Last calendar interaction** columns through the associated company; a deal is quiet when neither is in the last 14 days. If your plan has no interaction attributes, use stage age alone and say so.
4. **Write the report**: Deals and value by stage, new deals, moved deals with from and to, then the quiet list with days since anything happened and the owner, and the one deal to raise first.

Note: Attio's filter wording changes between releases; the two conditions that matter are when a deal entered its stage and the company's last email and calendar interaction, which is enrichment data not on every plan. Save the three filtered views once so later runs only open them.

## The report

- **Pipeline by stage**: deal count and value.
- **New this week** and **moved stage**, with from and to.
- **Gone quiet**: no stage change and no email or meeting for 14 days, with the owner.
- One line on the deal to raise 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": "attio-weekly-pipeline-report/<date of this run, e.g. 2026-10-16>",
  "item_key": "attio-weekly-pipeline-report",
  "project": "Acme",
  "source": "Attio weekly pipeline report skill",
  "kind": "update",
  "title": "6 deals moved stage, 4 have gone quiet",
  "summary": "**31 open deals** worth $1.18M. 3 are new and 6 changed stage last week. **4 deals** worth $261,000 have not moved or had an email or meeting in 14 days.",
  "widget": [
    {
      "type": "Table",
      "props": {
        "columns": [
          "Deal",
          "Stage",
          "Value",
          "Note"
        ],
        "align": [
          "left",
          "left",
          "right",
          "left"
        ],
        "rows": [
          [
            "Kestrel Labs",
            "Negotiation",
            "$140,000",
            "Quiet 14 days"
          ],
          [
            "Northwind",
            "Proposal",
            "$84,000",
            "Quiet 21 days"
          ],
          [
            "Bluepeak",
            "Demo",
            "$22,000",
            "Quiet 17 days"
          ],
          [
            "Halcyon",
            "Qualified",
            "$15,000",
            "Quiet 15 days"
          ],
          [
            "Globex",
            "Negotiation",
            "$96,000",
            "Moved from Proposal"
          ],
          [
            "Initech",
            "Won",
            "$72,000",
            "Moved from Negotiation"
          ]
        ]
      }
    },
    {
      "type": "Badges",
      "props": {
        "items": [
          {
            "label": "Qualified 11"
          },
          {
            "label": "Demo 8"
          },
          {
            "label": "Proposal 7"
          },
          {
            "label": "Negotiation 5"
          },
          {
            "label": "4 quiet",
            "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: Mondays at 8:00 (`0 8 * * 1`). From cron, with the agent signed in on that machine:

```bash
0 8 * * 1 claude -p "Run the attio-weekly-pipeline-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/attio-weekly-pipeline-report#schedule

Source: https://briefkin.dev/skills/attio-weekly-pipeline-report

What your agent needs

  • An Attio user or access token with record_permission:read and object_configuration:read.

  • Attio's MCP server (https://mcp.attio.com/mcp, OAuth; read tools run without confirmation) or an access token in ATTIO_ACCESS_TOKEN for the REST API.

Connecting Attio

  1. Attio MCP, Attio's official remote server at https://mcp.attio.com/mcp. In Claude, install Attio from Settings > Connectors; in Claude Code, Codex or Cursor, add the URL as a remote HTTP server (claude mcp add --transport http attio https://mcp.attio.com/mcp) and sign in with OAuth, no API key needed. It works with your own Attio permissions: read tools such as search-records, list-records and list-tasks run straight away, and write tools ask you to confirm first (docs).
  2. REST API with an access token. Generate a token in your workspace's developer settings, choose its scopes as you create it, store it in ATTIO_ACCESS_TOKEN, and call https://api.attio.com/v2 with Authorization: Bearer.

For scheduled reports, give the token read scopes only for records, objects and lists; the MCP server can create and update records, so it fits interactive work better than unattended runs.

Questions

How does it know when a deal changed stage?

Attio keeps a start time on every status value: the current stage's active_from is when the deal entered it. The skill uses that, so it needs no history of its own and the first run is as accurate as the tenth.

What if my plan has no interaction attributes?

Email and calendar interaction attributes are enriched data that some Attio plans do not expose through the API. The skill then treats a deal as quiet on stage age alone and says so on the card. Logging next steps as Attio tasks gives it a second signal to check.

Do I need Briefkin to use the Attio weekly pipeline report 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 Attio pages themselves: the agent opens app.attio.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.