<?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: Piekwerk</title>
    <description>The latest articles on DEV Community by Piekwerk (@piekwerk).</description>
    <link>https://dev.to/piekwerk</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%2F4126175%2F4212231a-5d1d-4e52-8e3a-06794c2e7743.png</url>
      <title>DEV Community: Piekwerk</title>
      <link>https://dev.to/piekwerk</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/piekwerk"/>
    <language>en</language>
    <item>
      <title>Your CLAUDE.md is probably too long</title>
      <dc:creator>Piekwerk</dc:creator>
      <pubDate>Tue, 15 Sep 2026 11:43:16 +0000</pubDate>
      <link>https://dev.to/piekwerk/your-claudemd-is-probably-too-long-36e4</link>
      <guid>https://dev.to/piekwerk/your-claudemd-is-probably-too-long-36e4</guid>
      <description>&lt;p&gt;&lt;em&gt;Contexts are not compliance. A year of agent configs points the same&lt;br&gt;
direction: shorter instruction blocks get followed better — and the&lt;br&gt;
ceiling arrives earlier than you think.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;There's a failure mode spreading through agent configs, and it feels&lt;br&gt;
productive. Every time an agent does something you don't like, you add&lt;br&gt;
a rule. Six months later your CLAUDE.md is 600 lines, and — this is&lt;br&gt;
the part nobody wants to hear — the agent is following &lt;em&gt;less&lt;/em&gt; of it&lt;br&gt;
than when it was 80.&lt;/p&gt;

&lt;h2&gt;
  
  
  The compliance curve
&lt;/h2&gt;

&lt;p&gt;Instruction-following is not a bucket you fill. It's closer to a&lt;br&gt;
signal-to-noise problem: every rule competes with your source code and&lt;br&gt;
with every other rule for a finite attention budget. A short list of&lt;br&gt;
concrete rules gets followed. A long list gets &lt;em&gt;skimmed&lt;/em&gt; — and skimming&lt;br&gt;
is not 50% compliance, it's unpredictable compliance, where the rules&lt;br&gt;
that survive are not the ones you'd have picked.&lt;/p&gt;

&lt;p&gt;The pattern I've seen in my own configs and others':&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Under ~100 lines:&lt;/strong&gt; rules function as rules. Adding one more
visibly changes behavior.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;100–300 lines:&lt;/strong&gt; the comfortable zone for a full baseline plus
tool-specific guidance, &lt;em&gt;if&lt;/em&gt; every line earns its place.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;300–600 lines:&lt;/strong&gt; redundancy sets in (the same idea phrased twice,
then three times, added on different bad days). Compliance becomes
selective. Review comments go up, not down.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;600+:&lt;/strong&gt; the file is a cargo cult. Nobody reads it — including, in
every way that matters, the model.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why more rules make each rule weaker
&lt;/h2&gt;

