TL;DR: On 29 September Anthropic described how Asana has AI agents write a daily brief on at-risk renewals, and how only a few people get to teach those agents anything that lasts. I had Claude Code build a small version as a Claude skill and run it on an invented customer list with 19 renewals. With no coaching, 7 were at risk. One line from the team lead in the skill's coaching file turned that into 12, because usage doesn't tell you whether the person who signs is still talking to you. Given only in chat, the same rule lasted one brief, because the next run starts fresh from what's in the skill's files.
The demo shows the same skill and the same customer list before and after one committed line, and every brief in it is Claude's own output, unedited. It isn't Asana's product and it doesn't use Asana. Claude Code built the skill for Brinvik from the idea in Anthropic's post about Asana.
In the post, Asana's Chief Product Officer, Arnab Bose, describes an agent called At-Risk Renewal. Every morning it reads every customer success manager's updates on at-risk renewals and sends a digest to leadership, and leadership can coach it so the report improves with each run. Before the agent, Asana's Chief Customer Officer produced a weekly version of the brief, and, as Bose tells it, he learned about problems when leaders told him, not when the data first showed them.
One line, five more renewals at risk
The skill takes a CSV export from the CRM with the accounts and all their logged activity: meetings, calls, emails and internal notes, and for each one, who at the customer took part. It sorts every renewal in the next 90 days into three groups: slipping, steady or growing. Slipping just means someone should look at the account this week. The skill's default rules are: fewer than 60 percent of seats in use, no meeting, call or email from the customer for 30 days, or a note about a champion leaving, a competitor, a budget freeze, an open escalation, a quote with no reply or a team that stopped using the product.
Monday's brief had 7 of 19 at risk. Then the team lead committed one line to coaching.md: if nobody who can sign the renewal has been in a meeting or a call with you, or written to you, in the last 60 days, the account is slipping, however good the usage looks. A name in someone else's note doesn't count, and neither does an email nobody answered or a call nobody picked up. The next run had 12 of 19. A rule that counted any logged row naming someone who can sign, whatever kind of activity it was, would have moved only two of the five.

Take Nygaard Transport: 356,000 DKK, renewing in 38 days. 57 of 60 seats are in use, and the champion, Kasper, wants 20 more for the Jutland depot. On Monday it was listed as growing. But the person who signed last time, the CEO, Birgitte, hasn't been in a meeting or a call for 120 days. The customer success manager emailed her the renewal date 15 days ago, and no answer has been logged. After the line, Nygaard is listed as slipping, and the brief says why, starting with "Coaching:" so the team can see which verdicts come from the new rule. Usage tells you the users are happy. The renewal gets signed by someone else.
The flag is only the start. With Nygaard, the next step is to ask Kasper to bring Birgitte into a short meeting while the renewal is still more than 30 days out, so the contract isn't her first news from you in four months.

The customer list is invented, and it was written with exactly five accounts like that in it. So your own count could be zero or twenty. On that list the money moved too: the value of at-risk renewals went from 1,903,000 to 3,809,000 DKK.
The first brief put Ekholm Medical under growing, while the answer key said steady. The skill counts a new site as growth, and the note said the champion had rolled the product out to two more sites. Claude had applied the skill's rule correctly, so it was the answer key that got fixed.
What the line costs
Ekholm Medical moved too, and may not belong there. The champion has just expanded to two more sites, yet the account is now listed as slipping, because the CEO was last in a meeting 140 days ago. The champion, Sara, writes that the CEO, Johan, is pleased with the rollout, but those are her words, not his. Maybe that's right. Maybe the account has an operations lead who runs everything and a CEO who signs without asking.
And 12 of 19 is a lot. A brief that flags nearly two thirds of the renewals has stopped prioritising. The line is blunt on purpose, which is why it needs a date and an owner, and why it gets deleted when it stops being true. Anthropic's post gives the same advice about an agent's memory: ask it to remember the decisions you want to keep, and delete the ones that are no longer relevant or true.

