Naming Conventions¶
Overview¶
syspilot uses descriptive, human-readable IDs for all specification elements.
Unlike traditional sequential numbering (e.g., REQ_001), descriptive IDs are
self-documenting, grep-friendly, and eliminate the “insert pain” of numbered sequences.
This document covers framework-level naming conventions that apply across all
agent families. Family-specific conventions (themes, slug rules, examples) live in
each family’s namingconventions.md (e.g., docs/syspilot/namingconventions.md).
Why Descriptive IDs?¶
Aspect |
Sequential ( |
Descriptive ( |
|---|---|---|
Self-documenting |
No — must look it up |
Yes — readable inline |
Insert new items |
Renumber or use gaps |
Just pick a name |
Grep-friendly |
Not really |
|
Link readability |
Opaque |
Clear |
Ordering bias |
Implies priority/sequence |
No false hierarchy |
Duplicate safety |
Manual tracking |
sphinx-needs catches at build time |
ID Format¶
<FAMILY>_<TYPE>_<THEME>_<SHORT_SLUG>
FAMILY: Agent family prefix (see Family Prefixes below)
TYPE: The specification level (
US,REQ,SPEC)THEME: Abbreviated domain or component identifier (2–5 chars, family-specific)
SHORT_SLUG: Descriptive name in 2–4 words, UPPERCASE, underscores
Family Prefixes¶
Prefix |
Scope |
Description |
|---|---|---|
|
syspilot family |
Spec-driven development agents (change, implement, verify, etc.) |
|
SysMLv2 family |
Model-based systems engineering agents (planned) |
|
Instance |
Project-specific customization (e.g., |
|
Shared |
Cross-family shared specifications |
Type Abbreviations¶
Common across all families:
Type |
Level |
Directive |
|---|---|---|
|
0 — User Stories |
|
|
1 — Requirements |
|
|
2 — Design Specs |
|
Theme Abbreviations¶
Themes are family-specific. Each family defines its own themes in
docs/<family>/namingconventions.md. The framework only requires themes
to be short (2–5 chars), uppercase, and consistent within the family.
Directory Naming¶
Directory |
Purpose |
Example |
|---|---|---|
|
Product artifacts (root) |
|
|
Family specs |
|
|
Instance specs |
|
|
Shared specs |
|
|
Installed agents (flat) |
|
Cross-Family Linking¶
sphinx-needs resolves :links: across all .rst files in the Sphinx project.
Families and instances can link freely:
.. story:: Release This Project
:id: INST_SYSPILOT_US_REL_RELEASE
:links: SYSPILOT_US_REL_AGENT_TEMPLATE
.. (instance links to family product for context)
.. req:: Model Validation
:id: SYSMLV2_REQ_MODEL_VALIDATION
:links: SYSPILOT_REQ_CORE_TRACEABILITY
.. (SysMLv2 family links to syspilot core for shared traceability)
Uniqueness¶
sphinx-needs enforces global uniqueness across all .rst files at build time.
The family prefix guarantees no collisions between families:
SYSPILOT_US_CORE_* can never clash with SYSMLV2_US_CORE_*.
Slug Guidelines¶
Keep slugs short: 2–4 words maximum
Be specific:
ANALYZEnotDO_ANALYSIS_OF_CHANGESUse domain language: terms stakeholders recognize
Avoid ambiguity:
NEW_PROJECTvsADOPT_EXISTING, notINSTALL_1ALL CAPS:
SYSPILOT_US_CHG_ANALYZEnotsyspilot_us_chg_analyzeUnderscores only: no hyphens, no dots
Migration from Old IDs¶
When renaming IDs (e.g., US_CORE_* → SYSPILOT_US_CORE_*):
Build a complete mapping table (old → new)
Rename
:id:directives in specification filesUpdate all
:links:directives referencing renamed IDsUpdate references in agent files, scripts, release notes
Run
sphinx-buildto validate — it catches any missed references