Posts

new standard for agents configuration and skills

Use multiple AI agents? Cursor, Claude code, Codex and more? Writing skills files too I'll bet. Probably rules files as well. Guess what. Now your skills are in multiple different folders such as .claude/skills or .cursor/skills etc. Same for commands, rules etc. There's a new emerging standard for consolidating and sharing configuration and capabilities. It's a new folder .agents which would include skils subfolder and more. Yeah great. But sadly currently Claude Code doesn't load skills from .agents. It only reads from .claude folder. So in Claude /mynew-skill won't resolve as a slash command, from .agents and the Skill tool can't invoke it. Claude said if you want mynew-skill usable as /mynew-skill, the options are: 1. Symlink it: ln -s ../../.agents/skills/mynew-skill .claude/skills/mynew-skill — one source of truth, both tools see it. 2. Move it to .claude/skills/ and symlink the other direction for Codex. 3. Leave it and just tell me "follow .agents/s...

Guillermo says "read the code" and he's right

I love this post from Guillermo about reading the code . Thank you for saying this. I feel more tech leaders think this but may be afraid for one reason or another to say it out loud.  Contents: "If you’re not reading the code, whether explicitly or through agentic inquiry, one or more of these is true: ○ You’re a beginner ○ Software is throwaway ○ You’re prototyping ○ You have no users / revenue ○ You’re taking on debt & risk ○ Your problems are basic And btw. All of this is fine. But the reality is that models are still not at the “full autonomy” stage yet. They make rookie mistakes, they go down bad architectural paths. I just had the best model in the world add a nonsensical 700ms delay to “settle” something and it told me “you’re right, I was cargo-culting” 🤨 I am on the camp that this need will diminish more and more. Most code is indeed going to be assembly-like. But we also have the global internet and software infrastructure riding on these models and narrative...

Opus 5 is a regression

I've been using Opus 5 in Cladue code for about a month since I returned from summer holidays. Before that was using an older Opus model. Opus 5 kinda sucks and I'm "not gonna take it anymore", problems: its slow  it goes down rabbit holes a lot more often and adds code which is not required code quality is not good enough it uses up the context window quickly past safe point ~60% it feels like its optimized to generate as much tokens as possible (good for Anthropic, not good for me) for some reason it adds significant useless code comments, when I asked does it know code comments best practices? Opus 5 confirmed it did but also admitted it did not follow.  I talked with other engs and they all agree, same experiences. Most went back to 4.8 or switched to using Codex and Sol. Google "Opus is bad" yourself and you'll see others having similar issues e.g. reddit post I have made improvements to CLAUDE.md to instruct AI to: follow code comment best practice...

using AGENTS.md as single source including for Claude

I use multiple vendors when generating software: Claude Code, Cursor, OpenAI Codex. I want to define Agent rules in one place for all.  But Claude looks for CLAUDE.md, not AGENTS.md. OpenAI and Cursor read AGENTS.md (not CLAUDE.md).  Additionally, Cursor uses its own cursor rules files where we have defined specific rules. AGENTS.md is for certain information only. Cursor rules and Skills have their own purposes. My solution is use AGENTS.md as the single source of truth, not CLAUDE.md. I put a reference to the agents file in CLAUDE.md like so: "@AGENTS.md" In CLAUDE.md. @AGENTS.md is also expanded before Claude code sees anything. From the memory docs: "Imported files are expanded and loaded into context at launch alongside the CLAUDE.md that references them". No tool call, no pointer, no decision on Claude's part. An easy way to see this is after first starting Claude run "/context" and scroll down to Memory files section. It shows CLAUDE.md loaded a...

using Promise.all and Promise.allSettled like a boss (in a semantically correct way)

Sometimes we see this pattern with Promise.all const [api1, api2, api3, api4] = await Promise.all([   getForApiOne(id),   getForApiTwo(id),   getForApiThree(id).catch(() => undefined),   getForApiFour(id).catch(() => undefined), ]); This code works. But its circumventing the meaning of Promise.all().  Promise.all() stops if any promise fails (because Promise.all() assumes there is a strict dependency between promises). But this code catches 2 failed exception and returns undefined, effectively "working around" Promise.all(). Noting: it does retain the "fail fast" behavior of Promise.all() What would be more explicit is to use a mix of Promise.all() for critical and Promise.allSettled() for non critical calls because it's more explicit for what you're trying to achieve.  Use Promise.allSettled() when you want to allow all promises to run to completion, even if some fail, which is what is the intent in original code. note: Promise.allSettled() does ret...

don't become an intellectual tourist