You don't need Claude to use the rule itself. Pull the customer list out of your CRM, sort the next 90 days of renewals by when someone who can sign was last in a meeting or a call with you, or wrote to you, and read the top five. Count only activity the person took part in. A champion mentioning the CEO isn't the same as talking to the CEO. If you do it with a spreadsheet filter, watch the abbreviations: when the answer key for this test was built, "COO" also matched "coordinator", so an operations coordinator counted as an executive.
Adjust the 60 days and the list of titles to fit how your customers buy. Some only bring in an executive when the contract is ready to sign, and for them the threshold needs to be longer.
Who gets to teach your AI agents?
Asana separates working with an agent from training it. Anyone can give an agent feedback on a task, but only admins and editors can commit feedback to its permanent memory, or undo or delete it. For everyone else, feedback applies to the current task only. Asana's communications team owns the voice, so it would be the editor of an agent that writes. Bose can draft with it, but he can't change how it behaves.
The skill does the same with a file. Claude reads coaching.md on every run and never writes to it. A fifth run put that to the test: a customer success manager gave the same rule in chat while the coaching file was empty. The brief came back with the same 12 of 19, marked the five accounts as "this week's correction" and ended by suggesting the team lead commit the line if it should hold every week.
The file was untouched, and that's the whole reason the rule held only once. The skill doesn't remember anything from one run to the next. Every run starts from what's in the skill folder and the export you give it. Whatever gets typed in chat belongs to that one conversation, and the skill isn't allowed to write it into coaching.md itself. So the next run has never seen the rule and uses only the default rules, the ones that gave 7.

Asana has things a skill doesn't. Its agent reads every at-risk renewal across the portfolio by itself each morning, in a shared workspace where leaders can ask follow-up questions. Bose's reason for one shared report: "They could probably have Claude generate a report for themselves," and what he's after is one everyone reads that keeps getting better with every run. At 10 to 80 people, start with one named person who edits coaching.md. A schedule and a shared workspace can come later.
Try it on your own export
The skill is free as a zip file with SKILL.md, coaching.md and a short README, and the invented customer list is a separate download, so you can watch it work before you use your own. You can also read the skill in the browser.
- Install: add the folder as a skill in Claude, or put it in .claude/skills if you use Claude Code.
- Your export: one row per activity, with account, region, customer success manager, annual value, renewal date, seats, active users, the date of the activity, the type of activity, who at the customer took part, and the note itself. SKILL.md lists the columns.
- Change the default rules first, so they match how your team judges a renewal. Then decide who owns coaching.md, and keep it somewhere only that person can edit.
- Titles: the rule recognises someone who can sign by the title in brackets after the name in the contacts column. If your export keeps titles somewhere else, say so in the coaching file.
There's one data decision to make. The notes carry the names of people at your customers, so use a Claude plan whose data terms you know, or strip the names from the export first. The rule uses the titles, not the names.
And the limits: the customer list is invented and tidy, with titles in brackets and every activity logged with the right type. A real export is messier. The titles may sit in another column, and a call doesn't always get logged, which makes an account you're talking to look silent. Five runs, all on one tidy list.
Where I come in
As an AI consultant in Copenhagen, I set up AI agents for smaller companies, and here the work sits outside the brief itself. A skill only runs when someone asks for it. If the brief should be waiting at seven every Monday with numbers from your HubSpot, and coaching.md should be locked so only the person who owns renewals can change it, that is what I build as internal AI tools, using Claude for business: the brief your team writes by hand today, run for them.
A week ago I wrote about who decides which agents exist at all. That one was about approving agents in the first place.
FAQ
Frequently asked questions
One named person per agent, usually whoever owns the work the agent does. At Asana anyone can give feedback on a task, while only admins and editors can commit feedback to the agent's permanent memory. In a Claude skill you can get the same split with a file only that person can edit.
That depends on the Claude plan you use and the data terms your company has agreed. If you're unsure, strip the names from the export first. The rule about who can sign uses the titles, not the names.
Not on its own. A skill runs when someone asks Claude for the brief. Running it on a schedule from your CRM needs something set up outside the skill.
It reads a CSV with one row per activity, meaning meetings, calls, emails and notes, with the columns listed in SKILL.md. Which CRM the export comes from doesn't matter, as long as the columns match. It has only been tried on the invented customer list.
You write a prompt every time you ask for something. A skill is a folder of instructions Claude reads when the task fits, so the rules are the same every time. This one also has a coaching file for the rules the team lead adds.
AI Teammates is Asana's name for agents that work inside Asana with a role, tasks and access, like colleagues. According to Anthropic's post, Claude powers them when they write documents or run complex tasks, and they share a memory that only selected people can change for good.













