<?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: Juan G Carmona</title>
    <description>The latest articles on DEV Community by Juan G Carmona (@juangcarmona).</description>
    <link>https://dev.to/juangcarmona</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%2F4087465%2F3092b5bd-1503-485b-8bc6-90c2750f1155.jpg</url>
      <title>DEV Community: Juan G Carmona</title>
      <link>https://dev.to/juangcarmona</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/juangcarmona"/>
    <language>en</language>
    <item>
      <title>Define once, cite everywhere</title>
      <dc:creator>Juan G Carmona</dc:creator>
      <pubDate>Fri, 21 Aug 2026 08:55:24 +0000</pubDate>
      <link>https://dev.to/juangcarmona/define-once-cite-everywhere-eg2</link>
      <guid>https://dev.to/juangcarmona/define-once-cite-everywhere-eg2</guid>
      <description>&lt;p&gt;Run this on any repo doing spec-driven development:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-rn&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s2"&gt;"refund"&lt;/span&gt; openspec/specs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mine returned:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;billing/spec.md:4:  Refunds are issued for purchases made in the last 30 days.
checkout/spec.md:4: Customers can request a refund within 30 days of delivery.
support/spec.md:4:  If the order is less than a month old, offer a refund.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Same rule, three specs, three wordings — and two meanings. 30 days from &lt;strong&gt;purchase&lt;/strong&gt; is not 30 days from &lt;strong&gt;delivery&lt;/strong&gt;. Nobody decided that fork. A coding agent paraphrased it into existence, and no human caught it, because nobody reads specs anymore — only agents do. As truth.&lt;/p&gt;

&lt;p&gt;We fixed this in code decades ago: don't repeat yourself. Specs never got the memo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The fix: define the rule once, and let every spec cite it&lt;/strong&gt; — one line, carrying a content digest:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Refunds follow BR-REFUND-001. {pdac:cite id="BR-REFUND-001" digest="sha256:b5c5…"}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When the rule changes through your normal review flow, one command flags every citing spec — file and line, no grep:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;prodshape citations verify
&lt;span class="go"&gt;stale  BR-REFUND-001  openspec/specs/billing/spec.md:4
stale  BR-REFUND-001  openspec/specs/checkout/spec.md:4
stale  BR-REFUND-001  openspec/specs/support/spec.md:4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Put it in CI and stale product knowledge stops being invisible. Specs get shorter, forks become impossible, drift becomes detectable.&lt;/p&gt;

&lt;p&gt;Full 30-second demo (real output, &lt;code&gt;@prodshape/cli@0.12.0&lt;/code&gt;, no setup): .&lt;a href="https://jgcarmona.com/en/define-once-cite-everywhere/" rel="noopener noreferrer"&gt;https://jgcarmona.com/en/define-once-cite-everywhere/&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The idea behind it: &lt;a href="https://pdac.dev" rel="noopener noreferrer"&gt;Product Definition as Code&lt;/a&gt; — one versioned product model that specs and agents cite instead of re-derive, upstream of whatever SDD tool you use.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try the grep on your own specs and count your forks.&lt;/strong&gt; Found one? Tell me in the comments — I'll help you set this up in 15 minutes.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>productivity</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
