
AI Native // Degenerate Sneakerhead // @NBA fanatic @NBATopShot collector // Product Marketing @TownAI
Oakland
Joined August 2008
- Tweets22.4K
- Following3.1K
- Followers1.5K
- Likes41.8K
If you build AI tools for your team, log who uses them and for what
When I built Claude skills for a sales team, every run logged what was asked, who asked, and which project it was for, into a Notion database. That's how I could see which skills people actually used and which ones still needed steering
It started from watching reps paste call transcripts into ChatGPT. The log was how I found out whether my version was the one they reached for
Add a usage log to the next prompt or tool you hand off
This is what dots and duet is for.
Once you get into double digits of active agent threads it’s a new headache.
Gotta move the human up a layer or two.
I've changed how I work over the last few weeks.
I now have one lead agent for each area of focus, running all the time, and a chief of staff agent that oversees them. Each lead manages its own sub-agents that write code, test it, chase reviews, and coordinate with team members.
Everything I need to decide or review comes into one prioritized queue, a simple local web app. Each product review includes screenshots and a video demo of the feature. I clear the queue in batches, mostly by voice and keyboard shortcuts. The leads also bring back ideas I hadn't considered.
Working from one queue, instead of switching between dozens of chats, has cut a lot of mental overhead. The system keeps learning my preferences and distilling my judgment into a "Brian brain," so its recommendations and first drafts get better before they reach me. The goal is fewer corrections per change.
Every change still goes through the same human review and security checks. It is eliminating tasks, not human judgment.
What an exciting time to push the frontier of productivity, especially as we build the economy for agents (agentic finance). We should all keep pushing in this direction.
Finally! Some deep learning about dreaming
I've been on the memory mission since the MCP spec was first released
The wiki is updated after every capture session, and then the auto pruning happens, and a report is sent to me. And that works great. It took a lot of tinkering for it to get to that stage
What's not clear is that the compounded learning is being brought to bear. The pruning is cleaning up duplicates and removing things that haven't been substantiated, so I feel like dreaming would be better
Their wiki test went from 13% to 48% of graded criteria as dreaming scaled from 2 sessions to 128. On another task they caught Claude building "an extremely detailed wiki that effectively abstracted nothing"
In one Pokémon run each, Sonnet 3.7 wrote 413 memory files across 225 folders and earned one badge. Fable 5 wrote nine files in two folders plus one global.md
Claude Code loads only the first 200 lines or 25 KB of MEMORY.md, as an index
My homebrew dream pass stalled on a leftover lock after the headless Claude login expired
I haven't quite yet figured out how to bridge my local first setup with managed agents in order to experiment with dreaming on top of my wiki and my session history and skill usage
This is something I hope to benefit from as they productize it, especially as I continue to build up useful session history
Memory is what allows Claude to learn from experience. In a new Engineering Blog post, we share how “dreaming” helps Claude organize what it’s learned, correct its mistakes, and find what it needs more easily the next time. anthropic.com/research/compo…
If you are running one or two sessions and already writing a handoff note at the end, add that grading question before you close the window
"Where within the session could you have responded better or needed less steering, and for any correction that repeated within the session, what standing instruction should we add to CLAUDE.md so the next session doesn't repeat it?"
Claude's end-of-session grades are what told me my no-tables rule wasn't sticking yet. Once a monthly review sharpened it, I tested it on Opus 5.5 across 12 simple questions. Without the rule, 7 of 12 came back with lists, tables, or bold formatting. With the rule, 0 of 12 did
If you run long Claude Code / agent sessions:
That "before you say it's done" dump is spot on. The decisions have to live outside the chat that made them.
In my setup, /capture automates this so the fresh session doesn't repeat a dead end it didn't know happened.
What we decided and why, including what we rejected. Where the work stands now, with file paths. The dead ends and wrong turns.
That corpus becomes an accessible and readable history of every session worth capturing.
The 𝗺𝗼𝘀𝘁 𝘂𝘀𝗲𝗳𝘂𝗹 𝗽𝗮𝗿𝗮𝗴𝗿𝗮𝗽𝗵 of the week.
Add this to your AGENTS.md or CLAUDE.md 👇
## Before you say a long task is done
Over a long task you make a lot of small decisions for me: the defaults, what's out of scope, which request wins when two of them clash. A summary that says everything went well hides all of that. So before you say it's done, ask yourself "Did I miss anything?" and fix what you find. Then put every decision you made without asking on a one-screen HTML page outside the repo, in words a 10-year-old can follow. Only the ones that change the result, with the ones I need to confirm at the top, in red.
A lot of launches that flop weren't a messaging problem. Not enough people saw them
What demotivates me is a whole bunch of energy and time spent getting the words right, and it goes nowhere because you don't have distribution. So the thing I try to do is figure out where we can borrow exposure
Before you rewrite the copy on a launch that went nowhere, analyze your distribution
PMs and PMMs: I do most of my critical thinking before the first prompt
There is some reflection, some thinking, some context gathering. All of that is me processing what I would like to do to solve a problem
It's not about a specific structure or whatever. It's how well I understand the problem space, what I'm working on, so I actually have enough useful words to fire off as the initial prompt
The first thing I'd tell a friend to lock down after connecting AI to everything: the ability to delete
Delete calendars, delete emails, delete files. Until you're comfortable with how it operates and you've built up some trust in how it helps you, you don't give it destructive capabilities. That's a rookie move
el rolio retweeted
The more people you add to a group chat, the more even useful suggestions can start feeling like spam. This is one of the reasons we built multi-agent into Town's own UI.
We can hide a lot of that conversation and just show people what's useful, without making everyone read through 50 messages to figure out what has happened.
teapaw.org/tjack/status/211732224…
If you run more than one agent:
Models can't read thousands of files without burning through context. The system needs structure, organization, active pruning or it just slows everything down
In mine, things get decayed out if not enough substantiation comes in over like a month or two. They also get retired if something else stronger supersedes a previous observation
I'm a fan of Notion making their product a platform layer for context. I'll be extending my use of it so all my tools, the core ones and the ones I'm trialing, get their own sections in my workspace for stuff like this
PMMs, she's talking about us. Last thing on her downstream list is commercial
I'm product marketing, a role that's typically highly matrixed across EPD and GTM teams, so it's quite easy to find myself as the blocker to others because they need work/info/context/decisions from me
The way to move faster is to use AI to share context on demand, not just in scheduled standups, and to have it take on as many routine and admin tasks as possible so you can spend your time on the next valuable action that needs your human expertise
once teams have figured out building w AI (ai powered eng, prototypes, etc.) their bottlenecks move upstream and downstream
upstream issues:
- pm capacity
- no good ideas
- rigid org structures + process
downstream issues:
- pr review / capacity
- verification
- commercial (slow gtm, no $$ value)
how to fix:
- redesign your org for new physics
- focus on ambitious ideas, not just features
- make eng own more requirements so PMs can talk to customer and cultivate big swings
- automate your PR review + risk scoring
- cloud/preview environments + tooled agents for verification
- tighter PM <> GTM partnership
all solvable, but takes a leader willing to force the changes necessary
I haven't compacted a session in over a year. This paper doesn't change that
Compaction leaves a summary. Having Claude write small markdown files to my hard drive lets it read over past notes whenever we return to a topic
I like having the session files, it's the "writing things down" as general principle
What do you have your agent write down before you close a session?
Highly recommended paper from NVIDIA.
(bookmark it)
There is a lot of debate about whether to use context compaction aggressively.
They show that with frequent compaction, frontier language models lose little to no accuracy on a broad range of long-horizon and long-input tasks while keeping their context short.
With one action per context, Claude Opus 4.5 scores 70.2 on SWE-bench Verified against 70.0 with the full history. Median peak context drops from 32K to 8K tokens.
The agent carries a short summary of its state between steps instead of the whole transcript. Simple compaction at the end of a conversation often does better than the full history, and Opus goes from 70.0 to 74.8 with it.
This also matters for cost. Later tokens cost more to generate than earlier ones, up to 7x on frontier open-weight models.
The pattern holds on Terminal-Bench, FRAMES, BFCLv3 and multilingual SWE-bench, with modest losses in some settings.
Before paying for million-token agent runs, it's worth testing aggressive compaction on your own tasks.
arxiv.org/abs/2611.05306
Chat with Paper: academy.dair.ai/papers/you-d…
This is what we mean by diffusion is going to take a long time
There is a lot of manual labor in knowledge work where value isn't actually created because it's a variant of moving information
So many people have just accepted the way things were, not realizing these AI tools can really help them
My favorite part of plan mode is getting grilled
I'm a big fan of the Socratic method, exploring loose threads and tangents to explore the edges of my thinking. Something like a grill me type skill is really useful for that
Even when I don't invoke plan mode, I will have it check assumptions and ask me questions as we're doing it
Goes for your prompts too
It's not like I read the changelogs of every single point release of these products. Things will change constantly
In that study, fake citations and letter counting mostly went away. Flattery and agreeing with you stuck around. So the rules you wrote to work around the old failures are the ones to cut
Do a review of instructions periodically and get the stale stuff out
ICPs are vertical. Personas are horizontal
When you go looking for more customers, don't go after the demographics. Go after the behaviors. Find lookalikes of where you win, what's been working, where people really use it
Pull up your heaviest users and write down what they do, not who they are
The "it's not X, it's Y" one got me
Back in the Claudisms era my journal had a whole entry about my AI writing tool. Before I sent it anywhere, I ran it back through the same process. It flagged one line: a clean "not this, it's that" turn I'd reached for out of habit
Just the same habit, showing up in the piece about the habit 😅
I absolutely hate AI writing. And I post about AI every single day. So I keep a file of the new em dashes my writing bots are never allowed to use:
Everyone knows the em dash trick by now.
The models learned it too and mostly stopped.
So the tells moved into the words around them.
These are the ones my file catches:
1. "Quietly."
"Claude quietly shipped the best feature of the year."
Delete the word. If it shipped, it shipped.
2. "It's not X, it's Y."
"It's not a chatbot, it's a coworker."
Say what it does. "It answers my client emails."
3. The fake deadline.
"Set this up before Monday." "Do it this weekend."
Say how long the setup takes. Leave the reader's calendar alone.
4. Talking to a crowd.
"Most people use Claude wrong."
Talk to the one person reading. Say what you do instead.
5. "Can now X like a pro."
"Claude can now research like a $150/hour analyst."
Show what it researched and let them judge the price.
6. The little line that sounds deep.
"Setup is the part everyone skips." "That's the whole game."
Delete it. The sentence before it already said it.
7. Three of everything up top.
"Write. Edit. Ship."
Keep the one reason you actually believe.
8. Adjectives in a pile.
"A powerful, seamless, game-changing workflow."
Name the workflow. If it's good, the name is enough.
9. Sirens and arrows.
A siren emoji, the word breaking in capitals, an arrow pointing down at the link.
Write the news as a normal sentence.
Now you know what my file looks for. Here's how to stop your AI from writing all nine:
Step 1. Make the file.
Open a new file called banned.md and paste the nine in, each with one example and one fix.
That's it for the start. A list with examples beats a vague "sound human" every time, because Claude can check a draft against a list. It can't check against a vibe.
Step 2. Build it from your own words, not mine.
Mine came from three long rambles about my business. Paste a few of yours into Claude and ask it to list the phrases that sound nothing like you.
Your tells won't be my tells. Some of mine are fine for you.
Step 3. Make the check run before you read anything.
Tell Claude: "Before you show me a draft, check it against banned.md. Rewrite any line that breaks a rule and tell me which rules you hit."
My bots run this check on every post before it gets to me. A draft that hits a banned word never reaches me.
Step 4. Fix it by saying the actual thing.
Swapping a banned word for a synonym just makes a new tell. Rewrite the line as what happened: what you did and what broke.
Step 5. Add a line every time.
Every time you catch a new one in a draft, it goes in the file that day. The file gets better. The drafts follow.
Step 6. Read it out loud once.
If you wouldn't say the line to one person across a table, cut it.
How I set Claude up for everything else I write:
ChatGPT's dots can now text you first. A proactive agent that knows when's the right time to interrupt is gonna be a big winner
What earns one of my bots the right to interrupt me: it can see I'm going down a wrong path, or it looks like I forgot to deliver something and it has reasonable confidence it has all the context. It's not missing some offline conversation
Even then it shouldn't just execute. It should bring it to me: here's where it's at, does this look like what it needs to be?
I haven't compacted a session in over a year. I rotate instead: I end the session on purpose and start fresh from a note the agent writes. Alexander Yue just put numbers on what compaction costs.
Compaction was really bad and very lossy for most of its history. Sure, it's gotten better in the past few months with the newer models and the more refined harnesses. But it still leaves a summary the tool chose, and nothing that builds up over time.
So my /capture skill started as a way to not lose the progress or the details of what I was working on as context filled up. Claude writes small markdown files to my hard drive and reads back over past notes whenever we return to a topic. That corpus became an accessible and readable history of every session worth capturing.
You can copy the habit without a custom skill:
• One sessions folder, organized by month
• Each note dated and named for its topic
Then:
1. Around 40% on the context meter, have the agent write the note:
> "Write a note so a fresh session can pick up this work without rereading our conversation. Write it for that future agent, not for me. Save it as sessions/YYYY-MM/YYYY-MM-DD-topic.md, and name the topic after what we concluded, not what I first asked. Include: what we decided and why, including what we rejected; where the work stands now, with file paths; the dead ends and wrong turns, so we don't repeat them; any corrections I made; and the concrete next steps. Skip anything you could re-derive in 30 seconds."
2. End the session.
3. Open a fresh session and tell the agent to read that note first.
Compaction is a mistake.
When an agent's context fills up, tools like Codex and Claude Code compact it:
1. The model prefills the entire session again
2. It writes a summary of everything so far
3. A new session starts from that summary
I measured this on a real ~400k-token session with Opus 5.5:
→ 38 s and $1.99 when the prompt cache has expired
→ 29 s and $0.17 when it hasn't
And the summary is lossy. The exact error message, the file path, the one number you needed is often gone.
So I do something new for Mainplane
Context retrieval works the other way around. Mainplane keeps the full record of every session as a file. When the context fills up, a new session starts right away with one instruction: "You are continuing session X. Retrieve key context from it as you go."
The agent searches the old session and copies the exact lines it needs, when it needs them.
Same session, same model: 15 s and $0.10 to get back to work. It does not depend on a cache hit, and nothing is paraphrased.
This is the bitter lesson applied to agent memory. Don't hand-design what the model should remember. Give it the full record and good tools, and let it decide.
Mainplane is open source (MIT). Link in the first comment.
When AI cleans up your files, tell it which notes describe the present and which describe the past
I had Claude Code reorganize my notes vault. After moving the folders it ran a find-and-replace to fix the broken links, and it rewrote the notes about where things used to live so they pointed at the new spot. To a find-and-replace, "lives here" and "used to live here" look the same
I caught it on the check at the end, when I had it search for leftover references and the numbers looked off
Before any bulk edit, have it list what shouldn't change























