> Creates new Source of Truth (SoT) files when existing templates don't fit your needs. Triggers on requests to create a new SoT file, add a new artifact type, or when user says "I need to track [X] but there's no SoT for it", "create SoT", "new source of truth". Outputs a properly structured SoT.*.md file with ID prefix, frontmatter, and update protocol.
npx skills add https://github.com/mattgierhart/PRD-driven-context-engineering --skill ghm-sot-builder
Create new Source of Truth files that fit your product's unique needs while maintaining template purity.
This skill is for rare occasions (3-4 times per product lifecycle) when:
Do NOT use when:
temp/ instead)ghm-id-registerSee assets/sot-template.md for the copy-paste starter template.
| Element | Definition | Required |
|---------|------------|----------|
| YAML Frontmatter | version, purpose, id_prefix, authority | Yes |
| Purpose Block | Single paragraph explaining what this tracks | Yes |
| Navigation Section | Category links for quick access | Yes |
| Entry Template | Repeatable structure for each ID | Yes |
| Cross-Reference Index | Bidirectional links to other SoT files | Yes |
| Update Protocol | When/how to add new entries | Yes |
Before creating a new SoT, verify:
SoT/SoT.UNIQUE_ID_SYSTEM.md for existing prefixesDefine the structure before writing:
Format: [PREFIX]-[XXX]
Examples: PIC-001, INT-042, MIG-003
Rules:
SoT/SoT.UNIQUE_ID_SYSTEM.mdReserve ID ranges for logical groupings:
**Category A** (XXX-001 to XXX-099):
**Category B** (XXX-101 to XXX-199):
**Category C** (XXX-201 to XXX-299):
Define the minimum fields every entry needs:
| Field | Purpose | Example |
|-------|---------|---------|
| ID | Unique identifier | PIC-001 |
| Title | Human-readable name | "Stripe Payment Integration" |
| Status | Current state | Active / Deprecated / Planned |
| Created | Origin date | 2025-01-10 |
| Last Updated | Last modification | 2025-01-15 |
| Related IDs | Cross-references | BR-101, API-045 |
Add domain-specific fields as needed, but keep them structural (not methodology):
Use assets/sot-template.md as your starting point.
KEEP in the template (self-documentation):
MOVE to skill references (methodology teaching):
For each section, ask:
> "Is this teaching me how to maintain the FILE STRUCTURE, or teaching me DOMAIN KNOWLEDGE about what makes good content?"
Before finalizing, run this checklist:
After creating the SoT file:
Add entry to the structure table:
| `SoT.{YOUR_FILE}.md` | {PREFIX}-### | {Purpose description} |
Add new prefix to Section 1.2 Standard Prefixes:
| **{PREFIX}** | {Meaning} | `SoT.{YOUR_FILE}.md` |
Add empty index table in Part 2 of SoT.UNIQUE_ID_SYSTEM.md:
#### {Your Type} ({PREFIX}-XXX)
| ID | Title | Status | Used By |
|----|-------|--------|---------|
| {PREFIX}-001 | {Title} | Active | {IDs} |
| Pattern | Example | Fix |
|---------|---------|-----|
| Methodology in template | "Best practices for partner selection" | Move to skill references |
| Duplicate prefix | Using BR- for a new file | Choose unique prefix |
| Too generic | "Notes.md" | Be specific: "Partner_Integrations.md" |
| No update protocol | Template with no maintenance section | Add "Update Protocol" section |
| Orphan SoT | Not registered in SoT.README.md | Always register new files |
references/sot-patterns.md — Common patterns across existing SoT filesreferences/examples.md — Before/after examples of SoT creationassets/sot-template.md — Copy-paste starter templateAfter creating a new SoT:
SoT/SoT.{NAME}.mdghm-id-register for adding entriesTake mattgierhart/ghm-sot-builder from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.