<?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: Tashfiqul Islam</title>
    <description>The latest articles on DEV Community by Tashfiqul Islam (@tashfiq61).</description>
    <link>https://dev.to/tashfiq61</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%2F3995766%2Ffa5c44f6-4e17-4298-8fec-2f25df59108c.jpg</url>
      <title>DEV Community: Tashfiqul Islam</title>
      <link>https://dev.to/tashfiq61</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tashfiq61"/>
    <language>en</language>
    <item>
      <title>I built Charter because AI coding agents don’t just need better models — they need safer repositories to land in.

It’s an offline CLI that gives any repo a deterministic 0–100 agent-readiness score, with clear fixes for every gap.</title>
      <dc:creator>Tashfiqul Islam</dc:creator>
      <pubDate>Sun, 21 Jun 2026 21:43:35 +0000</pubDate>
      <link>https://dev.to/tashfiq61/i-built-charter-because-ai-coding-agents-dont-just-need-better-models-they-need-safer-16po</link>
      <guid>https://dev.to/tashfiq61/i-built-charter-because-ai-coding-agents-dont-just-need-better-models-they-need-safer-16po</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/tashfiq61/charter-a-deterministic-readiness-score-for-ai-coding-agents-i7f" class="crayons-story__hidden-navigation-link"&gt;Charter: a deterministic readiness score for AI coding agents&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/tashfiq61" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F3995766%2Ffa5c44f6-4e17-4298-8fec-2f25df59108c.jpg" alt="tashfiq61 profile" class="crayons-avatar__image" width="96" height="96"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/tashfiq61" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Tashfiqul Islam
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Tashfiqul Islam
                
              
              &lt;div id="story-author-preview-content-3957847" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/tashfiq61" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F3995766%2Ffa5c44f6-4e17-4298-8fec-2f25df59108c.jpg" class="crayons-avatar__image" alt="" width="96" height="96"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Tashfiqul Islam&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/tashfiq61/charter-a-deterministic-readiness-score-for-ai-coding-agents-i7f" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jun 21&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/tashfiq61/charter-a-deterministic-readiness-score-for-ai-coding-agents-i7f" id="article-link-3957847"&gt;
          Charter: a deterministic readiness score for AI coding agents
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/agents"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;agents&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/security"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;security&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/tashfiq61/charter-a-deterministic-readiness-score-for-ai-coding-agents-i7f#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>agents</category>
      <category>ai</category>
      <category>cli</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Charter: a deterministic readiness score for AI coding agents</title>
      <dc:creator>Tashfiqul Islam</dc:creator>
      <pubDate>Sun, 21 Jun 2026 21:33:49 +0000</pubDate>
      <link>https://dev.to/tashfiq61/charter-a-deterministic-readiness-score-for-ai-coding-agents-i7f</link>
      <guid>https://dev.to/tashfiq61/charter-a-deterministic-readiness-score-for-ai-coding-agents-i7f</guid>
      <description>&lt;p&gt;AI coding agents inherit the repository they land in.&lt;/p&gt;

&lt;p&gt;That sounds obvious until you watch one fail for reasons that have nothing to do with the model.&lt;/p&gt;

&lt;p&gt;Give an agent a clear &lt;code&gt;AGENTS.md&lt;/code&gt;, pinned tools, runnable tests, safe defaults, and a CI path it can understand, and it usually behaves like a careful senior engineer. Drop it into a repo with missing context, an MCP server pinned to &lt;code&gt;@latest&lt;/code&gt;, unclear conventions, and a secret sitting in plain sight, and it will still try to help. Confidently.&lt;/p&gt;

&lt;p&gt;That confidence is the dangerous part.&lt;/p&gt;

&lt;p&gt;I kept seeing the same pattern: an agent commits a key it found in a config file. Another hangs because an MCP server changed underneath it. Another rewrites half a module because nothing told it how the project is supposed to work.&lt;/p&gt;

&lt;p&gt;Those are not model failures. They are repository failures.&lt;/p&gt;

&lt;p&gt;And until now, they have mostly been invisible. There was no simple answer to:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How safe is this repo for an AI agent to work in?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So I built one.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Charter does
&lt;/h2&gt;

&lt;p&gt;Charter is an offline CLI that grades any repository from 0 to 100 based on how ready it is for AI coding agents.&lt;/p&gt;