&lt;p&gt;Three mechanisms, all boring:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Competition.&lt;/strong&gt; Attention spent on rule 47 is not spent on rule 3.&lt;br&gt;
When everything is emphasized, the model's choice of what to emphasize&lt;br&gt;
is arbitrary — and your priorities lose to recency and position.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Redundancy is noise.&lt;/strong&gt; People add duplicates on purpose ("I'll say&lt;br&gt;
it in both files so it sticks"). The model doesn't experience&lt;br&gt;
repetition as emphasis. It experiences two similar-but-not-identical&lt;br&gt;
rules, which is exactly the input shape that degrades all&lt;br&gt;
instruction-following.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Staleness compounds.&lt;/strong&gt; Long files rotate slower. Rules for problems&lt;br&gt;
you fixed months ago stay in context forever, contradicting the newer&lt;br&gt;
rules that replaced the practice. Conflicts don't error; they resolve&lt;br&gt;
randomly, per session.&lt;/p&gt;

&lt;h2&gt;
  
  
  The diet that works
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Cut by checkability.&lt;/strong&gt; For each rule ask: what observable diff&lt;br&gt;
would violate this? If there's no answer, the rule is a mood, and&lt;br&gt;
moods don't steer agents. "Write clean code" goes; "no unused imports"&lt;br&gt;
stays.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Scope instead of delete.&lt;/strong&gt; The testing rule that's wasting budget&lt;br&gt;
on every request but only matters for test files doesn't need to die —&lt;br&gt;
it needs a Cursor glob. Claude Code reads CLAUDE.md whole, but&lt;br&gt;
Cursor's rules load per-glob, and most repos run more than one tool.&lt;br&gt;
Put the rule where its scope is expressible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Extract procedures.&lt;/strong&gt; The TDD ritual, the investigation checklist,&lt;br&gt;
the release dance — these aren't context rules, they're procedures.&lt;br&gt;
Move them to skill files and import them where the work calls for&lt;br&gt;
them. Your always-on budget stops paying for content that only matters&lt;br&gt;
during specific tasks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. One home per rule.&lt;/strong&gt; The baseline (AGENTS.md) holds standards&lt;br&gt;
once; tool files reference or triage. The moment the same rule lives&lt;br&gt;
in two places, you've started a drift clock.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Count it in CI.&lt;/strong&gt; &lt;code&gt;wc -l CLAUDE.md&lt;/code&gt; with a ceiling — we use 300 —&lt;br&gt;
turns budget creep into a failed check instead of a slow surprise. The&lt;br&gt;
ceiling isn't magic; the enforcement is.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a dieted config looks like
&lt;/h2&gt;

&lt;p&gt;Ours, after the same diet: an imported baseline (commands, conventions,&lt;br&gt;
safety — ~70 lines), a verification loop, three to five stack notes,&lt;br&gt;
and a short anti-pattern list. Under 100 lines in most repos. Rule&lt;br&gt;
compliance is visibly better than the 600-line version it replaced —&lt;br&gt;
same standards, fewer words, no contradictions to resolve.&lt;/p&gt;

&lt;h2&gt;
  
  
  The uncomfortable summary
&lt;/h2&gt;

&lt;p&gt;Your CLAUDE.md's length is a ledger of unresolved decisions. Every&lt;br&gt;
paragraph of prose is usually a rule you haven't made concrete; every&lt;br&gt;
duplicate is a file you haven't unified. The diet isn't editing — it's&lt;br&gt;
deciding.&lt;/p&gt;

&lt;p&gt;If you'd rather start from a pre-dieted, pre-validated baseline: our&lt;br&gt;
kits keep every CLAUDE.md under a validated 300-line ceiling, with&lt;br&gt;
stack detail pushed into scoped rules instead of the always-on block,&lt;br&gt;
for twelve stacks. The Next.js kit is free (MIT) on&lt;br&gt;
&lt;a href="https://piekwerk.gumroad.com/l/agentconfig-studio" rel="noopener noreferrer"&gt;AgentConfig Studio on Gumroad — all 12 kits&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>programming</category>
    </item>
    <item>
      <title>I tested the AI agent config formats so you don't have to</title>
      <dc:creator>Piekwerk</dc:creator>
      <pubDate>Tue, 15 Sep 2026 11:36:56 +0000</pubDate>
      <link>https://dev.to/piekwerk/i-tested-the-ai-agent-config-formats-so-you-dont-have-to-4fpp</link>
      <guid>https://dev.to/piekwerk/i-tested-the-ai-agent-config-formats-so-you-dont-have-to-4fpp</guid>
      <description>&lt;p&gt;&lt;em&gt;A teardown of the four formats your coding agents read — what each&lt;br&gt;
does, where each breaks, and the setup that stopped me maintaining&lt;br&gt;
four copies of the same rules.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;I have the same standards in every repo I touch: small diffs, tests&lt;br&gt;
that fail before the fix, conventional commits, no secrets in code.&lt;br&gt;
For about a year, I maintained those standards by hand in every format&lt;br&gt;
my agents read. This is what I found when I actually audited them —&lt;br&gt;
and what I'd tell myself a year ago.&lt;/p&gt;

&lt;h2&gt;
  
  
  The four formats, one audit
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;AGENTS.md&lt;/strong&gt; is the community's tool-neutral convention: a plain&lt;br&gt;
markdown file at the repo root, discovered by walking up the tree.&lt;br&gt;
No schema, no activation model — whatever you write loads. Its&lt;br&gt;
strength is its boringness. Its weakness is that "loaded" is not&lt;br&gt;
"followed": my 140-line baseline was loading in full, and my agents&lt;br&gt;
were still committing messy messages, because rule compliance drops as&lt;br&gt;
instruction blocks grow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CLAUDE.md&lt;/strong&gt; is Claude Code's memory file, and the only format with a&lt;br&gt;
native import mechanism (&lt;code&gt;@import path&lt;/code&gt;). This is quietly the most&lt;br&gt;
powerful feature in any of the formats: it means a tool file can&lt;br&gt;
&lt;em&gt;reference&lt;/em&gt; a baseline instead of copying it. My first version didn't&lt;br&gt;
use it — I had a full copy of my baseline inside CLAUDE.md with a few&lt;br&gt;
Claude-specific lines on top. When I changed the baseline, I forgot&lt;br&gt;
the copy. The file was lying to my agent for a month.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;.cursor/rules/*.mdc&lt;/strong&gt; is Cursor's per-rule format, and the only one&lt;br&gt;
with activation control: frontmatter can scope a rule to globs&lt;br&gt;
(&lt;code&gt;globs: "**/*.test.ts"&lt;/code&gt;) or make it always-on. The audit found my&lt;br&gt;
favorite failure: I had written &lt;code&gt;alwaysApply: true&lt;/code&gt; on a testing rule&lt;br&gt;
— meaning it loaded for every request, eating budget, and the glob I'd&lt;br&gt;
carefully written did nothing. Frontmatter is invisible when wrong.&lt;br&gt;
Nothing errors. The rule just loads when it shouldn't (or never).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;copilot-instructions.md&lt;/strong&gt; is one repo-wide file for GitHub Copilot&lt;br&gt;
with the tightest budget of the four. Mine was a 60-line copy of my&lt;br&gt;
CLAUDE.md — which is to say, useless twice over. Copilot's instruction&lt;br&gt;
following is the loosest of the three tools; a wall of text doesn't&lt;br&gt;
get followed, it gets skimmed. The version that works is ~20 lines of&lt;br&gt;
the conventions that matter most in inline completion.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the audit added up to
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Four copies of the same standards&lt;/strong&gt;, in four states of currency.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Two rules that had never fired&lt;/strong&gt; (glob defeated by alwaysApply; a
rule in a file one tool didn't read).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One month of drift&lt;/strong&gt; between baseline and tool copies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;~700 lines of instructions&lt;/strong&gt; where maybe 150 were earning their
keep.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of this is exotic. Every developer running multiple agents has&lt;br&gt;
some version of this; most haven't audited yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  The setup that fixed it
&lt;/h2&gt;

&lt;p&gt;The fix wasn't writing better rules. It was structure:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;One baseline&lt;/strong&gt; (&lt;code&gt;AGENTS.md&lt;/code&gt;) holds the standards: command table,
style, testing, commits, safety. Tool-neutral, committed, versioned
like code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tool files become projections.&lt;/strong&gt; CLAUDE.md opens with
&lt;code&gt;@import AGENTS.md&lt;/code&gt; and adds only what's Claude-specific (my
verification loop, stack notes). The Cursor rules are four scoped
files — two always-on (core, safety), two glob-scoped (stack,
testing). Copilot gets a hand-triaged 20-line digest.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scoping discipline.&lt;/strong&gt; If a rule only matters for test files, it
does not belong in anyone's always-on context. Globs are budget
management.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validation.&lt;/strong&gt; A script checks the structural contract: required
files present, CLAUDE.md under 300 lines, frontmatter parses with a
declared activation mode, no placeholder text, baseline sections
present. It runs in CI. My &lt;code&gt;alwaysApply: true&lt;/code&gt; bug is now
impossible to ship silently.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The result is ~150 load-bearing lines instead of ~700 duplicated ones,&lt;br&gt;
and rule changes land in one place instead of four.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest caveats
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;This is maintenance work. The structure reduces the tax; it doesn't
eliminate config as a discipline. Budgets still creep.&lt;/li&gt;
&lt;li&gt;Copilot remains the weakest follower even with a perfect file. Set
expectations at "fewer review comments," not "perfect compliance."&lt;/li&gt;
&lt;li&gt;Formats are young. Cursor's frontmatter schema and Claude Code's
import semantics have both moved since I started. Whatever you
build, record what you validated it against — you'll want that
context when behavior shifts.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  If you'd rather not build it
&lt;/h2&gt;

&lt;p&gt;The setup above is exactly what our stack kits ship: AGENTS.md&lt;br&gt;
baseline, imported CLAUDE.md, four scoped Cursor rules, a triaged&lt;br&gt;
Copilot digest — generated per stack so the projections can't drift,&lt;br&gt;
with the validator included. Twelve stacks in the full pack; the&lt;br&gt;
complete Next.js/TypeScript kit is free (MIT) if you want to see the&lt;br&gt;
structure before trusting it. Details on &lt;a href="https://piekwerk.gumroad.com/l/agentconfig-studio" rel="noopener noreferrer"&gt;AgentConfig Studio on Gumroad — all 12 kits&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>devtools</category>
    </item>
    <item>
      <title>How we validate 12 agent config kits (and what validation can't do)</title>
      <dc:creator>Piekwerk</dc:creator>
      <pubDate>Tue, 15 Sep 2026 11:36:25 +0000</pubDate>
      <link>https://dev.to/piekwerk/how-we-validate-12-agent-config-kits-and-what-validation-cant-do-2pop</link>
      <guid>https://dev.to/piekwerk/how-we-validate-12-agent-config-kits-and-what-validation-cant-do-2pop</guid>
      <description>&lt;p&gt;&lt;em&gt;Our validator checks every kit before release: files, budgets,&lt;br&gt;
frontmatter, sections, placeholders. Here's exactly what it checks,&lt;br&gt;
why those checks exist, and — more interestingly — what it cannot&lt;br&gt;
check, because pretending otherwise is how trust dies.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Agent config has a trust problem, and it's deserved. The market is&lt;br&gt;
full of markdown with confident READMEs and no contract. "Validated&lt;br&gt;
against real projects!" is the new "military-grade encryption." So&lt;br&gt;
instead of adjectives, this post is the actual spec of our validation&lt;br&gt;
harness — the same script that ships in the pack — including the&lt;br&gt;
failure it caught, and the honest list of what it does &lt;em&gt;not&lt;/em&gt; check.&lt;/p&gt;

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

&lt;p&gt;A kit is a set of files with structure. Structure is checkable;&lt;br&gt;
therefore the contract is structural. Every kit must pass all of:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Required files exist.&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;AGENTS.md&lt;/code&gt;, &lt;code&gt;CLAUDE.md&lt;/code&gt;, &lt;code&gt;copilot-instructions.md&lt;/code&gt;, and a&lt;br&gt;
&lt;code&gt;.cursor/rules/&lt;/code&gt; directory with 3–5 &lt;code&gt;.mdc&lt;/code&gt; files. Trivial? Every&lt;br&gt;
missing-file bug in our own builds was "trivial" until it shipped.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. The CLAUDE.md line budget.&lt;/strong&gt;&lt;br&gt;
Fewer than 300 lines, enforced, not suggested. The number is a design&lt;br&gt;
decision (see the compliance-curve argument in our longer piece), but&lt;br&gt;
the enforcement is the point: budgets without gates become&lt;br&gt;
suggestions, and suggestions become 900-line files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Cursor frontmatter parses, with a declared activation mode.&lt;/strong&gt;&lt;br&gt;
Each &lt;code&gt;.mdc&lt;/code&gt; must open with parseable YAML frontmatter containing a&lt;br&gt;
non-empty &lt;code&gt;description&lt;/code&gt;, and either &lt;code&gt;alwaysApply: true|false&lt;/code&gt; or a&lt;br&gt;
&lt;code&gt;globs&lt;/code&gt; entry. This check exists because of the nastiest silent&lt;br&gt;
failure in the format: a malformed frontmatter block doesn't error —&lt;br&gt;
Cursor treats the file as broken or ignores it, and a rule you&lt;br&gt;
believe is protecting your test files simply never loads. The&lt;br&gt;
validator makes "the rule never loads" a build failure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. The baseline has its sections.&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;AGENTS.md&lt;/code&gt; must contain: Project context, Commands, Code style,&lt;br&gt;
Testing expectations, Commit conventions, Safety rules, Definition of&lt;br&gt;
done. These aren't bureaucratic — they're the sections agents act on&lt;br&gt;
most (the command table above all). A kit missing "Safety rules" is&lt;br&gt;
missing the file's most important content, so it fails.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. No placeholder text, anywhere.&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;TODO&lt;/code&gt;, &lt;code&gt;TBD&lt;/code&gt;, &lt;code&gt;FIXME&lt;/code&gt;, &lt;code&gt;lorem ipsum&lt;/code&gt;, &lt;code&gt;XXX&lt;/code&gt; — case-insensitive,&lt;br&gt;
across every kit file. Config rot starts as a placeholder that&lt;br&gt;
outlived its author.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. No unrendered templates.&lt;/strong&gt;&lt;br&gt;
The kits are generated, so generation bugs are a risk class: the&lt;br&gt;
validator scans for unrendered variables (&lt;code&gt;{lint_cmd&lt;/code&gt;, and friends)&lt;br&gt;
in output. This check exists because it caught exactly that bug —&lt;br&gt;
a double-formatting trap left the literal text &lt;code&gt;lint_cmd_placeholder&lt;/code&gt;&lt;br&gt;
inside every kit's definition-of-done. The validator flagged it on&lt;br&gt;
its first real run; the fix took one line; the check stays forever.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Skills exist and are non-trivial.&lt;/strong&gt;&lt;br&gt;
All eight workflow skills must be present and above a minimum size.&lt;br&gt;
A stub skill file is a broken promise.&lt;/p&gt;

&lt;p&gt;Output: human-readable by default, &lt;code&gt;--json&lt;/code&gt; for CI. Exit code is the&lt;br&gt;
release gate: non-zero, no release.&lt;/p&gt;

&lt;h2&gt;
  
  
  The proof it works: we break things on purpose
&lt;/h2&gt;

&lt;p&gt;A validator that has never failed is a validator that has never been&lt;br&gt;
tested. Before trusting ours, we negative-tested it — deliberately&lt;br&gt;
corrupting a kit and watching:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Appended &lt;code&gt;TODO: fix this&lt;/code&gt; to a kit's AGENTS.md → &lt;strong&gt;failed&lt;/strong&gt;,
named the file, named the check.&lt;/li&gt;
&lt;li&gt;Restored the file → all green again.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That loop — break, catch, restore — is the entire basis on which we&lt;br&gt;
ask you to trust the green checkmark. The check that caught the&lt;br&gt;
unrendered-template bug was added the same way: a real bug, then a&lt;br&gt;
check that makes it permanent history.&lt;/p&gt;

&lt;h2&gt;
  
  
  What validation cannot do
&lt;/h2&gt;

&lt;p&gt;Now the honest part, because this is where most tool marketing lies by&lt;br&gt;
implication.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It cannot check whether the advice is &lt;em&gt;good&lt;/em&gt;.&lt;/strong&gt; The harness knows&lt;br&gt;
"Commands" exists; it cannot know your test command is right for your&lt;br&gt;
repo. That's why kits mark the command table as the first thing to&lt;br&gt;
edit — and why the validator refuses to pretend otherwise.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It cannot check semantics.&lt;/strong&gt; Whether the baseline contradicts a&lt;br&gt;
Cursor rule, whether your anti-pattern list matches your actual codebase&lt;br&gt;
— these need human review or much cleverer tooling. We structure the&lt;br&gt;
generation so contradictions are &lt;em&gt;hard&lt;/em&gt; (tool files are projections of&lt;br&gt;
one source), but hard is not impossible, and we won't claim the&lt;br&gt;
validator catches what it doesn't.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It cannot check real-repo firing.&lt;/strong&gt; We don't claim globs were&lt;br&gt;
"tested against N production repos," because they weren't. The glob&lt;br&gt;
&lt;em&gt;syntax and mode declarations&lt;/em&gt; are validated; whether your repo's&lt;br&gt;
layout matches the glob is checked by you, in your repo, in one&lt;br&gt;
minute, using the harness we ship. Any product claiming automatic&lt;br&gt;
firing-verification across arbitrary repos is claiming to have run&lt;br&gt;
your build — ask them what that means, exactly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why structural validation is still the right contract
&lt;/h2&gt;

&lt;p&gt;Because everything downstream depends on it. A rule that never loads&lt;br&gt;
is zero percent as good as written, no matter how wise. A budget that&lt;br&gt;
silently creeps degrades compliance in ways nobody attributes to the&lt;br&gt;
cause. Structural checks are the difference between "config" and&lt;br&gt;
"markdown with aspirations" — and unlike vibe-based claims, they're&lt;br&gt;
runnable on your machine, against our kits, &lt;em&gt;and against your own&lt;br&gt;
edits&lt;/em&gt;, before you spend a cent.&lt;/p&gt;

&lt;p&gt;That's the offer, verified: the validator ships in the pack, the&lt;br&gt;
release output (12/12 kits, 8/8 skills, green) is in the changelog,&lt;br&gt;
and &lt;a href="https://piekwerk.gumroad.com/l/free-sample-nextjs" rel="noopener noreferrer"&gt;the free MIT sample kit&lt;/a&gt; runs through the same harness. Trust the&lt;br&gt;
check, not the adjective — and run it yourself.&lt;/p&gt;

&lt;p&gt;AgentConfig Studio's twelve kits and the harness they ship with are on&lt;br&gt;
&lt;a href="https://piekwerk.gumroad.com/l/agentconfig-studio" rel="noopener noreferrer"&gt;AgentConfig Studio on Gumroad — all 12 kits&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>testing</category>
    </item>
  </channel>
</rss>
