Posts

Showing posts from 2026

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