Image
I learned a lot from this Ted talk  "How to stop AI from killing your critical thinking"  With so much AI available at our fingertips it's become clear to me that critical thinking skills are more important than ever. We cannot make the mistake of developing the habit of just accepting what AI tells us and delegating our critical thinking to AI.  So this talk resonated with me. The speaker is polished and in command. He hits us with some home truths: "where the knowledge worker no longer engages with the materials of their craft" "we've become intellectual tourists" we visit, but don't inhabit ideas "we've become middle managers for our own thoughts" Working with AI requires significant metacognitive reasoning (thinking about your own thinking process), about your task goals, decomposing work, applicability of gen-ai nd your ability to evaluate output. Working directly with the material makes you better at these skills and becomes...

chrome overrides is great for testing flows

Image
Chrome overrides is very useful for editing header responses from api calls. When working you can select a request in Network tab. Right click on it and choose "Override headers". Then edit headers (or content) in the right side. Reload the page and it should work. If you have not setup the local folder then when you choose "Override headers" for a request nothing happens. So confirm you have setup a local override folder: in Sources -> Overrides In setup y ou should have chosen a local folder to save overrides in.  

ai usage costs get real

Ok it's starting to happen: ai usage costs getting real. Github copilot announced changes to their pricing models to be more usage based, starting in 1 month. " Instead of counting premium requests, every Copilot plan will include a monthly allotment of GitHub AI Credits, with the option for paid plans to purchase additional usage. Usage will be calculated based on token consumption, including input, output, and cached tokens, using the listed API rates for each model." Uber reportedly spent their whole 2026 budget for Cursor and Claude code in the 1st four months of 2026. Maybe that's good. Maybe not. Its safe to say CFOs across orgs are paying attention. Burning tokens for no valuable outcome (tokenmaxxing) is not the right strategy (despite when ai vendors might tell you). The outcome has to be worth the investment. OpenAI and Anthropic are losing billions. OpenAI internal docs say they will lose $14 billion in 2026 and will lose $44bn until they turn profitable in...

anthropic mythos

