# Define once, cite everywhere

> Source: <https://dev.to/juangcarmona/define-once-cite-everywhere-eg2>
> Published: 2026-08-21 08:55:24+00:00

Run this on any repo doing spec-driven development:

```
grep -rn -i "refund" openspec/specs
```

Mine returned:

```
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.
```

Same rule, three specs, three wordings — and two meanings. 30 days from **purchase** is not 30 days from **delivery**. 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.

We fixed this in code decades ago: don't repeat yourself. Specs never got the memo.

**The fix: define the rule once, and let every spec cite it** — one line, carrying a content digest:

```
Refunds follow BR-REFUND-001. {pdac:cite id="BR-REFUND-001" digest="sha256:b5c5…"}
```

When the rule changes through your normal review flow, one command flags every citing spec — file and line, no grep:

``` bash
$ prodshape citations verify
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
```

Put it in CI and stale product knowledge stops being invisible. Specs get shorter, forks become impossible, drift becomes detectable.

Full 30-second demo (real output, `@prodshape/cli@0.12.0`

, no setup): .[https://jgcarmona.com/en/define-once-cite-everywhere/](https://jgcarmona.com/en/define-once-cite-everywhere/).

The idea behind it: [Product Definition as Code](https://pdac.dev) — one versioned product model that specs and agents cite instead of re-derive, upstream of whatever SDD tool you use.

**Try the grep on your own specs and count your forks.** Found one? Tell me in the comments — I'll help you set this up in 15 minutes.
