Use before caching, quoting, or acting on ANY product, imagery, or brand fact — resolve it from the canonical source registered in SOT.md, never from memory or a filename. Prevents second-copy drift and wrong-fact defects.
Installs into .claude/skills of the current project.
Are you the author of Source Of Truth?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/skyyrosellc-source-of-truth)
---
name: source-of-truth
description: Use before caching, quoting, or acting on ANY product, imagery, or brand fact — resolve it from the canonical source registered in SOT.md, never from memory or a filename. Prevents second-copy drift and wrong-fact defects.
origin: SkyyRose
---
# Source of Truth
Every product, imagery, and brand fact has exactly one canonical home, registered in
`SOT.md` at the repo root and surfaced as root symlinks (`skyyrose-catalog.csv`,
`sot-images.json`, `cerebrum.md`, `anatomy.md`, …). **Memory rots; the canonical file
does not.** Resolving a fact from recollection, a filename, or a second copy is how wrong
facts reach the site — it is what produced the lh-005 fanny-pack (a product resolved from
a non-canonical store). This skill makes "read the SOT first" the reflex before any
product-touching work.
> **Boot first:** read `SOT.md` before caching any product / imagery / brand fact — it
> names the one canonical source for each. Never fork or introduce a second copy of a SOT.
## When to Use
- Before quoting a SKU, price, name, collection, or material — any product fact.
- Before resolving a product image — the manifest is identity, the filename is not.
- Before stating a brand fact (tagline, collection canon, founder voice).
- Before caching any of the above into memory, a render prompt, or page content.
## The canonical map
| Fact | Canonical source | Resolve via |
|------|------------------|-------------|
| Product (SKU, price, name, collection, material) | `skyyrose-catalog.csv` + per-SKU dossier | catalog loader — the CSV, then the dossier |
| Product imagery | `data/sot-images.json` (generated; `make sot-manifest`) | `skyyrose.core.sot_images` — front-first |
| Brand canon | brand canon / `from-interview.md` / `brand.yaml` | read it; do not paraphrase from memory |
| Prior work / "did we solve this?" | `.wolf/buglog.json` + claude-mem | see [[memory-system]] |
Reference products by **name, not SKU** — SKU-first lookups caused br-001 conflations.
## Loop until the fact traces to the SOT
Bounded, like [[drive-to-green]] — ≤5, stop on repeat:
```
1. Need a product/imagery/brand fact.
2. Resolve it through the SOT-registered source (CSV / manifest / canon), never memory.
3. Quote the canonical value (row, dossier line, manifest entry).
4. If the source disagrees with what you assumed → the SOURCE wins; correct and re-check.
```
## Verify from an authoritative source
- **Quote the canonical file, not your memory.** A product fact cites the catalog CSV row
or dossier; an image cites its `sot-images.json` entry; a brand fact cites the canon.
- **Prove single-source.** Before trusting a fact, confirm there is no second copy feeding
it — `grep` for duplicate stores; a fork of the catalog/manifest is garbage, and using it
is a fail-open (see [[fail-closed-audit]], [[dependency-hygiene]]'s single-source rule).
- **Pixels over filenames** for imagery — the manifest resolves identity, then
[[product-image-fidelity-gate]] eyes-on confirms the garment. A filename never proves it.
## Adversarial pass
- [[adversarial-verification]] — assume the remembered value / filename is WRONG until the
canonical source confirms it. For anything touching a render or the live site, default to
"unverified" and resolve through the SOT before proceeding.
## Guardrails · Handoff · Log
- Canonical-sources-only is LOCKED — other stores are garbage; never introduce a second SOT.
- Regenerate generated SOTs the sanctioned way (`make sot-manifest`) — never hand-edit them.
- Product-image work → hand to `skyyrose-design` with [[product-image-fidelity-gate]];
catalog drift → `skyyrose-core`; log corrections via [[self-learning]] per `CROSS-PLUGIN.md`.