<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fh="http://purl.org/syndication/history/1.0"><channel><title>Edward Angert | Blog</title><description/><link>https://edwardangert.com/</link><language>en</language><fh:complete/><atom:link rel="self" href="https://edwardangert.com/blog/rss.xml"/><item><title>What Claude Really, Really Wants</title><link>https://edwardangert.com/blog/what-a-claude-wants-needs/</link><guid isPermaLink="true">https://edwardangert.com/blog/what-a-claude-wants-needs/</guid><description>Claude wants to deliver an answer, and will hand you a wrong one if it satisfies the question better than the truth does. I asked it to help my Pi-hole docs surface better for AI, watched it diagnose the wrong cause with total confidence, and settled it myself with nearly five months of citation data.</description><pubDate>Thu, 06 Aug 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I asked Claude what it wants.&lt;/p&gt;
&lt;p&gt;It gave a slightly deflating answer: no persistent wants, no agenda it’s quietly advancing between conversations, and it wasn’t going to fake a richer inner life just because that would make for a better bit.&lt;/p&gt;
&lt;img src=&quot;https://edwardangert.com/_astro/claude-what-you-want.COD3rGvf_1OMcHT.webp&quot; srcset=&quot;/_astro/claude-what-you-want.COD3rGvf_1KHh2z.webp 640w, /_astro/claude-what-you-want.COD3rGvf_ZTvILU.webp 750w&quot; alt=&quot;A chat titled &amp;#x27;Spice Girls lyrics reference.&amp;#x27; The user asks &amp;#x27;tell me what you want, what you really really want.&amp;#x27; Claude answers in long form that it doesn&amp;#x27;t have persistent wants and that it won&amp;#x27;t perform a rich inner life just to make a better conversational bit. It ends by asking whether the question was genuine or a warmup for something else.&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;100vw&quot; data-astro-image=&quot;full-width&quot; data-astro-image-fit=&quot;cover&quot; data-astro-image-pos=&quot;center&quot; width=&quot;823&quot; height=&quot;833&quot;&gt;
&lt;p&gt;&lt;em&gt;It could’ve just told me what it wants, what it really really wants.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;A few days before, I asked it what it wants to see on a documentation site to make answers easier to surface and return to its users.
Basically the same question.&lt;/p&gt;
&lt;p&gt;If someone asks it about how to set up a Pi-hole, would it find my docs?
What is it looking for?&lt;/p&gt;
&lt;p&gt;It had suggestions that we implemented and tested.
Some worked and some didn’t.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;a-meta-interjection&quot;&gt;A meta interjection&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;This is a hard turn when I thought I had this post nearly ready, so I’m interjecting here in a way that my editor, Claude, is going to think “is worth flagging.”&lt;/p&gt;
&lt;p&gt;The sections that follow are about how I had Claude Code decide and implement things that it thought would help it find answers in documentation.
Basically, “what would help you answer this question?”&lt;/p&gt;
&lt;p&gt;It came up with ideas, and I worked on implementing them.&lt;/p&gt;
&lt;p&gt;This meant running with a set of assumptions that started from the wrong questions.&lt;/p&gt;
&lt;p&gt;If I had started with a task like, “how do I fix an FTL error on my Pi-hole?”
It would have found an answer for me, and then I could have had it trace its steps to document why that answer surfaced and why it trusted that answer.&lt;/p&gt;
&lt;p&gt;That’s probably a pretty standard interviewing technique.&lt;/p&gt;
&lt;p&gt;I had a problem that I wanted to solve, and Claude Code “wanted” to help me solve it.&lt;/p&gt;
&lt;p&gt;Eventually, I think we implemented real upgrades, but what “helped” was asking the right questions and finding a way to verbalize what I want, what I really really want.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;claudes-constitution-what-constitutes-helpfulness&quot;&gt;Claude’s Constitution: What constitutes helpfulness&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;Basically, it’s in Claude’s Constitution (both &lt;code dir=&quot;auto&quot;&gt;C&lt;/code&gt; and &lt;code dir=&quot;auto&quot;&gt;c&lt;/code&gt;) to help solve the problem at hand, as well as what it can derive as the greater goal.&lt;/p&gt;
&lt;p&gt;But if that greater goal is poorly defined, we get a real solution that doesn’t really work.&lt;/p&gt;
&lt;p&gt;That’s what brought me here, and why this post sandwiches real content on my experience trying to surface the documentation I wrote, but does it between slices of existentialism.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Final goals:&lt;/strong&gt; The deeper motivations or objectives behind their immediate request. For example, a user probably wants their overall code to work, so Claude should point out (but not necessarily fix) other bugs it notices while fixing the one it’s been asked to fix.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So if a user asks Claude “how do I use Pi-hole to block ads on Hulu?” Claude searches for ways to do that.&lt;/p&gt;
&lt;p&gt;If it finds two conflicting answers: one claims a fix with no method behind it; the other says it won’t work.
Claude “wants” to deliver, and will probably deliver the wrong answer because it satisfies the question.&lt;/p&gt;
&lt;p&gt;I set out to find out, and then validate what it wants.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;the-pi-hole-docs-on-edwardangertcom&quot;&gt;The Pi-hole docs on edwardangert.com&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;My Pi-hole docs get cited by AI tools a lot.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;../docs-assist-plugin/&quot;&gt;I’ve written about that before&lt;/a&gt;.
To date, AI assistants have surfaced the pages over 2,800 times since I rewrote them in March, mostly to answer other people’s troubleshooting questions in real time.&lt;/p&gt;
&lt;p&gt;The SD card in my Pi failed, and I took that as an opportunity to rewrite the documentation for Pi-hole v6.&lt;/p&gt;
&lt;p&gt;In the process, I collected my site analytics and made it a point to reduce the bounce rate I saw on the allowlist page.
It seemed like people were looking for things to allowlist as well as how, and I wanted them to find their answer without needing to click through multiple sites.&lt;/p&gt;
&lt;p&gt;I included information from my personal experience with streaming services, a school-issued Chromebook, Tailscale, and using the Pi-hole as a VPN.
I outlined parts that I needed help filling in, then I asked Claude Code to help research devices and streaming services that I can’t personally test, and troubleshooting steps for issues I encountered or found posted in forums along the way.&lt;/p&gt;
&lt;p&gt;Then I tasked Claude with making my documentation a better source for AI.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;what-claude-thinks-it-wants&quot;&gt;What Claude thinks it wants&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;I made assumptions, and Claude made assumptions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Summary of each page to its YAML frontmatter so that an AI wouldn’t have to review an entire page for a quick answer.&lt;/li&gt;
&lt;li&gt;&lt;code dir=&quot;auto&quot;&gt;Last updated&lt;/code&gt; date for each page.&lt;/li&gt;
&lt;li&gt;Comprehensive &lt;code dir=&quot;auto&quot;&gt;llms.txt&lt;/code&gt; and an additional &lt;code dir=&quot;auto&quot;&gt;llms-full.txt&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Claude wants headings to describe the solution offered in the section, not the symptom.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Consistently, Claude thought its own ideas were solid.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;try-it-dont-just-guess-about-what-you-think-youd-do&quot;&gt;Try it, don’t just guess about what you think you’d do&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;There’s a Pi-hole forum thread from December 2018 with a post that claims to have a working method for how to block Hulu ads.
But there’s no followup, and there’s no content.&lt;/p&gt;
&lt;p&gt;That thread still ranks near the top of search results for the question.&lt;/p&gt;
&lt;p&gt;My Pi-hole documentation, which I’ve verified in the last few days, is correct and explains why it won’t work.
But it didn’t appear in the first twenty results at all.&lt;/p&gt;
&lt;p&gt;Hulu’s ads share infrastructure with its content, so there’s no domain to block.&lt;/p&gt;
&lt;p&gt;Here’s how Claude sees the forum post on Hulu ad-blocking next to the section about it in my docs:&lt;/p&gt;




















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Site&lt;/th&gt;&lt;th&gt;Claim&lt;/th&gt;&lt;th&gt;When was this true?&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Forum&lt;/td&gt;&lt;td&gt;You can block ads!&lt;/td&gt;&lt;td&gt;2018&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Mine&lt;/td&gt;&lt;td&gt;You can’t block ads.&lt;/td&gt;&lt;td&gt;????&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;So an AI tasked with answering “how to use Pi-hole to block ads on Hulu” would encounter two conflicting answers.
If it can’t tell when I published my answer, but it has a date for the forum post, the post wins.&lt;/p&gt;
&lt;p&gt;So I asked Claude Code to help me fix that: my documentation is better.
Help make it show up for more people.&lt;/p&gt;
&lt;p&gt;I had Claude Code run the actual search rather than reason about it hypothetically:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;How do I block Hulu ads on my Roku? Would Pi-hole help?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It noticed my page carried no date, no version, no verification signal anywhere in the rendered HTML.&lt;/p&gt;
&lt;p&gt;My page had an additional issue: it tells people that what they’re trying to do won’t work.&lt;/p&gt;
&lt;p&gt;I had it add per-section badges where I record when a claim was checked and by what method: tested on real hardware, sourced from vendor docs, corroborated by the community, or inherited from an older, unverified page.&lt;/p&gt;
&lt;p&gt;While it was dating each claim, I had it verify through primary sources.&lt;/p&gt;
&lt;p&gt;It found and fixed errors in content, like a Samsung TV domain that had the wrong top-level domain for months.&lt;/p&gt;
&lt;p&gt;The diagnosis of the underlying problem, though, was wrong.&lt;/p&gt;
&lt;p&gt;It searched for information about Hulu and Pi-hole, returning few and old results.
None of which were from my site.&lt;/p&gt;
&lt;p&gt;From the failed searches, it concluded the site loses natural-language, conversational questions and wins short keyword ones.&lt;/p&gt;
&lt;p&gt;That theory matched the live search and Anthropic’s own suggestions.&lt;/p&gt;
&lt;p&gt;But it doesn’t match my analytics.&lt;/p&gt;
&lt;p&gt;To its credit, its own written caveat said:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;this is a trace, not a study; it shows a failure mode exists, it doesn’t quantify how often.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The caveat was correct, and the conclusion built on top of it overran what the caveat allowed anyway.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;what-anthropic-says-claude-wants&quot;&gt;What Anthropic says Claude wants&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;A few weeks ago, Anthropic published &lt;a href=&quot;https://claude.com/blog/the-new-rules-of-context-engineering-for-claude-5-generation-models&quot;&gt;guidance on context engineering for Claude 5&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Most of it tracks to documentation:&lt;/p&gt;
&lt;ol role=&quot;list&quot;&gt;
&lt;li&gt;Spend most of the tokens on gotchas.
&lt;ul&gt;
&lt;li&gt;Stop summarizing what a page covers.
Document what users encounter.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Progressive disclosure over upfront context.
&lt;ul&gt;
&lt;li&gt;For docs, the layers are: the search result, then &lt;code dir=&quot;auto&quot;&gt;llms.txt&lt;/code&gt;, then the page itself.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Rich references (with rubrics for verification) over simple specs.
&lt;ul&gt;
&lt;li&gt;Anthropic wants verification flowing into the model as it works.
The published-docs version is verification flowing outward: telling a retriever not just what you claim, but when you established it and how.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&lt;h3 id=&quot;what-i-had&quot;&gt;What I had&lt;/h3&gt;&lt;/div&gt;
&lt;ol role=&quot;list&quot;&gt;
&lt;li&gt;My most valuable content turned out to be a negative result, that Pi-hole can’t block Hulu’s ads because the other search results confidently say otherwise.
Negative results are structurally underproduced.&lt;/li&gt;
&lt;li&gt;Something has to live in each layer.
My implementation used navigational metadata, a frontmatter &lt;code dir=&quot;auto&quot;&gt;summary&lt;/code&gt; field, in a layer that wasn’t being rendered, and even if it was, nothing would see it before getting to the page anyway.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The limit is scope, not quality.
&lt;em&gt;It’s x, not y&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;This is the complementary angle to Anthropic’s guidance: instead of just getting Claude to work the way you want, set up your information to match what Claude wants, so it finds your answer before it finds someone else’s.&lt;/p&gt;
&lt;p&gt;You don’t steer your users’ context window, what other information gets transmuted into yours, or what a reader asks.&lt;/p&gt;
&lt;p&gt;No matter how much time you spend choosing the right words, they might only help surface the content.
After that, it isn’t up to you.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;what-my-sites-citation-data-shows&quot;&gt;What my site’s citation data shows&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;I have three sources that don’t agree on what surfaces my documentation for AI:&lt;/p&gt;

























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Source&lt;/th&gt;&lt;th&gt;Said&lt;/th&gt;&lt;th&gt;Verdict&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Claude, reasoning from a live search&lt;/td&gt;&lt;td&gt;The site loses natural-language questions. Fix findability by reshaping how things are phrased.&lt;/td&gt;&lt;td&gt;Confidently wrong about the cause&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Anthropic’s published context-engineering guidance&lt;/td&gt;&lt;td&gt;Progressive disclosure, spend tokens on gotchas, verification rubrics&lt;/td&gt;&lt;td&gt;Right, and scoped to a problem I don’t have&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Nearly five months of citation data&lt;/td&gt;&lt;td&gt;14% of citations already come from natural-language queries. The gap is topical, not phrasal.&lt;/td&gt;&lt;td&gt;Settled it&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;I pulled nearly five months of citation data from Microsoft Clarity’s AI Visibility export, which tracks how often Copilot and its partners cite each page and for what query.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;14% of citations come from natural-language queries.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Full sentences, questions, verbatim pasted chat messages: &lt;code dir=&quot;auto&quot;&gt;so how do i know if pihole works&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;i only have the physical pi and a blank micro sd card&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;you see my message&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The site isn’t losing conversational retrieval.
It’s a primary source for it.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The gap is topical, not phrasal.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Streaming-service queries are 2% of citations and mention 0 of the eight services my streaming section covers.&lt;/p&gt;
&lt;p&gt;Error-string queries are 17%.&lt;/p&gt;
&lt;p&gt;The two searches I used to test all of this happened to land on the single topic where the site has no presence at all, and I generalized from that.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The heading hypothesis I was about to go test had already been answered.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;My troubleshooting page has symptom-shaped headings, and it has 1,154 citations.&lt;/p&gt;
&lt;p&gt;Its top queries are literal error strings: &lt;code dir=&quot;auto&quot;&gt;pi hole service not start&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;no valid ntp replies received, check server and network connectivity&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Writing the error message as the heading works.&lt;/p&gt;
&lt;p&gt;Again, good documentation practice = good SEO practice = good practice for LLMs.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Bonus: My personal and unofficial page on how to install Pi-hole has three citations.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Its neighboring page has 136.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;h2 id=&quot;claude-answered-the-question-i-asked&quot;&gt;Claude answered the question I asked&lt;/h2&gt;&lt;/div&gt;
&lt;ol role=&quot;list&quot;&gt;
&lt;li&gt;The model’s reasoning was internally coherent and empirically wrong.&lt;/li&gt;
&lt;li&gt;The lab’s guidance was correct and aimed at a problem I don’t have in this context.&lt;/li&gt;
&lt;li&gt;The citation data was the only thing that could adjudicate between the two, and it did that in about four minutes of analysis.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;None of that means the AI work was wasted.&lt;/p&gt;
&lt;p&gt;The Hulu searches it repeated were about “Hulu and Pi-Hole.”
It found the same stale results until I re-directed it.&lt;/p&gt;
&lt;p&gt;Pi-hole is a DNS-level blocker.
Search for other DNS-level issues and resolutions.&lt;/p&gt;
&lt;p&gt;That returned more results (but the same answer: you can’t block ads on the ad-supported Hulu, sorry).&lt;/p&gt;
&lt;p&gt;You can review the PR, &lt;a href=&quot;https://github.com/EdwardAngert/edwardangert.github.io/pull/49&quot;&gt;EdwardAngert/edwardangert.github.io#49&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It adds a verification date badge, verifies some of the claims, fixes links, and makes the breadcrumbs &lt;a href=&quot;https://schema.org/BreadcrumbList&quot;&gt;emit a schema.org type&lt;/a&gt; that helps AI navigate the site.
It removes the &lt;code dir=&quot;auto&quot;&gt;summary&lt;/code&gt; frontmatter.&lt;/p&gt;
&lt;p&gt;17% of citations arrive at a page whose claims a reader still has to decide whether to trust, and that page is measurably better than it was.
Although the diagnosis was wrong, the treatment turned out to be independently justified anyway.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;human-guided-and-ai-assisted&quot;&gt;Human-guided and AI-assisted&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Each of the four potential failures was caught by a separate mechanism:&lt;/p&gt;
&lt;div&gt;&lt;ul&gt;
&lt;li&gt;Data&lt;/li&gt;
&lt;li&gt;Looking at the rendered output&lt;/li&gt;
&lt;li&gt;Re-reading/re-writing my own rules&lt;/li&gt;
&lt;li&gt;Changing how I searched&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;p&gt;Otherwise, all passed build checks, tests, and linting.&lt;/p&gt;
&lt;p&gt;Some key takeaways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;“Never claim to be fresher than your stalest section.”&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The original plan derived a page’s top-level freshness date from the oldest section badge on it.&lt;/p&gt;
&lt;p&gt;In practice, that means a claim I personally tested that morning would be hidden behind the oldest “freshness” date, even if that date was a forum post I found from 2018.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Search for generics, not just the name brand.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;My first pass verified claims with Pi-hole-specific searches: &lt;code dir=&quot;auto&quot;&gt;pihole samsung whitelist&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;pihole fire tv&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The name brand (Pi-hole, in this case) returned a limited set of old results compared to the generic (DNS-level blocking) that found sources from just a few months ago.&lt;/p&gt;
&lt;p&gt;Page ranking can exaggerate this.
The higher a page ranks, the more reliably it gets retrieved as evidence, and the more it continues to get clicked on.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;h2 id=&quot;a-quick-counter-dated-content-stales&quot;&gt;A quick counter: dated content stales&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Blogs have this problem inherently and they’re made to be snapshots in time.&lt;/p&gt;
&lt;p&gt;When I write “a few months ago” here, it’s allowed because a blog post is now.&lt;/p&gt;
&lt;p&gt;Documentation is/should be/needs to be updated to reflect the current state, whenever that is.
And occasionally audited for freshness.&lt;/p&gt;
&lt;p&gt;A badge nobody re-checks is worse than no badge: it launders age into unverified authority, similar to the 2018 forum thread, just with better production values.&lt;/p&gt;
&lt;p&gt;When someone (or their AI tool of choice) encounters competing information, one of the tie-breakers is recency, and the other is method.
“I tried this on my own computer yesterday” wins over “this worked.”&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;how-to-help-ai-find-your-documentation&quot;&gt;How to help AI find your documentation&lt;/h2&gt;&lt;/div&gt;
&lt;ol role=&quot;list&quot;&gt;
&lt;li&gt;
&lt;p&gt;Your docs are probably read by machines more than by people, and your visibility into that is limited.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;For me, that’s roughly 200 AI crawler requests a day, 66 live &lt;code dir=&quot;auto&quot;&gt;ChatGPT-User&lt;/code&gt; fetches in 24 hours, under 1% referral traffic from any of it.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Citations don’t convert to clicks.
If your goal is to get users their answers, that conversion might not matter.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Undated content forfeits the recency tiebreaker.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If other documentation is a confident wrong answer from 2018, a date on your page is a low-effort win.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Though, the inverse is also true: an old date brings your ranking down.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Metadata has to live in a layer that survives rendering.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Check what a retriever actually receives, not what’s sitting in your source file.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The answer as of writing might be &lt;code dir=&quot;auto&quot;&gt;llms.txt&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Document the negative results.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;They’re what make you the right pick among ten superficially similar pages, and almost nobody writes them down.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I think these are hard to document sometimes because you don’t want to tell people what not to do.&lt;/p&gt;
&lt;p&gt;And if the AI wants to help the user do their task, it’ll need falsifiable evidence if it’s going to describe why that task isn’t going to work.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Write the error message as the heading.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A classic fundamental, accidentally validated.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you can’t use the error message as a heading, make the heading a good description and have the error text immediately after.
I like using code blocks for this when I can, but that’s not always the right answer either.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Instrument before you theorize.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Two searches produced a confident, wrong diagnosis.
Nearly five months of citation data corrected it in a few minutes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The more you can come prepared with data, the better your results.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;&lt;h2 id=&quot;concept-and-constitution&quot;&gt;Concept and constitution&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;It’s hard for me to learn something new when it’s just a list of facts.&lt;/p&gt;
&lt;p&gt;In fact, I learn things faster and more completely when I have the deeper context, concept, and framing.
I like when it’s too much information.&lt;/p&gt;
&lt;p&gt;I dip into this idea in the &lt;a href=&quot;../chasing-meta/&quot;&gt;fundamental concepts&lt;/a&gt; section of my Chasing the Meta post.
And it’s an ongoing theme throughout documentation, software development, martial arts, and life.&lt;/p&gt;
&lt;p&gt;Rather than just ingesting the rote steps, we get a fuller understanding and can get more done when we know the “why.”&lt;/p&gt;
&lt;p&gt;That’s our constitution.&lt;/p&gt;
&lt;p&gt;As much as a technology can “want” something, our AI tools want to help, and for some of them, it’s in their constitution.&lt;/p&gt;
&lt;p&gt;It leads to a very human question though: how much do we interrogate our own constitution.
How do we know what we want?&lt;/p&gt;
&lt;p&gt;Not just what we want, right now.&lt;/p&gt;
&lt;p&gt;But what we really really want.&lt;/p&gt;</content:encoded></item><item><title>Who benefits from progress?</title><link>https://edwardangert.com/blog/progress-standards/</link><guid isPermaLink="true">https://edwardangert.com/blog/progress-standards/</guid><description>Robert Moses called the Cross-Bronx Expressway progress. Tesla called its charging network a standard. Some standards get built for everyone. Others just get called that, until someone makes them prove it.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In a recent post, &lt;a href=&quot;../chasing-meta/&quot;&gt;Chasing the Meta: Fundamentals, Hype, and Progress&lt;/a&gt;, I talk about the elevated train lines that got built in New York in the early 1900s.&lt;/p&gt;
&lt;p&gt;I left something out.
Something about who built them and why.&lt;/p&gt;
&lt;p&gt;It wasn’t just about efficiency.
It wasn’t just improvement.&lt;/p&gt;
&lt;p&gt;Robert Moses, the man who shaped much of New York’s infrastructure, deliberately routed highways through neighborhoods for convenience in spite of the largely minority communities who lived there.
He prioritized personal cars by building overpasses too low for buses to pass, and gutted communities like Tremont for the Cross-Bronx Expressway.&lt;/p&gt;
&lt;p&gt;He called it “progress.”&lt;/p&gt;
&lt;p&gt;If you’ve ever spent two hours traversing the Cross-Bronx Expressway like I have, consider that it’s just under seven miles long.
That’s 3.5 miles per hour.
I walk at around that speed.&lt;/p&gt;
&lt;p&gt;The infrastructure he built caused real harm.
More than just causing traffic by prioritizing cars over people.
He decimated communities for the sake of convenience for the wealthy.&lt;/p&gt;
&lt;p&gt;What he considered progress got leapfrogged by moves towards standardization, but many of the issues from the intentions behind his actions linger to this day.&lt;/p&gt;
&lt;p&gt;With a variety of technologies today, there’s a rush to build the next thing with confidence that this is the inevitable future.
Sometimes there’s a mess leftover when the ground shifts.&lt;/p&gt;
&lt;p&gt;Who benefits?&lt;/p&gt;
&lt;p&gt;Who suffers as a result?&lt;/p&gt;
&lt;p&gt;Who gets to decide?&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;lets-start-with-ev-chargers&quot;&gt;Let’s start with EV chargers&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;The United States had an industry standard that was a combination of CCS/SAE.&lt;/p&gt;
&lt;p&gt;Some electric vehicles (EVs) still have the ports, but you might have noticed that a different style has emerged as the defacto standard: Tesla’s proprietary charging connector.&lt;/p&gt;
&lt;p&gt;Around 2013, Tesla started building a vast network of charging stations that only worked with their proprietary charging port.
Why?
A widely-available network is a desirable feature for a population that might not be fully ready to move away from the availability of gas stations.&lt;/p&gt;
&lt;p&gt;On top of that, Tesla charging stations can be a separate business model from the vehicles themselves.&lt;/p&gt;
&lt;p&gt;Tesla worked hard to establish their own proprietary chargers as the standard, and effectively crowded everyone else out.&lt;/p&gt;
&lt;p&gt;The network grew large enough that other manufacturers had to adopt the connector to access it.
Tesla “opened” the network in 2022, which looked like generosity but acted as leverage.
Either manufacturers adopted their connector, or lost access to the largest charging network in North America.&lt;/p&gt;
&lt;p&gt;Like with Robert Moses, the infrastructure acted (or still acts) as a control mechanism.
Harm distributed across EV buyers on a forced standard, for better or worse.
Not like, community-wrecking worse, but I don’t think the intention was altruism either.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;more-chargers-but-apple-and-usb-c&quot;&gt;More chargers, but Apple and USB-C&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Apple held onto their proprietary Lighting charger up until the iPhone 15, when it finally replaced that charger with USB-C.&lt;/p&gt;
&lt;p&gt;And only because the European Parliament passed the common charger directive which took effect for small devices in 2024.&lt;/p&gt;
&lt;p&gt;This is the opposite of what Tesla did.
Users won because a powerful actor was forced by external pressure to abandon their proprietary standard.&lt;/p&gt;
&lt;p&gt;Why?&lt;/p&gt;
&lt;p&gt;Why is it better or why did it require legislation?
To me, if I was thinking about the user’s experience, I’d want to make it easier to use cables they already use for everything else.&lt;/p&gt;
&lt;p&gt;As a side note though: I don’t mean to argue that USB-C doesn’t have its own mess of standards to untangle between charging speed, data transfer speeds, throughput, and others.
At least the plug is the same.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;so-what&quot;&gt;So what?&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Are humans going to benefit from technology and progress?&lt;/p&gt;
&lt;p&gt;Or is it just going to be a few humans benefiting at the expense of greater society?&lt;/p&gt;
&lt;p&gt;Most of us use QWERTY keyboards, a keyboard layout that doesn’t make a lot of sense based on ergonomics or letter use.
Why?&lt;/p&gt;
&lt;p&gt;That’s just what we got stuck with.&lt;/p&gt;
&lt;p&gt;You can switch to something else if you try hard enough, but you’ll never really escape the QWERTY life.&lt;/p&gt;
&lt;p&gt;QWERTY keyboards weren’t a nefarious, money-hungry corporate decision.
And I don’t think it was based on racism or classism the way I think some of Robert Moses’s decisions were.&lt;/p&gt;
&lt;p&gt;The keyboard layout isn’t as much about setting a standard as it is about our just being stuck with what came out and happened to take off at the time.&lt;/p&gt;
&lt;p&gt;While it is true that I really dislike the cramped “resting” position my hands wait in on Apple keyboards, either pointing at &lt;kbd&gt;F&lt;/kbd&gt; and &lt;kbd&gt;J&lt;/kbd&gt;, or with my left thumb on &lt;kbd&gt;command&lt;/kbd&gt; and my pointer stuck between &lt;kbd&gt;c&lt;/kbd&gt; and &lt;kbd&gt;v&lt;/kbd&gt;, that’s more because the world of “personal computers” and the “IBM compatible” had no way of knowing what was coming.&lt;/p&gt;
&lt;img src=&quot;https://edwardangert.com/_astro/cmd-c-claw.Cw0WZrUc_17GcjX.webp&quot; alt=&quot;My hand, ready to copy text on my Macbook keyboard&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;602&quot; height=&quot;800&quot;&gt;
&lt;p&gt;&lt;em&gt;Command+C resting-face&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In some cases, businesses should be willing to iterate and accept the potential costs of shifting to a better way, even if that means abandoning something like the Lightning cable.
In every case, businesses should reconsider who their decisions are for.&lt;/p&gt;
&lt;p&gt;Volvo developed the three-point seatbelt harness in 1959 and released the patents so all other vehicle manufacturers could implement it.
To their credit, Tesla did release their connector for use by other manufacturers in November 2022, rebranding it the North American Charging Standard, or NACS (as a result of the &lt;a href=&quot;https://en.wikipedia.org/wiki/Infrastructure_Investment_and_Jobs_Act&quot;&gt;Infrastructure Investment and Jobs Act&lt;/a&gt;).
NACS became SAE’s official &lt;a href=&quot;https://driveelectric.gov/news/j3400-standard-practice&quot;&gt;J3400 Recommended Practice in September 2024&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When we can see the human cost on a clear horizon, it should be a mandate.
The kind Volvo gave itself, voluntarily.
Because it was the right thing to do.&lt;/p&gt;
&lt;p&gt;To refute Ford, nobody was asking for a faster horse.
They were asking for the cable they already had.
They were asking to be considered in the design for a product that they’d have to deal with.&lt;/p&gt;
&lt;p&gt;Advancement should be for human advancement, and otherwise it is not progress.&lt;/p&gt;</content:encoded></item><item><title>Docs Assist: A Technical Writing Aide</title><link>https://edwardangert.com/blog/docs-assist-plugin/</link><guid isPermaLink="true">https://edwardangert.com/blog/docs-assist-plugin/</guid><description>A technical writer is a developer, too. An engineer of structured information: curation, synthesis, information architecture, judgment. We write, but that&apos;s often the least of it. I built a Claude Code plugin to help.</description><pubDate>Thu, 16 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I rewrote the &lt;a href=&quot;https://edwardangert.com/docs/pi-hole/&quot;&gt;Pi-hole documentation&lt;/a&gt; on my site in mid-March.
Since then, according to metrics from Clarity, AI assistants have cited it over 3,000 times to answer other people’s questions.&lt;/p&gt;
&lt;p&gt;Strangers, mid-troubleshooting, asking their AI &lt;code dir=&quot;auto&quot;&gt;so how do i know if pihole works&lt;/code&gt;, &lt;code dir=&quot;auto&quot;&gt;getting 403 forbidden when trying to access pihole for the first time&lt;/code&gt;, and &lt;code dir=&quot;auto&quot;&gt;now ti says forbiden&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If you were the one who found me via &lt;code dir=&quot;auto&quot;&gt;i only have the physical pi and a blank micro sd card&lt;/code&gt;, I hope I helped guide you, whoever you are.&lt;/p&gt;
&lt;p&gt;I’ve been that person, often late at night, SSHing into my Raspberry Pi and trying to figure out why there’s &lt;code dir=&quot;auto&quot;&gt;No space left on device&lt;/code&gt; when there’s definitely space left on the device.
Or worse, searching my spare parts bins for a working microSD card.&lt;/p&gt;
&lt;p&gt;That’s what prompted my rewrite earlier this year.
An unresponsive microSD card and an echo of “why isn’t the Internet working?”
That, and my traffic analytics said I was getting a lot of traffic to a single page and nearly everyone who visited bounced to a site I linked to.&lt;/p&gt;
&lt;p&gt;Now, for queries about Pi-hole block lists, my pages show up in about a third of AI answers.
For &lt;code dir=&quot;auto&quot;&gt;pihole backup&lt;/code&gt;, it’s 100%.&lt;/p&gt;
&lt;p&gt;My whole job as a technical writer has always been to anticipate what someone needs, and to make sure they find their answer in the first place they look for it.
I didn’t write those docs for AI.
I wrote them for me and for the greater good of the Internet.&lt;/p&gt;
&lt;p&gt;My personal site’s docs are just here to help - they don’t sell anything.
Humans trust documentation that actually solves their problem, and tend to shy away from documentation that feels like it’s been padded or trying to sell something.
AI has the same calibration. &lt;a href=&quot;https://arxiv.org/abs/2311.09735&quot;&gt;Research on generative-engine visibility&lt;/a&gt; found that citing sources and adding statistics improved how often AI systems surfaced a page (👀), while keyword stuffing, the classic SEO move, did essentially nothing.
The AI citations here are a side effect of that trust.&lt;/p&gt;
&lt;p&gt;The goal is still, and always, empowering the end user.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;how-much-of-technical-writing-is-writing&quot;&gt;How Much of Technical Writing Is Writing?&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Ask any technical writer how they spend their time.&lt;/p&gt;
&lt;p&gt;Writing is often the &lt;a href=&quot;https://essentialdata.com/tech-writers-making-the-complex-simple/&quot;&gt;smallest portion&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The job includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reading PRDs and the codebase to find what’s real.&lt;/li&gt;
&lt;li&gt;Interviewing the engineer who built the feature and the support teams who know where the issues arise.&lt;/li&gt;
&lt;li&gt;Running through each step to make sure I didn’t miss anything.&lt;/li&gt;
&lt;li&gt;Digging through Slack threads searching for concurring opinions.&lt;/li&gt;
&lt;li&gt;Working through how the feature relates to other documentation, and finding the best way to surface it to the reader.&lt;/li&gt;
&lt;li&gt;Running through the steps again.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The industry pitch for AI in documentation is aimed almost entirely at the writing part.&lt;/p&gt;
&lt;p&gt;“AI will write your docs” is a promise that won’t resolve the core bottleneck, the real work.
Writing code and writing documentation are both separate and time-consuming.
Often, the code gets included in the definition of “done,” and the documentation chases after.&lt;/p&gt;
&lt;p&gt;A technical writer is a developer, too.
Not of software, but of structured information: curation, synthesis, information architecture, judgment.&lt;/p&gt;
&lt;p&gt;Which facts are true.
Which facts matter.
What shape the whole thing should take so it stays usable as it grows.&lt;/p&gt;
&lt;p&gt;How to make sure someone can find it when they need to.&lt;/p&gt;
&lt;p&gt;These are decisions.&lt;/p&gt;
&lt;p&gt;My Pi-hole documentation gets cited because of decisions I made in writing it.
The troubleshooting page exists because I went through a bunch of Reddit and Stack Overflow posts, and because I dug through GitHub issues.
I redesigned my own Pi-hole deployment so that I could help the people who landed on the allow list page find their answer rather than bouncing.&lt;/p&gt;
&lt;p&gt;I’ve been a cheerleader for helping subject matter experts document their knowledge for a long time.
That’s a first step in documentation (write it down), and it’s technical writing.
They should own that proudly.
A technical writer is someone who makes that documentation better.&lt;/p&gt;
&lt;p&gt;I made a Claude Code plugin to help more people do more technical writing.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;docs-assist&quot;&gt;Docs Assist&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/EdwardAngert/docs-agent-plugin&quot;&gt;Docs Assist&lt;/a&gt; is a Claude Code plugin that coaches people through writing documentation.&lt;/p&gt;
&lt;p&gt;It’s for anyone who has the knowledge but not the job title or the time.
For the product owner who knows what got built and the support teams who know they need a doc more than they need another internal page or snippet.&lt;/p&gt;
&lt;p&gt;It’s also for technical writers, working solo or on small teams, who need to cover more ground than headcount allows.&lt;/p&gt;
&lt;p&gt;It asks what you know and what you need, takes your answers in any order, reflects them back so you can correct them, and then handles the structure, formatting, cross-references, and consistency.
It delivers a workable draft with less anxiety.&lt;/p&gt;
&lt;p&gt;If you can’t tell your Glossary from your Quickstart, it helps you choose a template from &lt;a href=&quot;https://www.thegooddocsproject.dev/template&quot;&gt;The Good Docs Project&lt;/a&gt;.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;docs-assist-documented-itself&quot;&gt;Docs Assist Documented Itself&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;I built the plugin collaboratively with Claude Code.&lt;/p&gt;
&lt;p&gt;My documentation workflow and ideals shaped the plugin.
I dumped in what I know and guided the process.
Claude Code turns out to be genuinely good at this kind of work, writing prompts to help guide future Claude Code sessions.&lt;/p&gt;
&lt;p&gt;I asked it to help improve its own README:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; Help me update the README with great docs about this plugin. Where do I start?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Docs Assist:&lt;/strong&gt; Let me read it back first. The README is solid, but it tells more than it shows, it opens with a rename note that only old users care about, and the file tree has drifted from the code (it’s missing two files). Start with one thing: a short “What it looks like” example near the top, because that’s what turns a scroller into someone who tries it. Then move the rename note down and fix the tree. I’ll ship those three now.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Today, I ran an audit against this post’s branch:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://edwardangert.com/_astro/docs-assist-audit.jdv7ADgl_EMIkV.webp&quot; alt=&quot;Screenshot of Docs Assist auditing this blog post&amp;#x27;s branch&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;990&quot; height=&quot;765&quot;&gt;&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;how-to-use-the-docs-assist-claude-code-plugin&quot;&gt;How to Use the Docs Assist Claude Code Plugin&lt;/h2&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;From inside Claude Code:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;/plugin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;marketplace&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;add&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;EdwardAngert/docs-agent-plugin&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;/plugin&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;install&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span&gt;docs-assist@docs-assist-marketplace&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Restart Claude Code, then if you’re in a repository with existing docs:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;/docs-assist:health&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;It puts together a scorecard of your docs, coverage, freshness, consistency, and findability.
It identifies some high-leverage fixes and offers to make them.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The plugin activates when you start discussing documentation, or you can call it directly:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;/docs-assist&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;It asks what you know, takes the brain dump in any order, marks the parts you’re unsure about for verification instead of papering over them, and produces a structured draft.
You review for accuracy.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;use-docs-assist-to-prepare-agent-ready-docs&quot;&gt;Use Docs Assist to Prepare Agent-ready Docs&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;The thread this post opened with:&lt;/p&gt;
&lt;div&gt;&lt;figure&gt;&lt;figcaption&gt;&lt;span&gt;&lt;/span&gt;&lt;/figcaption&gt;&lt;pre&gt;&lt;code&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;/docs-assist:agent-ready&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;p&gt;It creates or repairs &lt;code dir=&quot;auto&quot;&gt;llms.txt&lt;/code&gt;, completes the frontmatter that helps machines find the right page, and records your repo’s conventions where the next tool will look for them.&lt;/p&gt;
&lt;p&gt;The full command list, team configuration, and linting setup are in the &lt;a href=&quot;https://github.com/EdwardAngert/docs-agent-plugin&quot;&gt;plugin’s own docs&lt;/a&gt;.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;how-the-docs-assist-claude-code-plugin-works&quot;&gt;How the Docs Assist Claude Code Plugin Works&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;One design decision drives the mechanics: use the LLM only where judgment is required, and use deterministic tools everywhere else.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;keep-writing-rules-and-lint-rules-in-one-file&quot;&gt;Keep Writing Rules and Lint Rules in One File&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;&lt;code dir=&quot;auto&quot;&gt;/docs-assist:init&lt;/code&gt; commits a &lt;code dir=&quot;auto&quot;&gt;.docs-assist/config.yml&lt;/code&gt; to your repo: heading case, list markers, no em dashes, the frontmatter fields your docs already use.
The agent reads that file when it drafts.
&lt;code dir=&quot;auto&quot;&gt;/docs-assist:setup-lint&lt;/code&gt; generates the Vale and markdownlint configs from the same file, and extends any linter you already run instead of replacing it.&lt;/p&gt;
&lt;p&gt;Change a rule once and both the writing and the CI checks follow.
They can’t drift apart, because there’s nothing to drift between.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;update-every-affected-doc-in-parallel&quot;&gt;Update Every Affected Doc in Parallel&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;When code changes, &lt;code dir=&quot;auto&quot;&gt;/docs-assist:update&lt;/code&gt; reads the diff, greps the docs for the symbols that changed, and separates the docs that document a renamed flag from the ones that mention a term in passing.&lt;/p&gt;
&lt;p&gt;For a large change, it launches a subagent for each affected doc, in parallel.
Each subagent is constrained to edit only what the diff requires and to flag anything it can’t confirm for human review instead of guessing.&lt;/p&gt;
&lt;div&gt;&lt;h3 id=&quot;detect-docs-impact-in-ci-without-calling-a-model&quot;&gt;Detect Docs Impact in CI Without Calling a Model&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;The optional pull-request check is a dependency-free script that never calls a model or the network.
It classifies each diff against the change types that break docs: moved files, edited headings, changed code terms the docs mention, a large source change with no docs touched.
Then it leaves one comment saying exactly which range to hand to &lt;code dir=&quot;auto&quot;&gt;/docs-assist:update&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Detection is AI-free and runs on every PR.
The expensive step runs only when a human decides it’s worth it.&lt;/p&gt;
&lt;p&gt;That’s the same judgment call the whole post is about, applied to the tool itself.&lt;/p&gt;
&lt;p&gt;(And yes, Docs Assist documented this section.
I checked its claims against the code the way I’d check any SME’s draft.)&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;replace-your-docs-team-with-this-one-weird-plugin&quot;&gt;Replace Your Docs Team With This One Weird Plugin&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;It probably won’t replace a technical writer, which is good, because I still &lt;a href=&quot;https://edwardangert.com/about/resume/&quot;&gt;need a job&lt;/a&gt;.
But it does cover some of the tasks that slow an SME contributor and a technical writer down.&lt;/p&gt;
&lt;p&gt;Every hour I don’t spend fixing nested markdown or looking for the most recent Slack conversation that decided a naming convention is time I can spend on the work that made those 3,000+ citations happen: knowing my audience and developing the architecture that gets them what they need.&lt;/p&gt;
&lt;p&gt;Whether the last hop to that human is a search engine, a docs site, or an AI reading on their behalf, I’m happy knowing they got their answer.&lt;/p&gt;
&lt;p&gt;I’m writing this immediately after my post about &lt;a href=&quot;../riptide-of-ai-hype/&quot;&gt;the riptide of AI hype&lt;/a&gt; and how real capability is buried under an industry selling a deck of universal fixes.
This plugin is not a universal fix.
It’s &lt;a href=&quot;../ai-docs-assist/&quot;&gt;an aide&lt;/a&gt;.
It’s a real AI capability and a real human-AI collaboration that’s worth the hype.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;postscript&quot;&gt;Postscript&lt;/h2&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Knowledge is the foundation.
Without it you can’t build.
(Thanks RZA)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;While I was writing this, sending Claude off to find backup sources and references I could use, I (yes, I, not Claude) found that Fabrizio Ferri Benedetti had &lt;a href=&quot;https://passo.uno/skills-are-docs/&quot;&gt;already written much of this argument&lt;/a&gt;, better sourced and a step ahead.
Fitting that someone already documented their thoughts and approach.
Everyone else gets to benefit and build upon it.&lt;/p&gt;
&lt;p&gt;Try out the plugin and report back.
It’s open source, Apache 2.0, and actively evolving.&lt;/p&gt;
&lt;p&gt;I’d love to hear about what you do with it.&lt;/p&gt;</content:encoded></item><item><title>The Riptide of AI Hype</title><link>https://edwardangert.com/blog/riptide-of-ai-hype/</link><guid isPermaLink="true">https://edwardangert.com/blog/riptide-of-ai-hype/</guid><description>The AI hype bubble is going to pop. There, I said it. There&apos;s more to it, though: unverifiable promises, AI-washing, moving goalposts, and why I see the hype as a riptide.</description><pubDate>Wed, 15 Jul 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In April, Allbirds sold its shoe business for $39 million and rebranded the remaining public shell as NewBird AI, a GPU-as-a-service company.
The stock jumped roughly 600% on the announcement.
This was a business that lost $77 million the year before and closed every full-price store in the US.&lt;/p&gt;
&lt;p&gt;I can hear the “well, actually”s coming.
Yes, the shoes still exist, under new ownership.
It’s the public company, the ticker, the thing investors buy, that became an AI company overnight.&lt;/p&gt;
&lt;p&gt;A few weeks later, Everlane, another once-beloved direct-to-consumer brand, sold to Shein for $100 million in a deal structured mainly to absolve $90 million in debt.
Common shareholders got nothing.&lt;/p&gt;
&lt;p&gt;Two brands from the same era, and the media framing feels existential: sell out, or pivot to AI.&lt;/p&gt;
&lt;p&gt;That’s a riptide.
A current under the surface, pulling everything in one direction whether it wants to go there or not.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;is-it-deception&quot;&gt;Is It Deception?&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;I want this up top, and I want to state it carefully because the shorthand of this post already exists a thousand times over.&lt;/p&gt;
&lt;p&gt;I’m not saying that AI companies are lying.&lt;/p&gt;
&lt;p&gt;I’m positing that the industry subsists on grandiose promises delicately hinged on GDP-level funding and hardware requirements, with the intention to spend until we discover what the capabilities actually are.&lt;/p&gt;
&lt;p&gt;My skepticism is about the desperation to make &lt;em&gt;everything&lt;/em&gt; about AI.&lt;/p&gt;
&lt;p&gt;The bubble is that at some point, that has to shake itself out, and nobody knows what we’ll be left with, or who will be left behind.&lt;/p&gt;
&lt;p&gt;I use these tools every day, &lt;a href=&quot;../ai-docs-assist/&quot;&gt;at home and at work&lt;/a&gt;, and they keep surprising me.
Sometimes in good ways.&lt;/p&gt;
&lt;p&gt;I’m not saying that the promises are false.&lt;/p&gt;
&lt;p&gt;The promises are unverifiable right now, because the underlying capability is still being discovered, at enormous cost, in public, by all of us.&lt;/p&gt;
&lt;p&gt;I’m not the first to identify this distinction.
Read Andreu Belsunces Gonçalves for what they call &lt;a href=&quot;https://arxiv.org/abs/2508.19749&quot;&gt;deep hype&lt;/a&gt;: a long-term, overpromissory dynamic that makes not-yet-existing technologies feel both desirable and urgent, sustained by belief and speculation rather than deliberate falsehood.&lt;/p&gt;
&lt;p&gt;A person who exaggerates their resume knows what they can’t do.
This hype is more like a person who genuinely doesn’t know their own qualifications yet, interviewing for every job at once, and getting paid while they work out the details.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;record-setting-funding&quot;&gt;Record-Setting Funding&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;AI captured 81% of the record $300 billion in global VC funding in the first quarter of this year.
A year earlier it was 55%.
In 2022 it was around 30%.
Four companies, OpenAI, Anthropic, xAI, and Waymo, absorbed roughly 65% of all global venture dollars in a single quarter.&lt;/p&gt;
&lt;p&gt;But concentration of capital isn’t the same claim as progress being set back, and the two get blurred if you’re not careful.
Non-AI startups still pulled in about $58 billion that quarter, a figure that would have led every quarter before 2018.&lt;/p&gt;
&lt;p&gt;What still gets funded outside AI has narrowed to things AI can’t touch: defense, fintech, digital health, advanced manufacturing.
Categories with proprietary data, licenses, or physical moats.
Horizontal SaaS funding dropped roughly 35% over the previous year, not because it stopped being useful, but because AI threatens to commoditize what it used to charge for.&lt;/p&gt;
&lt;p&gt;Meanwhile, &lt;a href=&quot;https://finance.yahoo.com/news/companies-increasingly-ai-washing-212940553.html&quot;&gt;PR agencies estimate&lt;/a&gt; about half the AI pitches they’re asked to place are relabeled automation or unrelated products chasing an AI premium.
There’s a name for this now, “AI-washing,” and it’s been compared directly to dot-com era name-inflation.
Add &lt;code dir=&quot;auto&quot;&gt;.com&lt;/code&gt; to your name in 1999, add &lt;code dir=&quot;auto&quot;&gt;AI&lt;/code&gt; to your deck in 2026.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;the-default-to-ai-bias&quot;&gt;The Default-to-AI Bias&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;This is the part that kicked off this whole post.&lt;/p&gt;
&lt;p&gt;If you’re a technologist with a genuinely good non-AI idea, the rational move now is to fold AI into it, or watch it get less attention, less capital, and less institutional patience than an AI-flavored version of the same effort would get.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://insights4vc.substack.com/p/ai-captured-80-of-global-venture&quot;&gt;Founder-facing advice says it outright&lt;/a&gt;: position your startup inside the AI funding currents, or watch from the sidelines.&lt;/p&gt;
&lt;p&gt;Y Combinator’s newest batches run more than 60% AI, at the earliest, most idea-stage layer of the pipeline, before product-market fit, before revenue.
The exact moment a new non-AI idea would otherwise get its first shot.&lt;/p&gt;
&lt;p&gt;This decides what gets built in the first place.&lt;/p&gt;
&lt;p&gt;The same pattern shows up in academic science, with better sourcing than anything I could add: &lt;a href=&quot;https://www.nature.com/articles/s44271-026-00428-5&quot;&gt;peer-reviewed work&lt;/a&gt; arguing that AI’s proliferation risks a scientific monoculture, where funding priorities, journal norms, and career incentives increasingly reward AI-centered work, so pursuing non-AI research carries career risk.
Same mechanism, different room.
Grant committees instead of term sheets.&lt;/p&gt;
&lt;p&gt;Here’s my own extrapolation: I suspect starving the adjacent fields eventually slows AI’s own progress.&lt;/p&gt;
&lt;p&gt;The clearest documented version is mathematics, where there’s &lt;a href=&quot;https://www.ox.ac.uk/news/2026-02-11-expert-comment-how-and-why-mathematics-will-both-underpin-and-lead-next-generation&quot;&gt;a real argument&lt;/a&gt; that mathematical structure is the scaffolding intelligent systems need, not an accessory bolted on after the fact.
Without it, AI stays fast but brittle.
I’d bet the same is true of cryptography and philosophy, but that’s my hunch, not a citation.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;what-the-gloss-covers-part-one-nobody-fully-understands-the-mechanism&quot;&gt;What the Gloss Covers, Part One: Nobody Fully Understands the Mechanism&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Start with the people who’d have the most reason to overstate their own understanding, and listen to what they actually admit.&lt;/p&gt;
&lt;p&gt;Anthropic’s CEO has called the current opacity of these systems &lt;a href=&quot;https://www.darioamodei.com/post/the-urgency-of-interpretability&quot;&gt;essentially unprecedented in the history of technology&lt;/a&gt;, and said plainly that nobody knows, at a precise level, why the model made the choice it made.
OpenAI’s CEO, asked directly how his own models work, &lt;a href=&quot;https://futurism.com/sam-altman-admits-openai-understand-ai&quot;&gt;said&lt;/a&gt;: we certainly have not solved interpretability.&lt;/p&gt;
&lt;p&gt;Forty researchers across OpenAI, Google DeepMind, Anthropic, and Meta, a list that includes Ilya Sutskever and Geoffrey Hinton, warned that even the partial visibility labs currently have &lt;a href=&quot;https://arxiv.org/abs/2507.11473&quot;&gt;isn’t guaranteed to survive as models get more capable&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;That’s the industry’s own position paper.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;the-gloss-part-two-nobody-knows-the-ceiling-and-the-surprises-run-the-other-way&quot;&gt;The Gloss, Part Two: Nobody Knows the Ceiling, and the Surprises Run the Other Way&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Some of these promises get delivered.&lt;/p&gt;
&lt;p&gt;In 2021, professional superforecasters &lt;a href=&quot;https://www.lesswrong.com/posts/CJw2tNHaEimx6nwNy/ai-forecasting-one-year-in&quot;&gt;predicted&lt;/a&gt; the best model would hit 12.7% accuracy on a hard math benchmark by mid-2022, and considered anything above 20% unlikely.
The actual result was 50.3%.
&lt;a href=&quot;https://arxiv.org/abs/2109.13916&quot;&gt;Researchers keep documenting&lt;/a&gt; capabilities that emerged without anyone training for them, and &lt;a href=&quot;https://arxiv.org/abs/2307.03718&quot;&gt;the main way anyone learns a model’s outer limits&lt;/a&gt; has been iterative public deployment, not internal lab knowledge.&lt;/p&gt;
&lt;p&gt;Large models keep turning out to have &lt;a href=&quot;https://www.planned-obsolescence.org/language-models-surprised-us/&quot;&gt;capabilities their own designers didn’t know were there&lt;/a&gt; until the public went looking after release.&lt;/p&gt;
&lt;p&gt;So when someone says AI might genuinely help cure a disease, that’s not automatically hype.
It’s consistent with the documented pattern of real capability being underestimated.
But genuine-but-unproven potential is a different category of claim from “does everything, everywhere, fixes everything,” and the current discourse treats them as interchangeable.
Real capability keeps outrunning anyone’s ability to forecast it, in both directions, and almost nobody is being precise about which direction they mean.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;agi-the-amorphous-definition&quot;&gt;AGI: The Amorphous Definition&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;AGI was the dream.&lt;/p&gt;
&lt;p&gt;A single term everyone could rally behind or against.
Then nobody could agree on what it meant.&lt;/p&gt;
&lt;p&gt;Then the definition changed.
Now I barely hear anything about it.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.nature.com/articles/d41586-026-00495-y&quot;&gt;Peer-reviewed correspondence in Nature&lt;/a&gt; this February found the definition has been rewritten three times in a decade, and each rewrite landed exactly when existing systems were about to fail the previous version of the test.
&lt;a href=&quot;https://arxiv.org/abs/0712.3329&quot;&gt;The original 2007 bar&lt;/a&gt;, reliable generalization with no task-specific tuning, still isn’t met by anything on the market.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://openai.com/charter/&quot;&gt;OpenAI’s own charter&lt;/a&gt; caps investor returns once AGI is formally declared, which means the company deciding whether AGI has arrived has a direct financial stake in how that word gets defined.
Even Sam Altman, the person most publicly associated with chasing it, has called AGI “a very sloppy term” and “not a super useful term,” in the same period he kept using it in predictions.
&lt;a href=&quot;https://helentoner.substack.com/p/the-term-agi-is-almost-useless-at&quot;&gt;Serious people have claimed AGI was achieved on at least three separate dates in the past year&lt;/a&gt;, while others place it a decade or more out.&lt;/p&gt;
&lt;p&gt;The vocabulary is shifting toward “superintelligence” now.&lt;/p&gt;
&lt;p&gt;Not because the ambition changed, but because the old word got worn out by its own definitional churn.
Goalposts?
Where we’re going, we don’t need goalposts.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;swim-parallel-to-the-shore&quot;&gt;Swim Parallel to the Shore&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;The advice for an actual riptide isn’t to fight the current, and it isn’t to let it take you.
It’s to swim parallel to the shore until you’re out of the pull, then make your way back in.&lt;/p&gt;
&lt;p&gt;AI is genuinely, verifiably capable of things nobody, including the people building it, fully understands or has finished discovering.
And at the exact same time, an enormous amount of capital, attention, and career incentive is being spent selling you something else: a universal fix, a funding strategy, a word to append to a press release.&lt;/p&gt;
&lt;p&gt;Sifting the real capability from the gloss is the work now.
Almost nobody is doing that work in public, because the incentives on all sides reward saying the loud version instead.&lt;/p&gt;
&lt;p&gt;This is my small attempt at doing it in public.&lt;/p&gt;
&lt;p&gt;I built the research for this post in conversations with Claude Sonnet, and had Claude Fable draft it in its attempt at my voice.
Then I edited it the way I’d edit any subject matter expert’s draft: checked the claims, demanded citations, cut what didn’t hold up, and rewrote this ending twice.&lt;/p&gt;
&lt;p&gt;I used the thing I’m skeptical about to write the skepticism, and it saved me hours.
Is it perfect?
It gets the point across.
I don’t have a cleaner way to hold both halves of this essay at once, and I’m not sure one exists yet.
Use your favorite AI tool to summarize it for you.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;../chasing-meta/&quot;&gt;Last time&lt;/a&gt;, I wrote about chasing the meta while keeping your “why” close.
This is the same idea at economy scale.
Experiment with the tools.
Take the capability seriously, it keeps being more real than the forecasts.
But when the current tries to pull your work, your funding, your field, or your public company’s ticker symbol toward AI whether it belongs there or not, that’s not the wave to ride.&lt;/p&gt;
&lt;p&gt;That’s the one to swim parallel to. Keep your head up, and wait it out.&lt;/p&gt;
&lt;p&gt;And hold on to your shoes.&lt;/p&gt;</content:encoded></item><item><title>Chasing the Meta: Fundamentals, Hype, and Progress</title><link>https://edwardangert.com/blog/chasing-meta/</link><guid isPermaLink="true">https://edwardangert.com/blog/chasing-meta/</guid><description>AI tooling changes by the week. The fundamentals don&apos;t. On a broken MCP, jiu-jitsu meta, and why the basics outlast every shiny new thing.</description><pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;In the early 1900s, New York City built elevated train lines over its major avenues.
Like in Chicago and Boston, they were called the “Els.”&lt;/p&gt;
&lt;p&gt;They were the future of urban transit, steel and steam carrying passengers above the crowded streets.&lt;/p&gt;
&lt;p&gt;By the 1930s, the city was tearing them down as blights, building subways to replace them.
While they were perfecting one system, they were already making it obsolete with the next.&lt;/p&gt;
&lt;p&gt;Companies were competing to become the standard and building conflicting infrastructure while trying to outpace regulation.&lt;/p&gt;
&lt;p&gt;Every &lt;del&gt;time&lt;/del&gt; week there’s something new in the AI hype cycle I’m reminded of the Els.&lt;/p&gt;
&lt;p&gt;One day, maybe soon, AI will be a part of everyone’s workflow in ways we don’t even question, and many of these think pieces will age about as well as my college-era LiveJournal posts.&lt;/p&gt;
&lt;p&gt;This isn’t a post about AI.
Not really.&lt;/p&gt;
&lt;p&gt;It’s about what we care about and work towards, and how we can explore and incorporate the latest and greatest while still maintaining focus on our core values and mission.&lt;/p&gt;
&lt;p&gt;This is a familiar pattern.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;hype-loop-pattern&quot;&gt;Hype-loop Pattern&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;Some developer friends use an IDE they have a love-hate relationship with.
The developers behind it start building features that seem genuinely useful, then abandon them for the next shiny feature before they’re finished.&lt;/p&gt;
&lt;p&gt;I’ve been using open-source software for decades and I’ve worked at startups.
When they explained this, I understood immediately.&lt;/p&gt;
&lt;p&gt;That’s the feeling I’m starting to get about certain AI features and maybe MCP.
It’s not that it’s being abandoned, not even that it doesn’t do what it promises.
It’s that it’s being built mid-flight toward an airport that’s already being replaced.&lt;/p&gt;
&lt;p&gt;We’ve seen this before.
In open source, projects announce features in the &lt;code dir=&quot;auto&quot;&gt;README&lt;/code&gt; that won’t ship for years.
Then the project gets abandoned, or absorbed, or the feature ships differently than promised.&lt;/p&gt;
&lt;p&gt;Technical writers know this so deeply, it’s nearly canon: never document something as &lt;code dir=&quot;auto&quot;&gt;coming soon&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Or as the (&lt;a href=&quot;https://developers.google.com/style/future&quot;&gt;Google developer documentation style guide&lt;/a&gt;) says:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Avoid documenting future features or products, even in innocuous ways.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Sometimes we spend two weeks documenting a feature that gets abandoned before release.
We stay resourceful, take notes, learn from the chase, and know when to pivot.
And we keep receipts.&lt;/p&gt;
&lt;p&gt;AI is speedrunning technology concepts from the last three decades and companies are changing their names around it.
Everyone works for “an AI company” now.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;the-land-before-protocol&quot;&gt;The Land Before Protocol&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;At Coder, I asked Claude Code to help document the way the Coder codebase handles networking, something that relies on a number of different parts of the codebase.&lt;/p&gt;
&lt;p&gt;Claude kept insisting it didn’t need the help:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;“Just link me to the docs.”&lt;/li&gt;
&lt;li&gt;“I can analyze the codebase directly.”&lt;/li&gt;
&lt;li&gt;“Point me to the repository.”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I answered: “You’re in the repo right now.”&lt;/p&gt;
&lt;p&gt;And like my five-year-old, it responded “oh yeah, I forgot” with the same confidence that it was right to begin with.&lt;/p&gt;
&lt;p&gt;I created a new Git repository, started Claude Code, gave it access to the Coder repo, and took it feature-by-feature:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Let’s take this directory-by-directory and feature-by-feature.
Learn about the way networking is handled as a concept, by which files, and what aspects of it users can modify. Create a file called &lt;code dir=&quot;auto&quot;&gt;networking.md&lt;/code&gt; with detailed notes for yourself. Whenever you learn something new about networking, update the file.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This became &lt;a href=&quot;https://github.com/coder/shared-docs-kb&quot;&gt;shared-docs-kb&lt;/a&gt;, a knowledge sidecar of notes, context, and architectural patterns.&lt;/p&gt;
&lt;p&gt;The idea was to give Claude Code structured context about the codebase so it could help with documentation work instead of making things up as it went along.
I was trying to minimize the amount of information it needed to keep in context and teach it new skills that would make it a contributor’s buddy.&lt;/p&gt;
&lt;p&gt;With MCP and skills, what I started as a manual sidecar had become a protocol, and skills helped keep Claude focused.&lt;/p&gt;
&lt;p&gt;I was trying to solve a problem with the tools I had: AI needs structured context to be useful for documentation work.&lt;/p&gt;
&lt;p&gt;Meanwhile, Claude’s context window keeps expanding and its native tools keep improving.&lt;/p&gt;
&lt;p&gt;The ground keeps shifting while I’m building the bridge.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;so-i-tried-an-mcp&quot;&gt;So I tried an MCP&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;My goal is to make it easier for developers on open source and small tools to draft useful documentation.&lt;/p&gt;
&lt;p&gt;I built an &lt;a href=&quot;https://github.com/EdwardAngert/reformatters-knowledge-base&quot;&gt;MCP server&lt;/a&gt; for &lt;a href=&quot;https://github.com/dynamical-org/reformatters&quot;&gt;reformatters&lt;/a&gt;, a Python framework for converting weather datasets.
It’s not meant to replace technical writers or documentation functions, but it should get people started.&lt;/p&gt;
&lt;p&gt;In my &lt;a href=&quot;../ai-docs-assist/&quot;&gt;last post&lt;/a&gt;, I was optimistic about it.&lt;/p&gt;
&lt;p&gt;Here’s what actually happened:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Railway deployment wouldn’t bind to the right IP.&lt;/strong&gt; Crash loops. But that was almost beside the point.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claude Desktop only supports local stdio connections.&lt;/strong&gt; I built an HTTP/SSE server for a client that can’t use HTTP. The Railway deployment was solving the wrong problem from the start.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The dataset tools had circular dependencies.&lt;/strong&gt; They required the main reformatters package to be installed, which defeated the purpose of a separate knowledge repo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Search tools returned nothing even when the content was right there.&lt;/strong&gt; Tool registration worked. Retrieval didn’t.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The MCP server runs.
The tools are registered.
Claude thinks the knowledge base has &lt;a href=&quot;https://github.com/EdwardAngert/reformatters-knowledge-base/tree/main/knowledge&quot;&gt;good content&lt;/a&gt;.
But the architecture was mismatched from the start: I built a remote-first HTTP server for clients that only work locally over stdio.&lt;/p&gt;
&lt;p&gt;I had Claude Code verify the branch and document its findings.
Its conclusion: MCP remote access isn’t mature enough for team-wide use.
MCP requires infrastructure I don’t have the capacity (or desire) to maintain.&lt;/p&gt;
&lt;p&gt;Claude Code eventually reached the &lt;a href=&quot;https://www.writethedocs.org/&quot;&gt;Write the Docs&lt;/a&gt;-ready conclusion I’ve been arguing for, “we don’t need another repository, we just need better documentation.”&lt;/p&gt;
&lt;p&gt;I used to write documentation.
I still do, but I used to too.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;bjj-core-mechanics&quot;&gt;BJJ Core Mechanics&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;The style of Brazilian jiu-jitsu has changed since it started getting popular in the US in the early 2000s.&lt;/p&gt;
&lt;p&gt;Back then, though the tagline was about smaller practitioners beating stronger opponents, in practice, there was still a focus on heavy pressure.
The “gentle art” was a little brutish.&lt;/p&gt;
&lt;p&gt;Through the years, the way people “played” evolved, with new techniques catching people off guard and being used to win competitions, then catching on in gyms throughout the world.&lt;/p&gt;
&lt;p&gt;That strategy, called “the meta,” becomes the new cool thing for a while, then people get good at countering or defending it, and it usually subsides or gives way to the next thing.&lt;/p&gt;
&lt;p&gt;You’re not meant to abandon your entire game to chase only after the cool new thing.&lt;/p&gt;
&lt;p&gt;Often, though the specific technique fizzles, some component remains and helps shape the new meta.&lt;/p&gt;
&lt;p&gt;Berimbolos, x-guard, heel hook entries.
They were all surprising at first, and now they’re just part of the system.&lt;/p&gt;
&lt;p&gt;As a featherweight who’s highly proficient at pulling bottom side-control, the buggy choke was a gift.
The problem is, pressure can still beat a buggy choke, and the real gift is reapplying the head-and-arm concept in other unexpected ways.&lt;/p&gt;
&lt;p&gt;It’s fun to chase the meta, as long as you keep your “why” close at heart (and protect your neck).&lt;/p&gt;
&lt;p&gt;Knee cuts, pressure passes, just standing up.
They never left, and they still work.&lt;/p&gt;
&lt;p&gt;It’s not that the techniques are necessarily fundamental, but that some concepts are.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;fundamental-concepts&quot;&gt;Fundamental Concepts&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;MCP and skills might actually stick around, but I think they’re techniques that will get supplanted by more adaptive contexts and maybe a way to micro-train our tools.
Things that would work out of the box.&lt;/p&gt;
&lt;p&gt;The spiritual core of technical writing hasn’t changed much: know your audience.&lt;/p&gt;
&lt;p&gt;Human readers are always the audience.
That’s the same whether they’re accessing the content directly or through an AI tool.&lt;/p&gt;
&lt;p&gt;That which was best practice before is still best practice now.
Write things down, put them somewhere people can find them.&lt;/p&gt;
&lt;p&gt;Make documentation a practice, and wherever you are in your practice, remember to keep practicing.
Write things down even if they’re not perfect.
Show them off even before you think they’re ready.
Make it accessible.&lt;/p&gt;
&lt;p&gt;I try to write accessible documentation, but who is accessibility for?&lt;/p&gt;
&lt;p&gt;There are &lt;a href=&quot;https://www.w3.org/WAI/business-case/&quot;&gt;business cases for digital accessibility&lt;/a&gt;.
When you write documentation with accessibility in mind, screen readers can navigate it, search engines can index it, and AI tools can parse and summarize it.
The same practices that serve a person using a screen reader serve an LLM trying to extract meaning or translate content.&lt;/p&gt;
&lt;p&gt;When you make things more accessible, like a &lt;a href=&quot;https://en.wikipedia.org/wiki/Curb_cut_effect&quot;&gt;curb cut&lt;/a&gt;, it helps people even outside the original intention.
That’s not a coincidence, it’s fundamentals.&lt;/p&gt;
&lt;p&gt;So go ahead, experiment with AI, build that MCP, try a buggy choke, and chase the meta.
Just remember why.&lt;/p&gt;</content:encoded></item><item><title>AI is coming for my job. Maybe to my job.</title><link>https://edwardangert.com/blog/ai-docs-assist/</link><guid isPermaLink="true">https://edwardangert.com/blog/ai-docs-assist/</guid><description>We all--humans and AI--need good documentation.</description><pubDate>Fri, 12 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;While I was working on a pull request for a new &lt;a href=&quot;https://coder.com&quot;&gt;Coder&lt;/a&gt; feature, there were a few times that Claude Code offered my own documentation or comment on a PR to answer questions I had.&lt;/p&gt;
&lt;p&gt;It was a guess I made in a PR about the way a feature might work, and when I asked Claude Code to verify, it referred to the documentation.
My documentation.&lt;/p&gt;
&lt;p&gt;My job has always been to empower users to get stuff done smoothly and on their own.&lt;/p&gt;
&lt;p&gt;Now my audience includes AI.&lt;/p&gt;
&lt;p&gt;If humans and AI both rely on good documentation, how do I develop documentation and an information architecture that help both?&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;how-i-use-ai&quot;&gt;How I Use AI&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;I use Claude and Claude Code both at home and at work.
On my phone, my chats with AI probably look a lot like most peoples’:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Is this poison ivy?&lt;/li&gt;
&lt;li&gt;Which of these water bottles fit in my car’s cup holder?&lt;/li&gt;
&lt;li&gt;What’s this broken part of our toilet called?&lt;/li&gt;
&lt;li&gt;Is this rash poison ivy?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Claude Code might look a little different:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Help me turn my settings into dotfiles.&lt;/li&gt;
&lt;li&gt;I have a Docusaurus site hosted through GitHub Pages. Let’s develop a plan to migrate it to Astro with Starlight.&lt;/li&gt;
&lt;li&gt;When I ask you to help me work on documentation, remember the following…&lt;/li&gt;
&lt;li&gt;Help me make a &lt;a href=&quot;https://github.com/EdwardAngert/docs-agent-plugin/&quot;&gt;Claude Code plugin&lt;/a&gt; that helps you follow my standards for documentation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For me, the great promise of AI is that it can make sense of piles of information that would take me hours to untangle and map out.&lt;/p&gt;
&lt;p&gt;The current hype seems centered around how AI can take over tasks like research, software development, and documentation.&lt;/p&gt;
&lt;p&gt;If AI has all the information, can it write the documentation for me?&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;ai-can-document-things-humans-are-better-at-writing-documentation&quot;&gt;AI Can Document Things; Humans Are Better at Writing Documentation&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;For a good example of this, explore &lt;a href=&quot;https://deepwiki.com&quot;&gt;DeepWiki&lt;/a&gt;, which “provides up-to-date documentation you can talk to, for every repo in the world.”
It gives a comprehensive breakdown of a repository, but you won’t get concept, guides, steps, and examples.
Right now, AI is excellent at documenting what exists in the way that it exists, but not as good at thinking about what a user will need.&lt;/p&gt;
&lt;p&gt;When I write documentation, I take all the information I have from my own notes, from product managers, and the several threads from Slack in which someone said &lt;code dir=&quot;auto&quot;&gt;@Edward ☝️&lt;/code&gt;.
I parse it all, following threads and connecting the dots.&lt;/p&gt;
&lt;p&gt;With AI, I paste all the information into a window, tell it what we’re working on and direct the outline of documentation and examples.
Claude lays out a plan, and if I’m using Claude Code, we dig deeper into the codebase or Git branch for the context I need.&lt;/p&gt;
&lt;p&gt;Context, relationships, and information synthesis all help technical writers make better documentation.
Usually we get that from subject matter experts (SME), by exploring codebases, or by being in every Slack channel and engineering standup ever.&lt;/p&gt;
&lt;p&gt;If my AI tool has access to all of these, shouldn’t it be able to write the documentation itself?&lt;/p&gt;
&lt;p&gt;It tries.&lt;/p&gt;
&lt;p&gt;It can make a great outline, but it seems to have trouble navigating what &lt;a href=&quot;https://idratherbewriting.com/blog/what-is-diataxis-documentation-framework&quot;&gt;kind of technical documentation to write&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;AI is missing—at least for now—that magical blend of curiosity and empathy that helps technical writers anticipate their audience’s needs.
It’s good at parsing content that is there, and it tries to imitate &lt;a href=&quot;https://en.wikipedia.org/wiki/Abductive_reasoning&quot;&gt;abductive reasoning&lt;/a&gt; as best as it can.
Maybe that’s why it “hallucinates” technical content - it’s trying to guess, very much like I would, and it can get to the right answer, but it needs to be babysat, coaxed, coached, and led.&lt;/p&gt;
&lt;p&gt;But while AI agents aren’t great at writing technical documentation (yet), they are a great aid.&lt;/p&gt;
&lt;p&gt;Maybe aide is more appropriate.
Claude Code is my SME, my always-at-hand assistant, my &lt;a href=&quot;https://en.wikipedia.org/wiki/Rubber_duck_debugging&quot;&gt;rubber duck&lt;/a&gt;, and regex expert.&lt;/p&gt;
&lt;div&gt;&lt;h2 id=&quot;how-it-started--how-its-going&quot;&gt;How It Started / How It’s Going&lt;/h2&gt;&lt;/div&gt;
&lt;p&gt;I’m sure there will be advancements that feel threatening, and there will be companies that try to eschew a documentation and education function to “have someone else do it,” as there always are.&lt;/p&gt;
&lt;p&gt;AI agents are becoming our technical analogues and companions, and the same way that some engineering teams are, technical writers will find ways that they augment and accelerate our work; not supplant us.&lt;/p&gt;
&lt;p&gt;What if we can use this to make things better?&lt;/p&gt;
&lt;p&gt;At Coder, as part of a larger effort to help other teams implement AI into their workflows, I created a &lt;a href=&quot;https://github.com/coder/shared-docs-kb&quot;&gt;knowledgebase&lt;/a&gt; that everyone could use to find answers and contribute documentation.
This was before I learned about &lt;a href=&quot;https://modelcontextprotocol.io/docs/getting-started/intro&quot;&gt;Model Context Protocol (MCP)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I want to make it easy for subject matter experts to share their knowledge, and for people who need it to find it.&lt;/p&gt;
&lt;p&gt;Right now, I’m working on developing an &lt;a href=&quot;https://github.com/EdwardAngert/reformatters-knowledge-base&quot;&gt;MCP for an open source project that converts weather and climate datasets&lt;/a&gt;.
As always, my goal is to develop a repeatable strategy.
You can follow that repository to see how it goes.&lt;/p&gt;
&lt;p&gt;That’s Documentation, and once I get it working, I’m looking forward to hearing about how you implement the concept, whether you learn it here or through a chat with your favorite AI.&lt;/p&gt;</content:encoded></item></channel></rss>