<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: chromoany</title>
    <description>The latest articles on DEV Community by chromoany (@chromoany).</description>
    <link>https://dev.to/chromoany</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4202907%2F72a4601d-5c76-4e5e-9dea-737ec1099be9.jpg</url>
      <title>DEV Community: chromoany</title>
      <link>https://dev.to/chromoany</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/chromoany"/>
    <language>en</language>
    <item>
      <title>A README skill that deletes claims it cannot source</title>
      <dc:creator>chromoany</dc:creator>
      <pubDate>Fri, 23 Oct 2026 15:11:50 +0000</pubDate>
      <link>https://dev.to/chromoany/a-readme-skill-that-deletes-claims-it-cannot-source-2gg8</link>
      <guid>https://dev.to/chromoany/a-readme-skill-that-deletes-claims-it-cannot-source-2gg8</guid>
      <description>&lt;p&gt;An agent writing a README usually gets the shape right and the facts wrong. The sections are all there — install, quickstart, configuration, license — but the install command points at a package that was never published, the config key is one the code does not read, and a feature still on the roadmap is described in present tense.&lt;/p&gt;

&lt;p&gt;I built a skill that treats this as an evidence problem before it treats it as a writing problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Evidence first, prose second
&lt;/h2&gt;

&lt;p&gt;Before writing a sentence, the skill builds a fact map from the repository: package manifests, entry points, example scripts, tests, CI config, and any existing docs. The README is then written only from what that map supports.&lt;/p&gt;

&lt;p&gt;When something cannot be sourced, the claim is removed rather than reworded. Rewording is how the invented install command survives a second draft — it gets vaguer, not truer. The skill also records what it could not verify, so an unreleased feature shows up as a limitation instead of a feature.&lt;/p&gt;

&lt;h2&gt;
  
  
  The structure part came from 200 repositories
&lt;/h2&gt;

&lt;p&gt;Removing bad claims does not tell you where to put the good ones, so I studied how real projects organize onboarding: 200 repositories, all with at least 1,000 stars, each pinned to a specific commit and logged with a link back to the source.&lt;/p&gt;

&lt;p&gt;32 of them are full case studies — how the README is organized, what is worth copying, what breaks if you copy it. The other 168 are structure studies, grouped into 14 domains with 12 projects each: web frameworks, CLIs, editors, databases, embedded, and so on. React and Vite do not open the same way as Linux or Zephyr, and a weekly newsletter should not open like either.&lt;/p&gt;

&lt;p&gt;In practice the skill reads the group that matches the project instead of applying a template. A desktop app gets a screenshot early. A CLI gets a command and its output. A script gets three lines and a code block.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy2g4srxnx00og2ah2890.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy2g4srxnx00og2ah2890.png" alt="Study corpus: 32 case studies plus 14 groups of structural studies" width="800" height="606"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  A deliberately small demo
&lt;/h2&gt;

&lt;p&gt;The repository ships a tiny Python script that filters log lines, plus a README draft that gets the facts wrong on purpose: it calls itself the fastest, production-ready logging platform and tells you to run &lt;code&gt;pip install logslice&lt;/code&gt;. There is no published package and no benchmark — only a local script.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frapf4j9bxfi993swd2j7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frapf4j9bxfi993swd2j7.png" alt="Before and after: invented package install and performance claims replaced with the real script usage" width="800" height="790"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The rewritten version says it is a local script, that it needs Python 3.10+, that nothing has to be installed. It gives the command and the expected output, and adds the caveat that the log level has to be at the start of the line.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftau6ksx80tr99xv1aowm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftau6ksx80tr99xv1aowm.png" alt="Running the example: filtering for ERROR prints the matching line" width="800" height="580"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Small, but it is the exact failure people hit: copy a command, get an error, close the tab.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;

&lt;p&gt;The skill is plain Markdown — instructions plus reference files loaded on demand. No runtime, no API key.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add chromoany/readme-atlas
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That installs into the agents the skills CLI detects and links into Claude Code and Codex. You can also copy the &lt;code&gt;skills/readme-atlas&lt;/code&gt; folder into an agent's skill directory.&lt;/p&gt;

&lt;p&gt;Then ask for what you want:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use $readme-atlas to review README.md without editing files.
Find where a new user following it would get stuck, with evidence.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use $readme-atlas to rewrite the README in Chinese.
Every command and feature claim must be traceable to the repository.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What it does not do
&lt;/h2&gt;

&lt;p&gt;Three honest limits, since they are the parts I am least sure about.&lt;/p&gt;

&lt;p&gt;The 200-repository study is about structure, not quality. It tells you whether a README's shape matches what readers of that kind of project expect, not whether the project is worth using.&lt;/p&gt;

&lt;p&gt;"Delete the unsourced claim" is aggressive. For install commands and config keys I think it is right — a wrong command is worse than a missing one. For roadmap-ish claims, keeping the sentence and marking it unverified is often better. That split is a judgment call in the instructions, not something I measured.&lt;/p&gt;

&lt;p&gt;And it is instructions, not a linter. There is no CI check that fails when a claim is unsourced; the agent has to actually look at the repository. That is slower than generating text, and it is the point.&lt;/p&gt;

&lt;p&gt;Repo, MIT licensed: &lt;a href="https://github.com/chromoany/readme-atlas" rel="noopener noreferrer"&gt;chromoany/readme-atlas&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you try it on a project, the useful feedback is where it still guessed — a command it wrote without checking, a section it placed by template rather than by reader.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>github</category>
      <category>ai</category>
      <category>documentation</category>
    </item>
  </channel>
</rss>