Anthropics new model Mythos , scores significantly higher than Opus in a number of benchmarks and has found security bugs which have been present for decades in some os software. How much is hype vs reality, idk, but. Anthropic formed  project glasswing with some big names to manage security vulnerabilities. Theo is worried  (though you'll see some (funny) skepticism in the comments) Having software (browser, devices etc.) be up to date with latest versions is now non negotiable, has to be current. btw I read training cost for Mythos was $10 billion 😮 

From Claude Code to Figma – and Back Again - my notes

From Claude Code to Figma – and Back Again presentation link - presentation by Anthropic Thariq Shihipar from Anthropic and Brett McMillin from Figma - I had (and others) trouble connecting so missed first ~10 mins. But I understand was about installing figma mcp - Brett: roles are blending, workflows are blending, ideas can start from anywhere - Thariq: figma mcp allows Claude Code to go both ways; mcp allows you to get all of you data into agents - Brett introduced useFigma (in beta) which allows create or modify any design in figma   - recommended: load the "figma-use" skill in Claude code - Thariq jumped around a figma design doc - demod building a html web app from a figma   - then made changes in figma and had claude pick it up - Thariq showed how he used Claude code to generate a figma design, "good for starting"   - did they run the prompt in figma? ...it looks like it   - "figma canvas" - prompting playground, free tokens - Brett showed e...

cursor composer 2 model is a lot cheaper than Claude Opus

Image
"tokens are the currency of LLMs", and as usage increases so do costs, and these costs are no longer small change for organizations, t he messaging has definitely shifted to being cost conscious. cursors Composer 2 model is cursors own model available in cursor cursors composer model is cheap, 10x cheaper than Claude Opus 4.6/4.7 per million output tokens $2.5 versus $25 (and is also 10x cheaper for input tokens)  6x cheaper than Sonnet wow! that's really significant and from the chart below, from cursor benchmarks, indications are it performs well compared to Opus 4.6 imo it makes total sense to use cursors Composer 2 model as default  why not "Auto"? I've not used Auto so I can't comment from experience but I have read that it can be unpredictable and costly. Composer 2 works perfectly well for me If in Claude code then use Opus for complex tasks otherwise user Sonnet e.g. "write unit tests for Component Y" use Sonnet

AI maturity levels - understanding the software engineering disruption

Image
The last 2 to 3 years have been a whirlwind of disruption in Software engineering due to the impact of AI. I was seeking about a way to represent an "ai maturity" scale to make sense of the changes and I think this video based on  this article from Dan Shapiro is a good representation. From these I created a graphic which represents visually key points as I understand it. Remember about 2 or 3 years ago when you first used copilot in vscode? the predictive typeahead...pretty cool eh. Then we all moved on to cursor and its much better typeahead. Btw what a great acquisition by cursor to buy Supermaven code completion in 2024 . I believe it more than repaid their investment given cursors since skyrocketed valuation. And then came ai chat for code gen. At the time codegen quality was low e.g. "write tests for function xyz". It used to get maybe 30% and then you finished the rest. Then we added rules to make the codegen better (we added 1000s of lines of rules for diff...

cypress e2e tests: page objects vs application actions vs custom commands

Should you use Application Actions when writing cypress tests? Or is the Page Objects pattern better? Or neither and just write tests and use cypress custom commands to share common selectors and user actions? Page Objects is a well established pattern. Create classes for pages in your app and put selectors in those classes. Then in your test use (and reuse) the page object classes methods to simulate user actions such as fill in a field or submit a form. This centralizes and reuses selector code. Application Actions pattern exposes the applications model as a property on window which can be directly edited in cypress test code. Now test setup to add todos so they can be toggled becomes basically like so: `window.appModel.addToDos([{}, {}])` The author provides examples of how to use Application actions including with async operations. Faster setup results in faster tests. And per the author better organized app code. The Application Actions post link argues that Page Objects are a ...

My learnings from Addy Osmanis article on how good is AI React coding

These are my notes from the article How Good Is AI at Coding React (Really)?  by Addy Osmani. There's a lot of information packed into this presentation Addy says that AI is a force multiplier. "It amplifies everything: good requirements, good architecture, good taste" AI is most useful for scenarios such as building isolated components, scaffolding, implementing explicit requirements. Its less useful for scenarios such as: multi-step integration, design taste, complex state management.  We can generalize this to: the higher the complexity the less useful (productive) is the LLM.  I called this same point out in a presentation I made in October to our tech leaders.  And in fact Addys says this explicity later in the article:  "If you remember nothing else from this article, remember this: AI handles simple tasks well and then falls off a cliff as complexity rises." I like that Addy calls out "Objective benchmarks". We've seen by now that LLM model ...

AI product idea: your teams performance dashboard and continuous review

Ah yes, "Welcome Performance reviews my old friend" as the song goes So I'm using AI to help me write my performance review. I use Glean to pull key data from conversations, documents, tickets and more. I use Gemini to help me write and summarize data. And my manager will use AI when writing their performance review of me. So why not skip all this and build a product around this: a performance dashboard and continuous review for your team Imagine a dashboard of your team viewable by timeframe such as: day, week, month etc. for all activity as well as ability to zero in on specific projects Imagine Agents with specific focus:  Performance review Agent; reviews personnel performance based on custom criteria Career Growth Agent: a coach and mentor for personnel career growth. Feedback tailored to the persons role as well as their next role Career change Agent: want to switch from an IC engineer to Manager role, we have an agent for that Parental Leave Agent: guides you throu...

cursor commands

I'm liking cursors commands : a way to integrate your common ai prompts into cursor using the / command store your prompts (commands) as markdown in the repo folder, then access in cursor chat using slash command I'm storing my commands in a file in the repo but this is a nice enhancement by cursor

conductor - manage claude code instances

Running Claude Code in terminals is ok, but I felt managing it all needed a better user interface to organize and track.   conductor is an example of what such a user interface could be

claude code - technology and usages

Image
claude code npm tech stack:  typescript - claude code is written in ts (pssst: typescript is a must know language imo) react - ui is written in react and uses ink for interactive command line ink - react components for command line! used by a whole list of AI whos who with command line yoga - embeddable flexbox layout engine and  bun  - js runner, runtime, bundler; choose over webpack/vite etc. because bun is faster) npm to distribute claude code Started as a simple project to query what music someone was listening to. Then added capabilities to access the file system and run batch commands. Usage spread rapidly within Claude Code team who dogfooded it. "around 90% of claude code is written with claude code" (not by, with) claude code is a thin wrapper over the claude model, they deliberately want people to experience the raw model, not obstructed by much business logic a guiding principal is: simplicity, choose the simplest approach possible the most complex part of cl...

cursor chat token usage

Have you noticed that cursor chat requests can use a lot more tokens than you'd expect?  Matt Pocock said it well: "tokens are the currency of LLMs". You're charged by the token. A little, but it does add up. So we need to pay attention to token usage. I ran some tests in cursor chat to review token usage and was surprised by how many tokens are used by my chat requests. I ran these tests in a large repo which has a number of cursor rules files defined.  Tests: 1. ask a general tech question in chat, not related to specific code in repo; context used : 19.7k tokens prompt: "how should I choose between useSWR and react-router v6 for data fetching?" to contrast, same question in Claude 4.0 outside of cursor user 28 input tokens and 768 output tokens in response to contrast further, same question in Gemini 2.5 Pro outside of cursor used 19 input tokens and 1060 output tokens in response almost one twentieth the token usage of cursor chat!!! wow 2. ask to write...