&lt;p&gt;It checks nine areas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Context&lt;/li&gt;
&lt;li&gt;Secrets&lt;/li&gt;
&lt;li&gt;MCP safety&lt;/li&gt;
&lt;li&gt;Agent configuration&lt;/li&gt;
&lt;li&gt;Environment setup&lt;/li&gt;
&lt;li&gt;CI&lt;/li&gt;
&lt;li&gt;Testing&lt;/li&gt;
&lt;li&gt;Autonomy&lt;/li&gt;
&lt;li&gt;Governance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Under those areas are eighteen deterministic rules. Each rule has a severity, a clear check, and a concrete fix.&lt;/p&gt;

&lt;p&gt;Run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;charter doctor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And you get a score, a breakdown, and the exact gaps keeping the repo from being safer for agents.&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%2Fiz0mdh10fcnjkmtehu94.webp" 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%2Fiz0mdh10fcnjkmtehu94.webp" alt="Charter doctor output" width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The first number is usually humbling. That is kind of the point.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this is not an LLM judging your repo
&lt;/h2&gt;

&lt;p&gt;The obvious version of this product would be: point a model at the repo and ask, “Is this agent-ready?”&lt;/p&gt;

&lt;p&gt;I did not want that.&lt;/p&gt;

&lt;p&gt;A score you cannot reproduce is not a gate. It is a vibe.&lt;/p&gt;

&lt;p&gt;Charter’s score is a public formula over a fixed rule set. Same repo, same score, every time. No prompt drift. No API bill. No model deciding whether your other model has enough context.&lt;/p&gt;

&lt;p&gt;It is closer to a linter than a reviewer.&lt;/p&gt;

&lt;p&gt;That makes it boring in the best way. You can read the rules, predict the result, and trust the number enough to put it in CI.&lt;/p&gt;

&lt;h2&gt;
  
  
  The loop
&lt;/h2&gt;

&lt;p&gt;The workflow is intentionally small.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Initialize the repo
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;charter init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This scaffolds the files an agent expects, including &lt;code&gt;AGENTS.md&lt;/code&gt; and &lt;code&gt;charter.yaml&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Get the baseline
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;charter doctor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Most repos that have never been prepared for agents land somewhere around 40–60.&lt;/p&gt;

&lt;p&gt;That does not mean the repo is bad. It usually means the repo was built for humans who already know the context, not for agents that need the context written down.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Fix what is safe to fix
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;charter fix
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Charter is diff-first. It shows what it wants to change before anything is written.&lt;/p&gt;

&lt;p&gt;It also has hard boundaries: secrets and destructive commands are never auto-touched. Charter will point them out, but it will not put its hands on them.&lt;/p&gt;

&lt;h2&gt;
  
  
  It belongs in CI too
&lt;/h2&gt;

&lt;p&gt;A local score is useful. A CI gate is better.&lt;/p&gt;

&lt;p&gt;Charter emits SARIF 2.1.0, so findings can show up in GitHub Code Scanning. There is also an official GitHub Action with a score threshold:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;use-charter/charter-action@v1&lt;/span&gt;
  &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;threshold&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;80&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That turns “this repo feels agent-ready” into something much easier to reason about:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This repo must stay above 80 before we merge.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The score can ratchet up over time instead of being a one-off cleanup project.&lt;/p&gt;

&lt;h2&gt;
  
  
  The contract
&lt;/h2&gt;

&lt;p&gt;Charter makes a few hard promises:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No network calls&lt;/li&gt;
&lt;li&gt;No LLM in the core scoring path&lt;/li&gt;
&lt;li&gt;No file deletion&lt;/li&gt;
&lt;li&gt;No silent mutation&lt;/li&gt;
&lt;li&gt;Every finding maps back to a rule&lt;/li&gt;
&lt;li&gt;Every rule includes a fix&lt;/li&gt;
&lt;li&gt;The same binary works locally and in CI&lt;/li&gt;
&lt;li&gt;Releases are signed, SLSA-built, and shipped with SBOMs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is Apache-2.0 and free forever.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;Install it with Homebrew:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;use-charter/tap/charter
charter doctor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or install it with Go:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;go &lt;span class="nb"&gt;install &lt;/span&gt;go.use-charter.dev/charter/cmd/charter@latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also grab a signed binary from the releases page.&lt;/p&gt;

&lt;p&gt;Docs and the full rule list are here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://use-charter.dev/" rel="noopener noreferrer"&gt;https://use-charter.dev/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Source is on &lt;a href="https://github.com/use-charter/charter" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; - please give it a star if you find it useful.&lt;/p&gt;

&lt;p&gt;I would genuinely like to hear which rule you think is missing.&lt;/p&gt;

&lt;p&gt;The first number is usually humbling. Fixing it is the point.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>opensource</category>
      <category>security</category>
    </item>
  </channel>
</rss>
